xref: /freebsd-src/tools/tools/locale/Makefile (revision 83e8b13f15e954a3783befd0a322935ac6a1bd7b)
1# $FreeBSD$
2# See https://wiki.freebsd.org/LocaleNewApproach
3# Taken from FreeBSD svn [base]/user/edwin/locale/cldr
4#
5# needs:
6# devel/p5-Tie-IxHash
7#
8# Modified by John Marino to suit DragonFly needs
9#
10
11.if !defined(CLDRDIR)
12CLDRDIR!=	grep ^cldr etc/unicode.conf | cut -f 2 -d " "
13.endif
14.if !defined(UNIDATADIR)
15UNIDATADIR!=	grep ^unidata etc/unicode.conf | cut -f 2 -d " "
16.endif
17PASSON=		CLDRDIR="${CLDRDIR}" UNIDATADIR="${UNIDATADIR}"
18
19ETCDIR=		${.CURDIR}/etc
20
21KNOWN=		monetdef numericdef msgdef colldef ctypedef # timedef
22TYPES?=		${KNOWN}
23LOCALE_DESTDIR?=	/tmp/generated-locales/
24
25COLLATION_SPECIAL?= \
26	cs_CZ ISO8859-2 \
27	da_DK ISO8859-1 \
28	da_DK ISO8859-15 \
29	hr_HR ISO8859-2 \
30	hu_HU ISO8859-2 \
31	nb_NO ISO8859-1 \
32	nb_NO ISO8859-15 \
33	sk_SK ISO8859-2 \
34	sr_Latn_RS ISO8859-2 \
35	sr_Cyrl_RS ISO8859-5 \
36	zh_Hans_CN GB2312 \
37	zh_Hans_CN eucCN \
38	zh_Hant_TW Big5 \
39	zh_Hans_CN GB18030 \
40	zh_Hans_CN GBK \
41	ja_JP eucJP \
42	nn_NO ISO8859-15 \
43	nn_NO ISO8859-1
44
45.for area enc in ${COLLATION_SPECIAL}
46COLLATIONS_SPECIAL_ENV+=	${area}.${enc}
47.endfor
48PASSON+=	COLLATIONS_SPECIAL="${COLLATIONS_SPECIAL_ENV}"
49
50.if defined(LC)
51LC:=	--lc=${LC}
52.endif
53
54all:
55	cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.UTF-8.src
56.for t in ${TYPES}
57.  if ${KNOWN:M${t}}
58	test -d ${t} || mkdir ${t}
59	make build-${t}
60.  endif
61.endfor
62	@echo ""
63	@find . -name *failed
64
65.for t in ${TYPES}
66install: install-${t}
67install-${t}:
68.  if ${KNOWN:M${t}}
69	rm -rf ${.CURDIR}/${t}.draft
70	rm -rf ${.CURDIR}/../../../share/${t}
71	mv ${.CURDIR}/${t} ${.CURDIR}/../../../share/${t}
72.  endif
73.endfor
74
75post-install:
76.for t in ${TYPES}
77.  if ${KNOWN:M${t}}
78	(cd ${.CURDIR}/../../../share/${t} && \
79		make && make install && make clean)
80.  endif
81.endfor
82
83.for t in ${TYPES}
84gen-${t}:
85	mkdir -p ${t} ${t}.draft
86	perl -I tools tools/cldr2def.pl \
87		--cldr=$$(realpath ${CLDRDIR}) \
88		--unidata=$$(realpath ${UNIDATADIR}) \
89		--etc=$$(realpath ${ETCDIR}) \
90		--type=${t} ${LC}
91
92build-${t}: gen-${t}
93	env ${PASSON} tools/finalize ${t}
94.endfor
95
96gen-ctypedef:	transfer-rollup
97static-colldef: gen-colldef
98build-colldef:	static-colldef
99
100static-colldef:
101.for area enc in ${COLLATION_SPECIAL}
102	awk -f tools/extract-colldef.awk ${CLDRDIR}/posix/${area}.${enc}.src > colldef.draft/${area}.${enc}.src
103.endfor
104
105transfer-rollup:
106	cp ${ETCDIR}/common.UTF-8.src ${CLDRDIR}/posix/xx_Comm_US.UTF-8.src
107
108rollup:
109	perl -I tools tools/utf8-rollup.pl \
110		--cldr=$$(realpath ${CLDRDIR}) \
111		--etc=$$(realpath ${ETCDIR})
112
113clean:
114.for t in ${TYPES}
115	rm -rf ${t} ${t}.draft
116.endfor
117
118BASE_LOCALES_OF_INTEREST?= \
119	af_ZA am_ET ar_AE ar_EG ar_JO ar_MA ar_QA ar_SA \
120	be_BY bg_BG ca_AD ca_ES ca_FR ca_IT \
121	cs_CZ da_DK de_AT de_CH de_DE el_GR en_AU en_CA \
122	en_GB en_HK en_IE en_NZ en_PH en_SG en_US en_ZA \
123	es_AR es_CR es_ES es_MX et_EE eu_ES fi_FI fr_BE \
124	fr_CA fr_CH fr_FR he_IL hi_IN hr_HR hu_HU hy_AM \
125	is_IS it_CH it_IT ja_JP ko_KR lt_LT lv_LV \
126	nb_NO nl_BE nl_NL nn_NO pl_PL pt_BR pt_PT ro_RO \
127	ru_RU se_FI se_NO sk_SK sl_SI sv_FI sv_SE tr_TR \
128	uk_UA \
129	kk_KZ mn_MN sr_Cyrl_RS sr_Latn_RS \
130	zh_Hans_CN zh_Hant_HK zh_Hant_TW \
131	bn_IN gu_IN or_IN ta_IN te_IN kn_IN ml_IN si_LK \
132	th_TH lo_LA bo_IN my_MM pa_Guru_IN ka_GE chr_US \
133	km_KH shi_Tfng_MA ii_CN vai_Vaii_LR vi_VN
134
135ENCODINGS=	Big5 \
136		CP1251 \
137		CP866 \
138		CP949 \
139		eucCN \
140		eucJP \
141		eucKR \
142		GB18030 \
143		GB2312 \
144		GBK \
145		ISO8859-1 \
146		ISO8859-13 \
147		ISO8859-15 \
148		ISO8859-2 \
149		ISO8859-5 \
150		ISO8859-7 \
151		ISO8859-9 \
152		KOI8-R \
153		KOI8-U \
154		SJIS \
155		US-ASCII \
156		UTF-8 \
157
158
159POSIX:
160.if exists (${CLDRDIR}/tools/java/cldr.jar)
161	mkdir -p ${CLDRDIR}/posix
162.  for area in ${BASE_LOCALES_OF_INTEREST}
163.    if !exists(${CLDRDIR}/posix/${area}.UTF-8.src)
164	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
165		org.unicode.cldr.posix.GeneratePOSIX \
166		-d ${CLDRDIR}/posix -m ${area} -c UTF-8
167.    endif
168.  endfor
169.  for area encoding in ${COLLATION_SPECIAL}
170.    if !exists(${CLDRDIR}/posix/${area}.${encoding}.src)
171	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
172		org.unicode.cldr.posix.GeneratePOSIX \
173		-d ${CLDRDIR}/posix -m ${area} -c ${encoding}
174.    endif
175.  endfor
176.  for enc in ${ENCODINGS}
177.  if !exists(${CLDRDIR}/posix/${enc}.cm)
178	java -DCLDR_DIR=${CLDRDIR:Q} -jar ${CLDRDIR}/tools/java/cldr.jar \
179		org.unicode.cldr.posix.GenerateCharmap \
180		-d ${CLDRDIR}/posix -c ${enc}
181.  endif
182.  endfor
183.else
184	@echo "Please install CLDR toolset for the desired release"
185	@echo "It should go at ${CLDRDIR}/tools"
186.endif
187
188clean-POSIX:
189	rm -f ${CLDRDIR}/posix/*
190