From ad201afe5c348de265b92bae6688034102a4386b Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 3 May 2021 08:12:11 +0200 Subject: [PATCH] Add pthread-in-libc, libpthread-routines-var, librt-routines-var These make variables can be used to add routines to different libraries for the Hurd and Linux builds. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell --- Makeconfig | 11 +++++++++++ config.h.in | 3 +++ config.make.in | 1 + configure | 8 ++++++++ configure.ac | 6 ++++++ rt/Makefile | 2 ++ sysdeps/mach/hurd/configure | 3 +++ sysdeps/mach/hurd/configure.ac | 3 +++ sysdeps/pthread/Makefile | 3 +++ 9 files changed, 40 insertions(+) diff --git a/Makeconfig b/Makeconfig index 01f8638c2e1..1d5e45926ca 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1328,6 +1328,17 @@ endif sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\ $(firstword $(subst :, ,$p)))) +# $(libpthread-routines-var) and $(librt-routines-var) are the make +# variable to which pthread routines need to be added to land in the +# right library. +ifeq ($(pthread-in-libc),yes) +libpthread-routines-var = routines +librt-routines-var = routines +else +libpthread-routines-var = libpthread-routines +librt-routines-var = libpthread-routines +endif + # A sysdeps Makeconfig fragment may set libc-reentrant to yes. ifeq (yes,$(libc-reentrant)) defines += -D_LIBC_REENTRANT diff --git a/config.h.in b/config.h.in index ea56e5b4a44..99036b887ff 100644 --- a/config.h.in +++ b/config.h.in @@ -200,6 +200,9 @@ multiple symbol versions for one symbol. */ #define SYMVER_NEEDS_ALIAS 0 +/* Define to 1 if libpthread actually resides in libc. */ +#define PTHREAD_IN_LIBC 0 + /* */ diff --git a/config.make.in b/config.make.in index 7f47f0caa41..cbf59114b0b 100644 --- a/config.make.in +++ b/config.make.in @@ -103,6 +103,7 @@ use-nscd = @use_nscd@ build-hardcoded-path-in-tests= @hardcoded_path_in_tests@ build-pt-chown = @build_pt_chown@ have-tunables = @have_tunables@ +pthread-in-libc = @pthread_in_libc@ # Build tools. CC = @CC@ diff --git a/configure b/configure index e64b7f8efed..4cc462613c9 100755 --- a/configure +++ b/configure @@ -588,6 +588,7 @@ ac_unique_file="include/features.h" enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS +pthread_in_libc RELEASE VERSION mach_interface_list @@ -6780,6 +6781,7 @@ libc_cv_sysconfdir=$sysconfdir libc_cv_localstatedir=$localstatedir libc_cv_gcc_unwind_find_fde=no libc_cv_idn=no +pthread_in_libc=yes # Iterate over all the sysdep directories we will use, running their # configure fragments. @@ -6939,6 +6941,12 @@ RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` +if test "$pthread_in_libc" = yes; then + $as_echo "#define PTHREAD_IN_LIBC 1" >>confdefs.h + +fi + + ac_config_files="$ac_config_files config.make Makefile" ac_config_commands="$ac_config_commands default" diff --git a/configure.ac b/configure.ac index cc47e56e823..64be29d8777 100644 --- a/configure.ac +++ b/configure.ac @@ -1777,6 +1777,7 @@ libc_cv_sysconfdir=$sysconfdir libc_cv_localstatedir=$localstatedir libc_cv_gcc_unwind_find_fde=no libc_cv_idn=no +pthread_in_libc=yes # Iterate over all the sysdep directories we will use, running their # configure fragments. @@ -1903,6 +1904,11 @@ RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` AC_SUBST(VERSION) AC_SUBST(RELEASE) +if test "$pthread_in_libc" = yes; then + AC_DEFINE(PTHREAD_IN_LIBC) +fi +AC_SUBST(pthread_in_libc) + AC_CONFIG_FILES([config.make Makefile]) AC_CONFIG_COMMANDS([default],[[ case $CONFIG_FILES in *config.make*) diff --git a/rt/Makefile b/rt/Makefile index 7b374f20733..c1a0fdeb46e 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -39,6 +39,8 @@ librt-routines = $(aio-routines) \ $(timer-routines) \ $(shm-routines) $(mq-routines) +$(librt-routines-var) = \ + tests := tst-shm tst-timer tst-timer2 \ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \ tst-aio7 tst-aio8 tst-aio9 tst-aio10 \ diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure index 537f2350773..4876e1f1760 100644 --- a/sysdeps/mach/hurd/configure +++ b/sysdeps/mach/hurd/configure @@ -45,3 +45,6 @@ fi if test -n "$sysheaders"; then CPPFLAGS=$OLD_CPPFLAGS fi + +# Hurd has libpthread as a separate library. +pthread_in_libc=no diff --git a/sysdeps/mach/hurd/configure.ac b/sysdeps/mach/hurd/configure.ac index eab0e5b6c1b..9a049b1d86d 100644 --- a/sysdeps/mach/hurd/configure.ac +++ b/sysdeps/mach/hurd/configure.ac @@ -26,3 +26,6 @@ fi if test -n "$sysheaders"; then CPPFLAGS=$OLD_CPPFLAGS fi + +# Hurd has libpthread as a separate library. +pthread_in_libc=no diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile index ed15c1e4336..8133bcda8f1 100644 --- a/sysdeps/pthread/Makefile +++ b/sysdeps/pthread/Makefile @@ -39,6 +39,9 @@ libpthread-routines += thrd_create thrd_detach thrd_exit thrd_join \ cnd_destroy cnd_init cnd_signal cnd_timedwait cnd_wait \ tss_create tss_delete tss_get tss_set +$(libpthread-routines-var) += \ + + tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \ tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \ tst-mtx-recursive tst-tss-basic tst-call-once tst-mtx-timedlock \ -- 2.39.2