1m4_define([upcase],`echo $1 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`)dnl 2 3dnl love_FIND_FUNC(func, includes, arguments) 4dnl kind of like AC_CHECK_FUNC, but with headerfiles 5AC_DEFUN([love_FIND_FUNC], [ 6 7AC_MSG_CHECKING([for $1]) 8AC_CACHE_VAL(ac_cv_love_func_$1, 9[ 10AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[$1($3)]])], 11[eval "ac_cv_love_func_$1=yes"],[eval "ac_cv_love_func_$1=no"])]) 12 13eval "ac_res=\$ac_cv_love_func_$1" 14 15if false; then 16 AC_CHECK_FUNCS($1) 17fi 18# $1 19eval "ac_tr_func=HAVE_[]upcase($1)" 20 21case "$ac_res" in 22 yes) 23 AC_DEFINE_UNQUOTED($ac_tr_func) 24 AC_MSG_RESULT([yes]) 25 ;; 26 no) 27 AC_MSG_RESULT([no]) 28 ;; 29esac 30 31 32]) 33 34 35 36AC_CHECK_HEADERS([ \ 37 crypt.h \ 38 curses.h \ 39 err.h \ 40 errno.h \ 41 inttypes.h \ 42 netdb.h \ 43 signal.h \ 44 sys/bswap.h \ 45 sys/file.h \ 46 sys/stropts.h \ 47 sys/timeb.h \ 48 sys/times.h \ 49 sys/uio.h \ 50 sys/un.h \ 51 sys/utsname.h \ 52 term.h \ 53 termcap.h \ 54 time.h \ 55 timezone.h \ 56 ttyname.h \ 57 netinet/in.h \ 58 netinet/in6.h \ 59 netinet6/in6.h 60]) 61 62AC_CHECK_FUNCS([ \ 63 atexit \ 64 cgetent \ 65 getprogname \ 66 inet_ntop \ 67 inet_aton \ 68 inet_pton \ 69 gethostname \ 70 getnameinfo \ 71 iruserok \ 72 putenv \ 73 rcmd \ 74 readv \ 75 sendmsg \ 76 setitimer \ 77 socket \ 78 strlwr \ 79 strncasecmp \ 80 strptime \ 81 strsep \ 82 strsep_copy \ 83 strtok_r \ 84 strupr \ 85 swab \ 86 umask \ 87 uname \ 88 unsetenv \ 89 closefrom \ 90 hstrerror \ 91 err \ 92 errx \ 93 warnx \ 94 flock \ 95 getaddrinfo \ 96 freeaddrinfo \ 97 getipnodebyname \ 98 getipnodebyaddr \ 99 freehostent \ 100 writev 101]) 102 103love_FIND_FUNC(bswap16, [#ifdef HAVE_SYS_BSWAP_H 104#include <sys/bswap.h> 105#endif], 0) 106 107love_FIND_FUNC(bswap32, [#ifdef HAVE_SYS_BSWAP_H 108#include <sys/bswap.h> 109#endif], 0) 110 111 112dnl AC_HAVE_TYPE(TYPE,INCLUDES) 113AC_DEFUN([AC_HAVE_TYPE], [ 114AC_REQUIRE([AC_HEADER_STDC]) 115cv=`echo "$1" | sed 'y%./+- %__p__%'` 116AC_MSG_CHECKING(for $1) 117AC_CACHE_VAL([ac_cv_type_$cv], 118AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 119AC_INCLUDES_DEFAULT 120$2]], 121[[$1 foo;]])], 122[eval "ac_cv_type_$cv=yes"], 123[eval "ac_cv_type_$cv=no"]))dnl 124ac_foo=`eval echo \\$ac_cv_type_$cv` 125AC_MSG_RESULT($ac_foo) 126if test "$ac_foo" = yes; then 127 ac_tr_hdr=HAVE_`echo $1 | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMNOPQRSTUVWXYZ____%'` 128if false; then 129 AC_CHECK_TYPES($1) 130fi 131 AC_DEFINE_UNQUOTED($ac_tr_hdr, 1, [Define if you have type `$1']) 132fi 133]) 134 135AC_HAVE_TYPE([sa_family_t],[#include <sys/socket.h>]) 136AC_HAVE_TYPE([struct sockaddr], [#include <sys/socket.h>]) 137AC_HAVE_TYPE([struct sockaddr_storage], [#include <sys/socket.h>]) 138AC_HAVE_TYPE([struct addrinfo], [#include <netdb.h>]) 139AC_HAVE_TYPE([struct ifaddrs], [#include <ifaddrs.h>]) 140AC_HAVE_TYPE([socklen_t],[#include <sys/socket.h>]) 141 142 143AC_DEFUN([AC_KRB_STRUCT_WINSIZE], [ 144AC_MSG_CHECKING(for struct winsize) 145AC_CACHE_VAL(ac_cv_struct_winsize, [ 146ac_cv_struct_winsize=no 147for i in sys/termios.h sys/ioctl.h; do 148AC_EGREP_HEADER( 149struct[[ ]]*winsize,dnl 150$i, ac_cv_struct_winsize=yes; break)dnl 151done 152]) 153if test "$ac_cv_struct_winsize" = "yes"; then 154 AC_DEFINE(HAVE_STRUCT_WINSIZE, 1, [define if struct winsize is declared in sys/termios.h]) 155fi 156AC_MSG_RESULT($ac_cv_struct_winsize) 157AC_EGREP_HEADER(ws_xpixel, termios.h, 158 AC_DEFINE(HAVE_WS_XPIXEL, 1, [define if struct winsize has ws_xpixel])) 159AC_EGREP_HEADER(ws_ypixel, termios.h, 160 AC_DEFINE(HAVE_WS_YPIXEL, 1, [define if struct winsize has ws_ypixel])) 161]) 162 163AC_KRB_STRUCT_WINSIZE 164 165AC_TYPE_SIGNAL 166if test "$ac_cv_type_signal" = "void" ; then 167 AC_DEFINE(VOID_RETSIGTYPE, 1, [Define if signal handlers return void.]) 168fi 169AC_SUBST(VOID_RETSIGTYPE) 170 171 172m4_include(heimdal/cf/check-var.m4) 173 174rk_CHECK_VAR(h_errno, 175[#ifdef HAVE_SYS_TYPES_H 176#include <sys/types.h> 177#endif 178#ifdef HAVE_NETDB_H 179#include <netdb.h> 180#endif]) 181 182m4_include(heimdal/cf/find-func.m4) 183m4_include(heimdal/cf/find-func-no-libs.m4) 184m4_include(heimdal/cf/find-func-no-libs2.m4) 185m4_include(heimdal/cf/resolv.m4) 186 187smb_save_LIBS=$LIBS 188RESOLV_LIBS="" 189LIBS="" 190 191dnl This fills in the global LIBS... 192rk_RESOLV 193 194dnl AC_CHECK_LIB_EXT(resolv, RESOLV_LIBS, res_search) 195 SMB_ENABLE(RESOLV,YES) 196 197if test x"$LIBS" != "x"; then 198 RESOLV_LIBS=$LIBS 199fi 200 201LIBS=$smb_save_LIBS 202 203SMB_EXT_LIB(RESOLV,[${RESOLV_LIBS}],[${RESOLV_CFLAGS}],[${RESOLV_CPPFLAGS}],[${RESOLV_LDFLAGS}]) 204 205 206# these are disabled unless heimdal is found below 207SMB_ENABLE(KERBEROS_LIB, NO) 208SMB_ENABLE(asn1_compile, NO) 209SMB_ENABLE(compile_et, NO) 210 211AC_PROG_LEX 212AC_PROG_YACC 213 214# Portions of heimdal kerberos are unpacked into source/heimdal 215# of the samba source tree. 216 217# if we ever get to using a host kerberos, we might add conditionals here 218AC_DEFINE(HAVE_KRB5,1,[Whether kerberos is available]) 219HAVE_KRB5=YES 220SMB_ENABLE(KERBEROS_LIB, YES) 221SMB_ENABLE(asn1_compile, YES) 222SMB_ENABLE(compile_et, YES) 223 224# only add getaddrinfo and related functions if needed 225SMB_ENABLE(HEIMDAL_ROKEN_ADDRINFO, NO) 226if test t$ac_cv_func_getaddrinfo != tyes; then 227 SMB_ENABLE(HEIMDAL_ROKEN_ADDRINFO, YES) 228fi 229 230# only add inet_aton if needed 231SMB_ENABLE(HEIMDAL_ROKEN_INET_ATON, NO) 232if test t$ac_cv_func_inet_aton != tyes; then 233 SMB_ENABLE(HEIMDAL_ROKEN_INET_ATON, YES) 234fi 235 236if test x"$ac_cv_func_inet_pton" = x"no"; then 237 AC_CHECK_LIB_EXT(nsl_s, NSL_LIBS, inet_pton) 238 AC_CHECK_LIB_EXT(nsl, NSL_LIBS, inet_pton) 239 SMB_ENABLE(NSL,YES) 240 if test x"$ac_cv_lib_ext_nsl_s_inet_pton" != x"yes" && 241 test x"$ac_cv_lib_ext_nsl_inet_pton" != x"yes"; then 242 AC_MSG_ERROR([no inet_pton() function available!]) 243 fi 244fi 245 246SMB_EXT_LIB(NSL,[${NSL_LIBS}],[],[],[]) 247 248# only add getprogname if needed 249SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, NO) 250SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, NO) 251if test t$ac_cv_func_getprogname != tyes; then 252 SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, YES) 253 SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, YES) 254fi 255 256# only add gai_strerror if needed 257SMB_ENABLE(HEIMDAL_ROKEN_GAI_STRERROR, NO) 258AC_CHECK_FUNC(gai_strerror) 259 260if test t$ac_cv_func_gai_strerror != tyes; then 261 AC_CHECK_LIB_EXT(nsl, GAI_LIBS, gai_strerror) 262 AC_CHECK_LIB_EXT(socket, GAI_LIBS, gai_strerror) 263 AC_CHECK_LIB_EXT(xnet, GAI_LIBS, gai_strerror) 264 265 dnl We can't just call AC_CHECK_FUNCS(gai_strerror) here, because the value 266 dnl has been cached. 267 if test x"$ac_cv_lib_ext_nsl_gai_strerror" = x"yes" || 268 test x"$ac_cv_lib_ext_socket_gai_strerror" = x"yes" || 269 test x"$ac_cv_lib_ext_xnet_gai_strerror" = x"yes"; then 270 AC_DEFINE(HAVE_GAI_STRERROR,1,[Whether the system has gai_strerror()]) 271 SMB_ENABLE(GAI, YES) 272 else 273 SMB_ENABLE(HEIMDAL_ROKEN_GAI_STRERROR, YES) 274 fi 275 276else 277 AC_DEFINE(HAVE_GAI_STRERROR,1,[Whether gai_strerror() is available]) 278fi 279 280SMB_EXT_LIB(GAI,[${GAI_LIBS}],[${GAI_CFLAGS}],[${GAI_CPPFLAGS}],[${GAI_LDFLAGS}]) 281