]> git.meshlink.io Git - meshlink/blobdiff - configure.ac
Libtool suggests we need to use AC_CONFIG_MACRO_DIR([m4]).
[meshlink] / configure.ac
index 967499417207262f2626070191a93c083f35253e..454f2d9a77d0f3653a418f851a70abf0bab9e227 100644 (file)
@@ -1,12 +1,12 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.61)
-AC_INIT([tinc], [1.1pre7])
-AC_CONFIG_SRCDIR([src/tincd.c])
+AC_INIT([MeshLink], [0.1])
+AC_CONFIG_SRCDIR([src/libmeshlink.c])
 AC_GNU_SOURCE
-AM_INIT_AUTOMAKE([check-news dist-xz no-dist-gzip std-options subdir-objects -Wall])
+AM_INIT_AUTOMAKE([check-news std-options subdir-objects -Wall])
 AC_CONFIG_HEADERS([config.h])
-AM_MAINTAINER_MODE
+AC_CONFIG_MACRO_DIR([m4])
 
 # Enable GNU extensions.
 # Define this here, not in acconfig's @TOP@ section, since definitions
@@ -19,7 +19,7 @@ AC_PROG_CC_C99
 AC_PROG_CPP
 AC_PROG_INSTALL
 AC_PROG_LN_S
-AC_PROG_RANLIB
+AC_PROG_LIBTOOL
 
 AM_PROG_CC_C_O
 
@@ -58,7 +58,7 @@ case $host_os in
   ;;
   *bsd*)
     bsd=true
-    AC_MSG_WARN("Unknown BSD variant, tinc might not compile or work!")
+    AC_MSG_WARN("Unknown BSD variant, MeshLink might not compile or work!")
     AC_DEFINE(HAVE_BSD, 1, [Unknown BSD variant])
   ;;
   *cygwin*)
@@ -75,42 +75,8 @@ case $host_os in
   ;;
 esac
 
-AC_ARG_ENABLE(uml,
-  AS_HELP_STRING([--enable-uml], [enable support for User Mode Linux]),
-  [ AS_IF([test "x$enable_uml" = "xyes"],
-      [ AC_DEFINE(ENABLE_UML, 1, [Support for UML])
-        uml=true
-      ],
-      [uml=false])
-  ],
-  [uml=false]
-)
-
-AC_ARG_ENABLE(vde,
-  AS_HELP_STRING([--enable-vde], [enable support for Virtual Distributed Ethernet]),
-  [ AS_IF([test "x$enable_vde" = "xyes"],
-      [ AC_CHECK_HEADERS(libvdeplug_dyn.h, [], [AC_MSG_ERROR([VDE plug header files not found.]); break])
-        AC_DEFINE(ENABLE_VDE, 1, [Support for VDE])
-        vde=true
-      ],
-      [vde=false])
-  ],
-  [vde=false]
-)
-
-AC_ARG_ENABLE(tunemu,
-  AS_HELP_STRING([--enable-tunemu], [enable support for the tunemu driver]),
-  [ AS_IF([test "x$enable_tunemu" = "xyes"],
-      [ AC_DEFINE(ENABLE_TUNEMU, 1, [Support for tunemu])
-        tunemu=true
-      ],
-      [tunemu=false])
-  ],
-  [tunemu=false]
-)
-
 AC_ARG_WITH(windows2000,
-  AS_HELP_STRING([--without-windows2000], [compile with support for Windows 2000. This disables support for tunneling over existing IPv6 networks.]),
+  AS_HELP_STRING([--with-windows2000], [compile with support for Windows 2000. This disables support for tunneling over existing IPv6 networks.]),
   [ AS_IF([test "x$with_windows2000" = "xyes"],
       [AC_DEFINE(WITH_WINDOWS2000, 1, [Compile with support for Windows 2000])])
   ]
@@ -134,6 +100,30 @@ if test -d /sw/lib ; then
   LIBS="$LIBS -L/sw/lib"
 fi
 
+dnl Compiler hardening flags
+dnl No -fstack-protector-all because it doesn't work on all platforms or architectures.
+
+AC_ARG_ENABLE([hardening], AS_HELP_STRING([--disable-hardening], [disable compiler and linker hardening flags]))
+AS_IF([test "x$enable_hardening" != "xno"],
+  [AX_CHECK_COMPILE_FLAG([-DFORTIFY_SOURCE=2], [CPPFLAGS="$CPPFLAGS -DFORITFY_SOURCE=2"])
+   AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CPPFLAGS="$CPPFLAGS -fno-strict-overflow"])
+   AX_CHECK_COMPILE_FLAG([-fwrapv], [CPPFLAGS="$CPPFLAGS -fwrapv"])
+   case $host_os in
+     *mingw*)
+       AX_CHECK_LINK_FLAG([-Wl,--dynamicbase], [LDFLAGS="$LDFLAGS -Wl,--dynamicbase"])
+       AX_CHECK_LINK_FLAG([-Wl,--nxcompat], [LDFLAGS="$LDFLAGS -Wl,--nxcompat"])
+       ;;
+     *)
+       AX_CHECK_COMPILE_FLAG([-fPIE], [CPPFLAGS="$CPPFLAGS -fPIE"])
+       AX_CHECK_COMPILE_FLAG([-fPIC], [CPPFLAGS="$CPPFLAGS -fPIC"])
+       AX_CHECK_LINK_FLAG([-pie], [LDFLAGS="$LDFLAGS -pie"])
+       ;;
+   esac
+   AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"])
+   AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS="$LDFLAGS -Wl,-z,now"])
+  ]
+);
+
 dnl Checks for header files.
 dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
 
@@ -157,8 +147,8 @@ AC_TYPE_SIZE_T
 AC_HEADER_TIME
 AC_STRUCT_TM
 
-tinc_ATTRIBUTE(__malloc__)
-tinc_ATTRIBUTE(__warn_unused_result__)
+MeshLink_ATTRIBUTE(__malloc__)
+MeshLink_ATTRIBUTE(__warn_unused_result__)
 
 AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , ,
   [#include "src/have.h"]
@@ -187,32 +177,10 @@ AC_CACHE_SAVE
 
 dnl These are defined in files in m4/
 
-dnl AC_ARG_WITH(libgcrypt, AC_HELP_STRING([--with-libgcrypt], [enable use of libgcrypt instead of OpenSSL])], [])
-
-tinc_CURSES
-tinc_READLINE
-tinc_ZLIB
-tinc_LZO
+MeshLink_ZLIB
 
-if test "$with_libgcrypt" = yes; then
-       gcrypt=true
-       AM_PATH_LIBGCRYPT([1.4.0], [], [])
-else
-       openssl=true
-       tinc_OPENSSL
-fi
+MeshLink_OPENSSL
        
-AM_CONDITIONAL(OPENSSL, test "$openssl" = true)
-AM_CONDITIONAL(GCRYPT, test "$grypt" = true)
-
-dnl Check if support for jumbograms is requested 
-AC_ARG_ENABLE(jumbograms,
-  AS_HELP_STRING([--disable-jumbograms], [enable support for jumbograms (packets up to 9000 bytes)]),
-  [ AS_IF([test "x$enable_jumbograms" = "xyes"],
-      [ AC_DEFINE(ENABLE_JUMBOGRAMS, 1, [Support for jumbograms (packets up to 9000 bytes)]) ])
-  ]
-)
-
-AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile m4/Makefile gui/Makefile])
+AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile m4/Makefile test/Makefile])
 
 AC_OUTPUT