Annotation of nono/configure.ac, revision 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.