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