Annotation of nono/configure.ac, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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