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