## Makefile.in for ICU tests ## Copyright (C) 2016 and later: Unicode, Inc. and others. ## License & terms of use: http://www.unicode.org/copyright.html ## Copyright (c) 1999-2014, International Business Machines Corporation and ## others. All Rights Reserved. ## Source directory information srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. include $(top_builddir)/icudefs.mk ## 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 # no testdata without tools.. @TOOLS_TRUE@TESTDATA = testdata # status dir STATUS_TMP = tmp STATUS_FULL = $(shell pwd)/$(STATUS_TMP) ## Files to remove for 'make clean' CLEANFILES = *~ $(STATUS_TMP) 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 xcheck xcheck-recursive xcheck-local \ check-exhaustive check-exhaustive-recursive ## Clear suffix list .SUFFIXES : ## List of standard targets everything: all-recursive all-local all: ifneq ($(RECURSIVE),YES) @echo simply use \`make\' \(or \`make everything\'\) to do all 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: @dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-local"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $$local_target) || exit; \ done; \ if test "$$dot_seen" = "no"; then \ $(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: dist-local: clean-local: test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) distclean-local: clean-local $(RMV) Makefile xcheck-local check-local: all-local Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status