xref: /f-stack/tools/libxo/tests/gettext/Makefile.am (revision d4a07e70)
1*d4a07e70Sfengbojiang#
2*d4a07e70Sfengbojiang# $Id$
3*d4a07e70Sfengbojiang#
4*d4a07e70Sfengbojiang# Copyright 2014, Juniper Networks, Inc.
5*d4a07e70Sfengbojiang# All rights reserved.
6*d4a07e70Sfengbojiang# This SOFTWARE is licensed under the LICENSE provided in the
7*d4a07e70Sfengbojiang# ../Copyright file. By downloading, installing, copying, or otherwise
8*d4a07e70Sfengbojiang# using the SOFTWARE, you agree to be bound by the terms of that
9*d4a07e70Sfengbojiang# LICENSE.
10*d4a07e70Sfengbojiang
11*d4a07e70SfengbojiangAM_CFLAGS = \
12*d4a07e70Sfengbojiang    -I${top_srcdir} \
13*d4a07e70Sfengbojiang    -I${top_srcdir}/libxo \
14*d4a07e70Sfengbojiang    ${GETTEXT_CFLAGS}
15*d4a07e70Sfengbojiang
16*d4a07e70Sfengbojiang# Ick: maintained by hand!
17*d4a07e70SfengbojiangTEST_CASES = \
18*d4a07e70Sfengbojianggt_01.c
19*d4a07e70Sfengbojiang
20*d4a07e70Sfengbojianggt_01_test_SOURCES = gt_01.c
21*d4a07e70Sfengbojiang
22*d4a07e70Sfengbojiang# TEST_CASES := $(shell cd ${srcdir} ; echo *.c )
23*d4a07e70Sfengbojiang
24*d4a07e70Sfengbojiangnoinst_PROGRAMS = ${TEST_CASES:.c=.test}
25*d4a07e70Sfengbojiang
26*d4a07e70SfengbojiangLDADD = \
27*d4a07e70Sfengbojiang    ${top_builddir}/libxo/libxo.la
28*d4a07e70Sfengbojiang
29*d4a07e70Sfengbojiangif HAVE_HUMANIZE_NUMBER
30*d4a07e70SfengbojiangLDADD += -lutil
31*d4a07e70Sfengbojiangendif
32*d4a07e70Sfengbojiang
33*d4a07e70SfengbojiangEXTRA_DIST = \
34*d4a07e70Sfengbojiang    ${TEST_CASES} \
35*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.T.err}} \
36*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.T.out}} \
37*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.XP.err}} \
38*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.XP.out}} \
39*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.JP.err}} \
40*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.JP.out}} \
41*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.HP.err}} \
42*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.HP.out}} \
43*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.X.err}} \
44*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.X.out}} \
45*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.J.err}} \
46*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.J.out}} \
47*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.H.err}} \
48*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.H.out}} \
49*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.HIPx.err}} \
50*d4a07e70Sfengbojiang    ${addprefix saved/, ${TEST_CASES:.c=.HIPx.out}}
51*d4a07e70Sfengbojiang
52*d4a07e70SfengbojiangPOT_FILES = \
53*d4a07e70Sfengbojiang    gt_01.pot \
54*d4a07e70Sfengbojiang    ldns.pot \
55*d4a07e70Sfengbojiang    strerror.pot
56*d4a07e70Sfengbojiang
57*d4a07e70SfengbojiangPO_FILES = \
58*d4a07e70Sfengbojiang    po/pig_latin/gt_01.po \
59*d4a07e70Sfengbojiang    po/pig_latin/ldns.po \
60*d4a07e70Sfengbojiang    po/pig_latin/strerror.po
61*d4a07e70Sfengbojiang
62*d4a07e70SfengbojiangEXTRA_DIST += ${POT_FILES} ${PO_FILES}
63*d4a07e70Sfengbojiang
64*d4a07e70SfengbojiangS2O = | ${SED} '1,/@@/d'
65*d4a07e70Sfengbojiang
66*d4a07e70Sfengbojiangall:
67*d4a07e70Sfengbojiang
68*d4a07e70Sfengbojiangvalgrind:
69*d4a07e70Sfengbojiang	@echo '## Running the regression tests under Valgrind'
70*d4a07e70Sfengbojiang	${MAKE} CHECKER='valgrind -q' tests
71*d4a07e70Sfengbojiang
72*d4a07e70Sfengbojiang#TEST_TRACE = set -x ;
73*d4a07e70Sfengbojiang
74*d4a07e70SfengbojiangTEST_ONE = \
75*d4a07e70Sfengbojiang      ${CHECKER} ./$$base.test --libxo:W$$fmt ${TEST_OPTS} \
76*d4a07e70Sfengbojiang      > out/$$base.$$fmt.out 2> out/$$base.$$fmt.err ; \
77*d4a07e70Sfengbojiang ${DIFF} -Nu ${srcdir}/saved/$$base.$$fmt.out out/$$base.$$fmt.out ${S2O} ; \
78*d4a07e70Sfengbojiang ${DIFF} -Nu ${srcdir}/saved/$$base.$$fmt.err out/$$base.$$fmt.err ${S2O}
79*d4a07e70Sfengbojiang
80*d4a07e70SfengbojiangTEST_FORMATS = T XP JP HP X J H HIPx
81*d4a07e70Sfengbojiang
82*d4a07e70Sfengbojiangtest tests: ${bin_PROGRAMS} build-mo-files
83*d4a07e70Sfengbojiang	@${MKDIR} -p out
84*d4a07e70Sfengbojiang	-@ ${TEST_TRACE} (for test in ${TEST_CASES} ; do \
85*d4a07e70Sfengbojiang	    base=`${BASENAME} $$test .c` ; \
86*d4a07e70Sfengbojiang            (for fmt in ${TEST_FORMATS}; do \
87*d4a07e70Sfengbojiang	        echo "... $$test ... $$fmt ..."; \
88*d4a07e70Sfengbojiang	        ${TEST_ONE}; \
89*d4a07e70Sfengbojiang                true; \
90*d4a07e70Sfengbojiang            done) \
91*d4a07e70Sfengbojiang	done)
92*d4a07e70Sfengbojiang
93*d4a07e70Sfengbojiangone:
94*d4a07e70Sfengbojiang	-@(test=${TEST_CASE}; data=${TEST_DATA}; ${TEST_ONE} ; true)
95*d4a07e70Sfengbojiang
96*d4a07e70Sfengbojiangaccept:
97*d4a07e70Sfengbojiang	-@(for test in ${TEST_CASES} ; do \
98*d4a07e70Sfengbojiang	    base=`${BASENAME} $$test .c` ; \
99*d4a07e70Sfengbojiang            (for fmt in ${TEST_FORMATS}; do \
100*d4a07e70Sfengbojiang	        echo "... $$test ... $$fmt ..."; \
101*d4a07e70Sfengbojiang	        ${CP} out/$$base.$$fmt.out ${srcdir}/saved/$$base.$$fmt.out ; \
102*d4a07e70Sfengbojiang	        ${CP} out/$$base.$$fmt.err ${srcdir}/saved/$$base.$$fmt.err ; \
103*d4a07e70Sfengbojiang	    done) \
104*d4a07e70Sfengbojiang	done)
105*d4a07e70Sfengbojiang
106*d4a07e70Sfengbojiang.c.test:
107*d4a07e70Sfengbojiang	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -o $@ $<
108*d4a07e70Sfengbojiang
109*d4a07e70SfengbojiangCLEANFILES = ${TEST_CASES:.c=.test}
110*d4a07e70SfengbojiangCLEANDIRS = out
111*d4a07e70Sfengbojiang
112*d4a07e70Sfengbojiangclean-local:
113*d4a07e70Sfengbojiang	rm -rf ${CLEANDIRS}
114*d4a07e70Sfengbojiang
115*d4a07e70SfengbojiangXGETTEXT = ${GETTEXT_BINDIR}/xgettext
116*d4a07e70SfengbojiangMSGFMT = ${GETTEXT_BINDIR}/msgfmt -v
117*d4a07e70SfengbojiangMSGMERGE = ${GETTEXT_BINDIR}/msgmerge
118*d4a07e70SfengbojiangECHO = echo
119*d4a07e70SfengbojiangDB=set -x;
120*d4a07e70SfengbojiangXOMSGMERGE = ${MSGMERGE} --no-wrap
121*d4a07e70SfengbojiangXODIFF = ${DIFF} -bu
122*d4a07e70Sfengbojiang
123*d4a07e70SfengbojiangLANGUAGES = \
124*d4a07e70Sfengbojiang	es \
125*d4a07e70Sfengbojiang	fr \
126*d4a07e70Sfengbojiang	pig_latin
127*d4a07e70Sfengbojiang
128*d4a07e70Sfengbojiang# ldns is fake; used only for a gettext domain
129*d4a07e70SfengbojiangFAKE_FILES = ldns strerror
130*d4a07e70SfengbojiangMO_BASE_FILES = ${TEST_CASES:.c=} ${FAKE_FILES}
131*d4a07e70Sfengbojiang
132*d4a07e70Sfengbojiangbuild-pot-files:
133*d4a07e70Sfengbojiang	for file in ${TEST_CASES} ; do set -x ;\
134*d4a07e70Sfengbojiang	    base=`${BASENAME} $$file .c` ; \
135*d4a07e70Sfengbojiang	    ${XGETTEXT} --default-domain=$$base \
136*d4a07e70Sfengbojiang            --directory=${srcdir} --no-wrap \
137*d4a07e70Sfengbojiang	    --add-comments --keyword=xo_emit --keyword=xo_emit_h \
138*d4a07e70Sfengbojiang	    --keyword=xo_emit_warn \
139*d4a07e70Sfengbojiang	    -C -E -n --foreign-user \
140*d4a07e70Sfengbojiang	    -o $$base.pot.new $$base.c ; \
141*d4a07e70Sfengbojiang	done
142*d4a07e70Sfengbojiang
143*d4a07e70Sfengbojiangaccept-pot-files:
144*d4a07e70Sfengbojiang	for base in ${MO_BASE_FILES} ; do set -x ;\
145*d4a07e70Sfengbojiang	    ${CP} $$base.pot.new ${srcdir}/$$base.pot ; \
146*d4a07e70Sfengbojiang	done
147*d4a07e70Sfengbojiang
148*d4a07e70Sfengbojiangmerge-po-files:
149*d4a07e70Sfengbojiang	for base in ${MO_BASE_FILES} ; do set -x ;\
150*d4a07e70Sfengbojiang	    for lang in ${LANGUAGES} ; do \
151*d4a07e70Sfengbojiang		if [ -f po/$$lang/$$base.po ]; then \
152*d4a07e70Sfengbojiang		    ${ECHO} "merging $$base.pot into po/$$lang/$$base.po ..." ; \
153*d4a07e70Sfengbojiang		    if ${XOMSGMERGE} po/$$lang/$$base.po \
154*d4a07e70Sfengbojiang				${srcdir}/$$base.pot \
155*d4a07e70Sfengbojiang				-o po/$$lang/$$base.new.po; then \
156*d4a07e70Sfengbojiang			${MV} po/$$lang/$$base.po \
157*d4a07e70Sfengbojiang				po/$$lang/$$base.po.old ; \
158*d4a07e70Sfengbojiang			${MV} po/$$lang/$$base.new.po \
159*d4a07e70Sfengbojiang				po/$$lang/$$base.po ; \
160*d4a07e70Sfengbojiang		    else \
161*d4a07e70Sfengbojiang		      echo "error: msgmerge for $$base failed"; \
162*d4a07e70Sfengbojiang		    fi ; \
163*d4a07e70Sfengbojiang		elif [ -f ${srcdir}/po/$$lang/$$base.po ]; then \
164*d4a07e70Sfengbojiang		    ${ECHO} "merging (srcdir) $$base.pot into po/$$lang/$$base.po ..." ; \
165*d4a07e70Sfengbojiang		    if ${XOMSGMERGE} ${srcdir}/po/$$lang/$$base.po \
166*d4a07e70Sfengbojiang				${srcdir}/$$base.pot \
167*d4a07e70Sfengbojiang				-o po/$$lang/$$base.new.po; then \
168*d4a07e70Sfengbojiang			${MV} po/$$lang/$$base.po \
169*d4a07e70Sfengbojiang				po/$$lang/$$base.po.old ; \
170*d4a07e70Sfengbojiang			${MV} po/$$lang/$$base.new.po \
171*d4a07e70Sfengbojiang				po/$$lang/$$base.po ; \
172*d4a07e70Sfengbojiang		    else \
173*d4a07e70Sfengbojiang		      echo "error: msgmerge for $$base failed"; \
174*d4a07e70Sfengbojiang		    fi ; \
175*d4a07e70Sfengbojiang		fi ; \
176*d4a07e70Sfengbojiang            done ; \
177*d4a07e70Sfengbojiang        done
178*d4a07e70Sfengbojiang
179*d4a07e70Sfengbojiangaccept-po-files:
180*d4a07e70Sfengbojiang	@(for base in ${MO_BASE_FILES} ; do \
181*d4a07e70Sfengbojiang	    for lang in ${LANGUAGES} ; do \
182*d4a07e70Sfengbojiang		if [ -f po/$$lang/$$base.po ]; then \
183*d4a07e70Sfengbojiang		    ${MKDIR} -p ${srcdir}/po/$$lang ; \
184*d4a07e70Sfengbojiang		    (${DB} ${CP} po/$$lang/$$base.po ${srcdir}/po/$$lang/$$base.po ); \
185*d4a07e70Sfengbojiang                fi ; \
186*d4a07e70Sfengbojiang	    done ; \
187*d4a07e70Sfengbojiang	done)
188*d4a07e70Sfengbojiang
189*d4a07e70Sfengbojiangnew-po-file:
190*d4a07e70Sfengbojiang	@(for base in ${MO_BASE_FILES} ; do set -x ;\
191*d4a07e70Sfengbojiang	    for lang in ${LANGUAGES} ; do \
192*d4a07e70Sfengbojiang		if [ ! -f po/$$lang/$$base.po ]; then \
193*d4a07e70Sfengbojiang		    ${MKDIR} -p po/$$lang ; \
194*d4a07e70Sfengbojiang		    (${DB} ${CP} $$base.pot po/$$lang/$$base.po ); \
195*d4a07e70Sfengbojiang                fi ; \
196*d4a07e70Sfengbojiang	    done ; \
197*d4a07e70Sfengbojiang	done)
198*d4a07e70Sfengbojiang
199*d4a07e70Sfengbojiangdiff:
200*d4a07e70Sfengbojiang	@(for base in ${MO_BASE_FILES} ; do \
201*d4a07e70Sfengbojiang	    if [ -f $$base.pot.new ] ; then \
202*d4a07e70Sfengbojiang	        ${XODIFF} ${srcdir}/$$base.pot $$base.pot.new ; \
203*d4a07e70Sfengbojiang            fi ; \
204*d4a07e70Sfengbojiang	    for lang in ${LANGUAGES} ; do \
205*d4a07e70Sfengbojiang		if [ -f po/$$lang/$$base.po ] ; then \
206*d4a07e70Sfengbojiang		    ${XODIFF} ${srcdir}/po/$$lang/$$base.po po/$$lang/$$base.po ; \
207*d4a07e70Sfengbojiang                fi ; \
208*d4a07e70Sfengbojiang	    done ; \
209*d4a07e70Sfengbojiang	done)
210*d4a07e70Sfengbojiang
211*d4a07e70Sfengbojiangmo build-mo-files:
212*d4a07e70Sfengbojiang	@(for base in ${MO_BASE_FILES} ; do \
213*d4a07e70Sfengbojiang	    for lang in ${LANGUAGES} ; do \
214*d4a07e70Sfengbojiang		${MKDIR} -p po/$$lang/LC_MESSAGES ; \
215*d4a07e70Sfengbojiang	 	if [ -f po/$$lang/$$base.po ] ; then \
216*d4a07e70Sfengbojiang		    (${DB} ${MSGFMT} -o po/$$lang/LC_MESSAGES/$$base.mo \
217*d4a07e70Sfengbojiang				po/$$lang/$$base.po ); \
218*d4a07e70Sfengbojiang		elif [ -f ${srcdir}/po/$$lang/$$base.po ]; then \
219*d4a07e70Sfengbojiang		    (${DB} ${MSGFMT} -o po/$$lang/LC_MESSAGES/$$base.mo \
220*d4a07e70Sfengbojiang			${srcdir}/po/$$lang/$$base.po ;) \
221*d4a07e70Sfengbojiang                fi ; \
222*d4a07e70Sfengbojiang	    done ; \
223*d4a07e70Sfengbojiang	done)
224