Annotation of nono/configure.ac, revision 1.1.1.17

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.