From 6c65d251da5c91524bb3a9064ace323d9e581801 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Wed, 19 Jan 2005 12:59:48 -0500 Subject: [PATCH] configure.in: Clean up checks for dirent.d_reclen, ssize_t, llseek, lseek64, sockaddr.sa_len and make the lseek checks immune to compiler warnings, so that they can be compiled with Intel C++ 8.1. Patch from: Matthias Andree --- ChangeLog | 7 ++ configure | 225 ++++++++++++++++++++++++++++++++++++++++++++--------------- configure.in | 71 ++++--------------- 3 files changed, 188 insertions(+), 115 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce35cf9..56395d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-01-19 Matthias Andree + + * configure.in: Clean up checks for dirent.d_reclen, ssize_t, + llseek, lseek64, sockaddr.sa_len and make the lseek checks + immune to compiler warnings, so that they can be compiled + with Intel C++ 8.1. + 2005-01-18 Theodore Ts'o * configure.in: Make configure.in script check for prerequisite diff --git a/configure b/configure index f6255df..1e786e6 100644 --- a/configure +++ b/configure @@ -11216,9 +11216,9 @@ fi done -echo "$as_me:$LINENO: checking whether d_reclen declared in dirent" >&5 -echo $ECHO_N "checking whether d_reclen declared in dirent... $ECHO_C" >&6 -if test "${e2fsprogs_cv_have_d_reclen_dirent+set}" = set; then +echo "$as_me:$LINENO: checking for struct dirent.d_reclen" >&5 +echo $ECHO_N "checking for struct dirent.d_reclen... $ECHO_C" >&6 +if test "${ac_cv_member_struct_dirent_d_reclen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11228,10 +11228,13 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include + int main () { -struct dirent de; de.d_reclen = 0; +static struct dirent ac_aggr; +if (ac_aggr.d_reclen) +return 0; ; return 0; } @@ -11257,27 +11260,73 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - e2fsprogs_cv_have_d_reclen_dirent=yes + ac_cv_member_struct_dirent_d_reclen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -e2fsprogs_cv_have_d_reclen_dirent=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static struct dirent ac_aggr; +if (sizeof ac_aggr.d_reclen) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_dirent_d_reclen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_dirent_d_reclen=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$as_me:$LINENO: result: $e2fsprogs_cv_have_d_reclen_dirent" >&5 -echo "${ECHO_T}$e2fsprogs_cv_have_d_reclen_dirent" >&6 -if test "$e2fsprogs_cv_have_d_reclen_dirent" = yes; then - cat >>confdefs.h <<\_ACEOF +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_dirent_d_reclen" >&5 +echo "${ECHO_T}$ac_cv_member_struct_dirent_d_reclen" >&6 +if test $ac_cv_member_struct_dirent_d_reclen = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_RECLEN_DIRENT 1 _ACEOF fi -echo "$as_me:$LINENO: checking whether ssize_t declared" >&5 -echo $ECHO_N "checking whether ssize_t declared... $ECHO_C" >&6 -if test "${e2fsprogs_cv_have_ssize_t+set}" = set; then + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11287,10 +11336,14 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include + int main () { -ssize_t a = 0; +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; ; return 0; } @@ -11316,27 +11369,27 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - e2fsprogs_cv_have_ssize_t=yes + ac_cv_type_ssize_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -e2fsprogs_cv_have_ssize_t=no +ac_cv_type_ssize_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$as_me:$LINENO: result: $e2fsprogs_cv_have_ssize_t" >&5 -echo "${ECHO_T}$e2fsprogs_cv_have_ssize_t" >&6 -if test "$e2fsprogs_cv_have_ssize_t" = yes; then - cat >>confdefs.h <<\_ACEOF +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_TYPE_SSIZE_T 1 _ACEOF fi -echo "$as_me:$LINENO: checking whether llseek declared in unistd.h" >&5 -echo $ECHO_N "checking whether llseek declared in unistd.h... $ECHO_C" >&6 -if test "${e2fsprogs_cv_have_llseek_prototype+set}" = set; then + +echo "$as_me:$LINENO: checking whether llseek is declared" >&5 +echo $ECHO_N "checking whether llseek is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_llseek+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11346,10 +11399,14 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include + int main () { -extern int llseek(int); +#ifndef llseek + char *p = (char *) llseek; +#endif + ; return 0; } @@ -11375,27 +11432,27 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - e2fsprogs_cv_have_llseek_prototype=no + ac_cv_have_decl_llseek=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -e2fsprogs_cv_have_llseek_prototype=yes +ac_cv_have_decl_llseek=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$as_me:$LINENO: result: $e2fsprogs_cv_have_llseek_prototype" >&5 -echo "${ECHO_T}$e2fsprogs_cv_have_llseek_prototype" >&6 -if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then - cat >>confdefs.h <<\_ACEOF +echo "$as_me:$LINENO: result: $ac_cv_have_decl_llseek" >&5 +echo "${ECHO_T}$ac_cv_have_decl_llseek" >&6 +if test $ac_cv_have_decl_llseek = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_LLSEEK_PROTOTYPE 1 _ACEOF fi -echo "$as_me:$LINENO: checking whether lseek64 declared in unistd.h" >&5 -echo $ECHO_N "checking whether lseek64 declared in unistd.h... $ECHO_C" >&6 -if test "${e2fsprogs_cv_have_lseek64_prototype+set}" = set; then + +echo "$as_me:$LINENO: checking whether lseek64 is declared" >&5 +echo $ECHO_N "checking whether lseek64 is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_lseek64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -11405,12 +11462,16 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE -#include + #define _LARGEFILE64_SOURCE + #include + int main () { -extern int lseek64(int); +#ifndef lseek64 + char *p = (char *) lseek64; +#endif + ; return 0; } @@ -11436,24 +11497,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - e2fsprogs_cv_have_lseek64_prototype=no + ac_cv_have_decl_lseek64=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -e2fsprogs_cv_have_lseek64_prototype=yes +ac_cv_have_decl_lseek64=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$as_me:$LINENO: result: $e2fsprogs_cv_have_lseek64_prototype" >&5 -echo "${ECHO_T}$e2fsprogs_cv_have_lseek64_prototype" >&6 -if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then - cat >>confdefs.h <<\_ACEOF +echo "$as_me:$LINENO: result: $ac_cv_have_decl_lseek64" >&5 +echo "${ECHO_T}$ac_cv_have_decl_lseek64" >&6 +if test $ac_cv_have_decl_lseek64 = yes; then + cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK64_PROTOTYPE 1 _ACEOF fi + if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then # if cross-compiling, with no cached values, just assume something common. ac_cv_sizeof_short=2 @@ -13649,9 +13710,9 @@ _ACEOF fi fi -echo "$as_me:$LINENO: checking whether struct sockaddr contains sa_len" >&5 -echo $ECHO_N "checking whether struct sockaddr contains sa_len... $ECHO_C" >&6 -if test "${e2fsprogs_cv_sockaddr_sa_len+set}" = set; then +echo "$as_me:$LINENO: checking for struct sockaddr.sa_len" >&5 +echo $ECHO_N "checking for struct sockaddr.sa_len... $ECHO_C" >&6 +if test "${ac_cv_member_struct_sockaddr_sa_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13661,13 +13722,14 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include + #include int main () { -struct sockaddr sa; -sa.sa_len; +static struct sockaddr ac_aggr; +if (ac_aggr.sa_len) +return 0; ; return 0; } @@ -13693,19 +13755,65 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - e2fsprogs_cv_sockaddr_sa_len=yes + ac_cv_member_struct_sockaddr_sa_len=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -e2fsprogs_cv_sockaddr_sa_len=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + +int +main () +{ +static struct sockaddr ac_aggr; +if (sizeof ac_aggr.sa_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_sa_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_sockaddr_sa_len=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -echo "$as_me:$LINENO: result: $e2fsprogs_cv_sockaddr_sa_len" >&5 -echo "${ECHO_T}$e2fsprogs_cv_sockaddr_sa_len" >&6 -if test $e2fsprogs_cv_sockaddr_sa_len = yes; then +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_sa_len" >&5 +echo "${ECHO_T}$ac_cv_member_struct_sockaddr_sa_len" >&6 +if test $ac_cv_member_struct_sockaddr_sa_len = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_SA_LEN 1 @@ -13731,6 +13839,7 @@ fi + for ac_func in chflags getrusage llseek lseek64 open64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen strptime sysconf pathconf posix_memalign memalign valloc do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` diff --git a/configure.in b/configure.in index 5055ba3..bbc5076 100644 --- a/configure.in +++ b/configure.in @@ -560,44 +560,17 @@ AC_CHECK_HEADERS(net/if.h,,, AC_FUNC_VPRINTF dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen dnl is not decleared. -AC_MSG_CHECKING(whether d_reclen declared in dirent) -AC_CACHE_VAL(e2fsprogs_cv_have_d_reclen_dirent, - AC_TRY_COMPILE( -[#include ], [struct dirent de; de.d_reclen = 0; ], - [e2fsprogs_cv_have_d_reclen_dirent=yes], - [e2fsprogs_cv_have_d_reclen_dirent=no])) -AC_MSG_RESULT($e2fsprogs_cv_have_d_reclen_dirent) -if test "$e2fsprogs_cv_have_d_reclen_dirent" = yes; then - AC_DEFINE(HAVE_RECLEN_DIRENT) -fi +AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT)],, + [#include ]) dnl Check to see if ssize_t was decleared -AC_MSG_CHECKING(whether ssize_t declared) -AC_CACHE_VAL(e2fsprogs_cv_have_ssize_t, - AC_TRY_COMPILE( -[#include ], [ssize_t a = 0; ], - [e2fsprogs_cv_have_ssize_t=yes], - [e2fsprogs_cv_have_ssize_t=no])) -AC_MSG_RESULT($e2fsprogs_cv_have_ssize_t) -if test "$e2fsprogs_cv_have_ssize_t" = yes; then - AC_DEFINE(HAVE_TYPE_SSIZE_T) -fi +AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T)],, + [#include ]) dnl dnl Check to see if llseek() is declared in unistd.h. On some libc's dnl it is, and on others it isn't..... Thank you glibc developers.... dnl -dnl Warning! Use of --enable-gcc-wall may throw off this test. -dnl -dnl -AC_MSG_CHECKING(whether llseek declared in unistd.h) -AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype, - AC_TRY_COMPILE( -[#include ], [extern int llseek(int);], - [e2fsprogs_cv_have_llseek_prototype=no], - [e2fsprogs_cv_have_llseek_prototype=yes])) -AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype) -if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then - AC_DEFINE(HAVE_LLSEEK_PROTOTYPE) -fi +AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],, + [#include ]) dnl dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files dnl are so convoluted that I can't tell whether it will always be defined, @@ -607,18 +580,10 @@ dnl dnl Warning! Use of --enable-gcc-wall may throw off this test. dnl dnl -AC_MSG_CHECKING(whether lseek64 declared in unistd.h) -AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype, - AC_TRY_COMPILE( -[#define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE -#include ], [extern int lseek64(int);], - [e2fsprogs_cv_have_lseek64_prototype=no], - [e2fsprogs_cv_have_lseek64_prototype=yes])) -AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype) -if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then - AC_DEFINE(HAVE_LSEEK64_PROTOTYPE) -fi +AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],, + [#define _LARGEFILE_SOURCE + #define _LARGEFILE64_SOURCE + #include ]) dnl dnl Word sizes... dnl @@ -674,18 +639,10 @@ fi dnl dnl Check for the presence of SA_LEN dnl -AC_MSG_CHECKING(whether struct sockaddr contains sa_len) -AC_CACHE_VAL(e2fsprogs_cv_sockaddr_sa_len, -[AC_TRY_COMPILE([#include -#include -], -[struct sockaddr sa; -sa.sa_len;], -e2fsprogs_cv_sockaddr_sa_len=yes,e2fsprogs_cv_sockaddr_sa_len=no)]) -AC_MSG_RESULT([$]e2fsprogs_cv_sockaddr_sa_len) -if test $e2fsprogs_cv_sockaddr_sa_len = yes; then - AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]) -fi +AC_CHECK_MEMBER(struct sockaddr.sa_len, + AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]),, + [#include + #include ]) dnl AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen strptime sysconf pathconf posix_memalign memalign valloc) dnl -- 1.8.3.1