From 6a822a740359967372f33491ae59b1e0fa34fd4c Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Mon, 31 Aug 2015 14:02:43 +0000 Subject: [PATCH] re PR fortran/47571 (undefined reference to clock_gettime in Linux build of 02/01/2011) PR libfortran/47571 * acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Reinstate. * configure.ac: Call LIBGFOR_GTHREAD_WEAK again. * config.h.in: Regenerate. * configure: Regenerate. From-SVN: r227347 --- libgfortran/ChangeLog | 8 +++++++ libgfortran/acinclude.m4 | 22 +++++++++++++++++++ libgfortran/config.h.in | 6 ++++++ libgfortran/configure | 46 ++++++++++++++++++++++++++++++++++++++++ libgfortran/configure.ac | 3 +++ 5 files changed, 85 insertions(+) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a6301f1d67d..b3fa7633418 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2015-08-31 Francois-Xavier Coudert + + PR libfortran/47571 + * acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Reinstate. + * configure.ac: Call LIBGFOR_GTHREAD_WEAK again. + * config.h.in: Regenerate. + * configure: Regenerate. + 2015-08-31 Francois-Xavier Coudert PR libfortran/47571 diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4 index fab29e424bf..7280bc37a0b 100644 --- a/libgfortran/acinclude.m4 +++ b/libgfortran/acinclude.m4 @@ -69,6 +69,28 @@ if (foovar > 10) return __sync_add_and_fetch (&foovar, -1);]])], [Define to 1 if the target supports __sync_fetch_and_add]) fi]) +dnl Check for pragma weak. +AC_DEFUN([LIBGFOR_GTHREAD_WEAK], [ + AC_CACHE_CHECK([whether pragma weak works], + libgfor_cv_have_pragma_weak, [ + gfor_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wunknown-pragmas" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +void foo (void); +#pragma weak foo +]], [[if (foo) foo ();]])], + libgfor_cv_have_pragma_weak=yes, libgfor_cv_have_pragma_weak=no)]) + if test $libgfor_cv_have_pragma_weak = yes; then + AC_DEFINE(SUPPORTS_WEAK, 1, + [Define to 1 if the target supports #pragma weak]) + fi + case "$host" in + *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* ) + AC_DEFINE(GTHREAD_USE_WEAK, 0, + [Define to 0 if the target shouldn't use #pragma weak]) + ;; + esac]) + dnl Check whether target effectively supports weakref AC_DEFUN([LIBGFOR_CHECK_WEAKREF], [ AC_CACHE_CHECK([whether the target supports weakref], diff --git a/libgfortran/config.h.in b/libgfortran/config.h.in index cf8237e0f0c..22449e6892b 100644 --- a/libgfortran/config.h.in +++ b/libgfortran/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* Define to 0 if the target shouldn't use #pragma weak */ +#undef GTHREAD_USE_WEAK + /* Define to 1 if you have the `access' function. */ #undef HAVE_ACCESS @@ -871,6 +874,9 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define to 1 if the target supports #pragma weak */ +#undef SUPPORTS_WEAK + /* Define to 1 if the target supports weakref */ #undef SUPPORTS_WEAKREF diff --git a/libgfortran/configure b/libgfortran/configure index 12f6f131e61..f746f6f5d1d 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -25953,6 +25953,52 @@ $as_echo "#define HAVE_SYNC_FETCH_AND_ADD 1" >>confdefs.h fi +# Check out #pragma weak. + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pragma weak works" >&5 +$as_echo_n "checking whether pragma weak works... " >&6; } +if test "${libgfor_cv_have_pragma_weak+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gfor_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wunknown-pragmas" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +void foo (void); +#pragma weak foo + +int +main () +{ +if (foo) foo (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + libgfor_cv_have_pragma_weak=yes +else + libgfor_cv_have_pragma_weak=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_pragma_weak" >&5 +$as_echo "$libgfor_cv_have_pragma_weak" >&6; } + if test $libgfor_cv_have_pragma_weak = yes; then + +$as_echo "#define SUPPORTS_WEAK 1" >>confdefs.h + + fi + case "$host" in + *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* ) + +$as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h + + ;; + esac + # Check out weakref support. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports weakref" >&5 diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac index fd963ff11b8..8f377bb4b50 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac @@ -595,6 +595,9 @@ LIBGFOR_CHECK_ATTRIBUTE_ALIAS # Check out sync builtins support. LIBGFOR_CHECK_SYNC_FETCH_AND_ADD +# Check out #pragma weak. +LIBGFOR_GTHREAD_WEAK + # Check out weakref support. LIBGFOR_CHECK_WEAKREF -- 2.30.2