summaryrefslogtreecommitdiff
path: root/test/GNU/Makefile
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-11-13 00:43:22 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-11-13 00:43:22 +0000
commit1e27fedc75e11311af66666655996aa5fe2960e2 (patch)
tree237b9f2200b45149beb1f7dc27cfbd3f72259e21 /test/GNU/Makefile
parentdb524b69d0cc2d982c3d9f8496a33d7bff9308b8 (diff)
downloadiconv-1e27fedc75e11311af66666655996aa5fe2960e2.tar.gz
iconv-1e27fedc75e11311af66666655996aa5fe2960e2.tar.bz2
Import GNU libiconv testsuite, suitably hacked to fit into our buildsystem.
This still needs a bit of work, not least to get sensible automated testing. It currently requires manual inspection of the output, which isn't all that great. svn path=/trunk/iconv/; revision=5690
Diffstat (limited to 'test/GNU/Makefile')
-rw-r--r--test/GNU/Makefile259
1 files changed, 259 insertions, 0 deletions
diff --git a/test/GNU/Makefile b/test/GNU/Makefile
new file mode 100644
index 0000000..99fb722
--- /dev/null
+++ b/test/GNU/Makefile
@@ -0,0 +1,259 @@
+# Makefile fragment for GNU libiconv tests
+#
+# Toolchain is provided by top-level makefile
+#
+# Variables provided by top-level makefile
+#
+# COMPONENT The name of the component
+# EXPORT The location of the export directory
+# TOP The location of the source tree root
+# RELEASEDIR The place to put release objects
+# DEBUGDIR The place to put debug objects
+#
+# do_include Canned command sequence to include a child makefile
+#
+# Variables provided by parent makefile:
+#
+# DIR The name of the directory we're in, relative to $(TOP)
+#
+# Variables we can manipulate:
+#
+# ITEMS_CLEAN The list of items to remove for "make clean"
+# ITEMS_DISTCLEAN The list of items to remove for "make distclean"
+# TARGET_TESTS The list of target names to run for "make test"
+#
+# SOURCES The list of sources to build for $(COMPONENT)
+#
+# Plus anything from the toolchain
+
+# Push parent directory onto the directory stack
+sp := $(sp).x
+dirstack_$(sp) := $(d)
+d := $(DIR)
+
+# Extend toolchain settings
+CFLAGS := $(CFLAGS) -I$(TOP)/src/ -I$(d)
+
+# Tests
+TESTS_$(d) := table-from table-to genutf8 gengb18030z
+TESTS_$(d) := $(TESTS_$(d))
+
+# Items for top-level makefile to use
+ITEMS_CLEAN := $(ITEMS_CLEAN) \
+ $(addprefix $(d), $(addsuffix $(EXEEXT), $(TESTS_$(d)))) \
+ $(addprefix $(d), tmp-*) \
+ $(addprefix $(d), UTF-8.TXT) \
+ $(addprefix $(d), GB18030.TXT) \
+ $(addprefix $(d), $(addsuffix .gcda, $(TESTS_$(d)))) \
+ $(addprefix $(d), $(addsuffix .gcno, $(TESTS_$(d)))) \
+ $(addprefix $(d), $(addsuffix .d, $(TESTS_$(d))))
+
+# Targets for top-level makefile to run
+TARGET_TESTS := $(TARGET_TESTS) test_$(d)
+
+# Now we get to hack around so that we know what directory we're in.
+# $(d) no longer exists when running the commands for a target, so we can't
+# simply use it verbatim. Assigning to a variable doesn't really help, as
+# there's no guarantee that someone else hasn't overridden that variable.
+# So, what we do is make the target depend on $(d), then pick it out of the
+# dependency list when running commands. This isn't pretty, but is effective.
+test_$(d): $(d) $(addprefix $(d), $(TESTS_$(d)))
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ASCII
+# /* General multi-byte encodings */
+ $(TOP)/$<genutf8 > UTF-8.TXT && $(TOP)/$<check-stateless $(TOP) $(TOP)/$< UTF-8
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UCS-2BE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UCS-2LE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UCS-4BE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UCS-4LE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-16
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-16BE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-16LE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-32
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-32BE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-32LE
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< UTF-7
+# /* 8-bit encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-1
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-2
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-3
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-4
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-5
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-6
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-7
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-8
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-9
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-10
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-11
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-13
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-14
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-15
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-8859-16
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< KOI8-R
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< KOI8-U
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< KOI8-RU
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1250
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1251
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1252
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1253
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1254
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1255
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< CP1255
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1256
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1257
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1258
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< CP1258
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP850
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP862
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP866
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacRoman
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacCentralEurope
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacIceland
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacCroatian
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacRomania
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacCyrillic
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacUkraine
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacGreek
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacTurkish
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacHebrew
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacArabic
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MacThai
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< HP-ROMAN8
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< NEXTSTEP
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ARMSCII-8
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< Georgian-Academy
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< Georgian-PS
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< KOI8-T
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< PT154
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< RK1048
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< MuleLao-1
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1133
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< TIS-620
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP874
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< VISCII
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< TCVN
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< TCVN
+# /* CJK character sets */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO646-JP
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< JIS_X0201
+# $(TOP)/$<check-stateless $(TOP) $(TOP)/$< JIS_X0208 # redundant, see EUC-JP
+# $(TOP)/$<check-stateless $(TOP) $(TOP)/$< JIS_X0212 # redundant, see EUC-JP
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO646-CN
+# $(TOP)/$<check-stateless $(TOP) $(TOP)/$< GB_2312-80 # redundant, see EUC-CN
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ISO-IR-165
+# $(TOP)/$<check-stateless $(TOP) $(TOP)/$< KSC_5601 # redundant, see EUC-KR
+# /* CJK encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< EUC-JP
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< SHIFT_JIS
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP932
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-JP
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-JP-2
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-JP-1
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< EUC-CN
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< GBK
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP936
+ { cat $(TOP)/$<GB18030-BMP.TXT ; $(TOP)/$<gengb18030z ; } | sort > $(TOP)/$<GB18030.TXT && $(TOP)/$<check-stateless $(TOP) $(TOP)/$< GB18030
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-CN
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-CN-EXT
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< HZ
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< EUC-TW
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< BIG5
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP950
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< BIG5-HKSCS:1999
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< BIG5-HKSCS:1999
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< BIG5-HKSCS:2001
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< BIG5-HKSCS:2001
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< BIG5-HKSCS:2004
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< BIG5-HKSCS:2004
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< EUC-KR
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP949
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< JOHAB
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-KR
+# /* transliteration */
+ $(TOP)/$<check-translit $(TOP)/$< Quotes UTF-8 ISO-8859-1
+ $(TOP)/$<check-translit $(TOP)/$< Quotes UTF-8 ASCII
+ $(TOP)/$<check-translit $(TOP)/$< Translit1 ISO-8859-1 ASCII
+ $(TOP)/$<check-translitfailure $(TOP)/$< TranslitFail1 ISO-8859-1 ASCII
+# /* substitution */
+ $(TOP)/$<check-subst
+# /* system dependent and extra encodings */
+# /* AIX specific encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP856
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP922
+# $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP943
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1046
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1124
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1129
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1161
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1162
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1163
+# /* OSF/1 specific encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< DEC-KANJI
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< DEC-HANYU
+# /* DOS specific encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP437
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP737
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP775
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP852
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP853
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP855
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP857
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP858
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP860
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP861
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP863
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP864
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP865
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP869
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< CP1125
+# /* Extra encodings */
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< EUC-JISX0213
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< SHIFT_JISX0213
+ $(TOP)/$<check-stateful $(TOP) $(TOP)/$< ISO-2022-JP-3
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< BIG5-2003
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< TDS565
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< ATARIST
+ $(TOP)/$<check-stateless $(TOP) $(TOP)/$< RISCOS-LATIN1
+
+DEP_$(d) :=
+
+define dep_test
+DEP_$(d) += $(2)
+$(2): $(1)
+ @$$(RM) $$(RMFLAGS) $(2)
+ @$$(CC) $$(DEBUGCFLAGS) -MM -MT '$(2) $(3)' -MF $(2) $(1)
+
+endef
+
+# Build rules for each test binary -- they all depend on the debug library
+# Except when building on RISC OS, of course because then make utterly fails to
+# detect that the debug library exists.
+define compile_test
+ifeq ($(HOST),riscos)
+$(2): $(1)
+else
+$(2): $$(TOP)/$$(COMPONENT)-debug.a $(1)
+endif
+ @$$(ECHO) $$(ECHOFLAGS) "==> $(1)"
+ @$$(CC) -c -g $$(DEBUGCFLAGS) -o $$@.o $(1)
+ @$$(LD) -g -o $$@ $$@.o $$(LDFLAGS) -liconv-debug -lunicode
+ @$$(RM) $$(RMFLAGS) $$@.o
+
+endef
+
+$(eval $(foreach TEST,$(addprefix $(d), $(TESTS_$(d))), \
+ $(call dep_test,$(addsuffix .c, $(TEST)),$(addsuffix .d, $(TEST)),$(TEST))))
+
+ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
+-include $(sort $(DEP_$(d)))
+endif
+
+$(eval $(foreach TEST,$(addprefix $(d), $(TESTS_$(d))), \
+ $(call compile_test,$(addsuffix .c, $(TEST)),$(TEST))))
+
+# Now include any children we may have
+MAKE_INCLUDES := $(wildcard $(d)*/Makefile)
+$(eval $(foreach INC, $(MAKE_INCLUDES), $(call do_include,$(INC))))
+
+# Finally, pop off the directory stack
+d := $(dirstack_$(sp))
+sp := $(basename $(sp))