11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl $Id: aclocal.m4,v 1.8 2011/05/20 01:45:25 djm Exp $ 21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl 31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl OpenSSH-specific autoconf macros 41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl 51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl OSSH_CHECK_CFLAG_COMPILE(check_flag[, define_flag]) 71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl Check that $CC accepts a flag 'check_flag'. If it is supported append 81305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append 91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl 'check_flag'. 101305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodAC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{ 111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_CHECKING([if $CC supports $1]) 121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood saved_CFLAGS="$CFLAGS" 131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood CFLAGS="$CFLAGS $1" 141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood _define_flag="$2" 151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood test "x$_define_flag" = "x" && _define_flag="$1" 161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int main(void) { return 0; }]])], 171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood [ AC_MSG_RESULT([yes]) 181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood CFLAGS="$saved_CFLAGS $_define_flag"], 191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood [ AC_MSG_RESULT([no]) 201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood CFLAGS="$saved_CFLAGS" ] 211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ) 221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood}]) 231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl OSSH_CHECK_HEADER_FOR_FIELD(field, header, symbol) 261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl Does AC_EGREP_HEADER on 'header' for the string 'field' 271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl If found, set 'symbol' to be defined. Cache the result. 281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl TODO: This is not foolproof, better to compile and read from there 291305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodAC_DEFUN(OSSH_CHECK_HEADER_FOR_FIELD, [ 301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# look for field '$1' in header '$2' 311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood dnl This strips characters illegal to m4 from the header filename 321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ossh_safe=`echo "$2" | sed 'y%./+-%__p_%'` 331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood dnl 341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ossh_varname="ossh_cv_$ossh_safe""_has_"$1 351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_CHECKING(for $1 field in $2) 361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_CACHE_VAL($ossh_varname, [ 371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_EGREP_HEADER($1, $2, [ dnl 381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood eval "$ossh_varname=yes" dnl 391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ], [ dnl 401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood eval "$ossh_varname=no" dnl 411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ]) dnl 421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ]) 431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ossh_result=`eval 'echo $'"$ossh_varname"` 441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if test -n "`echo $ossh_varname`"; then 451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_RESULT($ossh_result) 461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if test "x$ossh_result" = "xyes"; then 471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_DEFINE($3, 1, [Define if you have $1 in $2]) 481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood else 501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_RESULT(no) 511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood]) 531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl Check for socklen_t: historically on BSD it is an int, and in 551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl POSIX 1g it is a type of its own, but some platforms use different 561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl types for the argument to getsockopt, getpeername, etc. So we 571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwooddnl have to test to find something that will work. 581305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodAC_DEFUN([TYPE_SOCKLEN_T], 591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood[ 601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_CHECK_TYPE([socklen_t], ,[ 611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_CHECKING([for socklen_t equivalent]) 621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_CACHE_VAL([curl_cv_socklen_t_equiv], 631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood [ 641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood # Systems have either "struct sockaddr *" or 651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood # "void *" as the second argument to getpeername 661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood curl_cv_socklen_t_equiv= 671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood for arg2 in "struct sockaddr" void; do 681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood for t in int size_t unsigned long "unsigned long"; do 691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_TRY_COMPILE([ 701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood #include <sys/types.h> 711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood #include <sys/socket.h> 721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood int getpeername (int, $arg2 *, $t *); 741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ],[ 751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood $t len; 761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood getpeername(0,0,&len); 771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ],[ 781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood curl_cv_socklen_t_equiv="$t" 791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood break 801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ]) 811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood done 821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood done 831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if test "x$curl_cv_socklen_t_equiv" = x; then 851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) 861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ]) 881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_MSG_RESULT($curl_cv_socklen_t_equiv) 891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv, 901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood [type to use in place of socklen_t if not defined])], 911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood [#include <sys/types.h> 921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <sys/socket.h>]) 931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood]) 941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 95