summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-31 14:02:43 +0000
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-31 14:02:43 +0000
commit04c14146262ba17dae8b499cf2985283a059a018 (patch)
treec9054c51386948d792f44e8f5e9259a9285492d3 /libgfortran
parent06e4870e3d20bb71848afa16d4e9fac4224fa7ba (diff)
downloadgcc-04c14146262ba17dae8b499cf2985283a059a018.tar.gz
PR libfortran/47571
* acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Reinstate. * configure.ac: Call LIBGFOR_GTHREAD_WEAK again. * config.h.in: Regenerate. * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227347 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/acinclude.m422
-rw-r--r--libgfortran/config.h.in6
-rwxr-xr-xlibgfortran/configure46
-rw-r--r--libgfortran/configure.ac3
5 files changed, 85 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index a6301f1d67d..b3fa7633418 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,6 +1,14 @@
2015-08-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
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 <fxcoudert@gcc.gnu.org>
+
+ PR libfortran/47571
* acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Remove.
(LIBGFOR_CHECK_WEAKREF): New test.
* configure.ac: Call LIBGFOR_CHECK_WEAKREF instead of
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