1 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT([MeshLink], [0.1])
5 AM_INIT_AUTOMAKE([std-options subdir-objects nostdinc silent-rules -Wall])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_MACRO_DIR([m4])
10 # Enable GNU extensions.
11 # Define this here, not in acconfig's @TOP@ section, since definitions
12 # in the latter don't make it into the configure-time tests.
14 AC_DEFINE([__USE_BSD], 1, [Enable BSD extensions])
16 dnl Checks for programs.
34 AC_DEFINE(HAVE_LINUX, 1, [Linux])
38 AC_DEFINE(HAVE_MINGW, 1, [MinGW])
39 LIBS="$LIBS -lws2_32 -lgdi32 -lcrypt32"
43 AM_CONDITIONAL(LINUX, test "$linux" = true)
44 AM_CONDITIONAL(MINGW, test "$mingw" = true)
48 if test -d /sw/include ; then
49 CPPFLAGS="$CPPFLAGS -I/sw/include"
51 if test -d /sw/lib ; then
52 LIBS="$LIBS -L/sw/lib"
55 dnl Compiler hardening flags
56 dnl No -fstack-protector-all because it doesn't work on all platforms or architectures.
58 AC_ARG_ENABLE([hardening], AS_HELP_STRING([--disable-hardening], [disable compiler and linker hardening flags]))
59 AS_IF([test "x$enable_hardening" != "xno"],
60 [CPPFLAGS="$CPPFLAGS -Wall -W -pedantic"
61 AX_CHECK_COMPILE_FLAG([-DFORTIFY_SOURCE=2], [CPPFLAGS="$CPPFLAGS -DFORITFY_SOURCE=2"])
62 AX_CHECK_COMPILE_FLAG([-fwrapv], [CPPFLAGS="$CPPFLAGS -fwrapv"],
63 [AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CPPFLAGS="$CPPFLAGS -fno-strict-overflow"])]
67 AX_CHECK_LINK_FLAG([-Wl,--dynamicbase], [LDFLAGS="$LDFLAGS -Wl,--dynamicbase"])
68 AX_CHECK_LINK_FLAG([-Wl,--nxcompat], [LDFLAGS="$LDFLAGS -Wl,--nxcompat"])
71 AX_CHECK_COMPILE_FLAG([-fPIC], [CPPFLAGS="$CPPFLAGS -fPIC"])
74 AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"])
75 AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS="$LDFLAGS -Wl,-z,now"])
79 dnl Allow building without Catta
80 AC_ARG_ENABLE([catta], AS_HELP_STRING([--disable-catta], [disable linking with the Catta library]))
81 AS_IF([test "x$enable_catta" != "xno"],
82 AC_DEFINE(HAVE_CATTA, 1, [Link with Catta])
83 AC_CONFIG_SUBDIRS([catta])
85 AM_CONDITIONAL(CATTA, test "x$enable_catta" != "xno")
88 AC_ARG_ENABLE([utcp_debug], AS_HELP_STRING([--enable-utcp-debug], [compile utcp with debug output]))
89 AS_IF([test "x$enable_utcp_debug" = "xyes"],
90 [AX_CHECK_COMPILE_FLAG([-DUTCP_DEBUG], [CPPFLAGS="$CPPFLAGS -DUTCP_DEBUG"])
94 dnl Blackbox test suite
95 PKG_CHECK_MODULES([CMOCKA], [cmocka >= 1.1.0], [cmocka=true], [cmocka=false])
96 PKG_CHECK_MODULES([LXC], [lxc >= 2.0.0], [lxc=true], [lxc=false])
97 AM_CONDITIONAL(BLACKBOX_TESTS, test "$cmocka" = true -a "$lxc" = true)
100 dnl Additional example code
101 PKG_CHECK_MODULES([NCURSES], [ncurses >= 5], [curses=true], [curses=false])
102 AC_ARG_ENABLE([monitor_code],
103 [AS_HELP_STRING([--enable-monitor-code], [Add monitor example code to the build])],
104 [AS_IF([test "x$enable_monitor_code" = "xyes"], [monitor_code=true], [monitor_code=false])],
107 AM_CONDITIONAL(MONITOR, test "$monitor_code" = true)
109 dnl Install test binaries
110 AC_ARG_ENABLE([install_tests],
111 [AS_HELP_STRING([--enable-install-tests], [include test binaries in installation])],
112 [AS_IF([test "x$enable_install_tests" = "xyes"], [install_tests=true], [install_tests=false])],
113 [install_tests=false]
116 AM_CONDITIONAL(INSTALL_TESTS, test "$install_tests" = true)
118 dnl Checks for header files.
119 dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
121 AC_CHECK_HEADERS([syslog.h sys/file.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/un.h sys/wait.h netdb.h arpa/inet.h dirent.h curses.h ifaddrs.h])
123 dnl Checks for typedefs, structures, and compiler characteristics.
124 MeshLink_ATTRIBUTE(__malloc__)
125 MeshLink_ATTRIBUTE(__warn_unused_result__)
127 AC_CHECK_TYPES([socklen_t, struct addrinfo, struct sockaddr_in6], , ,
128 [#include "$srcdir/src/have.h"]
131 AC_CHECK_TYPES([struct sockaddr_storage], ,AC_MSG_ERROR([System must support struct sockaddr_storage.]),
132 [#include "$srcdir/src/have.h"]
135 dnl Checks for library functions.
137 AC_CHECK_FUNCS([asprintf fchmod fork gettimeofday random select setns strdup usleep getifaddrs],
138 [], [], [#include "$srcdir/src/have.h"]
141 dnl Support for SunOS
143 AC_CHECK_FUNC(socket, [], [
144 AC_CHECK_LIB(socket, connect)
146 AC_CHECK_FUNC(gethostbyname, [], [
147 AC_CHECK_LIB(nsl, gethostbyname)
150 AC_CHECK_DECLS([freeaddrinfo, gai_strerror, getaddrinfo, getnameinfo],
151 [], [], [#include "$srcdir/src/have.h"]
161 test/blackbox/Makefile
162 test/blackbox/run_blackbox_tests/Makefile
163 test/blackbox/test_case_channel_conn_01/Makefile
164 test/blackbox/test_case_channel_conn_02/Makefile
165 test/blackbox/test_case_channel_conn_03/Makefile
166 test/blackbox/test_case_channel_conn_04/Makefile
167 test/blackbox/test_case_channel_conn_05/Makefile
168 test/blackbox/test_case_channel_conn_06/Makefile
169 test/blackbox/test_case_channel_conn_07/Makefile
170 test/blackbox/test_case_channel_conn_08/Makefile
171 test/blackbox/test_case_meta_conn_01/Makefile
172 test/blackbox/test_case_meta_conn_02/Makefile
173 test/blackbox/test_case_meta_conn_03/Makefile
174 test/blackbox/test_case_meta_conn_04/Makefile
175 test/blackbox/test_case_meta_conn_05/Makefile
176 test/blackbox/test_cases_submesh01/Makefile
177 test/blackbox/test_cases_submesh02/Makefile
178 test/blackbox/test_cases_submesh03/Makefile
179 test/blackbox/test_cases_submesh04/Makefile