From cd93945d0345971b75bbc3f4a0d6d8d6a474f644 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 13 Mar 2015 10:57:07 +0000 Subject: [PATCH] libgomp: Add RTEMS support libgomp/ChangeLog * configure.tgt (*-*-rtems*): Use local-exec TLS model. * configure.ac (*-*-rtems*): Assume Pthread is supported. (pthread.h): Check for this header file. * configure: Regenerate. From-SVN: r221415 --- libgomp/ChangeLog | 7 +++++++ libgomp/configure | 22 ++++++++++++++-------- libgomp/configure.ac | 42 ++++++++++++++++++++++++------------------ libgomp/configure.tgt | 4 ++++ 4 files changed, 49 insertions(+), 26 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 233342817bd..6237db56e4b 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,10 @@ +2015-03-13 Sebastian Huber + + * configure.tgt (*-*-rtems*): Use local-exec TLS model. + * configure.ac (*-*-rtems*): Assume Pthread is supported. + (pthread.h): Check for this header file. + * configure: Regenerate. + 2015-02-25 Tom de Vries * testsuite/libgomp.oacc-c-c++-common/reduction-1.c (DO_PRAGMA) diff --git a/libgomp/configure b/libgomp/configure index 081870728e7..e39787c94c6 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -14611,7 +14611,7 @@ $as_echo "#define STRING_WITH_STRINGS 1" >>confdefs.h fi -for ac_header in unistd.h semaphore.h sys/loadavg.h sys/time.h sys/time.h +for ac_header in pthread.h unistd.h semaphore.h sys/loadavg.h sys/time.h sys/time.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -15033,14 +15033,19 @@ ac_config_commands="$ac_config_commands gstdint.h" -# Check to see if -pthread or -lpthread is needed. Prefer the former. -# In case the pthread.h system header is not found, this test will fail. XPCFLAGS="" -CFLAGS="$CFLAGS -pthread" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +case "$host" in + *-*-rtems*) + # RTEMS supports Pthreads, but the library is not available at GCC build time. + ;; + *) + # Check to see if -pthread or -lpthread is needed. Prefer the former. + # In case the pthread.h system header is not found, this test will fail. + CFLAGS="$CFLAGS -pthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - void *g(void *d) { return NULL; } + void *g(void *d) { return NULL; } int main () { @@ -15053,10 +15058,10 @@ if ac_fn_c_try_link "$LINENO"; then : XPCFLAGS=" -Wc,-pthread" else CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - void *g(void *d) { return NULL; } + void *g(void *d) { return NULL; } int main () { @@ -15075,6 +15080,7 @@ rm -f core conftest.err conftest.$ac_objext \ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext +esac # Plugins for offload execution, configure.ac fragment. -*- mode: autoconf -*- # diff --git a/libgomp/configure.ac b/libgomp/configure.ac index 4687b01d5cc..51e646d4789 100644 --- a/libgomp/configure.ac +++ b/libgomp/configure.ac @@ -170,28 +170,34 @@ AC_SUBST(libtool_VERSION) AC_STDC_HEADERS AC_HEADER_TIME ACX_HEADER_STRING -AC_CHECK_HEADERS(unistd.h semaphore.h sys/loadavg.h sys/time.h sys/time.h) +AC_CHECK_HEADERS(pthread.h unistd.h semaphore.h sys/loadavg.h sys/time.h sys/time.h) GCC_HEADER_STDINT(gstdint.h) -# Check to see if -pthread or -lpthread is needed. Prefer the former. -# In case the pthread.h system header is not found, this test will fail. XPCFLAGS="" -CFLAGS="$CFLAGS -pthread" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [#include - void *g(void *d) { return NULL; }], - [pthread_t t; pthread_create(&t,NULL,g,NULL);])], - [XPCFLAGS=" -Wc,-pthread"], - [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [#include - void *g(void *d) { return NULL; }], - [pthread_t t; pthread_create(&t,NULL,g,NULL);])], - [], - [AC_MSG_ERROR([Pthreads are required to build libgomp])])]) +case "$host" in + *-*-rtems*) + # RTEMS supports Pthreads, but the library is not available at GCC build time. + ;; + *) + # Check to see if -pthread or -lpthread is needed. Prefer the former. + # In case the pthread.h system header is not found, this test will fail. + CFLAGS="$CFLAGS -pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + void *g(void *d) { return NULL; }], + [pthread_t t; pthread_create(&t,NULL,g,NULL);])], + [XPCFLAGS=" -Wc,-pthread"], + [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + void *g(void *d) { return NULL; }], + [pthread_t t; pthread_create(&t,NULL,g,NULL);])], + [], + [AC_MSG_ERROR([Pthreads are required to build libgomp])])]) +esac m4_include([plugin/configfrag.ac]) diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt index ad98de13228..2970f6f7b82 100644 --- a/libgomp/configure.tgt +++ b/libgomp/configure.tgt @@ -20,6 +20,10 @@ if test $gcc_cv_have_tls = yes ; then *-*-linux* | *-*-gnu*) XCFLAGS="${XCFLAGS} -ftls-model=initial-exec" ;; + + *-*-rtems*) + XCFLAGS="${XCFLAGS} -ftls-model=local-exec" + ;; esac fi