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