[01/19] Add pthread-in-libc, libpthread-routines-var, librt-routines-var
Commit Message
These make variables can be used to add routines to different
libraries for the Hurd and Linux builds.
---
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(+)
Comments
On 4/26/21 1:00 PM, Florian Weimer via Libc-alpha wrote:
> These make variables can be used to add routines to different
> libraries for the Hurd and Linux builds.
Tested and reviewed on x86_64 and i686.
LGTM.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
> ---
> 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 01f8638c2e..1d5e45926c 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
OK. Makes sense and refactors this with a level of indirection that avoids
needing to duplicate any more files.
> +
> # 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 ea56e5b4a4..99036b887f 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 7f47f0caa4..cbf59114b0 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 e64b7f8efe..4cc462613c 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 cc47e56e82..64be29d877 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 7b374f2073..c1a0fdeb46 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 537f235077..4876e1f176 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 eab0e5b6c1..9a049b1d86 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 ed15c1e433..8133bcda8f 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 \
>
@@ -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
@@ -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
+
/*
*/
@@ -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@
@@ -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"
@@ -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*)
@@ -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 \
@@ -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
@@ -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
@@ -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 \