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