1dnl 2dnl aprsc 3dnl 4dnl (c) Matti Aarnio, OH2MQK, <oh2mqk@sral.fi> 5dnl (c) Heikki Hannikainen, OH7LZB 6dnl 7dnl This program is licensed under the BSD license, which can be found 8dnl in the file LICENSE. 9dnl 10 11dnl Process this file with autoconf to produce a configure script. 12AC_INIT 13AC_CONFIG_SRCDIR([aprsc.c]) 14 15dnl For automake 16VERSION="`cat VERSION`" 17PACKAGE=aprsc 18dnl AM_INIT_AUTOMAKE($PACKAGE, $VERSION) 19 20AC_PROG_MAKE_SET 21 22AC_CONFIG_HEADERS([ac-hdrs.h]) 23 24dnl Checks for programs. 25AC_PROG_CC 26AC_PROG_GCC_TRADITIONAL 27 28 29dnl AC_PATH_PROG(LD, ld, ld)dnl 30if test -z "$LD" ; then 31 LD="$CC" 32fi 33AC_SUBST(LD,"$LD") 34 35dnl If on i686, we'll need -march=i686 to get the atomic instructions 36dnl On FreeBSD, the architecture is i386. 37MACHINE="`uname -m`" 38if test "$MACHINE" == "i686" -o "$MACHINE" == "i386"; then 39 CFLAGS_ARCH="-march=i686" 40fi 41OS="`uname`" 42if test "$OS" == "Darwin"; then 43 CFLAGS_ARCH="" 44fi 45AC_SUBST(CFLAGS_ARCH) 46 47dnl Check for GNU make 48AX_CHECK_GNU_MAKE() 49 50AC_ARG_ENABLE([static-libevent], 51 [AS_HELP_STRING([--enable-static-libevent=path], 52 [link against static libevent.a @<:@default=do not@:>@])], 53 [static_libevent=$enableval], 54 []) 55 56dnl Check for libevent 57AC_CHECK_HEADER([event2/event.h],,[AC_MSG_ERROR([libevent2 header not found - remember to install the development package too])]) 58AC_CHECK_HEADER([event2/http.h],,[AC_MSG_ERROR([libevent2 http header not found - remember to install the development package too])]) 59AC_CHECK_HEADER([event2/buffer.h],,[AC_MSG_ERROR([libevent2 buffer header not found - remember to install the development package too])]) 60AC_SUBST(LIBEVENT) 61AC_CHECK_LIB(event,event_base_new,[LIBEVENT="-levent"],[AC_MSG_ERROR([libevent2 not found])]) 62 63AS_IF([test "x$static_libevent" != x], 64 [LIBEVENT="$static_libevent"]) 65 66dnl Check for POSIX capabilities 67AC_CHECK_HEADERS([sys/capability.h], AC_DEFINE([HAVE_CAPABILITY_H], [], [POSIX capabilities])) 68AC_CHECK_HEADERS([sys/prctl.h], AC_DEFINE([HAVE_PRCTL_H], [], [Linux process control prctl.h])) 69AC_SUBST(LIBCAP) 70AC_CHECK_LIB(cap,cap_init,[LIBCAP="-lcap"]) 71 72dnl Check for 73AC_CHECK_HEADERS([sys/eventfd.h], AC_DEFINE([HAVE_EVENTFD_H], [], [Linux event fd support])) 74 75dnl Checks for system headers 76AC_CHECK_HEADERS([alloca.h], AC_DEFINE([HAVE_ALLOCA_H])) 77AC_CHECK_HEADERS([poll.h], AC_DEFINE([HAVE_POLL_H])) 78dnl AC_CHECK_FUNC(ppoll,,[Probably have ppoll of Linux]) 79AC_CHECK_HEADERS([sys/epoll.h], AC_DEFINE([HAVE_SYS_EPOLL_H])) 80 81dnl SCTP checks 82AC_CHECK_HEADERS([netinet/sctp.h], AC_DEFINE([HAVE_NETINET_SCTP_H])) 83 84dnl Checks for libraries. 85 86dnl Checks for library functions. 87AC_SUBST(LIBM) 88AC_CHECK_FUNCS(atan2f,, 89 AC_CHECK_LIB(m, atan2f, 90 [LIBM="-lm"])) 91 92AC_SUBST(LIBPTHREAD) 93dnl AC_CHECK_FUNCS(pthread_exit,, 94 AC_CHECK_LIB(pthread, pthread_exit, 95 [LIBPTHREAD="-lpthread"]) 96dnl) 97 98dnl Solaris resolver solution: 99AC_SUBST(LIBGETNAMEINFO) 100AC_CHECK_FUNCS(getnameinfo,, 101 AC_CHECK_LIB(nsl, getnameinfo, 102 [LIBGETNAMEINFO="-lnsl"])) 103 104dnl 105dnl We check for various libraries 106dnl - SysVr4 style of "-lsocket" at first (unless in libc) 107dnl The hallmark is connect() routine (we presume) 108dnl 109AC_SUBST(LIBSOCKET)dnl 110ac_cv_libsocket_both=1 111AC_CHECK_FUNC(connect, ac_cv_libsocket_both=0) 112AC_CHECK_FUNC(gethostbyname, ac_cv_libsocket_both=0) 113if test "$ac_cv_libsocket_both" = 1 ; then 114 # Check cache 115 if test "$ac_cv_func_socket_lxnet" = yes ; then 116 AC_MSG_RESULT([need -lxnet library (cached)]) 117 LIBSOCKET="-lnsl -lsocket -lxnet" 118 else 119 if test "$ac_cv_func_socket_lsocket" = yes ; then 120 AC_MSG_RESULT([need -lsocket library (cached)]) 121 LIBSOCKET="-lsocket" 122 if test "$ac_cv_func_gethostbyname_lnsl" = yes ; then 123 LIBSOCKET="-lnsl -lsocket" 124 fi 125 else 126 # Well, will this work ? SysVR4, but not Sun Solaris ? 127 AC_CHECK_LIB(xnet, connect, [LIBSOCKET="-lnsl -lsocket -lxnet" 128 ac_cv_func_socket_lsocket=no 129 ac_cv_func_socket_lxnet=yes],[ 130 AC_CHECK_LIB(socket, connect, [LIBSOCKET="-lsocket" 131 ac_cv_func_socket_lsocket=yes], 132 ac_cv_func_socket_lsocket=no) 133 if test "$ac_cv_func_socket_lsocket" = yes ; then 134 t_oldLibs="$LIBS" 135 LIBS="$LIBS -lsocket" 136 AC_TRY_LINK([],[gethostbyname();], ,[ 137 LIBS="$LIBS -lnsl" # Add this Solaris library.. 138 AC_TRY_LINK([],[gethostbyname();],[ 139 LIBSOCKET="-lsocket -lnsl" 140 ac_cv_func_gethostbyname_lnsl=yes 141 ], [ 142 AC_MSG_ERROR([Weird, '$LIBS' not enough to find gethostnyname() ?!]) 143 ]) 144 ]) 145 LIBS="$t_oldLibs" 146 fi 147 ]) 148 fi 149 fi 150fi 151 152# See about the routines that possibly exist at the libraries.. 153LIBS="$t_oldLibs $LIBSOCKET" 154AC_CHECK_FUNCS(socket socketpair) 155LIBS="$t_oldLibs" 156 157if test "$ac_cv_func_socket" = no -a "$LIBSOCKET" != ""; then 158 LIBS="$LIBS $LIBSOCKET" 159 AC_TRY_LINK([],[socket();], ac_cv_func_socket=yes) 160 if test $ac_cv_func_socket = yes; then 161 AC_DEFINE(HAVE_SOCKET) 162 AC_MSG_RESULT([Has socket() when using $LIBSOCKET]) 163 fi 164 LIBS="$t_oldLibs" 165fi 166if test "$ac_cv_func_socketpair" = no -a "$LIBSOCKET" != ""; then 167 LIBS="$LIBS $LIBSOCKET" 168 AC_TRY_LINK([],[socketpair();], ac_cv_func_socketpair=yes) 169 if test $ac_cv_func_socketpair = yes; then 170 AC_DEFINE(HAVE_SOCKETPAIR) 171 AC_MSG_RESULT([Has socketpair() when using $LIBSOCKET]) 172 fi 173 LIBS="$t_oldLibs" 174fi 175 176ac_with_ipv6_replacement_libc=0 177AC_ARG_WITH(ipv6-replacement-libc, [ --with-ipv6-replacement-libc If system has broken getaddrinfo() and friends], 178 ac_with_ipv6_replacement_libc=1) 179 180LIBS="$LIBSOCKET $LIBS" 181AC_CHECK_FUNCS(getnameinfo gai_strerror inet_ntop inet_pton) 182LIBS="$t_oldLibs" 183 184 185t_oldLibs="$LIBS" 186LIBS="$LIBS $LIBSOCKET" 187 188# Following stuff may exist in our LIBC, or in separate -linet6 189# AC_CHECK_FUNCS(inet_ntop inet_pton getaddrinfo getnameinfo gai_strerror) 190# If not found in LIBC, try to use -linet6, if it fails too, 191# THEN call the AC_REPLACE_FUNCS() 192if test "$ac_cv_func_gai_strerror" = no ; then 193 LIBS="$LIBS -linet6" 194 AC_TRY_LINK([],[gai_strerror();], ac_cv_func_gai_strerror=yes) 195 LIBS="$t_oldLibs" 196 if test "$ac_cv_func_gai_strerror" = yes; then 197 LIBSOCKET="$LIBSOCKET -linet6" 198 AC_MSG_RESULT([Has IPv6 API gai_strerror() when using $LIBSOCKET]) 199 else 200 AC_LIBOBJ([inet_ntop]) 201 AC_LIBOBJ([inet_pton]) 202 AC_LIBOBJ([getnameinfo]) 203 AC_LIBOBJ([gai_strerror]) 204 fi 205fi 206 207LIBS="$t_oldLibs" 208 209AC_SUBST(LIBS,"$LIBS") 210 211dnl Check for the __sync_fetch_and_add builtin 212dnl the check needs to use long long x, since we're incrementing a long long in the stats. 213AC_CACHE_CHECK([for __sync_fetch_and_add], ac_cv_func_sync_fetch_and_add, 214[AC_TRY_LINK([],[long long x;__sync_fetch_and_add(&x,1);],ac_cv_func_sync_fetch_and_add=yes,ac_cv_func_sync_fetch_and_add=no)]) 215if test "$ac_cv_func_sync_fetch_and_add" = yes; then 216 AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD,1,[Define if you have the __sync_fetch_and_add function]) 217fi 218 219dnl Check for clock_gettime, and a library to have it 220AC_SUBST(LIBRT) 221AC_SEARCH_LIBS([clock_gettime], [rt], [ 222 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,[Have clock_gettime]) 223]) 224 225if test "$ac_cv_search_clock_gettime" = "-lrt"; then 226 LIBRT="-lrt" 227fi 228 229dnl Check for setenv and putenv, some might not have one 230AC_CHECK_FUNCS(setenv putenv) 231 232dnl Check for zlib 233AC_SUBST(LIBZ) 234AC_SEARCH_LIBS([deflate], [z], [ 235 AC_CHECK_HEADERS([zlib.h], AC_DEFINE(HAVE_LIBZ, 1, [Have libz])) 236]) 237 238if test "$ac_cv_search_deflate" = "-lz"; then 239 LIBZ="-lz" 240fi 241 242dnl Check for openssl 243AC_ARG_WITH(openssl, [ --with-openssl[=DIR] Include OpenSSL support (requires OpenSSL >= 0.9.7)], [with_openssl=$withval], [with_openssl=no]) 244AC_SUBST(LIBSSL) 245AC_SUBST(LIBCRYPTO) 246if test "$with_openssl" != "no" ; then 247 AC_CHECK_HEADERS([openssl/ssl.h]) 248 AC_SEARCH_LIBS(TLSv1_server_method, ssl, AC_DEFINE(HAVE_TLSV1_SERVER_METHOD, 1, [OpenSSL 0.9.7 or later])) 249 AC_SEARCH_LIBS(X509_free, crypto, AC_DEFINE(HAVE_X509_FREE, 1, [OpenSSL 0.9.7 or later])) 250 251 if test "$ac_cv_search_TLSv1_server_method" = "-lssl"; then 252 LIBSSL="-lssl" 253 fi 254 if test "$ac_cv_search_X509_free" = "-lcrypto"; then 255 LIBCRYPTO="-lcrypto" 256 fi 257fi 258 259dnl Output files 260AC_CONFIG_FILES([Makefile]) 261AC_OUTPUT 262 263dnl If GNU make is not the default, deal with it 264if test "$_cv_gnu_make_command" != "" -a "$_cv_gnu_make_command" != "make" ; then 265 mv Makefile GNUmakefile 266 echo all clean distclean install: > Makefile ; 267 echo \ $_cv_gnu_make_command \$@ >> Makefile; 268fi 269 270