X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..f59164e3d128c7675a4d3934206346a3384e53a5:/icuSources/test/Makefile.in diff --git a/icuSources/test/Makefile.in b/icuSources/test/Makefile.in index e5a2efe8..36eda3a5 100644 --- a/icuSources/test/Makefile.in +++ b/icuSources/test/Makefile.in @@ -1,5 +1,5 @@ ## Makefile.in for ICU tests -## Copyright (c) 1999, International Business Machines Corporation and +## Copyright (c) 1999-2014, International Business Machines Corporation and ## others. All Rights Reserved. ## Source directory information @@ -10,22 +10,31 @@ top_builddir = .. include $(top_builddir)/icudefs.mk -## Platform-specific setup -include @platform_make_fragment@ - ## Build directory information subdir = test +@ICUIO_TRUE@IOTEST = iotest + +# the letest directory depends on layoutex. +# If you have layoutex but not layout, you will be using +# harfbuzz. +@LAYOUTEX_TRUE@LETEST = letest + +# status dir +STATUS_TMP = tmp +STATUS_FULL = $(shell pwd)/$(STATUS_TMP) + ## Files to remove for 'make clean' -CLEANFILES = *~ +CLEANFILES = *~ $(STATUS_TMP) -SUBDIRS = testdata intltest cintltst ieeetest +SUBDIRS = testdata intltest $(IOTEST) cintltst $(LETEST) ## List of phony targets .PHONY : everything all all-local all-recursive install install-local \ install-recursive clean clean-local clean-recursive distclean \ distclean-local distclean-recursive dist dist-recursive dist-local \ -check check-recursive check-local +check check-recursive check-local xcheck xcheck-recursive xcheck-local \ +check-exhaustive check-exhaustive-recursive ## Clear suffix list .SUFFIXES : @@ -40,11 +49,20 @@ endif install: install-recursive install-local clean: clean-recursive clean-local distclean : distclean-recursive distclean-local + $(RMV) hdrtst/Makefile + $(RMV) perf/convperf/Makefile + $(RMV) $(STATUS_TMP) + dist: dist-recursive dist-local check: everything check-recursive check-local +check-recursive: all-recursive +# the xcheck targets create a ../test-*.xml file in JUnit format. +xcheck: everything xcheck-recursive xcheck-local +xcheck-recursive: all-recursive +check-exhaustive: everything check-exhaustive-recursive check-local ## Recursive targets -all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive: +all-recursive install-recursive clean-recursive distclean-recursive dist-recursive: @dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -61,6 +79,93 @@ all-recursive install-recursive clean-recursive distclean-recursive dist-recursi $(MAKE) "$$target-local" || exit; \ fi +xcheck-recursive check-recursive check-exhaustive-recursive: + @$(MKINSTALLDIRS) $(STATUS_TMP) + @mystatus=$(STATUS_FULL)/status.$$$$.deleteme ; \ + $(RMV) "$$mystatus".* ; \ + @goods=; \ + bads=; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \ + local_target="$$target"; \ + if (cd $$subdir && $(MAKE) $$local_target TEST_STATUS_FILE="$$mystatus.$$subdir" ); then \ + goods="$$goods $$subdir"; \ + else \ + bads="$$bads $$subdir"; \ + fi; \ + done; \ + for subdir in $$list; do \ + if [ -f "$$mystatus.$$subdir" ]; then \ + echo "-------------" ; \ + echo "| *** FAILING TEST SUMMARY FOR: $$subdir " ; \ + cat "$$mystatus.$$subdir" ; \ + echo "| *** END FAILING TEST SUMMARY FOR: $$subdir" ; \ + $(RMV) "$$mystatus.$$subdir" ; \ + fi; \ + done; \ + echo "---------------"; \ + echo "ALL TESTS SUMMARY:"; \ + if test ! "x$$bads" = "x"; then \ + echo "ok: $$goods"; \ + echo "===== ERRS: $$bads"; exit 1; \ + else \ + echo "All tests OK: $$goods"; \ + fi + +# pcheck = parallel check. We don't care about the output interleaving, +# just run it as fast as possible. +# todo would be to merge this code into the above non-parallel check. +STATUS_NUM:=$(shell echo $$$$) +MYSTATUS_R=$(STATUS_FULL)/status.$(STATUS_NUM).deleteme +STATUS_FILES=$(SUBDIRS:%=$(MYSTATUS_R).%) + +pcheck_setup: testdata + @$(MKINSTALLDIRS) $(STATUS_TMP) + $(RMV) "$(MYSTATUS_R)".* + @echo Beginning parallel make. Output may be interleaved! + +$(STATUS_FULL)/status.$(STATUS_NUM).deleteme.%: pcheck_setup + -@$(MAKE) -C $* TEST_STATUS_FILE=$@ check || ( echo "FAILED: $* (other tests may still be running..)" ; touch $@ ; cp $@ $@.FAIL ; false ) + -@[ ! -f $@.FAIL ] && touch $@.PASS && echo "PASSED: $* (other tests may still be running..)" + -@touch $@ + +# print out status +pcheck: $(STATUS_FILES) + @goods= ; \ + bads= ; \ + echo "----------------------------------------"; \ + for subdir in $(SUBDIRS); do \ + if [ -s "$(MYSTATUS_R).$$subdir" ]; then \ + echo "-------------" ; \ + echo "| *** FAILING TEST SUMMARY FOR: $$subdir " ; \ + cat "$(MYSTATUS_R).$$subdir" ; \ + echo "| *** END FAILING TEST SUMMARY FOR: $$subdir" ; \ + $(RMV) "$(MYSTATUS_R).$$subdir" ; \ + fi; \ + done; \ + for subdir in $(SUBDIRS); do \ + if [ -f "$(MYSTATUS_R).$$subdir.FAIL" ]; \ + then \ + bads="$$bads $$subdir" ; \ + elif [ -f "$(MYSTATUS_R).$$subdir.PASS" ]; \ + then \ + goods="$$goods $$subdir" ; \ + else \ + echo "*** subtest did not complete - $$subdir" ; \ + bads="$$bads $$subdir" ; \ + fi ; \ + done ; \ + echo "ALL TESTS SUMMARY:"; \ + if test ! "x$$bads" = "x"; then \ + echo "(to get non-interleaved err output, use \"$(MAKE) check\" instead.)" ; \ + echo "ok: $$goods"; \ + echo "===== ERRS: $$bads"; exit 1; \ + else \ + echo "All tests OK: $$goods"; \ + fi + -@$(RMV) "$(MYSTATUS_R)".* + all-local: install-local: @@ -73,7 +178,7 @@ clean-local: distclean-local: clean-local $(RMV) Makefile -check-local: all-local +xcheck-local check-local: all-local Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \