|
|
1.1 root 1: #
2: # nono
1.1.1.3 root 3: # Copyright (C) 2020 nono project
4: # Licensed under nono-license.txt
1.1 root 5: #
6:
1.1.1.10! root 7: AC_PREREQ([2.71])
! 8: AC_INIT([nono],[0.0],[])
1.1 root 9: AC_CONFIG_SRCDIR(wx/wxapp.cpp)
1.1.1.6 root 10: AC_CONFIG_AUX_DIR([scripts])
1.1 root 11:
12: # Checks for programs.
13: AC_PROG_CXX
14: AC_PROG_CC
1.1.1.3 root 15: AC_PROG_INSTALL
1.1 root 16:
1.1.1.6 root 17: # OS
18: AC_CANONICAL_HOST
19: AC_SUBST([host_cpu])
20:
1.1.1.4 root 21: # コンパイラをチェック。今のところ clang/gcc のみ。
22: # (autoconf がやってる gcc かどうかのチェックは clang を検出できず使えない)
23: AC_MSG_CHECKING(for compiler)
24: if test -n "`${CC} -v 2>&1 | grep clang`" ; then
25: AC_MSG_RESULT([clang])
26: COMPILER=CLANG
27: elif test -n "`${CC} -v 2>&1 | grep GCC`"; then
28: AC_MSG_RESULT([gcc])
29: COMPILER=GCC
30: else
31: AC_MSG_RESULT([unknown])
32: COMPILER=
33: fi
34: AC_SUBST([COMPILER])
35:
1.1.1.3 root 36: # C++ のバージョンをチェック
37: CXX_STD=-std=c++14
38: AC_LANG_PUSH([C++])
39: AC_MSG_CHECKING(for ${CXX_STD})
1.1 root 40: old_CXXFLAGS="${CXXFLAGS}"
1.1.1.3 root 41: CXXFLAGS="${CXX_STD} ${CXXFLAGS}"
1.1 root 42: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
1.1.1.3 root 43: AC_MSG_RESULT([yes]),
44: AC_MSG_ERROR("*** C++ compiler '${CXX}' doesn't support ${CXX_STD}."))
1.1 root 45: CXXFLAGS="${old_CXXFLAGS}"
1.1.1.3 root 46: CXX="${CXX} ${CXX_STD}"
47: AC_LANG_POP([C++])
48:
49: # C コンパイラのワーニングオプション
50: AC_LANG_PUSH([C])
1.1.1.4 root 51: AC_DEFUN([ADD_CC_WARN_IF],[
1.1.1.3 root 52: AC_MSG_CHECKING([whether cc accepts $1])
53: old_CFLAGS="${CFLAGS}"
54: CFLAGS="${CFLAGS} -Werror $1"
55: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
56: AC_MSG_RESULT([yes])
57: WARNFLAGS_C="${WARNFLAGS_C} $1",
58: AC_MSG_RESULT([no]))
59: CFLAGS="${old_CFLAGS}"
60: ])
1.1.1.4 root 61: ADD_CC_WARN_IF(-Wcast-qual)
62: ADD_CC_WARN_IF(-Wextra-semi)
63: ADD_CC_WARN_IF(-Wlogical-op)
64: ADD_CC_WARN_IF(-Wmissing-prototypes)
65: ADD_CC_WARN_IF(-Wmissing-variable-declarations)
1.1.1.3 root 66: AC_LANG_POP([C])
67: AC_SUBST([WARNFLAGS_C])
68:
69: # C++ コンパイラのワーニングオプション
70: # (AC_LANG は C++ のまま継続する)
1.1.1.10! root 71: AC_LANG([C++])
1.1.1.4 root 72: AC_DEFUN([ADD_CXX_WARN_IF],[
1.1.1.3 root 73: AC_MSG_CHECKING([whether c++ accepts $1])
74: old_CXXFLAGS="${CXXFLAGS}"
75: CXXFLAGS="${CXXFLAGS} -Werror $1"
76: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
77: AC_MSG_RESULT([yes])
78: WARNFLAGS_CXX="${WARNFLAGS_CXX} $1",
79: AC_MSG_RESULT([no]))
80: CXXFLAGS="${old_CXXFLAGS}"
81: ])
1.1.1.4 root 82: ADD_CXX_WARN_IF(-Wcast-qual)
83: ADD_CXX_WARN_IF(-Wextra-semi)
84: ADD_CXX_WARN_IF(-Winconsistent-missing-override)
85: ADD_CXX_WARN_IF(-Winconsistent-missing-destructor-override)
86: ADD_CXX_WARN_IF(-Wlogical-op)
87: ADD_CXX_WARN_IF(-Wmissing-prototypes)
88: ADD_CXX_WARN_IF(-Wmissing-variable-declarations)
89: ADD_CXX_WARN_IF(-Wvla-extension)
1.1.1.3 root 90: AC_SUBST([WARNFLAGS_CXX])
1.1 root 91:
92: # Checks for libraries.
93:
94: # Checks for header files.
95: AC_CHECK_HEADERS([bsd/bsd.h])
1.1.1.10! root 96: AC_CHECK_HEADERS([bsd/stdio.h])
! 97: AC_CHECK_HEADERS([byteswap.h])
1.1 root 98: AC_CHECK_HEADERS([endian.h])
1.1.1.2 root 99: AC_CHECK_HEADERS([histedit.h])
1.1 root 100: AC_CHECK_HEADERS([kqueue/sys/event.h])
1.1.1.3 root 101: AC_CHECK_HEADERS([pthread_np.h])
1.1 root 102: AC_CHECK_HEADERS([sys/endian.h])
103: AC_CHECK_HEADERS([sys/event.h])
104: AC_CHECK_HEADERS([net/bpf.h])
105: AC_CHECK_HEADERS([net/if_tap.h])
106: AC_CHECK_HEADERS([linux/if_tun.h])
1.1.1.10! root 107: AC_CHECK_HEADERS([libkern/OSByteOrder.h])
! 108: AC_CHECK_HEADERS([machine/endian.h])
1.1 root 109:
110: # Linux で <kqueue/sys/event.h> がなければここで停止したほうがいい
1.1.1.6 root 111: case "${host_os}" in
112: linux*)
113: if test "$ac_cv_header_kqueue_sys_event_h" != "yes"; then
114: AC_MSG_ERROR([*** kqueue is not found.
1.1.1.7 root 115: *** If you use Ubuntu, sudo apt install libkqueue-dev])
1.1.1.6 root 116: fi
117: ;;
118: esac
1.1 root 119:
120: # Checks for typedefs, structures, and compiler characteristics.
121: AC_CHECK_HEADER_STDBOOL
122: #AC_C_INLINE
123: #AC_TYPE_INT16_T
124: #AC_TYPE_INT32_T
125: #AC_TYPE_INT64_T
126: #AC_TYPE_INT8_T
127: #AC_TYPE_SIZE_T
128: #AC_TYPE_UINT16_T
129: #AC_TYPE_UINT32_T
130: #AC_TYPE_UINT64_T
131: #AC_TYPE_UINT8_T
132:
133: AC_MSG_CHECKING(for __builtin_assume)
1.1.1.10! root 134: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
! 135: [[
1.1 root 136: __builtin_assume(1);
1.1.1.10! root 137: ]])], [
! 138: AC_MSG_RESULT(yes)
! 139: AC_DEFINE(HAVE___BUILTIN_ASSUME)
! 140: ], [
! 141: AC_MSG_RESULT(no)
! 142: ])
1.1 root 143:
144: AC_MSG_CHECKING(for __builtin_bswap16)
1.1.1.10! root 145: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
! 146: [[
1.1 root 147: return __builtin_bswap16(0);
1.1.1.10! root 148: ]])], [
! 149: AC_MSG_RESULT(yes)
! 150: AC_DEFINE(HAVE___BUILTIN_BSWAP16)
! 151: ], [
! 152: AC_MSG_RESULT(no)
! 153: ])
1.1 root 154:
155: AC_MSG_CHECKING(for __builtin_bswap32)
1.1.1.10! root 156: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
! 157: [[
1.1 root 158: return __builtin_bswap32(0);
1.1.1.10! root 159: ]])], [
! 160: AC_MSG_RESULT(yes)
! 161: AC_DEFINE(HAVE___BUILTIN_BSWAP32)
! 162: ], [
! 163: AC_MSG_RESULT(no)
! 164: ])
1.1 root 165:
1.1.1.2 root 166: AC_MSG_CHECKING(for __builtin_bswap64)
1.1.1.10! root 167: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
! 168: [[
1.1.1.2 root 169: return __builtin_bswap64(0);
1.1.1.10! root 170: ]])], [
! 171: AC_MSG_RESULT(yes)
! 172: AC_DEFINE(HAVE___BUILTIN_BSWAP64)
! 173: ], [
! 174: AC_MSG_RESULT(no)
! 175: ])
1.1.1.2 root 176:
1.1 root 177: AC_MSG_CHECKING(for __builtin_expect)
1.1.1.10! root 178: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
1.1 root 179: if (__builtin_expect(1, 1)) return 0;
1.1.1.10! root 180: ]])], [
! 181: AC_MSG_RESULT(yes)
! 182: AC_DEFINE(HAVE___BUILTIN_EXPECT)
! 183: ], [
! 184: AC_MSG_RESULT(no)
! 185: ])
1.1 root 186:
187: AC_MSG_CHECKING(for __builtin_unreachable)
1.1.1.10! root 188: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
1.1 root 189: __builtin_unreachable();
1.1.1.10! root 190: ]])], [
! 191: AC_MSG_RESULT(yes)
! 192: AC_DEFINE(HAVE___BUILTIN_UNREACHABLE)
! 193: ], [
! 194: AC_MSG_RESULT(no)
! 195: ])
1.1 root 196:
197: AC_MSG_CHECKING(for __attribute__((__fallthrough__)))
198: old_CXXFLAGS="${CXXFLAGS}"
199: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
1.1.1.10! root 200: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
! 201: [
1.1 root 202: extern int x;
203: switch (x) {
204: case 0:
205: __attribute__((__fallthrough__));
206: case 1:
207: break;
208: }
1.1.1.10! root 209: ])], [
! 210: AC_MSG_RESULT([yes])
! 211: AC_DEFINE([HAVE___ATTRIBUTE_FALLTHROUGH])
! 212: ], [
! 213: AC_MSG_RESULT([no])
! 214: ])
1.1 root 215: CXXFLAGS="${old_CXXFLAGS}"
216:
217: dnl とりあえず __format__ までしか調べてないので、
218: dnl その中の __printf__ とかまで調べる必要ができたら直すこと。
219: AC_MSG_CHECKING(for __attribute__((__format__)))
220: old_CXXFLAGS="${CXXFLAGS}"
221: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
222: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
223: [
224: extern int f(const char *f, ...)
225: __attribute__((__format__(__printf__, 1, 2)));
1.1.1.10! root 226: ], [])], [
! 227: AC_MSG_RESULT([yes])
! 228: AC_DEFINE([HAVE___ATTRIBUTE_FORMAT])
1.1 root 229: ], [
1.1.1.10! root 230: AC_MSG_RESULT([no])
! 231: ])
1.1 root 232: CXXFLAGS="${old_CXXFLAGS}"
233:
234: AC_MSG_CHECKING(for __attribute__((no_sanitize)))
235: old_CXXFLAGS="${CXXFLAGS}"
236: CXXFLAGS="${CXXFLAGS} -Werror"
237: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
238: [
239: __attribute__((no_sanitize("undefined")))
240: int func() { return 0; }
1.1.1.10! root 241: ], [])], [
! 242: AC_MSG_RESULT([yes])
! 243: AC_DEFINE([HAVE___ATTRIBUTE_NO_SANITIZE])
1.1 root 244: ], [
1.1.1.10! root 245: AC_MSG_RESULT([no])
! 246: ])
1.1 root 247: CXXFLAGS="${old_CXXFLAGS}"
248:
249:
250: AC_MSG_CHECKING(for __attribute__((__packed__)))
251: old_CXXFLAGS="${CXXFLAGS}"
252: CXXFLAGS="${CXXFLAGS} -Werror"
1.1.1.10! root 253: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
! 254: [
1.1 root 255: struct x { char a; int b; } __attribute__((__packed__));
1.1.1.10! root 256: ])], [
! 257: AC_MSG_RESULT([yes])
! 258: AC_DEFINE([HAVE___ATTRIBUTE_PACKED])
! 259: ], [
! 260: AC_MSG_RESULT([no])
! 261: ])
1.1 root 262: CXXFLAGS="${old_CXXFLAGS}"
263:
264: AC_MSG_CHECKING(for __attribute__((__unused__)))
265: old_CXXFLAGS="${CXXFLAGS}"
266: CXXFLAGS="${CXXFLAGS} -Wunused-variable -Werror"
1.1.1.10! root 267: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
! 268: [
1.1 root 269: int a __attribute__((__unused__));
1.1.1.10! root 270: ])], [
! 271: AC_MSG_RESULT([yes])
! 272: AC_DEFINE([HAVE___ATTRIBUTE_UNUSED])
! 273: ], [
! 274: AC_MSG_RESULT([no])
! 275: ])
1.1 root 276: CXXFLAGS="${old_CXXFLAGS}"
277:
278: # Checks for library functions.
279: #AC_FUNC_MALLOC
280: #AC_FUNC_MMAP
281:
1.1.1.10! root 282: AC_MSG_CHECKING(for bswap16)
! 283: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 284: #if defined(HAVE_SYS_ENDIAN_H)
! 285: #include <sys/endian.h>
! 286: #endif
! 287: ], [
! 288: bswap16(0);
! 289: ])], [
! 290: AC_MSG_RESULT([yes])
! 291: AC_DEFINE([HAVE_BSWAP16])
! 292: ], [
! 293: AC_MSG_RESULT([no])
! 294: ])
! 295:
! 296: AC_MSG_CHECKING(for bswap32)
! 297: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 298: #if defined(HAVE_SYS_ENDIAN_H)
! 299: #include <sys/endian.h>
! 300: #endif
! 301: ], [
! 302: bswap32(0);
! 303: ])], [
! 304: AC_MSG_RESULT([yes])
! 305: AC_DEFINE([HAVE_BSWAP32])
! 306: ], [
! 307: AC_MSG_RESULT([no])
! 308: ])
! 309:
! 310: AC_MSG_CHECKING(for bswap64)
! 311: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 312: #if defined(HAVE_SYS_ENDIAN_H)
! 313: #include <sys/endian.h>
! 314: #endif
! 315: ], [
! 316: bswap64(0);
! 317: ])], [
! 318: AC_MSG_RESULT([yes])
! 319: AC_DEFINE([HAVE_BSWAP64])
! 320: ], [
! 321: AC_MSG_RESULT([no])
! 322: ])
! 323:
! 324: AC_MSG_CHECKING(for bswap_16)
! 325: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 326: #if defined(HAVE_BYTESWAP_H)
! 327: #include <byteswap.h>
! 328: #endif
! 329: ], [
! 330: bswap_16(0);
! 331: ])], [
! 332: AC_MSG_RESULT([yes])
! 333: AC_DEFINE([HAVE_BSWAP_16])
! 334: ], [
! 335: AC_MSG_RESULT([no])
! 336: ])
! 337:
! 338: AC_MSG_CHECKING(for bswap_32)
! 339: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 340: #if defined(HAVE_BYTESWAP_H)
! 341: #include <byteswap.h>
! 342: #endif
! 343: ], [
! 344: bswap_32(0);
! 345: ])], [
! 346: AC_MSG_RESULT([yes])
! 347: AC_DEFINE([HAVE_BSWAP_32])
! 348: ], [
! 349: AC_MSG_RESULT([no])
! 350: ])
! 351:
! 352: AC_MSG_CHECKING(for bswap_64)
! 353: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 354: #if defined(HAVE_BYTESWAP_H)
! 355: #include <byteswap.h>
! 356: #endif
! 357: ], [
! 358: bswap_64(0);
! 359: ])], [
! 360: AC_MSG_RESULT([yes])
! 361: AC_DEFINE([HAVE_BSWAP_64])
! 362: ], [
! 363: AC_MSG_RESULT([no])
! 364: ])
! 365:
! 366: AC_MSG_CHECKING(for swap16)
! 367: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 368: #if defined(HAVE_SYS_ENDIAN_H)
! 369: #include <sys/endian.h>
! 370: #endif
! 371: ], [
! 372: swap16(0);
! 373: ])], [
! 374: AC_MSG_RESULT([yes])
! 375: AC_DEFINE([HAVE_SWAP16])
! 376: ], [
! 377: AC_MSG_RESULT([no])
! 378: ])
! 379:
! 380: AC_MSG_CHECKING(for swap32)
! 381: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 382: #if defined(HAVE_SYS_ENDIAN_H)
! 383: #include <sys/endian.h>
! 384: #endif
! 385: ], [
! 386: swap32(0);
! 387: ])], [
! 388: AC_MSG_RESULT([yes])
! 389: AC_DEFINE([HAVE_SWAP32])
! 390: ], [
! 391: AC_MSG_RESULT([no])
! 392: ])
! 393:
! 394: AC_MSG_CHECKING(for swap64)
! 395: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 396: #if defined(HAVE_SYS_ENDIAN_H)
! 397: #include <sys/endian.h>
! 398: #endif
! 399: ], [
! 400: swap64(0);
! 401: ])], [
! 402: AC_MSG_RESULT([yes])
! 403: AC_DEFINE([HAVE_SWAP64])
! 404: ], [
! 405: AC_MSG_RESULT([no])
! 406: ])
! 407:
! 408: AC_MSG_CHECKING(for htobe16)
! 409: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 410: #if defined(HAVE_ENDIAN_H)
! 411: #include <endian.h>
! 412: #endif
! 413: #if defined(HAVE_SYS_ENDIAN_H)
! 414: #include <sys/endian.h>
! 415: #endif
! 416: #if defined(HAVE_MACHINE_ENDIAN_H)
! 417: #include <machine/endian.h>
! 418: #endif
! 419: ], [
! 420: htobe16(0);
! 421: ])], [
! 422: AC_MSG_RESULT([yes])
! 423: AC_DEFINE([HAVE_HTOBE16])
! 424: ], [
! 425: AC_MSG_RESULT([no])
! 426: ])
! 427:
! 428: AC_MSG_CHECKING(for pthread_getname_np)
! 429: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 430: #include <pthread.h>
431: #if defined(HAVE_PTHREAD_NP_H)
432: #include <pthread_np.h>
433: #endif
1.1.1.10! root 434: ]], [[
! 435: char name[32];
! 436: pthread_getname_np(pthread_self(), name, sizeof(name));
! 437: ]])], [
! 438: AC_MSG_RESULT(yes)
! 439: AC_DEFINE(HAVE_PTHREAD_GETNAME_NP)
1.1.1.3 root 440: ], [
1.1.1.10! root 441: AC_MSG_RESULT(no)
! 442: ])
! 443:
! 444: AC_MSG_CHECKING(for pthread_get_name_np)
! 445: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
! 446: #include <pthread.h>
! 447: #if defined(HAVE_PTHREAD_NP_H)
! 448: #include <pthread_np.h>
! 449: #endif
! 450: ]], [[
! 451: char name[32];
! 452: pthread_get_name_np(pthread_self(), name, sizeof(name));
! 453: ]])], [
! 454: AC_MSG_RESULT(yes)
! 455: AC_DEFINE(HAVE_PTHREAD_GET_NAME_NP)
! 456: ], [
! 457: AC_MSG_RESULT(no)
! 458: ])
! 459:
! 460: AC_MSG_CHECKING(for pthread_setname_np(name))
! 461: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
! 462: #include <pthread.h>
! 463: #if defined(HAVE_PTHREAD_NP_H)
! 464: #include <pthread_np.h>
! 465: #endif
! 466: ]], [[
1.1 root 467: pthread_setname_np("");
1.1.1.10! root 468: ]])], [
! 469: AC_MSG_RESULT(yes)
! 470: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_name)
! 471: ], [
! 472: AC_MSG_RESULT(no)
! 473: ])
1.1 root 474:
475: AC_MSG_CHECKING(for pthread_setname_np(thread, name))
1.1.1.10! root 476: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 477: #include <pthread.h>
478: #if defined(HAVE_PTHREAD_NP_H)
479: #include <pthread_np.h>
480: #endif
1.1.1.10! root 481: ]], [[
1.1 root 482: pthread_setname_np(pthread_self(), "");
1.1.1.10! root 483: ]])], [
! 484: AC_MSG_RESULT(yes)
! 485: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_th_name)
! 486: ], [
! 487: AC_MSG_RESULT(no)
! 488: ])
1.1 root 489:
490: AC_MSG_CHECKING(for pthread_setname_np(thread, name, arg))
1.1.1.10! root 491: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 492: #include <pthread.h>
493: #if defined(HAVE_PTHREAD_NP_H)
494: #include <pthread_np.h>
495: #endif
1.1.1.10! root 496: ]], [[
1.1 root 497: pthread_setname_np(pthread_self(), "", (void*)0);
1.1.1.10! root 498: ]])], [
! 499: AC_MSG_RESULT(yes)
! 500: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_th_name_arg)
! 501: ], [
! 502: AC_MSG_RESULT(no)
! 503: ])
1.1.1.3 root 504:
505: AC_MSG_CHECKING(for pthread_set_name_np(thread, name))
1.1.1.10! root 506: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 507: #include <pthread.h>
508: #if defined(HAVE_PTHREAD_NP_H)
509: #include <pthread_np.h>
510: #endif
1.1.1.10! root 511: ]], [[
1.1.1.3 root 512: pthread_set_name_np(pthread_self(), "");
1.1.1.10! root 513: ]])],[
! 514: AC_MSG_RESULT(yes)
! 515: AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP_th_name)
! 516: ], [
! 517: AC_MSG_RESULT(no)
! 518: ])
1.1 root 519:
1.1.1.6 root 520: AC_MSG_CHECKING(for iconv const)
1.1.1.10! root 521: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.6 root 522: #include <iconv.h>
1.1.1.10! root 523: ]], [[
1.1.1.6 root 524: const char **a;
525: iconv(0, a, 0, 0, 0);
1.1.1.10! root 526: ]])], [
! 527: AC_MSG_RESULT(yes)
! 528: AC_DEFINE(HAVE_ICONV_CONST)
! 529: ], [
! 530: AC_MSG_RESULT(no)
! 531: ])
1.1.1.6 root 532:
1.1.1.8 root 533: #
534: # Network
535: #
536: AC_MSG_CHECKING(for AF_PACKET)
1.1.1.10! root 537: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.8 root 538: #include <sys/socket.h>
1.1.1.10! root 539: ]], [[
1.1.1.8 root 540: AF_PACKET;
1.1.1.10! root 541: ]])], [
! 542: AC_MSG_RESULT(yes)
! 543: AC_DEFINE(HAVE_HOSTNET_AFPACKET)
! 544: AC_SUBST(HOSTNET_AFPACKET, yes)
! 545: ], [
! 546: AC_MSG_RESULT(no)
! 547: ])
1.1.1.8 root 548:
549: AC_MSG_CHECKING(for tap(4))
1.1.1.6 root 550: case "${host_os}" in
551: linux*)
552: if test x"$ac_cv_header_linux_if_tun_h" = xyes; then
1.1.1.8 root 553: netdriver_tap=yes
1.1.1.6 root 554: fi
555: ;;
556: openbsd*)
557: # OpenBSD has no <net/if_tap.h> but supports tap(4).
1.1.1.8 root 558: netdriver_tap=yes
1.1.1.6 root 559: ;;
1.1.1.8 root 560: *)
1.1.1.6 root 561: if test x"$ac_cv_header_net_if_tap_h" = xyes; then
1.1.1.8 root 562: netdriver_tap=yes
1.1.1.6 root 563: fi
1.1.1.8 root 564: ;;
565: esac
566: if test x"$netdriver_tap" = xyes; then
567: AC_MSG_RESULT([yes])
568: AC_DEFINE([HAVE_HOSTNET_TAP])
569: AC_SUBST([HOSTNET_TAP], [yes])
570: else
571: AC_MSG_RESULT([no])
572: fi
573:
574: AC_MSG_CHECKING(for bpf(4))
575: if test x"$ac_cv_header_net_bpf_h" = xyes; then
576: AC_MSG_RESULT([yes])
577: AC_DEFINE([HAVE_HOSTNET_BPF])
578: AC_SUBST([HOSTNET_BPF], [yes])
579: else
580: AC_MSG_RESULT([no])
1.1 root 581: fi
582:
583: # libbsd on Linux
1.1.1.5 root 584: AC_CHECK_LIB(c, getprogname, ,)
1.1 root 585: AC_CHECK_LIB(bsd, getprogname,
1.1.1.6 root 586: LIBS="${LIBS} -lbsd"
587: )
1.1.1.5 root 588: # なければ停止する
589: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
590: [
591: #include <stdlib.h>
592: #include "confdefs.h"
593: #if defined(HAVE_BSD_BSD_H)
594: #include <bsd/bsd.h>
595: #endif
596: ], [
597: getprogname()
1.1.1.10! root 598: ])], [
1.1.1.5 root 599: # nothing to do on success
1.1.1.10! root 600: ], [
! 601: AC_MSG_ERROR([*** getprogname is not found.
1.1.1.7 root 602: *** If you use Ubuntu, sudo apt install libbsd-dev])
1.1.1.5 root 603: ]
604: )
1.1 root 605:
1.1.1.2 root 606: # libedit (editline)
607: if test x"$ac_cv_header_histedit_h" = xyes; then
1.1.1.6 root 608: LIBS="${LIBS} -ledit -ltermcap"
1.1.1.2 root 609: fi
610:
1.1 root 611: # libkqueue on Linux
612: AC_CHECK_LIB(kqueue, kqueue,
1.1.1.6 root 613: LIBS="${LIBS} -lkqueue"
614: )
1.1 root 615:
1.1.1.5 root 616: AC_CHECK_LIB(z, gzclose,
1.1.1.6 root 617: LIBS="${LIBS} -lz",
1.1.1.5 root 618: [AC_MSG_ERROR([*** zlib is not found.
1.1.1.7 root 619: *** If use use Ubuntu, sudo apt install zlib1g-dev])]
1.1.1.5 root 620: )
621:
1.1 root 622: # wxWidgets
1.1.1.10! root 623: AC_ARG_WITH([gui],
! 624: [AS_HELP_STRING([--without-gui], [disable GUI support])],
! 625: [],
! 626: [with_gui=yes])
! 627:
! 628: AS_IF([test "x$with_gui" != xno], [
! 629: AC_MSG_CHECKING(for wx-config)
! 630: wxconfig_paths="${WX_CONFIG} wx-config-3.0 wx-config"
! 631: wxconfig=""
! 632: for c in ${wxconfig_paths}; do
! 633: ver=`$c --version 2>&1 | cut -f 1 -d .`
! 634: if test "$ver" = "3"; then
! 635: wxconfig=$c
! 636: break
! 637: fi
! 638: done
! 639: if test -z "$wxconfig"; then
! 640: AC_MSG_ERROR([*** wxWidgets-3.0 not found in ${wxconfig_paths}
1.1.1.7 root 641: *** If you use pkgsrc, install x11/wxGTK30.
642: *** If you use Ubuntu, sudo apt install libwxgtk3.0-gtk3-dev])
1.1.1.10! root 643: else
! 644: AC_MSG_RESULT([$wxconfig])
1.1 root 645:
1.1.1.10! root 646: AC_MSG_CHECKING(for wxWidgets version)
! 647: wxversion=`$wxconfig --version`
! 648: AC_MSG_RESULT([$wxversion])
! 649:
! 650: wxcppflags=`$wxconfig --cppflags`
! 651: wxlibs=`$wxconfig --libs`
! 652:
! 653: case "${host_os}" in
! 654: netbsd*)
! 655: # rpath。どうしたもんだかこれ
! 656: wxlibs=[`echo $wxlibs | sed -e 's/-L\([^ ]*\) /-L\1 -Wl,-R,\1 /'`]
! 657: ;;
! 658:
! 659: darwin*)
! 660: # XXX -framework AudioToolbox が指定されているとリンカがこけるorz
! 661: wxlibs=[`echo $wxlibs | sed -e 's/-framework AudioToolbox//'`]
! 662: ;;
! 663: esac
! 664:
! 665: AC_SUBST([WITH_GUI], [yes])
! 666: AC_SUBST([WXWIDGETS_CPPFLAGS], [$wxcppflags])
! 667: AC_SUBST([WXWIDGETS_LIBS], [$wxlibs])
! 668: fi
1.1 root 669:
1.1.1.10! root 670: # gettext
! 671: AC_CHECK_TOOL([MSGFMT], [msgfmt], [:])
! 672: if test $MSGFMT = [:]; then
! 673: AC_MSG_ERROR([*** msgfmt not found.
1.1.1.7 root 674: *** If you use pkgsrc, install devel/gettext-tools.
675: *** If you use Ubuntu, sudo apt install gettext])
1.1.1.10! root 676: fi
! 677: ], [
! 678: AC_SUBST([WITH_GUI], [no])
! 679: ])
1.1.1.5 root 680:
1.1 root 681: AC_CONFIG_FILES([Makefile.cfg
682: host/Makefile
683: wx/Makefile
684: util/mkcgrom/Makefile
685: util/viewcgrom/Makefile
686: ])
1.1.1.2 root 687: AC_CONFIG_HEADERS([config-nono.h])
1.1 root 688: AC_OUTPUT
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.