1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius##  Copyright (c) 1999-2011, International Business Machines Corporation and
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  others. All Rights Reserved.
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  THE PURPOSE OF THIS TEST
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius##     This tests all public header files  - as installed.  icu-config needs to be on the PATH
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  
1083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius##     To run it simply type 'make check' after ICU is installed. You SHOULD see:
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  unicode/uchar.h -	0
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  unicode/uchriter.h -	0
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  unicode/ucnv.h -	0
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##    .. etc.  Anything other than zero is an error. (except for the deprecation tests, where '1' is the correct value)
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##              
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  If a header fails the C compile because it's a C++ header, add it to the
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  file named 'cxxfiles.txt' in this directory.
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##  If a header fails because it is deprecated, add it to the 'dfiles.txt'
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho## Source directory information
2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hosrcdir = @srcdir@
2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hotop_srcdir = @top_srcdir@
2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hotop_builddir = ../..
3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hosubdir = test/hdrtst
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinclude $(shell icu-config --incfile)
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruDIRS=$(prefix)/include/unicode
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruLDIRS=$(prefix)/include/layout
3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoECHO_T=@ECHO_T@
3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoECHO_C=@ECHO_C@
3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoECHO_N=@ECHO_N@
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruall: 
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	@echo Please read this Makefile for more information.
4283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@echo run \'$(MAKE) check\' to run the test "(use -k if you don't want to stop on errs)"
4383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_NUM=8
4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_D="[1/$(E_NUM)] Deprecated: "
4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_C="[2/$(E_NUM)] C  : "
4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_CXX="[3/$(E_NUM)] C++: "
4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_CXX_L="[4/$(E_NUM)] C++ layout: "
4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_DRF="[5/$(E_NUM)] Hide Draft: "
5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_DEP="[6/$(E_NUM)] Hide Deprecated: "
5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_INT="[7/$(E_NUM)] Hide Internal: "
5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoE_OBS="[8/$(E_NUM)] Hide Obsolete: "
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querucheck: dtest ctest cpptest lotest doclean drafttest deprtest internaltest obsoletetest
5583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusifeq ($(MAKECMDGOALS),check)
5683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	$(MAKE) clean
5783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliuselse
5883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@echo "(not cleaning automatically)"
5983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusendif
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# break dependency
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querudoclean:
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	make clean
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querucpptest:
6683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
6883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.cpp ; \
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> ht_$$incfile.cpp ; \
7183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) ht_$$incfile.cpp || FAIL=1 ; \
7283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ;\
7383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querulotest:
7683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;for file in $(prefix)/include/layout/*.h; do \
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
7883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ layout/$$incfile.h" ; \
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'layout/$$incfile'.h"' > ht_$$incfile.cpp ; \
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> ht_$$incfile.cpp ; \
8183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) -I$(prefix)/include/layout ht_$$incfile.cpp || FAIL=1; \
8283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ;\
8383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querudtest:
8683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;NONE="(No deprecated headers)";for stub in `cat $(srcdir)/dfiles.txt | grep -v '^#'` ; do \
8783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  file=unicode/$$stub ; \
8883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  NONE="" ; \
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
9083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.cpp ; \
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> ht_$$incfile.cpp ; \
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo > ht_dep.junk ; \
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          $(COMPILE.cc) -c $(cppflags) ht_$$incfile.cpp 2>&1 | sed -e 's/^.*#error[^"]*"//' | fgrep -v ht_ | tee ht_dep.junk | fgrep -v "$$incfile.h header is obsolete" ; \
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  RES=$$? ; \
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo $$RES ; \
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  fgrep -q "$$incfile.h header is obsolete" ht_dep.junk || echo "** FAIL Header unicode/$$incfile.h is not obsoleted properly" ; \
9883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  fgrep -q "$$incfile.h header is obsolete" ht_dep.junk || FAIL=1 ; \
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  rm -f unicode/$$stub ; \
10083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ; \
10183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	echo "$@: $$NONE - exit status $$FAIL" ; \
10283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#  < ht_dep.junk &&  ; \
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queructest:
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	@echo Building test harness for header files in ../../common and ../../i18n
10983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/cxxfiles.txt | tee cfiles.txt`; do \
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
11183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' > ht_$$incfile.c ; \
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(void);' >> ht_$$incfile.c ; \
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> ht_$$incfile.c ; \
11583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.c) -c $(cppflags) ht_$$incfile.c || FAIL=1 ; \
11683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ;\
11783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
11883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querudrafttest:
12083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
12283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#define U_HIDE_DRAFT_API' > hd_$$incfile.c; \
12483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo '#include "'unicode/$$incfile'.h"' >> hd_$$incfile.c ; \
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(void);' >> hd_$$incfile.c ; \
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> hd_$$incfile.c ; \
12783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) hd_$$incfile.c ||FAIL=1 ; \
12883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ;\
12983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
13083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querudeprtest:
13283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0; for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
13483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#define U_HIDE_DEPRECATED_API' > hdp_$$incfile.c; \
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' >> hdp_$$incfile.c ; \
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(void);' >> hdp_$$incfile.c ; \
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> hdp_$$incfile.c ; \
13983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) hdp_$$incfile.c || FAIL=1; \
14083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ; \
14183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinternaltest:
14483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;\
14583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	 for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
14783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#define U_HIDE_INTERNAL_API' > hin_$$incfile.c; \
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' >> hin_$$incfile.c ; \
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(void);' >> hin_$$incfile.c ; \
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> hin_$$incfile.c ; \
15283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) hin_$$incfile.c || FAIL=1 ; \
15383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ; \
15483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruobsoletetest:
15783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	@FAIL=0;for file in `ls $(prefix)/include/unicode/*.h | fgrep -v -f $(srcdir)/pfiles.txt`; do \
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  incfile=`basename $$file .h` ; \
15983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	  echo "$@ unicode/$$incfile.h" ; \
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#define U_HIDE_OBSOLETE_API' > hob_$$incfile.c; \
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo '#include "'unicode/$$incfile'.h"' >> hob_$$incfile.c ; \
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(void);' >> hob_$$incfile.c ; \
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	  echo 'void junk(){}' >> hob_$$incfile.c ; \
16483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius          $(COMPILE.cc) -c $(cppflags) hob_$$incfile.c || FAIL=1 ; \
16583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	done ; \
16683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius	exit $$FAIL
16783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclean:
16927f654740f2a26ad62a5c155af9199af9e69b889claireho	-@echo cleaning..
17027f654740f2a26ad62a5c155af9199af9e69b889claireho	-@rm -f *.h *.c *.cpp *.o *.junk cfiles.txt
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querudistclean: clean
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru	-@rm -f Makefile
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
17585bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoMakefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
17685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho	cd $(top_builddir) \
17785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho	&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
17885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru.PHONY:	doclean check all cpptest lotest dtest ctest clean distclean
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
181