Annotation of nono/configure.ac, revision 1.1.1.20

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

unix.superglobalmegacorp.com

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