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