Use existing makefile variables for dependencies on glibc libraries

Message ID
State Committed

Commit Message

Joseph Myers May 16, 2014, 6:06 p.m. UTC
  glibc's Makeconfig defines some variables such as $(libm) and $(libdl)
for linking with libraries built by glibc, and nptl/Makeconfig
(included by the toplevel Makeconfig) defines others such as

In some places glibc's Makefiles use those variables when linking
against the relevant libraries, but in other places they hardcode the
location of the libraries in the build tree.  This patch cleans up
various places to use the variables that already exist (in the case of
libm, replacing several duplicate definitions of a $(link-libm)
variable in subdirectory Makefiles).  (It's not necessarily exactly
equivalent to what the existing code does - in particular,
$(shared-thread-library) includes libpthread_nonshared, but is
replacing places that just referred to  But I think
that change is desirable on the general principle of linking things as
close as possible to the way in which they would be linked with an
installed library, unless there is a clear reason not to do so.)

To support running tests with an installed copy of glibc without
needing the full build tree from when that copy was built, I think it
will be useful to use such variables more generally and systematically
- every time the rules for building a test refer to some file from the
build tree that's also installed by glibc, use a makefile variable so
that the installed-testing case can point those variables to installed
copies of the files.  This patch just deals with straightforward cases
where such variables already exist.

It's quite possible some uses of $(shared-thread-library) should
actually be a new $(thread-library) variable that's set appropriately
in the --disable-shared case, if those uses would in fact work without
shared libraries.  I didn't change the status quo that those cases
hardcode use of a shared library whether or not it's actually needed
(but other uses such as $(libm) and $(libdl) would now get the static
library if the shared library isn't built, when some previously
hardcoded use of the shared library - if they actually need shared
libraries, the test itself needs an enable-shared conditional anyway).

Tested x86_64.

2014-05-16  Joseph Myers  <>

	* benchtests/Makefile
	($(addprefix $(objpfx)bench-,$(bench-math))): Depend on $(libm),
	not $(common-objpfx)math/
	($(addprefix $(objpfx)bench-,$(bench-pthread))): Depend on
	$(shared-thread-library), not $(common-objpfx)nptl/
	* elf/Makefile ($(objpfx)noload): Depend on $(libdl), not
	($(objpfx)tst-audit8): Depend on $(libm), not
	* malloc/Makefile ($(objpfx) Depend on $(libdl),
	not $(common-objpfx)dlfcn/
	* math/Makefile
	($(addprefix $(objpfx),$(filter-out $(tests-static),$(tests)))):
	Depend on $(libm), not $(objpfx)  Do not condition on
	[$(build-shared) = yes].
	($(objpfx)test-fenv-tls): Depend on $(shared-thread-library), not
	* misc/Makefile ($(objpfx)tst-tsearch): Depend on $(libm), not
	$(common-objpfx)math/$( or
	$(common-objpfx)math/libm.a depending on [$(build-shared) = yes].
	* nptl/Makefile ($(objpfx)tst-unload): Depend on $(libdl), not
	* setjmp/Makefile (link-libm): Remove variable.
	($(objpfx)tst-setjmp-fp): Depend on $(libm), not $(link-libm).
	* stdio-common/Makefile (link-libm): Remove variable.
	($(objpfx)tst-printf-round): Depend on $(libm), not $(link-libm).
	* stdlib/Makefile (link-libm): Remove variable.
	($(objpfx)bug-getcontext): Depend on $(libm), not $(link-libm).
	($(objpfx)tst-strtod-round): Likewise.
	($(objpfx)tst-tininess): Likewise.
	($(objpfx)tst-strtod-underflow): Likewise.
	($(objpfx)tst-strtod6): Likewise.
	($(objpfx)tst-tls-atexit): Depend on $(shared-thread-library) and
	$(libdl), not $(common-objpfx)nptl/ and


Andreas Schwab May 16, 2014, 6:15 p.m. UTC | #1
"Joseph S. Myers" <> writes:

> diff --git a/benchtests/Makefile b/benchtests/Makefile
> index a0954cd..cdbb15e 100644
> --- a/benchtests/Makefile
> +++ b/benchtests/Makefile
> @@ -44,9 +44,9 @@ benchset := $(string-bench-all) $(stdlib-bench)
>  CFLAGS-bench-ffs.c += -fno-builtin
>  CFLAGS-bench-ffsll.c += -fno-builtin
> -$(addprefix $(objpfx)bench-,$(bench-math)): $(common-objpfx)math/
> +$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
>  $(addprefix $(objpfx)bench-,$(bench-pthread)): \
> -	$(common-objpfx)nptl/
> +	$(shared-thread-library)

Please join lines that are no longer overfull.



diff --git a/benchtests/Makefile b/benchtests/Makefile
index a0954cd..cdbb15e 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -44,9 +44,9 @@  benchset := $(string-bench-all) $(stdlib-bench)
 CFLAGS-bench-ffs.c += -fno-builtin
 CFLAGS-bench-ffsll.c += -fno-builtin
-$(addprefix $(objpfx)bench-,$(bench-math)): $(common-objpfx)math/
+$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
 $(addprefix $(objpfx)bench-,$(bench-pthread)): \
-	$(common-objpfx)nptl/
+	$(shared-thread-library)
diff --git a/elf/Makefile b/elf/Makefile
index 084abca..4dcc78a 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -653,7 +653,7 @@  $(objpfx)vismain: $(addprefix $(objpfx),
 $(objpfx)vismain.out: $(addprefix $(objpfx),
 vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),
-$(objpfx)noload: $(objpfx) $(common-objpfx)dlfcn/
+$(objpfx)noload: $(objpfx) $(libdl)
 LDFLAGS-noload = -rdynamic $(no-as-needed)
 $(objpfx)noload.out: $(objpfx)
@@ -1011,7 +1011,7 @@  $(objpfx)tst-audit9: $(libdl)
 $(objpfx)tst-audit9.out: $(objpfx) $(objpfx)
 tst-audit9-ENV = LD_AUDIT=$(objpfx)
-$(objpfx)tst-audit8: $(common-objpfx)math/
+$(objpfx)tst-audit8: $(libm)
 $(objpfx)tst-audit8.out: $(objpfx)
 tst-audit8-ENV = LD_AUDIT=$(objpfx)
diff --git a/malloc/Makefile b/malloc/Makefile
index d962331..7a716f9 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -148,7 +148,7 @@  $(objpfx)memusage:
 # The implementation uses `dlsym'
-$(objpfx) $(common-objpfx)dlfcn/
+$(objpfx) $(libdl)
 # Extra dependencies
 $(foreach o,$(all-object-suffixes),$(objpfx)malloc$(o)): arena.c hooks.c
diff --git a/math/Makefile b/math/Makefile
index c13ca80..f337a0e 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -219,12 +219,8 @@  $(objpfx)libieee.a: $(objpfx)ieee-math.o
 	$(patsubst %/,cd % &&,$(objpfx)) \
 	$(LN_S) $(<F) $(@F)
-ifeq ($(build-shared),yes)
-$(addprefix $(objpfx),$(filter-out $(tests-static),$(tests))): $(objpfx)$(
+$(addprefix $(objpfx),$(filter-out $(tests-static),$(tests))): $(libm)
 $(addprefix $(objpfx),$(tests-static)): $(objpfx)libm.a
-$(addprefix $(objpfx),$(tests)): $(objpfx)libm.a
 gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\
 		      add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \
@@ -233,4 +229,4 @@  gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\
 $(objpfx)atest-exp: $(gmp-objs)
 $(objpfx)atest-sincos: $(gmp-objs)
 $(objpfx)atest-exp2: $(gmp-objs)
-$(objpfx)test-fenv-tls: $(common-objpfx)nptl/
+$(objpfx)test-fenv-tls: $(shared-thread-library)
diff --git a/misc/Makefile b/misc/Makefile
index 53d4c2c..edac24c 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -102,11 +102,7 @@  include ../Rules
 $(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib)
-ifeq ($(build-shared),yes)
-$(objpfx)tst-tsearch: $(common-objpfx)math/$(
-$(objpfx)tst-tsearch: $(common-objpfx)math/libm.a
+$(objpfx)tst-tsearch: $(libm)
 tst-error1-ENV = MALLOC_TRACE=$(objpfx)tst-error1.mtrace
 tst-error1-ARGS = $(objpfx)tst-error1.out
diff --git a/nptl/Makefile b/nptl/Makefile
index 2876224..7551406 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -530,7 +530,7 @@  $(addprefix $(objpfx), \
     $(tests-nolibpthread), \
     $(tests) $(xtests) $(test-srcs))): $(objpfx) \
-$(objpfx)tst-unload: $(common-objpfx)dlfcn/
+$(objpfx)tst-unload: $(libdl)
 # $(objpfx)../ is used instead of $(common-objpfx),
 # since otherwise comes before when linking.
 $(addprefix $(objpfx), $(tests-reverse)): \
diff --git a/setjmp/Makefile b/setjmp/Makefile
index fe0fb5d..047b9ec 100644
--- a/setjmp/Makefile
+++ b/setjmp/Makefile
@@ -33,9 +33,4 @@  tests		:= tst-setjmp jmpbug bug269-setjmp tst-setjmp-fp \
 include ../Rules
-ifeq ($(build-shared),yes)
-link-libm = $(common-objpfx)math/
-link-libm = $(common-objpfx)math/libm.a
-$(objpfx)tst-setjmp-fp: $(link-libm)
+$(objpfx)tst-setjmp-fp: $(libm)
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 332f205..f179eab 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -137,9 +137,4 @@  $(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
 	cmp $^ > $@; \
-ifeq ($(build-shared),yes)
-link-libm = $(common-objpfx)math/
-link-libm = $(common-objpfx)math/libm.a
-$(objpfx)tst-printf-round: $(link-libm)
+$(objpfx)tst-printf-round: $(libm)
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 42482a2..22b34c3 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -150,19 +150,14 @@  $(objpfx) $(objpfx)tst-putenvmod.os $(link-libc-deps)
 CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1
-ifeq ($(build-shared),yes)
-link-libm = $(common-objpfx)math/
-link-libm = $(common-objpfx)math/libm.a
-$(objpfx)bug-getcontext: $(link-libm)
-$(objpfx)tst-strtod-round: $(link-libm)
-$(objpfx)tst-tininess: $(link-libm)
-$(objpfx)tst-strtod-underflow: $(link-libm)
-$(objpfx)tst-strtod6: $(link-libm)
+$(objpfx)bug-getcontext: $(libm)
+$(objpfx)tst-strtod-round: $(libm)
+$(objpfx)tst-tininess: $(libm)
+$(objpfx)tst-strtod-underflow: $(libm)
+$(objpfx)tst-strtod6: $(libm) = yes
-$(objpfx)tst-tls-atexit: $(common-objpfx)nptl/ \
-			 $(common-objpfx)dlfcn/
+$(objpfx)tst-tls-atexit: $(shared-thread-library) \
+			 $(libdl)
 $(objpfx)tst-tls-atexit.out: $(objpfx)