This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH to fix libiberty configure mysteries


Daniel Jacobowitz <drow@false.org> writes:

| On Sun, Apr 10, 2005 at 05:52:01PM +0200, Gabriel Dos Reis wrote:
| > Daniel Jacobowitz <drow@false.org> writes:
| > 
| > | On Sun, Apr 10, 2005 at 05:02:36PM +0200, Gabriel Dos Reis wrote:
| > | > 
| > | > Hi,
| > | > 
| > | > The following is from libibtery.h
| > | > 
| > | >    /* HAVE_DECL_* is a three-state macro: undefined, 0 or 1.  If it is
| > | >       undefined, we haven't run the autoconf check so provide the
| > | >       declaration without arguments.  If it is 0, we checked and failed
| > | >       to find the declaration so provide a fully prototyped one.  If it
| > | >       is 1, we found it so don't provide any declaration at all.  */
| > | > 
| > | > However, that appears to be incorrect because what configure output in
| > | > config.h is not HAVE_DECL_XXX, but HAVE_XXX. Therefore, it appears
| > | > that libiberty would be misdetecting declarations -- it thinks
| > | > something is  missing, whereas in fact it is not.
| > | > 
| > | > Am I missing something here?
| > | 
| > | Try adding an AC_CHECK_DECLS call for basename.  That will define
| > | HAVE_DECL_BASENAME.
| > 
| > Thanks.  I tried it, but I did not have much success -- configure is
| > outputting HAVE_BASENAME instead of HAVE_DECL_BASENAME.
| 
| You should have both; did you rerun autoheader?  AC_CHECK_FUNCS will
| genereate HAVE_BASENAME.


Daniel --

   As it turned out, your advice was completely operational.  Thanks!
Here is a patch that survided bootstrap and regtest.  This patch makes
configure generate appropriate #defines for basename, ffs, asprintf
and vasprintf.

DJ, Ian --
  OK to commit?

-- Gaby

Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libiberty/ChangeLog,v
retrieving revision 1.565
diff -p -r1.565 ChangeLog
*** ChangeLog	11 Apr 2005 17:49:46 -0000	1.565
--- ChangeLog	12 Apr 2005 11:42:15 -0000
***************
*** 1,3 ****
--- 1,10 ----
+ 2005-04-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+ 
+ 	* configure.ac: Check declarations for basename, ffs, asprintf,
+ 	vasprintf.
+ 	* configure: Regenerate.
+ 	* config.in: Likewise.
+ 
  2005-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
  
  	* Makefile.in (CFILES): Add fopen_unlocked.c.
Index: config.in
===================================================================
RCS file: /cvs/gcc/gcc/libiberty/config.in,v
retrieving revision 1.39
diff -p -r1.39 config.in
*** config.in	11 Apr 2005 17:49:47 -0000	1.39
--- config.in	12 Apr 2005 11:42:15 -0000
***************
*** 40,45 ****
--- 40,60 ----
  /* Define to 1 if you have the `clock' function. */
  #undef HAVE_CLOCK
  
+ /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
+    don't. */
+ #undef HAVE_DECL_ASPRINTF
+ 
+ /* Define to 1 if you have the declaration of `basename', and to 0 if you
+    don't. */
+ #undef HAVE_DECL_BASENAME
+ 
+ /* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
+ #undef HAVE_DECL_FFS
+ 
+ /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
+    don't. */
+ #undef HAVE_DECL_VASPRINTF
+ 
  /* Define to 1 if you have the <fcntl.h> header file. */
  #undef HAVE_FCNTL_H
  
Index: configure
===================================================================
RCS file: /cvs/gcc/gcc/libiberty/configure,v
retrieving revision 1.92
diff -p -r1.92 configure
*** configure	11 Apr 2005 17:49:47 -0000	1.92
--- configure	12 Apr 2005 11:42:16 -0000
*************** _ACEOF
*** 5000,5005 ****
--- 5000,5287 ----
  fi
  done
  
+   echo "$as_me:$LINENO: checking whether basename is declared" >&5
+ echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6
+ if test "${ac_cv_have_decl_basename+set}" = set; then
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ $ac_includes_default
+ int
+ main ()
+ {
+ #ifndef basename
+   char *p = (char *) basename;
+ #endif
+ 
+   ;
+   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_have_decl_basename=yes
+ else
+   echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ ac_cv_have_decl_basename=no
+ fi
+ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5
+ echo "${ECHO_T}$ac_cv_have_decl_basename" >&6
+ if test $ac_cv_have_decl_basename = yes; then
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_BASENAME 1
+ _ACEOF
+ 
+ 
+ else
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_BASENAME 0
+ _ACEOF
+ 
+ 
+ fi
+ echo "$as_me:$LINENO: checking whether ffs is declared" >&5
+ echo $ECHO_N "checking whether ffs is declared... $ECHO_C" >&6
+ if test "${ac_cv_have_decl_ffs+set}" = set; then
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ $ac_includes_default
+ int
+ main ()
+ {
+ #ifndef ffs
+   char *p = (char *) ffs;
+ #endif
+ 
+   ;
+   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_have_decl_ffs=yes
+ else
+   echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ ac_cv_have_decl_ffs=no
+ fi
+ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ffs" >&5
+ echo "${ECHO_T}$ac_cv_have_decl_ffs" >&6
+ if test $ac_cv_have_decl_ffs = yes; then
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_FFS 1
+ _ACEOF
+ 
+ 
+ else
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_FFS 0
+ _ACEOF
+ 
+ 
+ fi
+ echo "$as_me:$LINENO: checking whether asprintf is declared" >&5
+ echo $ECHO_N "checking whether asprintf is declared... $ECHO_C" >&6
+ if test "${ac_cv_have_decl_asprintf+set}" = set; then
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ $ac_includes_default
+ int
+ main ()
+ {
+ #ifndef asprintf
+   char *p = (char *) asprintf;
+ #endif
+ 
+   ;
+   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_have_decl_asprintf=yes
+ else
+   echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ ac_cv_have_decl_asprintf=no
+ fi
+ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ echo "$as_me:$LINENO: result: $ac_cv_have_decl_asprintf" >&5
+ echo "${ECHO_T}$ac_cv_have_decl_asprintf" >&6
+ if test $ac_cv_have_decl_asprintf = yes; then
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_ASPRINTF 1
+ _ACEOF
+ 
+ 
+ else
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_ASPRINTF 0
+ _ACEOF
+ 
+ 
+ fi
+ echo "$as_me:$LINENO: checking whether vasprintf is declared" >&5
+ echo $ECHO_N "checking whether vasprintf is declared... $ECHO_C" >&6
+ if test "${ac_cv_have_decl_vasprintf+set}" = set; then
+   echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ $ac_includes_default
+ int
+ main ()
+ {
+ #ifndef vasprintf
+   char *p = (char *) vasprintf;
+ #endif
+ 
+   ;
+   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_have_decl_vasprintf=yes
+ else
+   echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ ac_cv_have_decl_vasprintf=no
+ fi
+ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vasprintf" >&5
+ echo "${ECHO_T}$ac_cv_have_decl_vasprintf" >&6
+ if test $ac_cv_have_decl_vasprintf = yes; then
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_VASPRINTF 1
+ _ACEOF
+ 
+ 
+ else
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_VASPRINTF 0
+ _ACEOF
+ 
+ 
+ fi
+ 
+ 
  
  cat >>confdefs.h <<\_ACEOF
  #define HAVE_SYS_ERRLIST 1
Index: configure.ac
===================================================================
RCS file: /cvs/gcc/gcc/libiberty/configure.ac,v
retrieving revision 1.20
diff -p -r1.20 configure.ac
*** configure.ac	11 Apr 2005 17:49:47 -0000	1.20
--- configure.ac	12 Apr 2005 11:42:16 -0000
*************** if test "x" = "y"; then
*** 282,287 ****
--- 282,288 ----
    sysconf times sbrk gettimeofday ffs snprintf vsnprintf \
    pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl wait3 wait4 \
    realpath canonicalize_file_name __fsetlocking)
+   AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf])
    AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
    AC_DEFINE(HAVE_SYS_NERR,    1, [Define if you have the sys_nerr variable.])
    AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]