## 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
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 :
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 \
$(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:
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) \