Annotation of nono/configure.ac, revision 1.1.1.2

1.1       root        1: #
                      2: # nono
                      3: # Copyright (C) 2018 [email protected]
                      4: #
                      5: 
                      6: AC_PREREQ([2.69])
                      7: AC_INIT([mm], [0.0], [])
                      8: AC_CONFIG_SRCDIR(wx/wxapp.cpp)
                      9: 
                     10: # Checks for programs.
                     11: AC_PROG_CXX
                     12: AC_PROG_CC
                     13: AC_LANG_CPLUSPLUS
                     14: AC_C_BIGENDIAN
                     15: 
                     16: # -Wlogical-op は clang にはない
                     17: AC_MSG_CHECKING(whether the compiler accepts -Wlogical-op)
                     18: old_CXXFLAGS="${CXXFLAGS}"
                     19: CXXFLAGS="${CXXFLAGS} -Werror -Wlogical-op"
                     20: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
                     21:        AC_MSG_RESULT([yes])
                     22:                CFLAGS_WLOGICAL_OP="-Wlogical-op",
                     23:        AC_MSG_RESULT([no]))
                     24: AC_SUBST([CFLAGS_WLOGICAL_OP])
                     25: CXXFLAGS="${old_CXXFLAGS}"
                     26: 
                     27: # Checks for libraries.
                     28: 
                     29: # Checks for header files.
                     30: AC_CHECK_HEADERS([bsd/bsd.h])
                     31: AC_CHECK_HEADERS([endian.h])
1.1.1.2 ! root       32: AC_CHECK_HEADERS([histedit.h])
1.1       root       33: AC_CHECK_HEADERS([kqueue/sys/event.h])
                     34: AC_CHECK_HEADERS([sys/endian.h])
                     35: AC_CHECK_HEADERS([sys/event.h])
                     36: AC_CHECK_HEADERS([net/bpf.h])
                     37: AC_CHECK_HEADERS([net/if_tap.h])
                     38: AC_CHECK_HEADERS([linux/if_tun.h])
                     39: 
                     40: # Linux で <kqueue/sys/event.h> がなければここで停止したほうがいい
                     41: if test "$ac_cv_header_sys_event_h" != "yes" \
                     42:      -a "$ac_cv_header_kqueue_sys_event_h" != "yes"; then
                     43:        AC_MSG_ERROR([*** kqueue is not found.
                     44:        On Ubuntu, sudo apt install libkqueue-dev])
                     45: fi
                     46: 
                     47: # Checks for typedefs, structures, and compiler characteristics.
                     48: AC_CHECK_HEADER_STDBOOL
                     49: #AC_C_INLINE
                     50: #AC_TYPE_INT16_T
                     51: #AC_TYPE_INT32_T
                     52: #AC_TYPE_INT64_T
                     53: #AC_TYPE_INT8_T
                     54: #AC_TYPE_SIZE_T
                     55: #AC_TYPE_UINT16_T
                     56: #AC_TYPE_UINT32_T
                     57: #AC_TYPE_UINT64_T
                     58: #AC_TYPE_UINT8_T
                     59: 
                     60: # struct kevent のメンバ udata の型が互換性なく違う。
                     61: # NetBSD では intptr_t(整数) だが、OSX では void* (ポインタ) なので、
                     62: # 同一ソースコードでは回避できない。
                     63: # Linux(Ubuntu) はどっちもパスするので後ろの void * のほうが使われる。
                     64: # まあパスするんならどっちでもいいか。
                     65: AC_MSG_CHECKING(whether kevent.udata is intptr_t)
                     66: old_CXXFLAGS="${CXXFLAGS}"
                     67: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
                     68: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                     69:        [
                     70:                #include "confdefs.h"
                     71:                #if defined(HAVE_SYS_EVENT_H)
                     72:                #include <sys/event.h>
                     73:                #endif
                     74:                #if defined(HAVE_KQUEUE_SYS_EVENT_H)
                     75:                #include <kqueue/sys/event.h>
                     76:                #endif
                     77:        ], [
                     78:                struct kevent kev;
                     79:                kev.udata = (intptr_t)0;
                     80:                (void)kev;
                     81:        ])],
                     82:        AC_MSG_RESULT([yes])
                     83:                AC_SUBST([KEVENT_UDATA_T], [intptr_t]),
                     84:        AC_MSG_RESULT([no]))
                     85: CXXFLAGS="${old_CXXFLAGS}"
                     86: 
                     87: AC_MSG_CHECKING(whether kevent.udata is void *)
                     88: old_CXXFLAGS="${CXXFLAGS}"
                     89: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
                     90: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                     91:        [
                     92:                #include "confdefs.h"
                     93:                #if defined(HAVE_SYS_EVENT_H)
                     94:                #include <sys/event.h>
                     95:                #endif
                     96:                #if defined(HAVE_KQUEUE_SYS_EVENT_H)
                     97:                #include <kqueue/sys/event.h>
                     98:                #endif
                     99:        ], [
                    100:                struct kevent kev;
                    101:                kev.udata = (void *)0;
                    102:                (void)kev;
                    103:        ])],
                    104:        AC_MSG_RESULT([yes])
                    105:                AC_SUBST([KEVENT_UDATA_T], ['void *']),
                    106:        AC_MSG_RESULT([no]))
                    107: CXXFLAGS="${old_CXXFLAGS}"
                    108: 
                    109: if test -z "$KEVENT_UDATA_T" ; then
                    110:        AC_MSG_ERROR([kevent.udata is unknown type])
                    111: fi
                    112: 
                    113: AC_MSG_CHECKING(for __builtin_assume)
                    114: AC_TRY_COMPILE(,
                    115:        [
                    116:                __builtin_assume(1);
                    117:        ],
                    118:        AC_MSG_RESULT([yes])
                    119:                AC_DEFINE([HAVE___BUILTIN_ASSUME]),
                    120:        AC_MSG_RESULT([no]))
                    121: 
                    122: AC_MSG_CHECKING(for __builtin_bswap16)
                    123: AC_TRY_COMPILE(,
                    124:        [
                    125:                return __builtin_bswap16(0);
                    126:        ],
                    127:        AC_MSG_RESULT([yes])
                    128:                AC_DEFINE([HAVE___BUILTIN_BSWAP16]),
                    129:        AC_MSG_RESULT([no]))
                    130: 
                    131: AC_MSG_CHECKING(for __builtin_bswap32)
                    132: AC_TRY_COMPILE(,
                    133:        [
                    134:                return __builtin_bswap32(0);
                    135:        ],
                    136:        AC_MSG_RESULT([yes])
                    137:                AC_DEFINE([HAVE___BUILTIN_BSWAP32]),
                    138:        AC_MSG_RESULT([no]))
                    139: 
1.1.1.2 ! root      140: AC_MSG_CHECKING(for __builtin_bswap64)
        !           141: AC_TRY_COMPILE(,
        !           142:        [
        !           143:                return __builtin_bswap64(0);
        !           144:        ],
        !           145:        AC_MSG_RESULT([yes])
        !           146:                AC_DEFINE([HAVE___BUILTIN_BSWAP64]),
        !           147:        AC_MSG_RESULT([no]))
        !           148: 
1.1       root      149: AC_MSG_CHECKING(for __builtin_expect)
                    150: AC_TRY_COMPILE(,
                    151:        [
                    152:                if (__builtin_expect(1, 1)) return 0;
                    153:        ],
                    154:        AC_MSG_RESULT([yes])
                    155:                AC_DEFINE([HAVE___BUILTIN_EXPECT]),
                    156:        AC_MSG_RESULT([no]))
                    157: 
                    158: AC_MSG_CHECKING(for __builtin_unreachable)
                    159: AC_TRY_COMPILE(,
                    160:        [
                    161:                __builtin_unreachable();
                    162:        ],
                    163:        AC_MSG_RESULT([yes])
                    164:                AC_DEFINE([HAVE___BUILTIN_UNREACHABLE]),
                    165:        AC_MSG_RESULT([no]))
                    166: 
                    167: AC_MSG_CHECKING(for __attribute__((__fallthrough__)))
                    168: old_CXXFLAGS="${CXXFLAGS}"
                    169: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
                    170: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                    171:        [], [
                    172:                extern int x;
                    173:                switch (x) {
                    174:                 case 0:
                    175:                        __attribute__((__fallthrough__));
                    176:                 case 1:
                    177:                        break;
                    178:                }
                    179:        ])],
                    180:        AC_MSG_RESULT([yes])
                    181:                AC_DEFINE([HAVE___ATTRIBUTE_FALLTHROUGH]),
                    182:        AC_MSG_RESULT([no]))
                    183: CXXFLAGS="${old_CXXFLAGS}"
                    184: 
                    185: dnl とりあえず __format__ までしか調べてないので、
                    186: dnl その中の __printf__ とかまで調べる必要ができたら直すこと。
                    187: AC_MSG_CHECKING(for __attribute__((__format__)))
                    188: old_CXXFLAGS="${CXXFLAGS}"
                    189: CXXFLAGS="${CXXFLAGS} -Wall -Werror"
                    190: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                    191:        [
                    192:                extern int f(const char *f, ...)
                    193:                        __attribute__((__format__(__printf__, 1, 2)));
                    194:        ], [
                    195:        ])],
                    196:        AC_MSG_RESULT([yes])
                    197:                AC_DEFINE([HAVE___ATTRIBUTE_FORMAT]),
                    198:        AC_MSG_RESULT([no]))
                    199: CXXFLAGS="${old_CXXFLAGS}"
                    200: 
                    201: AC_MSG_CHECKING(for __attribute__((no_sanitize)))
                    202: old_CXXFLAGS="${CXXFLAGS}"
                    203: CXXFLAGS="${CXXFLAGS} -Werror"
                    204: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                    205:        [
                    206:                __attribute__((no_sanitize("undefined")))
                    207:                int func() { return 0; }
                    208:        ], [
                    209:        ])],
                    210:        AC_MSG_RESULT([yes])
                    211:                AC_DEFINE([HAVE___ATTRIBUTE_NO_SANITIZE]),
                    212:        AC_MSG_RESULT([no]))
                    213: CXXFLAGS="${old_CXXFLAGS}"
                    214: 
                    215: 
                    216: AC_MSG_CHECKING(for __attribute__((__packed__)))
                    217: old_CXXFLAGS="${CXXFLAGS}"
                    218: CXXFLAGS="${CXXFLAGS} -Werror"
                    219: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                    220:        [], [
                    221:                struct x { char a; int b; } __attribute__((__packed__));
                    222:        ])],
                    223:        AC_MSG_RESULT([yes])
                    224:                AC_DEFINE([HAVE___ATTRIBUTE_PACKED]),
                    225:        AC_MSG_RESULT([no]))
                    226: CXXFLAGS="${old_CXXFLAGS}"
                    227: 
                    228: AC_MSG_CHECKING(for __attribute__((__unused__)))
                    229: old_CXXFLAGS="${CXXFLAGS}"
                    230: CXXFLAGS="${CXXFLAGS} -Wunused-variable -Werror"
                    231: AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
                    232:        [], [
                    233:                int a __attribute__((__unused__));
                    234:        ])],
                    235:        AC_MSG_RESULT([yes])
                    236:                AC_DEFINE([HAVE___ATTRIBUTE_UNUSED]),
                    237:        AC_MSG_RESULT([no]))
                    238: CXXFLAGS="${old_CXXFLAGS}"
                    239: 
                    240: # Checks for library functions.
                    241: #AC_FUNC_MALLOC
                    242: #AC_FUNC_MMAP
                    243: 
                    244: AC_MSG_CHECKING(for pthread_setname_np(name))
                    245: AC_TRY_COMPILE([#include <pthread.h>],
                    246:        [
                    247:                pthread_setname_np("");
                    248:        ],
                    249:        AC_MSG_RESULT([yes])
                    250:                AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], 1),
                    251:        AC_MSG_RESULT([no]))
                    252: 
                    253: AC_MSG_CHECKING(for pthread_setname_np(thread, name))
                    254: AC_TRY_COMPILE([#include <pthread.h>],
                    255:        [
                    256:                pthread_setname_np(pthread_self(), "");
                    257:        ],
                    258:        AC_MSG_RESULT([yes])
                    259:                AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], 2),
                    260:        AC_MSG_RESULT([no]))
                    261: 
                    262: AC_MSG_CHECKING(for pthread_setname_np(thread, name, arg))
                    263: AC_TRY_COMPILE([#include <pthread.h>],
                    264:        [
                    265:                pthread_setname_np(pthread_self(), "", (void*)0);
                    266:        ],
                    267:        AC_MSG_RESULT([yes])
                    268:                AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], 3),
                    269:        AC_MSG_RESULT([no]))
                    270: 
                    271: # Select host network driver.
                    272: AC_MSG_CHECKING(for suitable host network driver)
                    273: if test x"$ac_cv_header_net_if_tap_h" = xyes; then
                    274:        netdriver=tap
                    275: elif test x"$ac_cv_header_linux_if_tun_h" = xyes; then
                    276:        netdriver=tap
                    277: elif test x"$ac_cv_header_net_bpf_h" = xyes; then
                    278:        netdriver=bpf
                    279: else
                    280:        netdriver=none
                    281: fi
                    282: AC_MSG_RESULT([$netdriver])
                    283: AC_SUBST([NETDRIVER], [$netdriver])
                    284: 
                    285: # libbsd on Linux
                    286: AC_CHECK_LIB(bsd, getprogname,
                    287:        AC_SUBST([LIBBSD_LIBS], [-lbsd]),
                    288:        )
                    289: 
1.1.1.2 ! root      290: # libedit (editline)
        !           291: if test x"$ac_cv_header_histedit_h" = xyes; then
        !           292:        AC_SUBST([LIBEDIT_LIBS], ["-ledit -ltermcap"])
        !           293: fi
        !           294: 
1.1       root      295: # libkqueue on Linux
                    296: AC_CHECK_LIB(kqueue, kqueue,
                    297:        AC_SUBST([LIBKQUEUE_LIBS], [-lkqueue]),
                    298:        )
                    299: 
                    300: # wxWidgets
                    301: AC_MSG_CHECKING(for wx-config)
                    302: wxconfig=""
                    303: for c in wx-config-3.0 wx-config; do
                    304:        ver=`$c --version 2>&1 | cut -f 1 -d .`
                    305:        if test "$ver" = "3"; then
                    306:                wxconfig=$c
                    307:                break
                    308:        fi
                    309: done
                    310: if test -z "$wxconfig"; then
                    311:        AC_MSG_RESULT([no])
                    312: else
                    313:        AC_MSG_RESULT([$wxconfig])
                    314: 
                    315:        AC_MSG_CHECKING(for wxWidgets version)
                    316:        wxversion=`$wxconfig --version`
                    317:        AC_MSG_RESULT([$wxversion])
                    318: 
                    319:        wxcppflags=`$wxconfig --cppflags`
                    320:        wxlibs=`$wxconfig --libs`
                    321: 
                    322:        # XXX NetBSD の rpath。どうしたもんだかこれ
                    323:        if test "`uname -s`" = "NetBSD"; then
                    324:                wxlibs=[`echo $wxlibs | sed -e 's/-L\([^ ]*\) /-L\1 -Wl,-R,\1 /'`]
                    325:        fi
                    326: 
                    327:        # XXX OSX の -framework AudioToolbox が指定されているとリンカがこけるorz
                    328:        if test "`uname -s`" = "Darwin"; then
                    329:                wxlibs=[`echo $wxlibs | sed -e 's/-framework AudioToolbox//'`]
                    330:        fi
                    331: 
                    332:        AC_SUBST([WXWIDGETS_CPPFLAGS], [$wxcppflags])
                    333:        AC_SUBST([WXWIDGETS_LIBS], [$wxlibs])
                    334: fi
                    335: 
                    336: AC_CONFIG_FILES([Makefile.cfg
                    337:        host/Makefile
                    338:        lib/Makefile
                    339:        wx/Makefile
                    340:        util/mkcgrom/Makefile
                    341:        util/viewcgrom/Makefile
                    342: ])
1.1.1.2 ! root      343: AC_CONFIG_HEADERS([config-nono.h])
1.1       root      344: AC_OUTPUT

unix.superglobalmegacorp.com

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