1AC_DEFUN([CHECK_OS_OPTIONS], [ 2 3CFLAGS="$CFLAGS -Wall -std=gnu99 -fno-strict-aliasing" 4BUILD_NC=yes 5 6case $host_os in 7 *aix*) 8 HOST_OS=aix 9 if test "`echo $CC | cut -d ' ' -f 1`" != "gcc" ; then 10 CFLAGS="-qnoansialias $USER_CFLAGS" 11 fi 12 AC_SUBST([PLATFORM_LDADD], ['-lperfstat']) 13 ;; 14 *cygwin*) 15 HOST_OS=cygwin 16 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" 17 ;; 18 *darwin*) 19 HOST_OS=darwin 20 HOST_ABI=macosx 21 # 22 # Don't use arc4random on systems before 10.12 because of 23 # weak seed on failure to open /dev/random, based on latest 24 # public source: 25 # http://www.opensource.apple.com/source/Libc/Libc-997.90.3/gen/FreeBSD/arc4random.c 26 # 27 # We use the presence of getentropy() to detect 10.12. The 28 # following check take into account that: 29 # 30 # - iOS <= 10.1 fails because of missing getentropy and 31 # hence they miss sys/random.h 32 # 33 # - in macOS 10.12 getentropy is not tagged as introduced in 34 # 10.12 so we cannot use it for target < 10.12 35 # 36 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 37#include <AvailabilityMacros.h> 38#include <unistd.h> 39#include <sys/random.h> /* Systems without getentropy() should die here */ 40 41/* Based on: https://gitweb.torproject.org/tor.git/commit/?id=16fcbd21 */ 42#ifndef MAC_OS_X_VERSION_10_12 43# define MAC_OS_X_VERSION_10_12 101200 44#endif 45#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) 46# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12 47# error "Running on Mac OSX 10.11 or earlier" 48# endif 49#endif 50 ]], [[ 51char buf[1]; getentropy(buf, 1); 52 ]])], 53 [ USE_BUILTIN_ARC4RANDOM=no ], 54 [ USE_BUILTIN_ARC4RANDOM=yes ] 55 ) 56 AC_MSG_CHECKING([whether to use builtin arc4random]) 57 AC_MSG_RESULT([$USE_BUILTIN_ARC4RANDOM]) 58 # Not available on iOS 59 AC_CHECK_HEADER([arpa/telnet.h], [], [BUILD_NC=no]) 60 ;; 61 *freebsd*) 62 HOST_OS=freebsd 63 HOST_ABI=elf 64 # fork detection missing, weak seed on failure 65 # https://svnweb.freebsd.org/base/head/lib/libc/gen/arc4random.c?revision=268642&view=markup 66 USE_BUILTIN_ARC4RANDOM=yes 67 AC_SUBST([PROG_LDADD], ['-lthr']) 68 ;; 69 *hpux*) 70 HOST_OS=hpux; 71 if test "`echo $CC | cut -d ' ' -f 1`" = "gcc" ; then 72 CFLAGS="$CFLAGS -mlp64" 73 else 74 CFLAGS="-g -O2 +DD64 +Otype_safety=off $USER_CFLAGS" 75 fi 76 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -D__STRICT_ALIGNMENT" 77 ;; 78 *linux*) 79 HOST_OS=linux 80 HOST_ABI=elf 81 CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE" 82 ;; 83 *midipix*) 84 HOST_OS=midipix 85 CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE" 86 ;; 87 *netbsd*) 88 HOST_OS=netbsd 89 HOST_ABI=elf 90 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 91#include <sys/param.h> 92#if __NetBSD_Version__ < 700000001 93 undefined 94#endif 95 ]], [[]])], 96 [ USE_BUILTIN_ARC4RANDOM=no ], 97 [ USE_BUILTIN_ARC4RANDOM=yes ] 98 ) 99 CPPFLAGS="$CPPFLAGS -D_OPENBSD_SOURCE" 100 ;; 101 *openbsd* | *bitrig*) 102 HOST_OS=openbsd 103 HOST_ABI=elf 104 AC_DEFINE([HAVE_ATTRIBUTE__BOUNDED__], [1], [OpenBSD gcc has bounded]) 105 AC_DEFINE([HAVE_ATTRIBUTE__DEAD], [1], [OpenBSD gcc has __dead]) 106 ;; 107 *mingw*) 108 HOST_OS=win 109 HOST_ABI=mingw64 110 BUILD_NC=no 111 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_POSIX -D_POSIX_SOURCE -D__USE_MINGW_ANSI_STDIO" 112 CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_THREAD_SAFE_FUNCTIONS" 113 CPPFLAGS="$CPPFLAGS -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600" 114 CPPFLAGS="$CPPFLAGS" 115 AC_SUBST([PLATFORM_LDADD], ['-lws2_32 -lbcrypt']) 116 ;; 117 *solaris*) 118 HOST_OS=solaris 119 HOST_ABI=elf 120 CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__ -D_XOPEN_SOURCE=600 -DBSD_COMP" 121 AC_SUBST([PLATFORM_LDADD], ['-ldl -lnsl -lsocket']) 122 ;; 123 *) ;; 124esac 125 126# Check if time_t is sized correctly 127AC_CHECK_SIZEOF([time_t], [time.h]) 128AM_CONDITIONAL([SMALL_TIME_T], [test "$ac_cv_sizeof_time_t" = "4"]) 129if test "$ac_cv_sizeof_time_t" = "4"; then 130 AC_DEFINE([SMALL_TIME_T]) 131 echo " ** Warning, this system is unable to represent times past 2038" 132 echo " ** It will behave incorrectly when handling valid RFC5280 dates" 133 134 if test "$host_os" = "mingw32" ; then 135 echo " **" 136 echo " ** You can solve this by adjusting the build flags in your" 137 echo " ** mingw-w64 toolchain. Refer to README.windows for details." 138 fi 139fi 140 141AM_CONDITIONAL([HOST_AIX], [test x$HOST_OS = xaix]) 142AM_CONDITIONAL([HOST_CYGWIN], [test x$HOST_OS = xcygwin]) 143AM_CONDITIONAL([HOST_DARWIN], [test x$HOST_OS = xdarwin]) 144AM_CONDITIONAL([HOST_FREEBSD], [test x$HOST_OS = xfreebsd]) 145AM_CONDITIONAL([HOST_HPUX], [test x$HOST_OS = xhpux]) 146AM_CONDITIONAL([HOST_LINUX], [test x$HOST_OS = xlinux]) 147AM_CONDITIONAL([HOST_MIDIPIX], [test x$HOST_OS = xmidipix]) 148AM_CONDITIONAL([HOST_NETBSD], [test x$HOST_OS = xnetbsd]) 149AM_CONDITIONAL([HOST_OPENBSD], [test x$HOST_OS = xopenbsd]) 150AM_CONDITIONAL([HOST_SOLARIS], [test x$HOST_OS = xsolaris]) 151AM_CONDITIONAL([HOST_WIN], [test x$HOST_OS = xwin]) 152]) 153