]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/Makefile.in
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / test / Makefile.in
index b2d8386b998028f39bd91ac08b0fcd1741d8ade1..36eda3a5e998577764ccf0f35173aa132fc8f970 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile.in for ICU tests
-## Copyright (c) 1999-2004, International Business Machines Corporation and
+## Copyright (c) 1999-2014, International Business Machines Corporation and
 ## others. All Rights Reserved.
 
 ## Source directory information
@@ -15,16 +15,26 @@ 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 $(IOTEST) cintltst
+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,13 +50,19 @@ 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 \
@@ -63,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:
@@ -75,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) \