1254225Speter#	$Id: Makefile,v 9.0 2012/10/19 15:13:11 zy Exp $
2254225Speter# $FreeBSD$
3254225Speter
4254225Speter.include <bsd.own.mk>
5254225Speter
6254225SpeterV=	${.CURDIR}/../../../contrib/nvi
7254225Speter
8254225SpeterCAT=	dutch english french german polish ru_RU.KOI8-R spanish swedish \
9254225Speter	uk_UA.KOI8-U zh_CN.GB2312
10254225Speter
11254225SpeterSCAN=	${V}/cl/*.c ${V}/common/*.c ${V}/ex/*.c ${V}/vi/*.c
12254225Speter
13254225Speter.PATH: ${V}/catalog
14254225Speter
15254225Speterall:		dump
16254225Speter
17254225Speterbuild-tools:	dump
18254225Speter
19254244Speter# Helper since iconv is non trivial to make a build tool
20254244Speterutf8convert:
21254244Speter.for c in dutch french german spanish swedish
22254244Speter	iconv -f ISO8859-1 -t UTF-8 $V/catalog/$c.base > $c.UTF-8.base
23254225Speter.endfor
24254244Speter	iconv -f ISO8859-2 -t UTF-8 $V/catalog/polish.base > polish.UTF-8.base
25254244Speter	iconv -f GB2312 -t UTF-8 $V/catalog/zh_CN.GB2312.base > zh_CN.UTF-8.base
26254244Speter	iconv -f KOI8-R -t UTF-8 $V/catalog/ru_RU.KOI8-R.base > ru_RU.UTF-8.base
27254244Speter	iconv -f KOI8-U -t UTF-8 $V/catalog/uk_UA.KOI8-U.base > uk_UA.UTF-8.base
28254244Speter	
29254244Speter.for c in dutch french german polish spanish swedish zh_CN ru_RU uk_UA
30254244SpeterCAT+=	$c.UTF-8
31254244Speter.endfor
32254225Speter
33254225Speter.for c in ${CAT}
34254225Speter${c}:	${c}.base 
35254225Speter	@echo "... $c";							\
36254225Speter	rm -f $c;							\
37254225Speter	sort -u ${.ALLSRC} |						\
38254225Speter	awk '{								\
39254225Speter		if ($$1 == 1) {						\
40254225Speter			print "\nMESSAGE NUMBER 1 IS NOT LEGAL";	\
41254225Speter			exit 1;						\
42254225Speter		}							\
43254225Speter		if (++nline > $$1) {					\
44254225Speter			print "DUPLICATE MESSAGE NUMBER " $$1;		\
45254225Speter			exit 1;						\
46254225Speter		}							\
47254225Speter		print $0;						\
48254225Speter	}' |								\
49254225Speter	sed -e '1s/^/$$set 1~$$quote "~/; 1y/~/\n/' |			\
50254225Speter	gencat $c /dev/stdin;						\
51254225Speter	chmod 444 $c;							\
52254225Speter	if grep DUPLICATE $c > /dev/null; then				\
53254225Speter		grep DUPLICATE $@;					\
54254225Speter	fi;								\
55254225Speter	if grep 'NOT LEGAL' $c > /dev/null; then			\
56254225Speter		grep 'NOT LEGAL' $@;					\
57254225Speter	fi
58254225Speter.endfor
59254225Speter
60254225SpeterCHK=	dutch.check english.check french.check german.check \
61254225Speter	polish.check ru_RU.KOI8-R.check spanish.check swedish.check \
62254225Speter	uk_UA.KOI8-U.check zh_CN.GB2312.check
63254225Spetercheck: ${CHK}
64254225Speter.for c in ${CAT}
65254225Speter${c}.check: ${c}.base
66254225Speter	@echo "... $c";							\
67254225Speter	f=${.ALLSRC:S;.base$;;};					\
68254225Speter	(echo "Unused message id's (this is okay):";			\
69254225Speter	awk '{								\
70254225Speter		while (++nline < $$1)					\
71254225Speter			printf "%03d\n", nline;				\
72254225Speter	}' < $$f.base;							\
73254225Speter	echo =========================;					\
74254225Speter	echo "MISSING ERROR MESSAGES (Please add!):";			\
75254225Speter	awk '{print $$1}' < $$f.base | sort -u > __ck1;			\
76254225Speter	awk '{print $$1}' < english.base | sort -u > __ck2;		\
77254225Speter	comm -13 __ck1 __ck2;						\
78254225Speter	echo =========================;					\
79254225Speter	echo "Extra error messages (just delete them):";		\
80254225Speter	comm -23 __ck1 __ck2;						\
81254225Speter	echo =========================;					\
82254225Speter	echo "MESSAGES WITH THE SAME MESSAGE ID's (FIX!):";		\
83254225Speter	for j in							\
84254225Speter	    `sed '/^$$/d' < $$f.base | LANG=C sort -u |			\
85254225Speter	    awk '{print $$1}' | uniq -d`; do				\
86254225Speter		egrep $$j $$f.base;					\
87254225Speter	done;								\
88254225Speter	echo =========================;					\
89254225Speter	echo "Duplicate messages, both id and message (this is okay):";	\
90254225Speter	sed '/^$$/d' < $$f.base | LANG=C sort | uniq -c |			\
91254225Speter	awk '$$1 != 1 { print $$0 }' | sort -n;				\
92254225Speter	echo =========================) > $c
93254225Speter.endfor
94254225Speter
95254225Speterenglish.base: dump ${SCAN} #Makefile
96254225Speter	./dump ${SCAN} |\
97254225Speter	sed -e '/|/!d' \
98254225Speter	    -e 's/|/ "/' \
99254225Speter	    -e 's/^"//' |\
100254225Speter	sort -nu > $@
101254225Speter
102254225Speter
103254225Speterdump: dump.c
104254225Speter	${CC} -o dump ${.ALLSRC}
105254225Speter
106254225SpeterCLEANFILES+= dump ${CAT} english.base *.check __ck1 __ck2
107254225Speter
108254225SpeterCATALOGS= ${CAT}
109254225SpeterNLLINKS= nl_NL
110254225SpeterENLINKS= en_AU en_CA en_GB en_NZ en_US
111254225SpeterFRLINKS= fr_BE fr_CA fr_CH fr_FR
112254225SpeterDELINKS= de_AT de_CH de_DE
113254225SpeterESLINKS= es_ES
114254225SpeterSVLINKS= sv_SE
115254225SpeterPLLINKS= pl_PL
116254225Speter
117254225SpeterFILES=	${CATALOGS}
118291794SbdreweryFILESDIR= ${SHAREDIR}/vi/catalog
119254225SpeterSYMLINKS=
120254225Speter.for l in ${NLLINKS}
121254225SpeterSYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-1
122254225SpeterSYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-15
123254244SpeterSYMLINKS+= dutch.UTF-8 ${FILESDIR}/$l.UTF-8
124254225Speter.endfor
125254225Speter.for l in ${ENLINKS}
126254225SpeterSYMLINKS+= english ${FILESDIR}/$l.ISO8859-1
127254225SpeterSYMLINKS+= english ${FILESDIR}/$l.ISO8859-15
128254225SpeterSYMLINKS+= english ${FILESDIR}/$l.US-ASCII
129254244SpeterSYMLINKS+= english ${FILESDIR}/$l.UTF-8
130254225Speter.endfor
131254225SpeterSYMLINKS+= english ${FILESDIR}/POSIX
132254225SpeterSYMLINKS+= english ${FILESDIR}/C
133254225Speter.for l in ${FRLINKS}
134254225SpeterSYMLINKS+= french ${FILESDIR}/$l.ISO8859-1
135254225SpeterSYMLINKS+= french ${FILESDIR}/$l.ISO8859-15
136254244SpeterSYMLINKS+= french.UTF-8 ${FILESDIR}/$l.UTF-8
137254225Speter.endfor
138254225Speter.for l in ${DELINKS}
139254225SpeterSYMLINKS+= german ${FILESDIR}/$l.ISO8859-1
140254225SpeterSYMLINKS+= german ${FILESDIR}/$l.ISO8859-15
141254244SpeterSYMLINKS+= german.UTF-8 ${FILESDIR}/$l.UTF-8
142254225Speter.endfor
143254225Speter.for l in ${ESLINKS}
144254225SpeterSYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-1
145254225SpeterSYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-15
146254244SpeterSYMLINKS+= spanish.UTF-8 ${FILESDIR}/$l.UTF-8
147254225Speter.endfor
148254225Speter.for l in ${SVLINKS}
149254225SpeterSYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-1
150254225SpeterSYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-15
151254244SpeterSYMLINKS+= swedish.UTF-8 ${FILESDIR}/$l.UTF-8
152254225Speter.endfor
153254225Speter.for l in ${PLLINKS}
154254225SpeterSYMLINKS+= polish ${FILESDIR}/$l.ISO8859-2
155254244SpeterSYMLINKS+= polish.UTF-8 ${FILESDIR}/$l.UTF-8
156254225Speter.endfor
157254225SpeterSYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GB18030
158254225SpeterSYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GBK
159254225SpeterSYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.eucCN
160254225Speter
161254225Speter.include <bsd.prog.mk>
162