summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog59
-rw-r--r--Makefile6
-rw-r--r--Makerules7
-rw-r--r--Rules8
-rw-r--r--catgets/Makefile7
-rw-r--r--conform/Makefile6
-rw-r--r--elf/Makefile58
-rw-r--r--grp/Makefile4
-rw-r--r--iconv/Makefile8
-rw-r--r--iconvdata/Makefile8
-rw-r--r--intl/Makefile19
-rw-r--r--io/Makefile6
-rw-r--r--libio/Makefile8
-rw-r--r--localedata/ChangeLog5
-rw-r--r--localedata/Makefile13
-rw-r--r--malloc/Makefile9
-rw-r--r--misc/Makefile2
-rw-r--r--nptl/Makefile20
-rw-r--r--nptl_db/Makefile3
-rw-r--r--posix/Makefile32
-rw-r--r--resolv/Makefile17
-rw-r--r--stdio-common/Makefile11
-rw-r--r--stdlib/Makefile14
-rw-r--r--string/Makefile5
-rw-r--r--sysdeps/x86/Makefile2
25 files changed, 207 insertions, 130 deletions
diff --git a/ChangeLog b/ChangeLog
index 89b40c8c88..89e8d03509 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,64 @@
 2014-03-06  Joseph Myers  <joseph@codesourcery.com>
 
+	* Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	(tests): Depend on $(tests-special).
+	* Makerules (check-abi-list): New variable.
+	(check-abi): Depend on $(check-abi-list).
+	[$(subdir) = elf] (tests-special): Add
+	$(objpfx)check-abi-libc.out.
+	[$(build-shared) = yes && subdir] (tests-special): Add
+	$(check-abi-list).
+	[$(build-shared) = yes && subdir] (tests): Do not depend on
+	check-abi.
+	* Rules (tests): Depend on $(tests-special).
+	(xtests): Depend on $(xtests-special).
+	* catgets/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* conform/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* elf/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* grp/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* iconv/Makefile (xtests): Change dependencies to ....
+	(xtests-special): ... additions to this variable.
+	* iconvdata/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* intl/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.  Also add
+	$(objpfx)tst-gettext.out.
+	* io/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* libio/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* malloc/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* misc/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* nptl/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* nptl_db/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* posix/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	(xtests): Change dependencies to ....
+	(xtests-special): ... additions to this variable.
+	* resolv/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	(xtests): Change dependencies to ....
+	(xtests-special): ... additions to this variable.
+	* stdio-common/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	(do-tst-unbputc): Remove target.
+	(do-tst-printf): Likewise.
+	* stdlib/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* string/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+	* sysdeps/x86/Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+
 	* conform/data/netinet/tcp.h-data [POSIX2008 || XOPEN2K8]: Enable
 	whole file.
 	* conform/data/sys/timeb.h-data [POSIX2008 || XOPEN2K8]: Disable
diff --git a/Makefile b/Makefile
index a9b559716a..aee88e1e3e 100644
--- a/Makefile
+++ b/Makefile
@@ -250,7 +250,7 @@ mostlyclean: parent-mostlyclean
 tests-clean:
 	@$(MAKE) subdir_testclean no_deps=t
 
-tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
+tests-special += $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
 ifneq ($(CXX),no)
 
 vpath c++-types.data $(+sysdep_dirs)
@@ -310,12 +310,14 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
 		    time/sys/time.h time/sys/timeb.h wcsmbs/wchar.h \
 		    wctype/wctype.h
 
-tests: $(objpfx)begin-end-check.out
+tests-special += $(objpfx)begin-end-check.out
 $(objpfx)begin-end-check.out: scripts/begin-end-check.pl
 	$(PERL) scripts/begin-end-check.pl $(installed-headers) > $@; \
 	$(evaluate-test)
 endif
 
+tests: $(tests-special)
+
 # The realclean target is just like distclean for the parent, but we want
 # the subdirs to know the difference in case they care.
 realclean distclean: parent-clean
diff --git a/Makerules b/Makerules
index c2324366df..ad81ea9f76 100644
--- a/Makerules
+++ b/Makerules
@@ -1246,7 +1246,9 @@ endef
 
 .PHONY: update-abi check-abi
 update-abi: $(patsubst %.so,update-abi-%,$(install-lib.so-versioned))
-check-abi: $(patsubst %.so,$(objpfx)check-abi-%.out,$(install-lib.so-versioned))
+check-abi-list = $(patsubst %.so,$(objpfx)check-abi-%.out, \
+				 $(install-lib.so-versioned))
+check-abi: $(check-abi-list)
 ifdef subdir
 subdir_check-abi: check-abi
 subdir_update-abi: update-abi
@@ -1257,13 +1259,14 @@ endif
 
 ifeq ($(subdir),elf)
 check-abi: $(objpfx)check-abi-libc.out
+tests-special += $(objpfx)check-abi-libc.out
 update-abi: update-abi-libc
 common-generated += libc.symlist
 endif
 
 ifeq ($(build-shared),yes)
 ifdef subdir
-tests: check-abi
+tests-special += $(check-abi-list)
 endif
 endif
 
diff --git a/Rules b/Rules
index 3e305ddaa5..d37ae52b6c 100644
--- a/Rules
+++ b/Rules
@@ -95,11 +95,11 @@ else
 others: $(addprefix $(objpfx),$(extra-objs))
 endif
 ifeq ($(run-built-tests),no)
-tests: $(addprefix $(objpfx),$(tests) $(test-srcs))
-xtests: tests
+tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) $(tests-special)
+xtests: tests $(xtests-special)
 else
-tests: $(tests:%=$(objpfx)%.out)
-xtests: tests $(xtests:%=$(objpfx)%.out)
+tests: $(tests:%=$(objpfx)%.out) $(tests-special)
+xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
 endif
 
 ifeq ($(build-programs),yes)
diff --git a/catgets/Makefile b/catgets/Makefile
index 5eba3b5605..02ca263c4e 100644
--- a/catgets/Makefile
+++ b/catgets/Makefile
@@ -31,6 +31,11 @@ extra-objs	= $(gencat-modules:=.o)
 tests = tst-catgets
 test-srcs = test-gencat
 
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)de/libc.cat $(objpfx)test1.cat $(objpfx)test2.cat \
+		 $(objpfx)test-gencat.out
+endif
+
 gencat-modules	= xmalloc
 
 # To find xmalloc.c
@@ -53,8 +58,6 @@ generated-dirs += de
 tst-catgets-ENV = NLSPATH="$(objpfx)%l/%N.cat" LANG=de
 
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)de/libc.cat $(objpfx)test1.cat $(objpfx)test2.cat \
-       $(objpfx)test-gencat.out
 # This test just checks whether the program produces any error or not.
 # The result is not tested.
 $(objpfx)test1.cat: test1.msg $(objpfx)gencat
diff --git a/conform/Makefile b/conform/Makefile
index 40081f304b..3f76773758 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -22,14 +22,14 @@ subdir	:= conform
 
 include ../Makeconfig
 
-include ../Rules
-
 ifneq (yes,$(fast-check))
 ifeq (no,$(cross-compiling))
-tests: $(objpfx)run-conformtest.out
+tests-special += $(objpfx)run-conformtest.out
 endif
 endif
 
+include ../Rules
+
 test-xfail-run-conformtest = yes
 $(objpfx)run-conformtest.out: run-conformtest.sh conformtest.pl \
 			      $(wildcard data/*.h-data) \
diff --git a/elf/Makefile b/elf/Makefile
index 5637b4899c..1007a63c6c 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -157,8 +157,8 @@ tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
 endif
 endif
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-leaks1-mem $(objpfx)tst-leaks1-static-mem \
-       $(objpfx)noload-mem
+tests-special += $(objpfx)tst-leaks1-mem $(objpfx)tst-leaks1-static-mem \
+		 $(objpfx)noload-mem
 endif
 tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
 tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@@ -253,12 +253,31 @@ modules-names += ifuncmod1 ifuncmod3 ifuncmod5 ifuncmod6
 endif
 endif
 
+ifeq (yes,$(build-shared))
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out
+endif
+tests-special += $(objpfx)check-textrel.out $(objpfx)check-execstack.out \
+		 $(objpfx)check-localplt.out
+endif
 
-include ../Rules
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)order-cmp.out $(objpfx)tst-array1-cmp.out \
+		 $(objpfx)tst-array1-static-cmp.out \
+		 $(objpfx)tst-array2-cmp.out $(objpfx)tst-array3-cmp.out \
+		 $(objpfx)tst-array4-cmp.out $(objpfx)tst-array5-cmp.out \
+		 $(objpfx)tst-array5-static-cmp.out $(objpfx)order2-cmp.out \
+		 $(objpfx)tst-initorder-cmp.out \
+		 $(objpfx)tst-initorder2-cmp.out $(objpfx)tst-unused-dep.out \
+		 $(objpfx)tst-unused-dep-cmp.out
+endif
 
 check-abi: $(objpfx)check-abi-ld.out
+tests-special += $(objpfx)check-abi-ld.out
 update-abi: update-abi-ld
 
+include ../Rules
+
 ifeq (yes,$(build-shared))
 # Make sure these things are built in the `make lib' pass so they can be used
 # to run programs during the `make others' pass.
@@ -430,12 +449,6 @@ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
 test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
 generated += $(addsuffix .so,$(strip $(modules-names)))
 
-ifeq (yes,$(build-shared))
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out
-endif
-endif
-
 $(objpfx)testobj1.so: $(libdl)
 $(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl)
 $(objpfx)testobj2.so: $(objpfx)testobj1.so $(libdl)
@@ -640,9 +653,6 @@ $(objpfx)circlemod2a.so: $(objpfx)circlemod3a.so
 
 $(objpfx)order: $(addprefix $(objpfx),dep4.so dep3.so dep2.so dep1.so)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)order-cmp.out
-endif
 $(objpfx)order-cmp.out: $(objpfx)order.out
 	(echo "0123456789" | cmp $< -) > $@; \
 	$(evaluate-test)
@@ -856,13 +866,6 @@ endif
 LDFLAGS-tst-array2 = $(no-as-needed)
 LDFLAGS-tst-array5 = $(no-as-needed)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-array1-cmp.out $(objpfx)tst-array1-static-cmp.out \
-       $(objpfx)tst-array2-cmp.out $(objpfx)tst-array3-cmp.out \
-       $(objpfx)tst-array4-cmp.out $(objpfx)tst-array5-cmp.out \
-       $(objpfx)tst-array5-static-cmp.out
-endif
-
 $(objpfx)tst-array1-cmp.out: tst-array1.exp $(objpfx)tst-array1.out
 	cmp $^ > $@; \
 	$(evaluate-test)
@@ -902,8 +905,6 @@ CFLAGS-tst-pie1.c += $(pie-ccflag)
 $(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
 
 ifeq (yes,$(build-shared))
-tests: $(objpfx)check-textrel.out $(objpfx)check-execstack.out
-
 all-built-dso := $(common-objpfx)libc.so \
 		 $(filter-out $(common-objpfx)linkobj/libc.so, \
 			      $(sort $(wildcard $(addprefix $(common-objpfx), \
@@ -961,8 +962,6 @@ $(all-built-dso:=.jmprel): %.jmprel: % Makefile
 	mv -f $@T $@
 common-generated += $(all-built-dso:$(common-objpfx)%=%.jmprel)
 
-tests: $(objpfx)check-localplt.out
-
 localplt-built-dso := $(addprefix $(common-objpfx),\
 				  libc.so \
 				  math/libm.so \
@@ -1026,9 +1025,6 @@ tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
 $(objpfx)tst-global1: $(libdl)
 $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)order2-cmp.out
-endif
 $(objpfx)order2: $(libdl)
 $(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so
 $(objpfx)order2-cmp.out: $(objpfx)order2.out
@@ -1131,9 +1127,6 @@ $(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so
 
 $(objpfx)tst-unique4: $(objpfx)tst-unique4lib.so
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-initorder-cmp.out
-endif
 $(objpfx)tst-initorder-cmp.out: tst-initorder.exp $(objpfx)tst-initorder.out
 	cmp $^ > $@; \
 	$(evaluate-test)
@@ -1153,9 +1146,6 @@ endef
 object-suffixes-left := a b c d
 include $(o-iterator)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-initorder2-cmp.out
-endif
 $(objpfx)tst-initorder2-cmp.out: tst-initorder2.exp $(objpfx)tst-initorder2.out
 	cmp $^ > $@; \
 	$(evaluate-test)
@@ -1166,10 +1156,6 @@ $(objpfx)tst-relsort1mod2.so: $(libm)
 $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
 			   $(objpfx)tst-relsort1mod2.so
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-unused-dep.out $(objpfx)tst-unused-dep-cmp.out
-endif
-
 $(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so
 	$(test-wrapper-env) \
 	LD_TRACE_LOADED_OBJECTS=1 \
diff --git a/grp/Makefile b/grp/Makefile
index 3ed8471fdd..a60d2f95ab 100644
--- a/grp/Makefile
+++ b/grp/Makefile
@@ -32,6 +32,9 @@ tests := testgrp
 
 ifeq (yes,$(build-shared))
 test-srcs :=  tst_fgetgrent
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst_fgetgrent.out
+endif
 endif
 
 
@@ -54,7 +57,6 @@ endif
 ifeq ($(run-built-tests),yes)
 # tst_fgetgrent currently only works with shared libraries
 ifeq (yes,$(build-shared))
-tests: $(objpfx)tst_fgetgrent.out
 $(objpfx)tst_fgetgrent.out: tst_fgetgrent.sh $(objpfx)tst_fgetgrent
 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
 	$(evaluate-test)
diff --git a/iconv/Makefile b/iconv/Makefile
index ec3535412e..8728fefc13 100644
--- a/iconv/Makefile
+++ b/iconv/Makefile
@@ -60,6 +60,10 @@ CPPFLAGS-strtab = -DNOT_IN_libc
 CPPFLAGS-charmap = -DNOT_IN_libc
 CPPFLAGS-charmap-dir = -DNOT_IN_libc
 
+ifeq ($(run-built-tests),yes)
+xtests-special += test-iconvconfig
+endif
+
 include ../Rules
 
 $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force)
@@ -68,10 +72,6 @@ $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force)
 $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o)
 $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o)
 
-ifeq ($(run-built-tests),yes)
-xtests: test-iconvconfig
-endif
-
 .PHONY: test-iconvconfig
 test-iconvconfig: /dev/null $(objpfx)iconvconfig
 	tmp=$(objpfx)gconv-modules.cache.$$$$; \
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 8fabe52718..f0d832af6d 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -265,17 +265,17 @@ endif
 
 endif # build-shared = yes
 
-include ../Rules
-
 ifeq ($(run-built-tests),yes)
 ifeq (yes,$(build-shared))
-tests: $(objpfx)iconv-test.out $(objpfx)tst-tables.out
+tests-special += $(objpfx)iconv-test.out $(objpfx)tst-tables.out
 ifneq (no,$(PERL))
-tests: $(objpfx)mtrace-tst-loading
+tests-special += $(objpfx)mtrace-tst-loading
 endif
 endif
 endif
 
+include ../Rules
+
 tst-loading-ENV = MALLOC_TRACE=$(objpfx)tst-loading.mtrace
 $(objpfx)mtrace-tst-loading: $(objpfx)tst-loading.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@; \
diff --git a/intl/Makefile b/intl/Makefile
index 61ba07f62c..56769548b5 100644
--- a/intl/Makefile
+++ b/intl/Makefile
@@ -47,22 +47,27 @@ plural.c: plural.y
 endif
 $(objpfx)plural.o: plural.c
 
-include ../Rules
-
 ifeq ($(run-built-tests),yes)
 ifeq (yes,$(build-shared))
 ifneq ($(strip $(MSGFMT)),:)
-tests: $(objpfx)tst-translit.out $(objpfx)tst-gettext2.out \
-       $(objpfx)tst-codeset.out $(objpfx)tst-gettext3.out
+tests-special += $(objpfx)tst-translit.out $(objpfx)tst-gettext.out \
+		 $(objpfx)tst-gettext2.out $(objpfx)tst-codeset.out \
+		 $(objpfx)tst-gettext3.out
 ifeq ($(have-thread-library),yes)
-tests: $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out \
-       $(objpfx)tst-gettext6.out
+tests-special += $(objpfx)tst-gettext4.out $(objpfx)tst-gettext5.out \
+		 $(objpfx)tst-gettext6.out
 endif
 ifneq (no,$(PERL))
-tests: $(objpfx)mtrace-tst-gettext
+tests-special += $(objpfx)mtrace-tst-gettext
+endif
+endif
 endif
 endif
 
+include ../Rules
+
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
 # Multiple tests use this data.  Create it once to avoid racing and
 # spurious test failures.
 codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo
diff --git a/io/Makefile b/io/Makefile
index 8d38612b06..8a6562e65d 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -73,6 +73,10 @@ tests		:= test-utime test-stat test-stat2 test-lfs tst-getcwd \
 		   tst-mknodat tst-mkfifoat tst-ttyname_r bug-ftw5 \
 		   tst-posix_fallocate
 
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)ftwtest.out
+endif
+
 include ../Rules
 
 CFLAGS-open.c = -fexceptions -fasynchronous-unwind-tables
@@ -103,8 +107,6 @@ test-stat2-ARGS = Makefile . $(objpfx)test-stat2
 tst-statvfs-ARGS = $(objpfx)tst-statvfs tst-statvfs.c /tmp
 
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)ftwtest.out
-
 $(objpfx)ftwtest.out: ftwtest-sh $(objpfx)ftwtest
 	$(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
 	$(evaluate-test)
diff --git a/libio/Makefile b/libio/Makefile
index 488ee51f0e..69c25c0c3d 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -172,17 +172,17 @@ shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops	\
 		       oldiofgetpos oldiofgetpos64 oldiofsetpos		\
 		       oldiofsetpos64
 
-include ../Rules
-
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)test-freopen.out
+tests-special += $(objpfx)test-freopen.out
 ifeq (yes,$(build-shared))
 # Run tst-fopenloc-cmp.out and tst-openloc-mem.out only if shared
 # library is enabled since they depend on tst-fopenloc.out.
-tests: $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out
+tests-special += $(objpfx)tst-fopenloc-cmp.out $(objpfx)tst-fopenloc-mem.out
 endif
 endif
 
+include ../Rules
+
 $(objpfx)test-freopen.out: test-freopen.sh $(objpfx)test-freopen
 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'	\
 	$(common-objpfx)libio/; \
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index a7323054ba..2ca1abeda6 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-06  Joseph Myers  <joseph@codesourcery.com>
+
+	* Makefile (tests): Change dependencies to ....
+	(tests-special): ... additions to this variable.
+
 2014-02-28  Roland McGrath  <roland@hack.frob.com>
 
 	* Makefile (generated, generated-dirs): Use += rather than =.
diff --git a/localedata/Makefile b/localedata/Makefile
index ad801b7e75..5f01b61139 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -79,7 +79,7 @@ tests-static = bug-setlocale1-static
 tests += $(tests-static)
 ifeq (yes,$(build-shared))
 ifneq (no,$(PERL))
-tests: $(objpfx)mtrace-tst-leaks
+tests-special += $(objpfx)mtrace-tst-leaks
 endif
 endif
 endif
@@ -91,6 +91,12 @@ install-others := $(addprefix $(inst_i18ndir)/, \
 
 tests: $(objdir)/iconvdata/gconv-modules
 
+tests-special += $(objpfx)sort-test.out $(objpfx)tst-fmon.out \
+		 $(objpfx)tst-locale.out $(objpfx)tst-rpmatch.out \
+		 $(objpfx)tst-trans.out $(objpfx)tst-mbswcs.out \
+		 $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
+		 $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
+
 include ../Rules
 
 # Install the charmap files in gzipped format.
@@ -137,11 +143,6 @@ $(addprefix $(objpfx),$(CTYPE_FILES)): %: \
 $(addsuffix .out,$(addprefix $(objpfx),$(tests))): %: \
   $(addprefix $(objpfx),$(CTYPE_FILES))
 
-tests: $(objpfx)sort-test.out $(objpfx)tst-fmon.out $(objpfx)tst-locale.out \
-       $(objpfx)tst-rpmatch.out $(objpfx)tst-trans.out \
-       $(objpfx)tst-mbswcs.out $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
-       $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
-
 $(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
 		       $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)' $(test-input) \
diff --git a/malloc/Makefile b/malloc/Makefile
index 1b47ce2a42..2871726220 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -92,6 +92,14 @@ memusagestat-modules = memusagestat
 $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
 	$(LINK.o) -o $@ $^ $(libgd-LDFLAGS) -lgd -lpng -lz -lm
 
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+ifneq ($(PERL),no)
+tests-special += $(objpfx)tst-mtrace.out
+endif
+endif
+endif
+
 include ../Rules
 
 CFLAGS-mcheck-init.c = $(PIC-ccflag)
@@ -107,7 +115,6 @@ lib: $(objpfx)libmcheck.a
 ifeq ($(run-built-tests),yes)
 ifeq (yes,$(build-shared))
 ifneq ($(PERL),no)
-tests: $(objpfx)tst-mtrace.out
 $(objpfx)tst-mtrace.out: tst-mtrace.sh $(objpfx)tst-mtrace
 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
 	$(evaluate-test)
diff --git a/misc/Makefile b/misc/Makefile
index 65dcc48605..c08f95a321 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -78,7 +78,7 @@ gpl2lgpl := error.c error.h
 tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch \
 	 tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-error1-mem
+tests-special += $(objpfx)tst-error1-mem
 endif
 
 CFLAGS-select.c = -fexceptions -fasynchronous-unwind-tables
diff --git a/nptl/Makefile b/nptl/Makefile
index 320facf8ea..9fcf3d678f 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -367,6 +367,14 @@ xtests-static += tst-setuid1-static
 # These tests are linked with libc before libpthread
 tests-reverse += tst-cancel5 tst-cancel23 tst-vfork1x tst-vfork2x
 
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-stack3-mem $(objpfx)tst-oddstacklimit.out
+ifeq ($(build-shared),yes)
+tests-special += $(objpfx)tst-tls6.out $(objpfx)tst-cleanup0-cmp.out \
+		 $(objpfx)tst-cancel-wrappers.out
+endif
+endif
+
 include ../Rules
 
 ifeq (yes,$(build-shared))
@@ -457,9 +465,6 @@ LDFLAGS-tst-atfork2 = -rdynamic
 tst-atfork2-ENV = MALLOC_TRACE=$(objpfx)tst-atfork2.mtrace
 $(objpfx)tst-atfork2mod.so: $(shared-thread-library)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-stack3-mem
-endif
 tst-stack3-ENV = MALLOC_TRACE=$(objpfx)tst-stack3.mtrace
 $(objpfx)tst-stack3-mem: $(objpfx)tst-stack3.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@; \
@@ -482,9 +487,6 @@ LDFLAGS-tst-tls5 = $(no-as-needed)
 LDFLAGS-tst-tls5mod.so = -Wl,-soname,tst-tls5mod.so
 
 ifeq ($(build-shared),yes)
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-tls6.out
-endif
 $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
 		       $(objpfx)tst-tls5moda.so $(objpfx)tst-tls5modb.so \
 		       $(objpfx)tst-tls5modc.so $(objpfx)tst-tls5modd.so \
@@ -547,9 +549,6 @@ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
 	$(make-test-out) > $@ 2>&1; \
 	$(evaluate-test)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-cleanup0-cmp.out
-endif
 $(objpfx)tst-cleanup0-cmp.out: tst-cleanup0.expect $(objpfx)tst-cleanup0.out
 	cmp $^ > $@; \
 	$(evaluate-test)
@@ -583,7 +582,6 @@ endif
 
 ifeq ($(run-built-tests),yes)
 ifeq (yes,$(build-shared))
-tests: $(objpfx)tst-cancel-wrappers.out
 $(objpfx)tst-cancel-wrappers.out: tst-cancel-wrappers.sh
 	$(SHELL) $< '$(NM)' \
 		    $(common-objpfx)libc_pic.a \
@@ -606,8 +604,6 @@ tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child"
 tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child"
 
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-oddstacklimit.out
-
 $(objpfx)tst-oddstacklimit.out: $(objpfx)tst-oddstacklimit $(objpfx)tst-basic1
 	$(test-program-prefix) $< --command '$(host-test-program-cmd)' > $@; \
 	$(evaluate-test)
diff --git a/nptl_db/Makefile b/nptl_db/Makefile
index f321b539dc..ff873ca225 100644
--- a/nptl_db/Makefile
+++ b/nptl_db/Makefile
@@ -51,9 +51,10 @@ libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
 # The ps_* callback functions are not defined.
 libthread_db.so-no-z-defs = yes
 
+tests-special += $(objpfx)db-symbols.out
+
 include ../Rules
 
-tests: $(objpfx)db-symbols.out
 $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
 			 $(common-objpfx)nptl/libpthread.so
 	LC_ALL=C $(READELF) -W -s $(filter %.so,$^) | $(AWK) -f $< > $@; \
diff --git a/posix/Makefile b/posix/Makefile
index a9bbff2f62..3af936ffbb 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -113,12 +113,30 @@ generated += $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
 	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \
 	     tst-fnmatch-mem tst-fnmatch.mtrace
 
+ifeq ($(run-built-tests),yes)
+ifeq (yes,$(build-shared))
+tests-special += $(objpfx)globtest.out $(objpfx)wordexp-tst.out
+endif
+endif
+
+# Run a test on the header files we use.
+# XXX Please note that for now we ignore the result of this test.
+tests-special += $(objpfx)annexc.out
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
+		 $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem \
+		 $(objpfx)tst-rxspencer-no-utf8-mem $(objpfx)tst-pcre-mem \
+		 $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
+		 $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem \
+		 $(objpfx)tst-fnmatch-mem
+xtests-special += $(objpfx)bug-ga2-mem
+endif
+
 include ../Rules
 
 ifeq ($(run-built-tests),yes)
 # globtest and wordexp-test currently only works with shared libraries
 ifeq (yes,$(build-shared))
-tests: $(objpfx)globtest.out $(objpfx)wordexp-tst.out
 $(objpfx)globtest.out: globtest.sh $(objpfx)globtest
 	$(SHELL) $< $(common-objpfx) '$(test-via-rtld-prefix)' \
 		'$(test-program-prefix)' '$(test-wrapper-env)'; \
@@ -221,18 +239,6 @@ ptestcases.h: PTESTS PTESTS2C.sed
 	LC_ALL=C sed -f PTESTS2C.sed < $< > $@T
 	mv -f $@T $@
 
-# Run a test on the header files we use.
-# XXX Please note that for now we ignore the result of this test.
-tests: $(objpfx)annexc.out
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
-  $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem \
-  $(objpfx)tst-rxspencer-no-utf8-mem \
-  $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
-  $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem
-xtests: $(objpfx)bug-ga2-mem
-endif
-
 test-xfail-annexc = yes
 $(objpfx)annexc.out: $(objpfx)annexc
 	$(dir $<)$(notdir $<) '$(CC)' \
diff --git a/resolv/Makefile b/resolv/Makefile
index 5763469285..4ce7619667 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -64,6 +64,13 @@ ifeq (yesyes,$(build-shared)$(have-thread-library))
 tests: $(objpfx)ga_test
 endif
 
+ifeq ($(run-built-tests),yes)
+ifneq (no,$(PERL))
+tests-special += $(objpfx)mtrace-tst-leaks
+xtests-special += $(objpfx)mtrace-tst-leaks2
+endif
+endif
+
 generated += mtrace-tst-leaks tst-leaks.mtrace \
 	     mtrace-tst-leaks2 tst-leaks2.mtrace
 
@@ -96,18 +103,8 @@ tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
 $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@; \
 	$(evaluate-test)
-ifeq ($(run-built-tests),yes)
-ifneq (no,$(PERL))
-tests: $(objpfx)mtrace-tst-leaks
-endif
-endif
 
 tst-leaks2-ENV = MALLOC_TRACE=$(objpfx)tst-leaks2.mtrace
 $(objpfx)mtrace-tst-leaks2: $(objpfx)tst-leaks2.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-leaks2.mtrace > $@; \
 	$(evaluate-test)
-ifeq ($(run-built-tests),yes)
-ifneq (no,$(PERL))
-xtests: $(objpfx)mtrace-tst-leaks2
-endif
-endif
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index ba0bf64fc0..332f205bcf 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -61,11 +61,14 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
 
 test-srcs = tst-unbputc tst-printf
 
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \
+		 $(objpfx)tst-setvbuf1-cmp.out
+endif
+
 include ../Rules
 
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out
-
 $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
 	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
 	$(evaluate-test)
@@ -126,10 +129,6 @@ tst-grouping-ENV = LOCPATH=$(common-objpfx)localedata
 
 CPPFLAGS += $(libio-mtsafe)
 
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-setvbuf1-cmp.out
-endif
-
 $(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
 	$(test-program-cmd) > $@ 2>&1; \
 	$(evaluate-test)
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 5f2c10cec2..42482a2a6c 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -111,6 +111,13 @@ CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
 CFLAGS-tst-qsort.c = $(stack-align-test-flags)
 CFLAGS-tst-makecontext2.c = $(stack-align-test-flags)
 
+# Run a test on the header files we use.
+tests-special += $(objpfx)isomac.out
+
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-fmtmsg.out
+endif
+
 include ../Rules
 
 # Testdir has to be named stdlib and needs to be writable
@@ -123,13 +130,6 @@ tst-strtod5-ENV = LOCPATH=$(common-objpfx)localedata
 testmb2-ENV = LOCPATH=$(common-objpfx)localedata
 bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev
 
-# Run a test on the header files we use.
-tests: $(objpfx)isomac.out
-
-ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-fmtmsg.out
-endif
-
 $(objpfx)isomac.out: $(objpfx)isomac
 	$(dir $<)$(notdir $<) '$(CC)'  \
 	'-I../include $(+sysdep-includes) $(sysincludes) -I..' > $<.out; \
diff --git a/string/Makefile b/string/Makefile
index 543b5f68e4..5a76872131 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -58,6 +58,10 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
 
 xtests = tst-strcoll-overflow
 
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-svc-cmp.out
+endif
+
 include ../Rules
 
 tester-ENV = LANGUAGE=C
@@ -76,7 +80,6 @@ CFLAGS-test-ffs.c = -fno-builtin
 CFLAGS-tst-inlcall.c = -fno-builtin
 
 ifeq ($(run-built-tests),yes)
-tests: $(objpfx)tst-svc-cmp.out
 $(objpfx)tst-svc-cmp.out: tst-svc.expect $(objpfx)tst-svc.out
 	cmp $^ > $@; \
 	$(evaluate-test)
diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
index 80d03d5b07..a96c8bd0b2 100644
--- a/sysdeps/x86/Makefile
+++ b/sysdeps/x86/Makefile
@@ -2,7 +2,7 @@ ifeq ($(subdir),elf)
 CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
 		   -mno-sse -mno-mmx)
 
-tests: $(objpfx)tst-xmmymm.out
+tests-special += $(objpfx)tst-xmmymm.out
 $(objpfx)tst-xmmymm.out: ../sysdeps/x86/tst-xmmymm.sh $(objpfx)ld.so
 	@echo "Checking ld.so for SSE register use.  This will take a few seconds..."
 	$(SHELL) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@; \