Home | History | Annotate | Download | only in test
      1 ## Makefile.in for ICU tests
      2 ## Copyright (c) 1999-2013, International Business Machines Corporation and
      3 ## others. All Rights Reserved.
      4 
      5 ## Source directory information
      6 srcdir = @srcdir@
      7 top_srcdir = @top_srcdir@
      8 
      9 top_builddir = ..
     10 
     11 include $(top_builddir)/icudefs.mk
     12 
     13 ## Build directory information
     14 subdir = test
     15 
     16 @ICUIO_TRUE@IOTEST = iotest
     17 
     18 # status dir
     19 STATUS_TMP = tmp
     20 STATUS_FULL = $(shell pwd)/$(STATUS_TMP)
     21 
     22 ## Files to remove for 'make clean'
     23 CLEANFILES = *~ $(STATUS_TMP)
     24 
     25 SUBDIRS = testdata intltest $(IOTEST) cintltst
     26 
     27 ## List of phony targets
     28 .PHONY : everything all all-local all-recursive install install-local		\
     29 install-recursive clean clean-local clean-recursive distclean		\
     30 distclean-local distclean-recursive dist dist-recursive dist-local	\
     31 check check-recursive check-local xcheck xcheck-recursive xcheck-local	\
     32 check-exhaustive check-exhaustive-recursive
     33 
     34 ## Clear suffix list
     35 .SUFFIXES :
     36 
     37 ## List of standard targets
     38 everything: all-recursive all-local
     39 all:
     40 ifneq ($(RECURSIVE),YES)
     41 	@echo simply use \`make\' \(or \`make everything\'\) to do all
     42 endif
     43 
     44 install: install-recursive install-local
     45 clean: clean-recursive clean-local
     46 distclean : distclean-recursive distclean-local
     47 	$(RMV) hdrtst/Makefile
     48 	$(RMV) perf/convperf/Makefile
     49 	$(RMV) $(STATUS_TMP)
     50 
     51 dist: dist-recursive dist-local
     52 check: everything check-recursive check-local
     53 check-recursive: all-recursive
     54 # the xcheck targets create a ../test-*.xml file in JUnit format.
     55 xcheck: everything xcheck-recursive xcheck-local
     56 xcheck-recursive: all-recursive
     57 check-exhaustive: everything check-exhaustive-recursive check-local
     58 
     59 ## Recursive targets
     60 all-recursive install-recursive clean-recursive distclean-recursive dist-recursive:
     61 	@dot_seen=no; \
     62 	target=`echo $@ | sed s/-recursive//`; \
     63 	list='$(SUBDIRS)'; for subdir in $$list; do \
     64 	  echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
     65 	  if test "$$subdir" = "."; then \
     66 	    dot_seen=yes; \
     67 	    local_target="$$target-local"; \
     68 	  else \
     69 	    local_target="$$target"; \
     70 	  fi; \
     71 	  (cd $$subdir && $(MAKE) $$local_target) || exit; \
     72 	done; \
     73 	if test "$$dot_seen" = "no"; then \
     74 	  $(MAKE) "$$target-local" || exit; \
     75 	fi
     76 
     77 xcheck-recursive check-recursive check-exhaustive-recursive:
     78 	@$(MKINSTALLDIRS) $(STATUS_TMP)
     79 	@mystatus=$(STATUS_FULL)/status.$$$$.deleteme ; \
     80 	$(RMV) "$$mystatus".* ; \
     81 	@goods=; \
     82 	bads=; \
     83 	target=`echo $@ | sed s/-recursive//`; \
     84 	list='$(SUBDIRS)'; for subdir in $$list; do \
     85 	  echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
     86 	  local_target="$$target"; \
     87 	  if (cd $$subdir && $(MAKE) $$local_target TEST_STATUS_FILE="$$mystatus.$$subdir" ); then \
     88 	    goods="$$goods $$subdir"; \
     89           else \
     90             bads="$$bads $$subdir"; \
     91           fi; \
     92 	done; \
     93 	for subdir in $$list; do \
     94 	  if [ -f "$$mystatus.$$subdir" ]; then \
     95 	    echo "-------------" ; \
     96 	    echo "| ***     FAILING TEST SUMMARY FOR:              $$subdir  " ; \
     97 	    cat "$$mystatus.$$subdir" ; \
     98 	    echo "| *** END FAILING TEST SUMMARY FOR:              $$subdir" ; \
     99 	    $(RMV) "$$mystatus.$$subdir" ; \
    100 	  fi; \
    101 	done; \
    102 	echo "---------------"; \
    103 	echo "ALL TESTS SUMMARY:"; \
    104         if test ! "x$$bads" = "x"; then \
    105 	  echo "ok: $$goods"; \
    106 	  echo "===== ERRS: $$bads"; exit 1; \
    107 	else \
    108 	  echo "All tests OK: $$goods"; \
    109 	fi
    110 
    111 # pcheck = parallel check. We don't care about the output interleaving,
    112 # just run it as fast as possible.
    113 # todo would be to merge this code into the above non-parallel check.
    114 STATUS_NUM:=$(shell echo $$$$)
    115 MYSTATUS_R=$(STATUS_FULL)/status.$(STATUS_NUM).deleteme
    116 STATUS_FILES=$(SUBDIRS:%=$(MYSTATUS_R).%)
    117 
    118 pcheck_setup: testdata
    119 	@$(MKINSTALLDIRS) $(STATUS_TMP)
    120 	$(RMV) "$(MYSTATUS_R)".*
    121 	@echo Beginning parallel make. Output may be interleaved!
    122 
    123 $(STATUS_FULL)/status.$(STATUS_NUM).deleteme.%: pcheck_setup
    124 	@$(MAKE) -C $* TEST_STATUS_FILE=$@ check || ( echo "FAILED: $* (other tests may still be running..)" ; touch $@.FAIL ; false )
    125 	-@touch $@.PASS
    126 	-@echo "PASSED: $* (other tests may still be running..)"
    127 
    128 # print out status
    129 pcheck: $(STATUS_FILES)
    130 	@goods= ; \
    131 	bads= ; \
    132 	echo "---------------"; \
    133 	for subdir in $(SUBDIRS); do \
    134 		if [ -f "$(MYSTATUS_R).$$subdir.FAIL" ]; \
    135 		then \
    136 			bads="$$bads $$subdir" ; \
    137 		elif [ -f "$(MYSTATUS_R).$$subdir.PASS" ]; \
    138 		then \
    139 			goods="$$goods $$subdir" ; \
    140 		else \
    141 			echo "*** subtest did not complete - $$subdir" ; \
    142 			bads="$$bads $$subdir" ; \
    143 		fi ; \
    144 	done ; \
    145 	echo "ALL TESTS SUMMARY:"; \
    146         if test ! "x$$bads" = "x"; then \
    147 	  echo "(to get non-interleaved err output, use \"$(MAKE) check\" instead.)" ; \
    148 	  echo "ok: $$goods"; \
    149 	  echo "===== ERRS: $$bads"; exit 1; \
    150 	else \
    151 	  echo "All tests OK: $$goods"; \
    152 	fi
    153 	-@$(RMV) "$(MYSTATUS_R)".*
    154 
    155 all-local:
    156 
    157 install-local:
    158 
    159 dist-local:
    160 
    161 clean-local:
    162 	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
    163 
    164 distclean-local: clean-local
    165 	$(RMV) Makefile
    166 
    167 xcheck-local check-local: all-local
    168 
    169 Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
    170 	cd $(top_builddir) \
    171 	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
    172 
    173