|
|
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"
1.1.1.17 root 55: AC_COMPILE_IFELSE([
56: AC_LANG_PROGRAM([], [])
57: ], [
1.1.1.3 root 58: AC_MSG_RESULT([yes])
1.1.1.11 root 59: eval `echo cc_has$1=yes | sed -e 's/-/_/g'`
1.1.1.17 root 60: WARNFLAGS_C="${WARNFLAGS_C} $1"
61: ], [
62: AC_MSG_RESULT([no])
63: ])
1.1.1.3 root 64: CFLAGS="${old_CFLAGS}"
65: ])
1.1.1.4 root 66: ADD_CC_WARN_IF(-Wcast-qual)
67: ADD_CC_WARN_IF(-Wextra-semi)
68: ADD_CC_WARN_IF(-Wlogical-op)
69: ADD_CC_WARN_IF(-Wmissing-prototypes)
70: ADD_CC_WARN_IF(-Wmissing-variable-declarations)
1.1.1.11 root 71: # -Wshadow-local があればそっちを使う(gcc>=7)、なければ -Wshadow (clang)
72: ADD_CC_WARN_IF(-Wshadow-local)
73: if test x"${cc_has_Wshadow_local}" != xyes; then
74: ADD_CC_WARN_IF(-Wshadow)
75: fi
1.1.1.15 root 76: ADD_CC_WARN_IF(-Wstring-conversion)
77: ADD_CC_WARN_IF(-Wtype-limits)
1.1.1.3 root 78: AC_LANG_POP([C])
79: AC_SUBST([WARNFLAGS_C])
80:
81: # C++ コンパイラのワーニングオプション
82: # (AC_LANG は C++ のまま継続する)
1.1.1.10 root 83: AC_LANG([C++])
1.1.1.4 root 84: AC_DEFUN([ADD_CXX_WARN_IF],[
1.1.1.3 root 85: AC_MSG_CHECKING([whether c++ accepts $1])
86: old_CXXFLAGS="${CXXFLAGS}"
87: CXXFLAGS="${CXXFLAGS} -Werror $1"
1.1.1.17 root 88: AC_COMPILE_IFELSE([
89: AC_LANG_PROGRAM([], [])
90: ], [
1.1.1.3 root 91: AC_MSG_RESULT([yes])
1.1.1.11 root 92: eval `echo cxx_has$1=yes | sed -e 's/-/_/g'`
1.1.1.17 root 93: WARNFLAGS_CXX="${WARNFLAGS_CXX} $1"
94: ], [
95: AC_MSG_RESULT([no])
96: ])
1.1.1.3 root 97: CXXFLAGS="${old_CXXFLAGS}"
98: ])
1.1.1.4 root 99: ADD_CXX_WARN_IF(-Wcast-qual)
100: ADD_CXX_WARN_IF(-Wextra-semi)
101: ADD_CXX_WARN_IF(-Winconsistent-missing-destructor-override)
1.1.1.15 root 102: ADD_CXX_WARN_IF(-Winconsistent-missing-override)
1.1.1.4 root 103: ADD_CXX_WARN_IF(-Wlogical-op)
104: ADD_CXX_WARN_IF(-Wmissing-prototypes)
105: ADD_CXX_WARN_IF(-Wmissing-variable-declarations)
1.1.1.11 root 106: # -Wshadow-local があればそっちを使う(gcc>=7)、なければ -Wshadow (clang)
107: ADD_CXX_WARN_IF(-Wshadow-local)
108: if test x"${cxx_has_Wshadow_local}" != xyes; then
109: ADD_CXX_WARN_IF(-Wshadow)
110: fi
1.1.1.15 root 111: ADD_CXX_WARN_IF(-Wstring-conversion)
112: ADD_CXX_WARN_IF(-Wsuggest-destructor-override)
1.1.1.12 root 113: ADD_CXX_WARN_IF(-Wsuggest-override)
1.1.1.19! root 114: # gcc14 が C++14 に対しても C++20 のエラーを出そうとする。は??
! 115: ADD_CXX_WARN_IF(-Wno-template-id-cdtor)
1.1.1.15 root 116: ADD_CXX_WARN_IF(-Wtype-limits)
1.1.1.4 root 117: ADD_CXX_WARN_IF(-Wvla-extension)
1.1.1.3 root 118: AC_SUBST([WARNFLAGS_CXX])
1.1 root 119:
1.1.1.15 root 120: # コンパイラが AVX2 をサポートしているか。
1.1.1.14 root 121: AC_ARG_ENABLE([avx2],
122: [AS_HELP_STRING([--disable-avx2], [disable avx2 support])],
123: [],
124: [enable_avx2=yes])
125:
126: AS_IF([test x"${enable_avx2}" != x"no"], [
1.1.1.15 root 127: AC_MSG_CHECKING(whether the compiler supports AVX2)
1.1.1.14 root 128: if test x"${host_cpu}" = x"x86_64"; then
129: if test x"${host_cpu}" = x"${build_cpu}"; then
130: old_CXXFLAGS="${CXXFLAGS}"
131: CXXFLAGS="${CXXFLAGS} -mavx2"
132: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
133: #include <x86intrin.h>
134: ], [
135: #if !defined(__AVX2__)
136: #error __AVX2__ is not defined by the compiler.
137: #endif
138: __m256i v;
139: ])], [
140: have_avx2=yes
141: ])
142: CXXFLAGS="${old_CXXFLAGS}"
143: fi
144: fi
145: if test x"${have_avx2}" = x"yes"; then
146: AC_MSG_RESULT([yes])
147: AC_DEFINE([HAVE_AVX2])
148: AC_SUBST(HOST_HAS_AVX2, yes)
149: else
150: AC_MSG_RESULT([no])
151: fi
152: ], [
153: ])
154:
1.1.1.15 root 155: # コンパイラが NEON をサポートしているか。
156: AC_ARG_ENABLE([neon],
157: [AS_HELP_STRING([--disable-neon], [disable NEON support])],
158: [],
159: [enable_neon=yes])
160:
161: AS_IF([test x"${enable_neon}" != x"no"], [
162: AC_MSG_CHECKING(whether the compiler supports NEON)
163: if test x"${host_cpu}" = x"aarch64"; then
164: if test x"${host_cpu}" = x"${build_cpu}"; then
165: old_CXXFLAGS="${CXXFLAGS}"
166: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
167: #include <arm_neon.h>
168: ], [
169: uint8x16_t v;
170: ])], [
171: have_neon=yes
172: ])
173: CXXFLAGS="${old_CXXFLAGS}"
174: fi
175: fi
176: if test x"${have_neon}" = x"yes"; then
177: AC_MSG_RESULT([yes])
178: AC_DEFINE([HAVE_NEON])
179: AC_SUBST(HOST_HAS_NEON, yes)
180: else
181: AC_MSG_RESULT([no])
182: fi
183: ], [
184: ])
185:
1.1 root 186: # Checks for libraries.
187:
188: # Checks for header files.
1.1.1.19! root 189: AC_CHECK_HEADERS([alsa/asoundlib.h])
1.1 root 190: AC_CHECK_HEADERS([bsd/bsd.h])
1.1.1.10 root 191: AC_CHECK_HEADERS([bsd/stdio.h])
192: AC_CHECK_HEADERS([byteswap.h])
1.1 root 193: AC_CHECK_HEADERS([endian.h])
194: AC_CHECK_HEADERS([kqueue/sys/event.h])
1.1.1.3 root 195: AC_CHECK_HEADERS([pthread_np.h])
1.1.1.15 root 196: AC_CHECK_HEADERS([sched.h])
1.1.1.19! root 197: AC_CHECK_HEADERS([sndio.h])
! 198: AC_CHECK_HEADERS([sys/audioio.h])
1.1.1.15 root 199: AC_CHECK_HEADERS([sys/cpuset.h])
1.1 root 200: AC_CHECK_HEADERS([sys/endian.h])
201: AC_CHECK_HEADERS([sys/event.h])
202: AC_CHECK_HEADERS([net/bpf.h])
203: AC_CHECK_HEADERS([net/if_tap.h])
204: AC_CHECK_HEADERS([linux/if_tun.h])
1.1.1.10 root 205: AC_CHECK_HEADERS([libkern/OSByteOrder.h])
206: AC_CHECK_HEADERS([machine/endian.h])
1.1 root 207:
208: # Linux で <kqueue/sys/event.h> がなければここで停止したほうがいい
1.1.1.6 root 209: case "${host_os}" in
210: linux*)
211: if test "$ac_cv_header_kqueue_sys_event_h" != "yes"; then
212: AC_MSG_ERROR([*** kqueue is not found.
1.1.1.7 root 213: *** If you use Ubuntu, sudo apt install libkqueue-dev])
1.1.1.6 root 214: fi
215: ;;
216: esac
1.1 root 217:
218: # Checks for typedefs, structures, and compiler characteristics.
219: AC_CHECK_HEADER_STDBOOL
220: #AC_C_INLINE
221: #AC_TYPE_INT16_T
222: #AC_TYPE_INT32_T
223: #AC_TYPE_INT64_T
224: #AC_TYPE_INT8_T
225: #AC_TYPE_SIZE_T
226: #AC_TYPE_UINT16_T
227: #AC_TYPE_UINT32_T
228: #AC_TYPE_UINT64_T
229: #AC_TYPE_UINT8_T
230:
1.1.1.15 root 231: AC_MSG_CHECKING(for cpuset_t)
232: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
233: #if defined(HAVE_SCHED_H)
234: #include <sched.h>
235: #endif
236: #if defined(HAVE_SYS_CPUSET_H)
237: #include <sys/cpuset.h>
238: #endif
239: ]], [[
240: cpuset_t set;
241: ]])], [
242: AC_MSG_RESULT(yes)
243: AC_DEFINE(HAVE_CPUSET_T)
244: ], [
245: AC_MSG_RESULT(no)
246: ])
247:
248: AC_MSG_CHECKING(for cpuset_t *)
249: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
250: #if defined(HAVE_SCHED_H)
251: #include <sched.h>
252: #endif
253: #if defined(HAVE_SYS_CPUSET_H)
254: #include <sys/cpuset.h>
255: #endif
256: ]], [[
257: cpuset_t *set;
258: ]])], [
259: AC_MSG_RESULT(yes)
260: AC_DEFINE(HAVE_CPUSET_T_P)
261: ], [
262: AC_MSG_RESULT(no)
263: ])
264:
265: AC_MSG_CHECKING(for cpu_set_t)
266: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
267: #include <sched.h>
268: ]], [[
269: cpu_set_t set;
270: ]])], [
271: AC_MSG_RESULT(yes)
272: AC_DEFINE(HAVE_CPU_SET_T)
273: ], [
274: AC_MSG_RESULT(no)
275: ])
276:
277:
278: # __builtin
279:
1.1 root 280: AC_MSG_CHECKING(for __builtin_assume)
1.1.1.10 root 281: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
282: [[
1.1 root 283: __builtin_assume(1);
1.1.1.10 root 284: ]])], [
285: AC_MSG_RESULT(yes)
286: AC_DEFINE(HAVE___BUILTIN_ASSUME)
287: ], [
288: AC_MSG_RESULT(no)
289: ])
1.1 root 290:
1.1.1.15 root 291: AC_MSG_CHECKING(for __builtin_bitreverse8)
292: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
293: [[
294: return __builtin_bitreverse8(1);
295: ]])], [
296: AC_MSG_RESULT(yes)
297: AC_DEFINE(HAVE___BUILTIN_BITREVERSE8)
298: ], [
299: AC_MSG_RESULT(no)
300: ])
301:
1.1.1.16 root 302: AC_MSG_CHECKING(for __builtin_bitreverse16)
303: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
304: [[
305: return __builtin_bitreverse16(1);
306: ]])], [
307: AC_MSG_RESULT(yes)
308: AC_DEFINE(HAVE___BUILTIN_BITREVERSE16)
309: ], [
310: AC_MSG_RESULT(no)
311: ])
312:
313: AC_MSG_CHECKING(for __builtin_bitreverse32)
314: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
315: [[
316: return __builtin_bitreverse32(1);
317: ]])], [
318: AC_MSG_RESULT(yes)
319: AC_DEFINE(HAVE___BUILTIN_BITREVERSE32)
320: ], [
321: AC_MSG_RESULT(no)
322: ])
323:
1.1 root 324: AC_MSG_CHECKING(for __builtin_bswap16)
1.1.1.10 root 325: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
326: [[
1.1 root 327: return __builtin_bswap16(0);
1.1.1.10 root 328: ]])], [
329: AC_MSG_RESULT(yes)
330: AC_DEFINE(HAVE___BUILTIN_BSWAP16)
331: ], [
332: AC_MSG_RESULT(no)
333: ])
1.1 root 334:
335: AC_MSG_CHECKING(for __builtin_bswap32)
1.1.1.10 root 336: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
337: [[
1.1 root 338: return __builtin_bswap32(0);
1.1.1.10 root 339: ]])], [
340: AC_MSG_RESULT(yes)
341: AC_DEFINE(HAVE___BUILTIN_BSWAP32)
342: ], [
343: AC_MSG_RESULT(no)
344: ])
1.1 root 345:
1.1.1.2 root 346: AC_MSG_CHECKING(for __builtin_bswap64)
1.1.1.10 root 347: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
348: [[
1.1.1.2 root 349: return __builtin_bswap64(0);
1.1.1.10 root 350: ]])], [
351: AC_MSG_RESULT(yes)
352: AC_DEFINE(HAVE___BUILTIN_BSWAP64)
353: ], [
354: AC_MSG_RESULT(no)
355: ])
1.1.1.2 root 356:
1.1 root 357: AC_MSG_CHECKING(for __builtin_expect)
1.1.1.10 root 358: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
1.1 root 359: if (__builtin_expect(1, 1)) return 0;
1.1.1.10 root 360: ]])], [
361: AC_MSG_RESULT(yes)
362: AC_DEFINE(HAVE___BUILTIN_EXPECT)
363: ], [
364: AC_MSG_RESULT(no)
365: ])
1.1 root 366:
1.1.1.15 root 367: AC_MSG_CHECKING(for __builtin_rotateleft32)
368: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
369: [[
370: return __builtin_rotateleft32(1, 1);
371: ]])], [
372: AC_MSG_RESULT(yes)
373: AC_DEFINE(HAVE___BUILTIN_ROTATELEFT32)
374: ], [
375: AC_MSG_RESULT(no)
376: ])
377:
378: AC_MSG_CHECKING(for __builtin_rotateright32)
379: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
380: [[
381: return __builtin_rotateright32(1, 1);
382: ]])], [
383: AC_MSG_RESULT(yes)
384: AC_DEFINE(HAVE___BUILTIN_ROTATERIGHT32)
385: ], [
386: AC_MSG_RESULT(no)
387: ])
388:
1.1 root 389: AC_MSG_CHECKING(for __builtin_unreachable)
1.1.1.10 root 390: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
1.1 root 391: __builtin_unreachable();
1.1.1.10 root 392: ]])], [
393: AC_MSG_RESULT(yes)
394: AC_DEFINE(HAVE___BUILTIN_UNREACHABLE)
395: ], [
396: AC_MSG_RESULT(no)
397: ])
1.1 root 398:
399: AC_MSG_CHECKING(for __attribute__((__fallthrough__)))
400: old_CXXFLAGS="${CXXFLAGS}"
401: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
1.1.1.10 root 402: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
403: [
1.1 root 404: extern int x;
405: switch (x) {
406: case 0:
407: __attribute__((__fallthrough__));
408: case 1:
409: break;
410: }
1.1.1.10 root 411: ])], [
412: AC_MSG_RESULT([yes])
413: AC_DEFINE([HAVE___ATTRIBUTE_FALLTHROUGH])
414: ], [
415: AC_MSG_RESULT([no])
416: ])
1.1 root 417: CXXFLAGS="${old_CXXFLAGS}"
418:
419: dnl とりあえず __format__ までしか調べてないので、
420: dnl その中の __printf__ とかまで調べる必要ができたら直すこと。
421: AC_MSG_CHECKING(for __attribute__((__format__)))
422: old_CXXFLAGS="${CXXFLAGS}"
423: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
424: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
425: [
426: extern int f(const char *f, ...)
427: __attribute__((__format__(__printf__, 1, 2)));
1.1.1.10 root 428: ], [])], [
429: AC_MSG_RESULT([yes])
430: AC_DEFINE([HAVE___ATTRIBUTE_FORMAT])
1.1 root 431: ], [
1.1.1.10 root 432: AC_MSG_RESULT([no])
433: ])
1.1 root 434: CXXFLAGS="${old_CXXFLAGS}"
435:
436: AC_MSG_CHECKING(for __attribute__((no_sanitize)))
437: old_CXXFLAGS="${CXXFLAGS}"
438: CXXFLAGS="${CXXFLAGS} -Werror"
439: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
440: [
441: __attribute__((no_sanitize("undefined")))
442: int func() { return 0; }
1.1.1.10 root 443: ], [])], [
444: AC_MSG_RESULT([yes])
445: AC_DEFINE([HAVE___ATTRIBUTE_NO_SANITIZE])
1.1 root 446: ], [
1.1.1.10 root 447: AC_MSG_RESULT([no])
448: ])
1.1 root 449: CXXFLAGS="${old_CXXFLAGS}"
450:
451:
452: AC_MSG_CHECKING(for __attribute__((__packed__)))
453: old_CXXFLAGS="${CXXFLAGS}"
454: CXXFLAGS="${CXXFLAGS} -Werror"
1.1.1.10 root 455: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
456: [
1.1 root 457: struct x { char a; int b; } __attribute__((__packed__));
1.1.1.10 root 458: ])], [
459: AC_MSG_RESULT([yes])
460: AC_DEFINE([HAVE___ATTRIBUTE_PACKED])
461: ], [
462: AC_MSG_RESULT([no])
463: ])
1.1 root 464: CXXFLAGS="${old_CXXFLAGS}"
465:
466: AC_MSG_CHECKING(for __attribute__((__unused__)))
467: old_CXXFLAGS="${CXXFLAGS}"
468: CXXFLAGS="${CXXFLAGS} -Wunused-variable -Werror"
1.1.1.10 root 469: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
470: [
1.1 root 471: int a __attribute__((__unused__));
1.1.1.10 root 472: ])], [
473: AC_MSG_RESULT([yes])
474: AC_DEFINE([HAVE___ATTRIBUTE_UNUSED])
475: ], [
476: AC_MSG_RESULT([no])
477: ])
1.1 root 478: CXXFLAGS="${old_CXXFLAGS}"
479:
480: # Checks for library functions.
481: #AC_FUNC_MALLOC
482: #AC_FUNC_MMAP
483:
1.1.1.10 root 484: AC_MSG_CHECKING(for bswap16)
485: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
486: #if defined(HAVE_SYS_ENDIAN_H)
487: #include <sys/endian.h>
488: #endif
489: ], [
490: bswap16(0);
491: ])], [
492: AC_MSG_RESULT([yes])
493: AC_DEFINE([HAVE_BSWAP16])
494: ], [
495: AC_MSG_RESULT([no])
496: ])
497:
498: AC_MSG_CHECKING(for bswap32)
499: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
500: #if defined(HAVE_SYS_ENDIAN_H)
501: #include <sys/endian.h>
502: #endif
503: ], [
504: bswap32(0);
505: ])], [
506: AC_MSG_RESULT([yes])
507: AC_DEFINE([HAVE_BSWAP32])
508: ], [
509: AC_MSG_RESULT([no])
510: ])
511:
512: AC_MSG_CHECKING(for bswap64)
513: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
514: #if defined(HAVE_SYS_ENDIAN_H)
515: #include <sys/endian.h>
516: #endif
517: ], [
518: bswap64(0);
519: ])], [
520: AC_MSG_RESULT([yes])
521: AC_DEFINE([HAVE_BSWAP64])
522: ], [
523: AC_MSG_RESULT([no])
524: ])
525:
526: AC_MSG_CHECKING(for bswap_16)
527: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
528: #if defined(HAVE_BYTESWAP_H)
529: #include <byteswap.h>
530: #endif
531: ], [
532: bswap_16(0);
533: ])], [
534: AC_MSG_RESULT([yes])
535: AC_DEFINE([HAVE_BSWAP_16])
536: ], [
537: AC_MSG_RESULT([no])
538: ])
539:
540: AC_MSG_CHECKING(for bswap_32)
541: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
542: #if defined(HAVE_BYTESWAP_H)
543: #include <byteswap.h>
544: #endif
545: ], [
546: bswap_32(0);
547: ])], [
548: AC_MSG_RESULT([yes])
549: AC_DEFINE([HAVE_BSWAP_32])
550: ], [
551: AC_MSG_RESULT([no])
552: ])
553:
554: AC_MSG_CHECKING(for bswap_64)
555: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
556: #if defined(HAVE_BYTESWAP_H)
557: #include <byteswap.h>
558: #endif
559: ], [
560: bswap_64(0);
561: ])], [
562: AC_MSG_RESULT([yes])
563: AC_DEFINE([HAVE_BSWAP_64])
564: ], [
565: AC_MSG_RESULT([no])
566: ])
567:
568: AC_MSG_CHECKING(for swap16)
569: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
570: #if defined(HAVE_SYS_ENDIAN_H)
571: #include <sys/endian.h>
572: #endif
573: ], [
574: swap16(0);
575: ])], [
576: AC_MSG_RESULT([yes])
577: AC_DEFINE([HAVE_SWAP16])
578: ], [
579: AC_MSG_RESULT([no])
580: ])
581:
582: AC_MSG_CHECKING(for swap32)
583: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
584: #if defined(HAVE_SYS_ENDIAN_H)
585: #include <sys/endian.h>
586: #endif
587: ], [
588: swap32(0);
589: ])], [
590: AC_MSG_RESULT([yes])
591: AC_DEFINE([HAVE_SWAP32])
592: ], [
593: AC_MSG_RESULT([no])
594: ])
595:
596: AC_MSG_CHECKING(for swap64)
597: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
598: #if defined(HAVE_SYS_ENDIAN_H)
599: #include <sys/endian.h>
600: #endif
601: ], [
602: swap64(0);
603: ])], [
604: AC_MSG_RESULT([yes])
605: AC_DEFINE([HAVE_SWAP64])
606: ], [
607: AC_MSG_RESULT([no])
608: ])
609:
610: AC_MSG_CHECKING(for htobe16)
611: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
612: #if defined(HAVE_ENDIAN_H)
613: #include <endian.h>
614: #endif
615: #if defined(HAVE_SYS_ENDIAN_H)
616: #include <sys/endian.h>
617: #endif
618: #if defined(HAVE_MACHINE_ENDIAN_H)
619: #include <machine/endian.h>
620: #endif
621: ], [
622: htobe16(0);
623: ])], [
624: AC_MSG_RESULT([yes])
625: AC_DEFINE([HAVE_HTOBE16])
626: ], [
627: AC_MSG_RESULT([no])
628: ])
629:
1.1.1.15 root 630: AC_MSG_CHECKING(for CPU_COUNT)
631: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
632: #if defined(HAVE_SCHED_H)
633: #include <sched.h>
634: #endif
635: #if defined(HAVE_SYS_CPUSET_H)
636: #include <sys/cpuset.h>
637: #endif
638: ], [
639: #if defined(HAVE_CPUSET_T)
640: cpuset_t set;
641: #elif defined(HAVE_CPU_SET_T)
642: cpu_set_t set;
643: #endif
644: CPU_COUNT(&set);
645: ])], [
646: AC_MSG_RESULT([yes])
647: AC_DEFINE([HAVE_CPU_COUNT])
648: ], [
649: AC_MSG_RESULT([no])
650: ])
651:
652: AC_MSG_CHECKING(for CPU_ISSET)
653: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
654: #if defined(HAVE_SCHED_H)
655: #include <sched.h>
656: #endif
657: #if defined(HAVE_SYS_CPUSET_H)
658: #include <sys/cpuset.h>
659: #endif
660: ], [
661: #if defined(HAVE_CPUSET_T)
662: cpuset_t set;
663: #elif defined(HAVE_CPU_SET_T)
664: cpu_set_t set;
665: #endif
666: CPU_ISSET(0, &set);
667: ])], [
668: AC_MSG_RESULT([yes])
669: AC_DEFINE([HAVE_CPU_ISSET])
670: ], [
671: AC_MSG_RESULT([no])
672: ])
673:
674: AC_MSG_CHECKING(for CPU_SET)
675: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
676: #if defined(HAVE_SCHED_H)
677: #include <sched.h>
678: #endif
679: #if defined(HAVE_SYS_CPUSET_H)
680: #include <sys/cpuset.h>
681: #endif
682: ], [
683: #if defined(HAVE_CPUSET_T)
684: cpuset_t set;
685: #elif defined(HAVE_CPU_SET_T)
686: cpu_set_t set;
687: #endif
688: CPU_SET(0, &set);
689: ])], [
690: AC_MSG_RESULT([yes])
691: AC_DEFINE([HAVE_CPU_SET])
692: ], [
693: AC_MSG_RESULT([no])
694: ])
695:
696: AC_MSG_CHECKING(for CPU_ZERO)
697: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
698: #if defined(HAVE_SCHED_H)
699: #include <sched.h>
700: #endif
701: #if defined(HAVE_SYS_CPUSET_H)
702: #include <sys/cpuset.h>
703: #endif
704: ], [
705: #if defined(HAVE_CPUSET_T)
706: cpuset_t set;
707: #elif defined(HAVE_CPU_SET_T)
708: cpu_set_t set;
709: #endif
710: CPU_ZERO(&set);
711: ])], [
712: AC_MSG_RESULT([yes])
713: AC_DEFINE([HAVE_CPU_ZERO])
714: ], [
715: AC_MSG_RESULT([no])
716: ])
717:
718: AC_MSG_CHECKING(for cpuset_create)
719: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
720: #include <sched.h>
721: ], [
722: cpuset_create();
723: ])], [
724: AC_MSG_RESULT([yes])
725: AC_DEFINE([HAVE_CPUSET_CREATE])
726: ], [
727: AC_MSG_RESULT([no])
728: ])
729:
730: AC_MSG_CHECKING(for cpuset_isset)
731: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
732: #include <sched.h>
733: ], [
734: cpuset_isset(0, NULL);
735: ])], [
736: AC_MSG_RESULT([yes])
737: AC_DEFINE([HAVE_CPUSET_ISSET])
738: ], [
739: AC_MSG_RESULT([no])
740: ])
741:
742: AC_MSG_CHECKING(for cpuset_set)
743: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
744: #include <sched.h>
745: ], [
746: cpuset_set(0, NULL);
747: ])], [
748: AC_MSG_RESULT([yes])
749: AC_DEFINE([HAVE_CPUSET_SET])
750: ], [
751: AC_MSG_RESULT([no])
752: ])
753:
754: AC_MSG_CHECKING(for cpuset_size)
755: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
756: #include <sched.h>
757: ], [
758: cpuset_size(NULL);
759: ])], [
760: AC_MSG_RESULT([yes])
761: AC_DEFINE([HAVE_CPUSET_SIZE])
762: ], [
763: AC_MSG_RESULT([no])
764: ])
765:
1.1.1.14 root 766: AC_MSG_CHECKING(for statfs)
767: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
768: #include <sys/statfs.h>
769: ], [
770: struct statfs buf;
771: statfs("", &buf);
772: ])], [
773: AC_MSG_RESULT([yes])
774: AC_DEFINE([HAVE_STATFS])
775: have_statxxfs=statfs
776: ], [
777: AC_MSG_RESULT([no])
778: ])
779:
780: AC_MSG_CHECKING(for statvfs)
781: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
782: #include <sys/statvfs.h>
783: ], [
784: struct statvfs buf;
785: statvfs("", &buf);
786: ])], [
787: AC_MSG_RESULT([yes])
788: AC_DEFINE([HAVE_STATVFS])
789: have_statxxfs=statvfs
790: ], [
791: AC_MSG_RESULT([no])
792: ])
793:
794: if test -z "${have_statxxfs}"; then
795: AC_MSG_FAILURE([*** No statfs() nor statvfs() found])
796: fi
797:
798: AC_CHECK_MEMBER([struct stat.st_mtimespec], [
799: AC_DEFINE([HAVE_STAT_ST_TIMESPEC])
800: ], [], [
801: #include <sys/stat.h>
802: ])
803:
804: AC_MSG_CHECKING(for timegm)
805: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
806: #include <time.h>
807: ], [
808: timegm(NULL);
809: ])], [
810: AC_MSG_RESULT([yes])
811: ], [
812: AC_MSG_RESULT([no])
813: AC_MSG_FAILURE([*** No timegm() found])
814: ])
815:
1.1.1.10 root 816: AC_MSG_CHECKING(for pthread_getname_np)
817: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 818: #include <pthread.h>
819: #if defined(HAVE_PTHREAD_NP_H)
820: #include <pthread_np.h>
821: #endif
1.1.1.10 root 822: ]], [[
823: char name[32];
824: pthread_getname_np(pthread_self(), name, sizeof(name));
825: ]])], [
826: AC_MSG_RESULT(yes)
827: AC_DEFINE(HAVE_PTHREAD_GETNAME_NP)
1.1.1.3 root 828: ], [
1.1.1.10 root 829: AC_MSG_RESULT(no)
830: ])
831:
832: AC_MSG_CHECKING(for pthread_get_name_np)
833: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
834: #include <pthread.h>
835: #if defined(HAVE_PTHREAD_NP_H)
836: #include <pthread_np.h>
837: #endif
838: ]], [[
839: char name[32];
840: pthread_get_name_np(pthread_self(), name, sizeof(name));
841: ]])], [
842: AC_MSG_RESULT(yes)
843: AC_DEFINE(HAVE_PTHREAD_GET_NAME_NP)
844: ], [
845: AC_MSG_RESULT(no)
846: ])
847:
848: AC_MSG_CHECKING(for pthread_setname_np(name))
849: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
850: #include <pthread.h>
851: #if defined(HAVE_PTHREAD_NP_H)
852: #include <pthread_np.h>
853: #endif
854: ]], [[
1.1 root 855: pthread_setname_np("");
1.1.1.10 root 856: ]])], [
857: AC_MSG_RESULT(yes)
858: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_name)
859: ], [
860: AC_MSG_RESULT(no)
861: ])
1.1 root 862:
863: AC_MSG_CHECKING(for pthread_setname_np(thread, name))
1.1.1.10 root 864: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 865: #include <pthread.h>
866: #if defined(HAVE_PTHREAD_NP_H)
867: #include <pthread_np.h>
868: #endif
1.1.1.10 root 869: ]], [[
1.1 root 870: pthread_setname_np(pthread_self(), "");
1.1.1.10 root 871: ]])], [
872: AC_MSG_RESULT(yes)
873: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_th_name)
874: ], [
875: AC_MSG_RESULT(no)
876: ])
1.1 root 877:
878: AC_MSG_CHECKING(for pthread_setname_np(thread, name, arg))
1.1.1.10 root 879: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 880: #include <pthread.h>
881: #if defined(HAVE_PTHREAD_NP_H)
882: #include <pthread_np.h>
883: #endif
1.1.1.10 root 884: ]], [[
1.1 root 885: pthread_setname_np(pthread_self(), "", (void*)0);
1.1.1.10 root 886: ]])], [
887: AC_MSG_RESULT(yes)
888: AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_th_name_arg)
889: ], [
890: AC_MSG_RESULT(no)
891: ])
1.1.1.3 root 892:
893: AC_MSG_CHECKING(for pthread_set_name_np(thread, name))
1.1.1.10 root 894: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.3 root 895: #include <pthread.h>
896: #if defined(HAVE_PTHREAD_NP_H)
897: #include <pthread_np.h>
898: #endif
1.1.1.10 root 899: ]], [[
1.1.1.3 root 900: pthread_set_name_np(pthread_self(), "");
1.1.1.10 root 901: ]])],[
902: AC_MSG_RESULT(yes)
903: AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP_th_name)
904: ], [
905: AC_MSG_RESULT(no)
906: ])
1.1 root 907:
1.1.1.15 root 908: AC_MSG_CHECKING(for pthread_setaffinity_np)
909: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
910: #include <pthread.h>
911: #if defined(HAVE_PTHREAD_NP_H)
912: #include <pthread_np.h>
913: #endif
914: ]], [[
915: pthread_setaffinity_np(pthread_self(), 0, NULL);
916: ]])], [
917: AC_MSG_RESULT(yes)
918: AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP)
919: ], [
920: AC_MSG_RESULT(no)
921: ])
922:
923:
1.1.1.8 root 924: #
925: # Network
926: #
927: AC_MSG_CHECKING(for AF_PACKET)
1.1.1.10 root 928: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1.1.8 root 929: #include <sys/socket.h>
1.1.1.10 root 930: ]], [[
1.1.1.8 root 931: AF_PACKET;
1.1.1.10 root 932: ]])], [
933: AC_MSG_RESULT(yes)
934: AC_DEFINE(HAVE_HOSTNET_AFPACKET)
935: AC_SUBST(HOSTNET_AFPACKET, yes)
1.1.1.19! root 936: netdriver_afpacket=yes
1.1.1.10 root 937: ], [
938: AC_MSG_RESULT(no)
1.1.1.19! root 939: netdriver_afpacket=no
1.1.1.10 root 940: ])
1.1.1.8 root 941:
942: AC_MSG_CHECKING(for tap(4))
1.1.1.6 root 943: case "${host_os}" in
944: linux*)
945: if test x"$ac_cv_header_linux_if_tun_h" = xyes; then
1.1.1.8 root 946: netdriver_tap=yes
1.1.1.6 root 947: fi
948: ;;
949: openbsd*)
950: # OpenBSD has no <net/if_tap.h> but supports tap(4).
1.1.1.8 root 951: netdriver_tap=yes
1.1.1.6 root 952: ;;
1.1.1.8 root 953: *)
1.1.1.6 root 954: if test x"$ac_cv_header_net_if_tap_h" = xyes; then
1.1.1.8 root 955: netdriver_tap=yes
1.1.1.6 root 956: fi
1.1.1.8 root 957: ;;
958: esac
959: if test x"$netdriver_tap" = xyes; then
960: AC_MSG_RESULT([yes])
961: AC_DEFINE([HAVE_HOSTNET_TAP])
962: AC_SUBST([HOSTNET_TAP], [yes])
963: else
964: AC_MSG_RESULT([no])
965: fi
966:
967: AC_MSG_CHECKING(for bpf(4))
968: if test x"$ac_cv_header_net_bpf_h" = xyes; then
969: AC_MSG_RESULT([yes])
970: AC_DEFINE([HAVE_HOSTNET_BPF])
971: AC_SUBST([HOSTNET_BPF], [yes])
1.1.1.19! root 972: netdriver_bpf=yes
1.1.1.8 root 973: else
974: AC_MSG_RESULT([no])
1.1.1.19! root 975: netdriver_bpf=no
1.1 root 976: fi
977:
1.1.1.14 root 978: #
979: # Other libraries
980: #
981:
1.1.1.17 root 982: dnl # MY_CHECK_LIB($1=name, $2=libs, $3=include, $4=src)
983: dnl # name は変数名に付けるライブラリ名 ("libslirp" とか "libiconv" とか)
984: dnl # libs はライブラリ引数 ("-lslirp" とか)
985: dnl # include, src は検出用のヘッダとソース片。
986: dnl # ただし src は実行可能で害のないものを指定すること。
987: dnl # PATHS からライブラリを探してそのパスとかをセットする。
988: dnl # has_${name}=<yes|no>
989: dnl # $CPPFLAGS_${name}=...
990: dnl # $LIBS_${name}=...
991: AC_DEFUN([MY_CHECK_LIB], [
1.1.1.14 root 992: AC_MSG_CHECKING([for $1])
1.1.1.17 root 993: old_CPPFLAGS=${CPPFLAGS}
994: old_LIBS=${LIBS}
1.1.1.14 root 995: for path in ${PATHS}; do
996: case ${path} in
997: none)
1.1.1.17 root 998: LIBS="$2"
1.1.1.14 root 999: ;;
1000: *)
1.1.1.17 root 1001: CPPFLAGS="-I${path}/include"
1002: LIBS="-L${path}/lib $2"
1.1.1.14 root 1003: ;;
1004: esac
1005: AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [
1006: has_$1=yes
1.1.1.17 root 1007:
1008: dnl リンクできれば -Wl,-R が必要か調べる。
1009: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1010: $3
1011: int main() {
1012: $4;
1013: return 0;
1014: }
1015: ]])], [
1016: dnl 実行できれば追加しなくていい。
1017: ], [
1018: LIBS="-L${path}/lib -Wl,-R,${path}/lib $2"
1019: ])
1020:
1.1.1.14 root 1021: break
1022: ], [
1023: has_$1=no
1024: ])
1025: done
1026: if test x"${has_$1}" = x"yes"; then
1027: AC_MSG_RESULT([yes])
1.1.1.17 root 1028: CPPFLAGS_$1=${CPPFLAGS}
1029: LIBS_$1=${LIBS}
1.1.1.14 root 1030: else
1031: AC_MSG_RESULT([no])
1032: fi
1.1.1.17 root 1033: CPPFLAGS=${old_CPPFLAGS}
1034: LIBS=${old_LIBS}
1.1.1.14 root 1035: ])
1036:
1037: PATHS="none /usr/pkg /usr/local"
1038:
1.1 root 1039: # libbsd on Linux
1.1.1.5 root 1040: AC_CHECK_LIB(c, getprogname, ,)
1.1 root 1041: AC_CHECK_LIB(bsd, getprogname,
1.1.1.6 root 1042: LIBS="${LIBS} -lbsd"
1043: )
1.1.1.5 root 1044: # なければ停止する
1045: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1046: [
1047: #include <stdlib.h>
1048: #include "confdefs.h"
1049: #if defined(HAVE_BSD_BSD_H)
1050: #include <bsd/bsd.h>
1051: #endif
1052: ], [
1053: getprogname()
1.1.1.10 root 1054: ])], [
1.1.1.5 root 1055: # nothing to do on success
1.1.1.10 root 1056: ], [
1057: AC_MSG_ERROR([*** getprogname is not found.
1.1.1.7 root 1058: *** If you use Ubuntu, sudo apt install libbsd-dev])
1.1.1.5 root 1059: ]
1060: )
1.1 root 1061:
1062: # libkqueue on Linux
1063: AC_CHECK_LIB(kqueue, kqueue,
1.1.1.6 root 1064: LIBS="${LIBS} -lkqueue"
1065: )
1.1 root 1066:
1.1.1.5 root 1067: AC_CHECK_LIB(z, gzclose,
1.1.1.6 root 1068: LIBS="${LIBS} -lz",
1.1.1.5 root 1069: [AC_MSG_ERROR([*** zlib is not found.
1.1.1.7 root 1070: *** If use use Ubuntu, sudo apt install zlib1g-dev])]
1.1.1.5 root 1071: )
1072:
1.1.1.16 root 1073: # libslirp
1074: AC_ARG_WITH([libslirp],
1075: [AS_HELP_STRING([--without-libslirp],
1076: [disable usermode network (using SLIRP)])],
1077: [],
1078: [with_libslirp=yes])
1079:
1080: AS_IF([test "x$with_libslirp" != "xno"], [
1.1.1.17 root 1081: MY_CHECK_LIB([libslirp], [-lslirp], [
1.1.1.16 root 1082: #include <slirp/libslirp.h>
1083: ], [
1084: slirp_version_string();
1085: ])
1086: if test x"${has_libslirp}" = x"yes"; then
1087: AC_DEFINE([HAVE_HOSTNET_SLIRP])
1088: AC_SUBST([HOSTNET_SLIRP], [yes])
1.1.1.17 root 1089: AC_SUBST([CPPFLAGS_SLIRP], [${CPPFLAGS_libslirp}])
1090: AC_SUBST([LIBS_SLIRP], [${LIBS_libslirp}])
1.1.1.16 root 1091: else
1092: AC_MSG_ERROR([*** libslirp is not found.
1093: *** If use use pkgsrc, install net/libslirp.
1094: *** If you use Ubuntu, sudo apt install libslirp-dev.
1095: *** Or specify --without-libslirp (it disables hostnet-driver=usermode).])
1096: fi
1097: ], [
1098: AC_SUBST([HOSTNET_SLIRP], [no])
1099: ])
1100:
1.1.1.19! root 1101: # ALSA
! 1102: case "${host_os}" in
! 1103: linux*)
! 1104: default_alsa=yes
! 1105: ;;
! 1106: *)
! 1107: default_alsa=no
! 1108: ;;
! 1109: esac
! 1110: AC_ARG_WITH([alsa],
! 1111: [AS_HELP_STRING([--with-alsa],
! 1112: [enable ALSA support (default:yes on Linux, otherwise no)])],
! 1113: [with_alsa=${withval}],
! 1114: [with_alsa=${default_alsa}])
! 1115: sounddriver_alsa=no
! 1116: if test x"${with_alsa}" = xyes; then
! 1117: AC_CHECK_LIB(asound, snd_pcm_open,
! 1118: [has_asound=yes],
! 1119: [has_asound=no])
! 1120: if test x"${ac_cv_header_alsa_asoundlib_h}" = xyes -a \
! 1121: x"${ac_cv_lib_asound_snd_pcm_open}" = xyes; then
! 1122: AC_DEFINE([HAVE_HOSTSOUND_ALSA])
! 1123: AC_SUBST([HOSTSOUND_ALSA], [yes])
! 1124: LIBS_SOUND="${LIBS_SOUND} -lasound"
! 1125: sounddriver_alsa=yes
! 1126: else
! 1127: AC_MSG_ERROR([*** <alsa/asoundlib.h> or libasound not found.
! 1128: *** If you use Ubuntu, sudo apt install libasound2-dev.
! 1129: *** Or specify --without-alsa (it disables hostsound-driver=alsa).])
! 1130: fi
! 1131: fi
! 1132:
! 1133: # NetBSD audio
! 1134: if test x"${ac_cv_header_sys_audioio_h}" = xyes; then
! 1135: AC_MSG_CHECKING(for AUDIO_GETINFO)
! 1136: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
! 1137: #include <sys/ioctl.h>
! 1138: #include <sys/audioio.h>
! 1139: #include <unistd.h>
! 1140: ], [
! 1141: struct audio_info info;
! 1142: AUDIO_INITINFO(&info);
! 1143: ioctl(0, AUDIO_GETINFO, &info);
! 1144: ])], [
! 1145: AC_MSG_RESULT([yes])
! 1146: AC_DEFINE([HAVE_HOSTSOUND_NETBSD])
! 1147: AC_SUBST([HOSTSOUND_NETBSD], [yes])
! 1148: sounddriver_netbsd=yes
! 1149: ], [
! 1150: AC_MSG_RESULT([no])
! 1151: sounddriver_netbsd=no
! 1152: ])
! 1153: fi
! 1154:
! 1155: # OpenBSD sndio
! 1156: if test x"${ac_cv_header_sndio_h}" = xyes; then
! 1157: AC_DEFINE([HAVE_HOSTSOUND_SNDIO])
! 1158: AC_SUBST([HOSTSOUND_SNDIO], [yes])
! 1159: LIBS_SOUND="${LIBS_SOUND} -lsndio"
! 1160: sounddriver_sndio=yes
! 1161: else
! 1162: sounddriver_sndio=no
! 1163: fi
! 1164:
! 1165: AC_SUBST([LIBS_SOUND], [${LIBS_SOUND}])
! 1166:
1.1 root 1167: # wxWidgets
1.1.1.10 root 1168: AC_ARG_WITH([gui],
1169: [AS_HELP_STRING([--without-gui], [disable GUI support])],
1170: [],
1171: [with_gui=yes])
1172:
1173: AS_IF([test "x$with_gui" != xno], [
1174: AC_MSG_CHECKING(for wx-config)
1.1.1.14 root 1175: wxconfig_paths="${WX_CONFIG} wx-config-3.2 wx-config-3.0 wx-config"
1.1.1.10 root 1176: wxconfig=""
1177: for c in ${wxconfig_paths}; do
1178: ver=`$c --version 2>&1 | cut -f 1 -d .`
1179: if test "$ver" = "3"; then
1180: wxconfig=$c
1181: break
1182: fi
1183: done
1184: if test -z "$wxconfig"; then
1.1.1.14 root 1185: AC_MSG_ERROR([*** wxWidgets-3.2 nor -3.0 not found in ${wxconfig_paths}
1186: *** If you use pkgsrc, install x11/wxGTK32.
1.1.1.7 root 1187: *** If you use Ubuntu, sudo apt install libwxgtk3.0-gtk3-dev])
1.1.1.10 root 1188: else
1189: AC_MSG_RESULT([$wxconfig])
1.1 root 1190:
1.1.1.10 root 1191: AC_MSG_CHECKING(for wxWidgets version)
1192: wxversion=`$wxconfig --version`
1193: AC_MSG_RESULT([$wxversion])
1.1.1.14 root 1194: wxmajorminor=`echo $wxversion | awk -F . '{print $1 $2}'`
1195: AC_SUBST([WX_MAJORMINOR], [${wxmajorminor}])
1.1.1.10 root 1196:
1197: wxcppflags=`$wxconfig --cppflags`
1198: wxlibs=`$wxconfig --libs`
1199:
1200: case "${host_os}" in
1201: darwin*)
1202: # XXX -framework AudioToolbox が指定されているとリンカがこけるorz
1203: wxlibs=[`echo $wxlibs | sed -e 's/-framework AudioToolbox//'`]
1204: ;;
1205: esac
1206:
1.1.1.17 root 1207: dnl -Wl,-R が必要か調べる。
1.1.1.18 root 1208: AC_MSG_CHECKING([whether wx-config requires -Wl,-R])
1209: old_CPPFLAGS="${CPPFLAGS}"
1210: old_LIBS="${LIBS}"
1211: CPPFLAGS="${CPPFLAGS} ${wxcppflags}"
1212: LIBS="${LIBS} ${wxlibs}"
1.1.1.17 root 1213: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1214: #include <wx/wx.h>
1.1.1.18 root 1215: int main() {
1216: wxInitializer init;
1217: return !init;
1218: }
1.1.1.17 root 1219: ]])], [
1220: dnl 実行できれば追加しなくていい。
1.1.1.18 root 1221: AC_MSG_RESULT([no])
1.1.1.17 root 1222: ], [
1.1.1.18 root 1223: AC_MSG_RESULT([yes])
1.1.1.17 root 1224: wxlibs=[`echo $wxlibs | sed -e 's/-L\([^ ]*\) /-L\1 -Wl,-R,\1 /'`]
1225: ])
1.1.1.18 root 1226: CPPFLAGS="${old_CPPFLAGS}"
1227: LIBS="${old_LIBS}"
1.1.1.17 root 1228:
1.1.1.10 root 1229: AC_SUBST([WITH_GUI], [yes])
1.1.1.17 root 1230: AC_SUBST([CPPFLAGS_WXWIDGETS], [$wxcppflags])
1231: AC_SUBST([LIBS_WXWIDGETS], [$wxlibs])
1.1.1.10 root 1232: fi
1.1 root 1233:
1.1.1.10 root 1234: # gettext
1235: AC_CHECK_TOOL([MSGFMT], [msgfmt], [:])
1236: if test $MSGFMT = [:]; then
1237: AC_MSG_ERROR([*** msgfmt not found.
1.1.1.7 root 1238: *** If you use pkgsrc, install devel/gettext-tools.
1239: *** If you use Ubuntu, sudo apt install gettext])
1.1.1.10 root 1240: fi
1241: ], [
1242: AC_SUBST([WITH_GUI], [no])
1243: ])
1.1.1.5 root 1244:
1.1.1.14 root 1245: # iconv は util/ でのみ必要。
1.1.1.17 root 1246: MY_CHECK_LIB([libiconv], [-liconv], [
1.1.1.14 root 1247: #include <iconv.h>
1248: ], [
1249: iconv_open("", "");
1250: ])
1.1.1.17 root 1251: AC_SUBST([CPPFLAGS_ICONV], [${CPPFLAGS_libiconv}])
1252: AC_SUBST([LIBS_ICONV], [${LIBS_libiconv}])
1.1.1.14 root 1253:
1.1.1.15 root 1254: if test x"${has_libiconv}" = x"yes"; then
1.1.1.14 root 1255: AC_MSG_CHECKING(whether iconv needs const)
1256: old_CPPFLAGS="${CPPFLAGS}"
1.1.1.17 root 1257: CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_libiconv} -Werror"
1.1.1.14 root 1258: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1259: #include <iconv.h>
1260: ]], [[
1261: const char **a;
1262: iconv(0, a, 0, 0, 0);
1263: ]])], [
1264: AC_MSG_RESULT(yes)
1265: AC_DEFINE(HAVE_ICONV_CONST)
1266: ], [
1267: AC_MSG_RESULT(no)
1268: ])
1269: CPPFLAGS="${old_CPPFLAGS}"
1270: fi
1271:
1.1.1.17 root 1272: AC_CONFIG_FILES([Makefile.cfg])
1.1.1.2 root 1273: AC_CONFIG_HEADERS([config-nono.h])
1.1 root 1274: AC_OUTPUT
1.1.1.19! root 1275:
! 1276: # サマリを表示
! 1277: echo ""
! 1278: echo "Configuration summary:"
! 1279: echo -n "HostNet supports: "
! 1280: if test x"$netdriver_afpacket" = xyes; then
! 1281: echo -n " afpacket"
! 1282: fi
! 1283: if test x"$netdriver_bpf" = xyes; then
! 1284: echo -n " bpf"
! 1285: fi
! 1286: if test x"$has_libslirp" = xyes; then
! 1287: echo -n " slirp"
! 1288: fi
! 1289: if test x"$netdriver_tap" = xyes; then
! 1290: echo -n " tap"
! 1291: fi
! 1292: echo ""
! 1293: echo -n "HostSound supports: "
! 1294: if test x"$sounddriver_alsa" = xyes; then
! 1295: echo -n " alsa"
! 1296: fi
! 1297: if test x"$sounddriver_netbsd" = xyes; then
! 1298: echo -n " netbsd"
! 1299: fi
! 1300: if test x"$sounddriver_sndio" = xyes; then
! 1301: echo -n " sndio"
! 1302: fi
! 1303: echo ""
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.