diff options
-rw-r--r-- | configure.ac | 84 |
1 files changed, 51 insertions, 33 deletions
diff --git a/configure.ac b/configure.ac index e9161b341f..45b1fa69a4 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,8 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])dnl be backward compatible AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4macros]) +AC_CANONICAL_HOST + # Checks for programs. AC_PROG_CXX @@ -253,19 +255,18 @@ case "$host" in # In OS X 10.9 (and possibly any future versions?) pthread_cond_destroy # doesn't work as documented, which makes some of unit tests fail. - AC_TRY_RUN([ - #include <Availability.h> - int main(void) - { - #ifdef __MAC_OS_X_VERSION_MIN_REQUIRED - #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1090 - return 1; - #else - return 0; - #endif - #endif - return 1; - }],[kea_undefined_pthread_behavior=yes],[],[]) + AC_MSG_CHECKING([OS X versions where destroying locked locks do not fail]) + AC_TRY_COMPILE( + [#include <Availability.h>], + [#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 + #error " OS X >= 10.9" + #endif + #endif + return 1;], + [AC_MSG_RESULT([OS X < 10.9])], + [AC_MSG_RESULT([OS X >= 10.9]) + kea_undefined_pthread_behavior=yes]) # libtool doesn't work perfectly with Darwin: libtool embeds the # final install path in dynamic libraries and our loadable python @@ -364,44 +365,61 @@ AC_TYPE_SIZE_T # Detect OS type (it may be used to do OS-specific things, e.g. # interface detection in DHCP) -AC_MSG_CHECKING(OS family) -system=`uname -s` -case $system in - Linux) +AC_MSG_CHECKING(OS type) +case $host in + *-linux*) + AC_DEFINE([OS_LINUX], [1], [Running on Linux?]) OS_TYPE="Linux" CPPFLAGS="$CPPFLAGS -DOS_LINUX" ;; - Darwin | FreeBSD | NetBSD | OpenBSD) + *-apple-darwin*) + AC_DEFINE([OS_BSD], [1], [Running on BSD?]) + AC_DEFINE([OS_OSX], [1], [Running on OSX?]) + OS_TYPE="BSD" + BSD_TYPE="OSX" + CPPFLAGS="$CPPFLAGS -DOS_BSD" + ;; + *-freebsd*) + AC_DEFINE([OS_BSD], [1], [Running on BSD?]) + AC_DEFINE([OS_FREEBSD], [1], [Running on FreeBSD?]) + OS_TYPE="BSD" + BSD_TYPE="FreeBSD" + CPPFLAGS="$CPPFLAGS -DOS_BSD" + ;; + *-netbsd*) + AC_DEFINE([OS_BSD], [1], [Running on BSD?]) + AC_DEFINE([OS_NETBSD], [1], [Running on NetBSD?]) + OS_TYPE="BSD" + BSD_TYPE="NetBSD" + CPPFLAGS="$CPPFLAGS -DOS_BSD" + ;; + *-openbsd*) + AC_DEFINE([OS_BSD], [1], [Running on BSD?]) + AC_DEFINE([OS_OPENBSD], [1], [Running on OpenBSD?]) OS_TYPE="BSD" + BSD_TYPE="OpenBSD" CPPFLAGS="$CPPFLAGS -DOS_BSD" ;; - SunOS) + *-solaris*) + AC_DEFINE([OS_SOLARIS], [1], [Running on Solaris?]) OS_TYPE="Solaris" CPPFLAGS="$CPPFLAGS -DOS_SUN" ;; *) OS_TYPE="Unknown" - AC_MSG_WARN("Unsupported OS: uname returned $system") + # $host_os is more user friendly than full $host + AC_MSG_WARN("Unsupported OS: $host_os") ;; esac AC_MSG_RESULT($OS_TYPE) AM_CONDITIONAL(OS_LINUX, test $OS_TYPE = Linux) -AM_COND_IF([OS_LINUX], [AC_DEFINE([OS_LINUX], [1], [Running on Linux?])]) AM_CONDITIONAL(OS_BSD, test $OS_TYPE = BSD) -AM_COND_IF([OS_BSD], [AC_DEFINE([OS_BSD], [1], [Running on BSD?])]) AM_CONDITIONAL(OS_SOLARIS, test $OS_TYPE = Solaris) -AM_COND_IF([OS_SOLARIS], [AC_DEFINE([OS_SOLARIS], [1], [Running on Solaris?])]) - -# Deal with variants -AM_CONDITIONAL(OS_FREEBSD, test $system = FreeBSD) -AM_COND_IF([OS_FREEBSD], [AC_DEFINE([OS_FREEBSD], [1], [Running on FreeBSD?])]) -AM_CONDITIONAL(OS_NETBSD, test $system = NetBSD) -AM_COND_IF([OS_NETBSD], [AC_DEFINE([OS_NETBSD], [1], [Running on NetBSD?])]) -AM_CONDITIONAL(OS_OPENBSD, test $system = OpenBSD) -AM_COND_IF([OS_OPENBSD], [AC_DEFINE([OS_OPENBSD], [1], [Running on OpenBSD?])]) -AM_CONDITIONAL(OS_OSX, test $system = Darwin) -AM_COND_IF([OS_OSX], [AC_DEFINE([OS_OSX], [1], [Running on OSX?])]) +AM_CONDITIONAL(OS_OSX, test $BSD_TYPE = OSX) +AM_CONDITIONAL(OS_FREEBSD, test $BSD_TYPE = FreeBSD) +AM_CONDITIONAL(OS_NETBSD, test $BSD_TYPE = NetBSD) +AM_CONDITIONAL(OS_OPENBSD, test $BSD_TYPE = OpenBSD) AC_MSG_CHECKING(for sa_len in struct sockaddr) |