Annotation of nono/configure.ac, revision 1.1.1.16

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

unix.superglobalmegacorp.com

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