From 58f14deb9ba2f88e6bbed20d2f15feac3a699cd5 Mon Sep 17 00:00:00 2001 From: kyukhin Date: Tue, 12 Aug 2014 11:06:44 +0000 Subject: [PATCH] libcilkrts/ * configure.ac: Move pthread affinity test to the place where '-pthread' passed to CFLAGS. Otherwise the test always fails. (XCFLAGS): New variable for correctly passing '-pthread'. (XLDFLAGS): New variable for passing the correct pthread lib. * configure: Regenerate. * Makefile.am (AM_CFLAGS): Add $XCFLAGS. (AM_LDFLAGS): Add $XLDFLAGS. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213854 138bc75d-0d04-0410-961f-82ee72b054a4 --- libcilkrts/ChangeLog | 12 +++++++ libcilkrts/Makefile.am | 7 ++-- libcilkrts/Makefile.in | 11 +++--- libcilkrts/configure | 91 +++++++++++++++++++++++++++++++------------------ libcilkrts/configure.ac | 57 +++++++++++++++++++++---------- 5 files changed, 118 insertions(+), 60 deletions(-) diff --git a/libcilkrts/ChangeLog b/libcilkrts/ChangeLog index 3881c82..ab10a0b 100644 --- a/libcilkrts/ChangeLog +++ b/libcilkrts/ChangeLog @@ -1,3 +1,15 @@ +2014-08-01 Alexander Ivchenko + + * configure.ac: Move pthread affinity test to the place where + '-pthread' passed to CFLAGS. Otherwise the test always fails. + (XCFLAGS): New variable for correctly passing + '-pthread'. + (XLDFLAGS): New variable for passing the correct pthread lib. + * configure: Regenerate. + * Makefile.am (AM_CFLAGS): Add $XCFLAGS. + (AM_LDFLAGS): Add $XLDFLAGS. + * Makefile.in: Regenerate. + 2014-05-21 John Marino * runtime/os-unix.c (__DragonFly__): New target. diff --git a/libcilkrts/Makefile.am b/libcilkrts/Makefile.am index 84551c8..70538a2 100644 --- a/libcilkrts/Makefile.am +++ b/libcilkrts/Makefile.am @@ -43,9 +43,9 @@ GENERAL_FLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/runtime -I$(top_srcdir)/ # Enable Intel Cilk Plus extension GENERAL_FLAGS += -fcilkplus -AM_CFLAGS = $(GENERAL_FLAGS) -std=c99 +AM_CFLAGS = $(XCFLAGS) $(GENERAL_FLAGS) -std=c99 AM_CPPFLAGS = $(GENERAL_FLAGS) -AM_LDFLAGS = -lpthread +AM_LDFLAGS = $(XLDFLAGS) # May be used by toolexeclibdir. gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) @@ -92,7 +92,8 @@ include include/internal/rev.mk #libcilkrts_la_LDFLAGS = -rpath '$(libdir)' libcilkrts_la_LDFLAGS = -version-info 5:0:0 -libcilkrts_la_LDFLAGS += -lpthread @lt_cv_dlopen_libs@ +libcilkrts_la_LDFLAGS += @lt_cv_dlopen_libs@ +libcilkrts_la_LDFLAGS += $(AM_LDFLAGS) # If we're building on Linux, use the Linux version script if LINUX_LINKER_SCRIPT diff --git a/libcilkrts/Makefile.in b/libcilkrts/Makefile.in index 1ee4d82..e1a54b5 100644 --- a/libcilkrts/Makefile.in +++ b/libcilkrts/Makefile.in @@ -270,6 +270,8 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +XCFLAGS = @XCFLAGS@ +XLDFLAGS = @XLDFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -344,9 +346,9 @@ ACLOCAL_AMFLAGS = -I .. -I ../config GENERAL_FLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/runtime \ -I$(top_srcdir)/runtime/config/$(config_dir) \ -DIN_CILK_RUNTIME=1 -fcilkplus -AM_CFLAGS = $(GENERAL_FLAGS) -std=c99 +AM_CFLAGS = $(XCFLAGS) $(GENERAL_FLAGS) -std=c99 AM_CPPFLAGS = $(GENERAL_FLAGS) -AM_LDFLAGS = -lpthread +AM_LDFLAGS = $(XLDFLAGS) # May be used by toolexeclibdir. gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) @@ -393,9 +395,8 @@ CILK_REVISION = 3902 #libcilkrts_la_LDFLAGS = -rpath '$(libdir)' # Hack for Cygwin -libcilkrts_la_LDFLAGS = -version-info 5:0:0 -lpthread \ - @lt_cv_dlopen_libs@ $(am__append_1) $(am__append_2) \ - -no-undefined +libcilkrts_la_LDFLAGS = -version-info 5:0:0 @lt_cv_dlopen_libs@ \ + $(AM_LDFLAGS) $(am__append_1) $(am__append_2) -no-undefined # C/C++ header files for Cilk. # cilkincludedir = $(includedir)/cilk diff --git a/libcilkrts/configure b/libcilkrts/configure index 0dadbbd..1e8eabd 100644 --- a/libcilkrts/configure +++ b/libcilkrts/configure @@ -605,6 +605,8 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS link_cilkrts +XLDFLAGS +XCFLAGS lt_cv_dlopen_libs toolexeclibdir toolexecdir @@ -11057,7 +11059,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11060 "configure" +#line 11062 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11163,7 +11165,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11166 "configure" +#line 11168 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14421,40 +14423,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Check for pthread_{,attr_}[sg]etaffinity_np. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _GNU_SOURCE - #include -int -main () -{ -cpu_set_t cpuset; - pthread_attr_t attr; - pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); - if (CPU_ISSET (0, &cpuset)) - CPU_SET (1, &cpuset); - else - CPU_ZERO (&cpuset); - pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); - pthread_attr_init (&attr); - pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); - pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HAVE_PTHREAD_AFFINITY_NP 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - # Check to see if -pthread or -lpthread is needed. Prefer the former. # Note that the CILK_SELF_SPEC in gcc.c may force -pthread. # In case the pthread.h system header is not found, this test will fail. +XCFLAGS="" +XLDFLAGS="" CFLAGS="$CFLAGS -pthread" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -14469,7 +14442,7 @@ pthread_t t; pthread_create(&t,NULL,g,NULL); } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - + XCFLAGS=" -Wc,-pthread" else CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14495,6 +14468,56 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext +# Check for pthread_{,attr_}[sg]etaffinity_np. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _GNU_SOURCE + #include +int +main () +{ +cpu_set_t cpuset; + pthread_attr_t attr; + pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + if (CPU_ISSET (0, &cpuset)) + CPU_SET (1, &cpuset); + else + CPU_ZERO (&cpuset); + pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + pthread_attr_init (&attr); + pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); + pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_PTHREAD_AFFINITY_NP 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +# Every c++ lib is linking by default with -nostdlib, which leads to the +# fact, that proper pthread library will not be given at link time. We have +# to hard-code that. +case "${target}" in + + *android*) + XLDFLAGS="$XLDFLAGS -lc" + ;; + *) + XLDFLAGS="$XLDFLAGS -lpthread" + ;; + +esac + + + + +CFLAGS="$save_CFLAGS" + if test $enable_shared = yes; then link_cilkrts="-lcilkrts %{static: $LIBS}" else diff --git a/libcilkrts/configure.ac b/libcilkrts/configure.ac index fb21505..cc9a39f 100644 --- a/libcilkrts/configure.ac +++ b/libcilkrts/configure.ac @@ -164,6 +164,27 @@ AC_SUBST(toolexeclibdir) AC_SUBST(lt_cv_dlopen_libs) +# Check to see if -pthread or -lpthread is needed. Prefer the former. +# Note that the CILK_SELF_SPEC in gcc.c may force -pthread. +# In case the pthread.h system header is not found, this test will fail. +XCFLAGS="" +XLDFLAGS="" +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);])], + [XCFLAGS=" -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 libcilkrts])])]) + # Check for pthread_{,attr_}[sg]etaffinity_np. AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -183,24 +204,24 @@ AC_LINK_IFELSE( AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1, [ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.])) -# Check to see if -pthread or -lpthread is needed. Prefer the former. -# Note that the CILK_SELF_SPEC in gcc.c may force -pthread. -# 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);])], - [], - [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 libcilkrts])])]) +# Every c++ lib is linking by default with -nostdlib, which leads to the +# fact, that proper pthread library will not be given at link time. We have +# to hard-code that. +case "${target}" in + + *android*) + XLDFLAGS="$XLDFLAGS -lc" + ;; + *) + XLDFLAGS="$XLDFLAGS -lpthread" + ;; + +esac + +AC_SUBST(XCFLAGS) +AC_SUBST(XLDFLAGS) + +CFLAGS="$save_CFLAGS" if test $enable_shared = yes; then link_cilkrts="-lcilkrts %{static: $LIBS}" -- 2.7.4