diff --git a/catgets/Makefile b/catgets/Makefile
index 02ca263..ed06508 100644
--- a/catgets/Makefile
+++ b/catgets/Makefile
@@ -33,7 +33,7 @@ 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
+		 $(objpfx)sample.SJIS.cat $(objpfx)test-gencat.out
 endif
 
 gencat-modules	= xmalloc
@@ -88,5 +88,6 @@ $(objpfx)test-gencat.out: test-gencat.sh $(objpfx)test-gencat \
 
 $(objpfx)sample.SJIS.cat: sample.SJIS $(objpfx)gencat
 	GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
-	$(built-program-cmd) -H $(objpfx)test-gencat.h < $(word 1,$^) > $@
+	$(built-program-cmd) -H $(objpfx)test-gencat.h < $(word 1,$^) > $@; \
+	$(evaluate-test)
 endif
diff --git a/localedata/Makefile b/localedata/Makefile
index 5f01b61..4cf88c8 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -97,6 +97,21 @@ tests-special += $(objpfx)sort-test.out $(objpfx)tst-fmon.out \
 		 $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
 		 $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
 
+ifeq ($(run-built-tests),yes)
+# We have to generate locales
+LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
+	   en_US.ISO-8859-1 en_US.UTF-8 ja_JP.EUC-JP da_DK.ISO-8859-1 \
+	   hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
+	   nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 tr_TR.UTF-8 cs_CZ.UTF-8 \
+	   zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 si_LK.UTF-8 \
+	   tr_TR.ISO-8859-9
+LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
+CHARMAPS := $(shell echo "$(LOCALES)" | \
+		    sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
+CTYPE_FILES = $(addsuffix /LC_CTYPE,$(LOCALES))
+tests-special += $(addprefix $(objpfx),$(CTYPE_FILES))
+endif
+
 include ../Rules
 
 # Install the charmap files in gzipped format.
@@ -119,18 +134,6 @@ CFLAGS-tst-trans.c = -Wno-format
 
 
 ifeq ($(run-built-tests),yes)
-# We have to generate locales
-LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
-	   en_US.ISO-8859-1 en_US.UTF-8 ja_JP.EUC-JP da_DK.ISO-8859-1 \
-	   hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
-	   nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 tr_TR.UTF-8 cs_CZ.UTF-8 \
-	   zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 si_LK.UTF-8 \
-	   tr_TR.ISO-8859-9
-LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
-CHARMAPS := $(shell echo "$(LOCALES)" | \
-		    sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
-CTYPE_FILES = $(addsuffix /LC_CTYPE,$(LOCALES))
-
 generated-dirs += $(LOCALES)
 
 # Dependency for the locale files.  We actually make it depend only on
@@ -138,7 +141,8 @@ generated-dirs += $(LOCALES)
 $(addprefix $(objpfx),$(CTYPE_FILES)): %: \
   gen-locale.sh $(common-objpfx)locale/localedef Makefile \
   $(addprefix charmaps/,$(CHARMAPS)) $(addprefix locales/,$(LOCALE_SRCS))
-	@$(SHELL) gen-locale.sh $(common-objpfx) '$(built-program-cmd)' $@
+	@$(SHELL) gen-locale.sh $(common-objpfx) '$(built-program-cmd)' $@; \
+	$(evaluate-test)
 
 $(addsuffix .out,$(addprefix $(objpfx),$(tests))): %: \
   $(addprefix $(objpfx),$(CTYPE_FILES))
diff --git a/timezone/Makefile b/timezone/Makefile
index e308cca..998cd14 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -45,6 +45,14 @@ CPPFLAGS-zic = -DNOT_IN_libc
 install-bin-script = tzselect
 generated += tzselect
 
+testdata = $(objpfx)testdata
+
+# List zones generated by separate commands running zic on the host.
+# Each such zic run counts as a separate test.
+test-zones := America/New_York Etc/UTC UTC Europe/Berlin \
+	      Australia/Melbourne America/Sao_Paulo Asia/Tokyo
+tests-special += $(addprefix $(testdata)/, $(test-zones))
+
 include ../Rules
 
 
@@ -71,10 +79,10 @@ CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID -DHAVE_GETTEXT
 # We have to make sure the data for testing the tz functions is available.
 # Don't add leapseconds here since test-tz made checks that work only without
 # leapseconds.
-testdata = $(objpfx)testdata
 define build-testdata
 GCONV_PATH=${common-objpfx}iconvdata LANGUAGE=C LC_ALL=C \
-  $(built-program-cmd) -d $(testdata) -y ./yearistype $<
+  $(built-program-cmd) -d $(testdata) -y ./yearistype $<; \
+$(evaluate-test)
 endef
 
 $(objpfx)test-tz.out: $(addprefix $(testdata)/, America/New_York Etc/UTC UTC)
