7492 incremental build fails in $SRC/cmd/localedef
[unleashed.git] / usr / src / cmd / localedef / Makefile
blobd466d99275ebae5e736e32be0e56ecf13db1a078
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
13 # Copyright 2011 Nexenta Systems, Inc. All rights reserved.
14 # Copyright 2011 EveryCity Ltd. All rights reserved.
15 # Copyright 2013 DEY Storage Systems, Inc.
16 # Copyright 2015 Joyent, Inc.
19 PROG=localedef
21 NDIR=native
22 NPROG=$(NDIR)/localedef
24 include ../Makefile.cmd
26 OBJS = charmap.o collate.o ctype.o messages.o monetary.o numeric.o time.o \
27 scanner.o localedef.o wide.o parser.tab.o
28 NOBJS = $(OBJS:%.o=native/%.o) native/avl.o native/mkdirp.o
30 HDRS = localedef.h
32 SRCS = $(OBJS:%.o=%.c)
34 CPPFLAGS += -I $(SRC)/lib/libc/port/locale
35 NATIVE_CPPFLAGS += -I $(SRC)/lib/libc/port/locale
36 CERRWARN += -_gcc=-Wno-char-subscripts
37 CERRWARN += -_gcc=-Wno-uninitialized
38 CERRWARN += -_gcc=-Wno-unused-label
39 LDLIBS += -lgen
40 LDLIBS += -lavl
42 NATIVELDLIBS=
44 YFLAGS = -d -b parser
46 CLEANFILES = $(NOBJS) $(OBJS) parser.tab.c parser.tab.h
47 CLEANFILES += \
48 UTF-8.cm UTF-8.ct \
49 8859-1.cm 8859-2.cm 8859-3.cm 8859-4.cm \
50 8859-5.cm 8859-5.cm 8859-6.cm 8859-7.cm \
51 8859-8.cm 8859-9.cm 8859-9.cm 8859-10.cm \
52 8859-11.cm 8859-13.cm 8859-14.cm 8859-15.cm \
53 8859-16.cm \
54 KOI8-R.cm
55 CLOBBERFILES = $(PROG) $(NPROG) $(POFILE) \
56 GB18030.cm UTF-8.cm
58 PIFILES = $(OBJS:%.o=%.i)
59 POFILE = localedef_cmd.po
61 ISO8859_1_LOCALES = \
62 da_DK \
63 de_CH de_DE \
64 en_AU en_CA en_GB en_NZ en_US \
65 es_AR es_BO es_CL es_CO es_EC es_ES es_GT es_MX es_NI es_PA \
66 es_PE es_SV es_UY es_VE \
67 fr_CA fr_CH fr_FR \
68 is_IS \
69 it_CH it_IT \
70 sv_SE
72 ISO8859_2_LOCALES = \
73 cs_CZ \
74 hr_HR \
75 hu_HU \
76 pl_PL \
77 sq_AL
79 ISO8859_5_LOCALES = \
80 bg_BG \
81 mk_MK \
82 ru_RU
84 ISO8859_6_LOCALES =
86 ISO8859_7_LOCALES = \
87 el_GR
89 ISO8859_9_LOCALES = \
90 tr_TR
92 ISO8859_11_LOCALES = \
93 th_TH
95 ISO8859_13_LOCALES = \
96 lt_LT \
97 lv_LV
99 ISO8859_15_LOCALES = \
100 ca_ES \
101 da_DK \
102 de_AT de_DE \
103 en_GB en_IE en_US \
104 es_ES \
105 fi_FI \
106 fr_BE fr_FR \
107 it_IT \
108 nl_BE nl_NL \
109 pt_PT \
110 sv_FI sv_SE
112 KOI8_R_LOCALES = \
113 ru_RU
115 GB18030_LOCALES = \
116 zh_CN
119 # All new locales should be in UTF-8 form.
121 UTF_8_LOCALES = \
122 af_ZA \
123 ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA \
124 ar_OM ar_QA ar_SA ar_TN ar_YE \
125 as_IN \
126 az_AZ \
127 be_BY \
128 bg_BG \
129 bn_BD bn_IN \
130 bo_CN bo_IN \
131 bs_BA \
132 ca_ES \
133 cs_CZ \
134 da_DK \
135 de_AT de_BE de_CH de_DE de_LI de_LU \
136 el_CY el_GR \
137 en_AU en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH \
138 en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_ZA en_ZW \
139 es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GQ es_GT \
140 es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY \
141 es_VE \
142 et_EE \
143 fi_FI \
144 fil_PH \
145 fr_BE fr_CA fr_CF fr_CH fr_FR fr_GN fr_LU fr_MC fr_MG fr_ML \
146 fr_NE fr_SN \
147 ga_IE \
148 gu_IN \
149 he_IL \
150 hi_IN \
151 hr_HR \
152 hu_HU \
153 hy_AM \
154 id_ID \
155 ii_CN \
156 is_IS \
157 it_CH it_IT \
158 ja_JP \
159 ka_GE \
160 kk_KZ \
161 km_KH \
162 kn_IN \
163 ko_KR \
164 kok_IN \
165 lt_LT \
166 lv_LV \
167 mk_MK \
168 ml_IN \
169 mn_CN mn_MN \
170 mr_IN \
171 ms_MY \
172 mt_MT \
173 ne_IN ne_NP \
174 nl_BE nl_NL \
175 nb_NO \
176 nn_NO \
177 or_IN \
178 pa_IN pa_PK \
179 pl_PL \
180 pt_BR pt_GW pt_MZ pt_PT \
181 ro_MD ro_RO \
182 ru_MD ru_RU ru_UA \
183 sa_IN \
184 si_LK \
185 sk_SK \
186 sl_SI \
187 sq_AL \
188 sr_BA sr_ME sr_RS \
189 sv_FI sv_SE \
190 ta_IN ta_LK \
191 te_IN \
192 th_TH \
193 tr_TR \
194 uk_UA \
195 ug_CN \
196 ur_IN ur_PK \
197 vi_VN \
198 zh_CN zh_HK zh_MO zh_SG zh_TW \
199 zz_AA
201 UTF8SRCS = $(UTF_8_LOCALES:%=data/%.UTF-8.src)
203 LOCNAMES = \
204 $(ISO8859_1_LOCALES:%=%.ISO8859-1) \
205 $(ISO8859_2_LOCALES:%=%.ISO8859-2) \
206 $(ISO8859_5_LOCALES:%=%.ISO8859-5) \
207 $(ISO8859_6_LOCALES:%=%.ISO8859-6) \
208 $(ISO8859_7_LOCALES:%=%.ISO8859-7) \
209 $(ISO8859_9_LOCALES:%=%.ISO8859-9) \
210 $(ISO8859_11_LOCALES:%=%.ISO8859-11) \
211 $(ISO8859_13_LOCALES:%=%.ISO8859-13) \
212 $(ISO8859_15_LOCALES:%=%.ISO8859-15) \
213 $(KOI8_R_LOCALES:%=%.KOI8-R) \
214 $(GB18030_LOCALES:%=%.GB18030) \
215 $(UTF_8_LOCALES:%=%.UTF-8)
217 LOCDIRS = $(LOCNAMES:%=locale/%)
219 STAMPFILES = $(LOCDIRS:%=%/stamp)
221 CATDIRS = \
222 $(LOCDIRS:%=%/LC_COLLATE) \
223 $(LOCDIRS:%=%/LC_CTYPE) \
224 $(LOCDIRS:%=%/LC_MESSAGES) \
225 $(LOCDIRS:%=%/LC_MONETARY) \
226 $(LOCDIRS:%=%/LC_NUMERIC) \
227 $(LOCDIRS:%=%/LC_TIME)
229 DATA = $(CATDIRS:%=%/LCL_DATA)
231 DCOLL = LC_COLLATE/LCL_DATA
232 DCTYPE = LC_CTYPE/LCL_DATA
233 DMSGS = LC_MESSAGES/LCL_DATA
234 DMON = LC_MONETARY/LCL_DATA
235 DNUM = LC_NUMERIC/LCL_DATA
236 DTIME = LC_TIME/LCL_DATA
238 ROOTLOCDIRS = $(LOCDIRS:%=$(ROOTLIB)/%)
239 ROOTCATDIRS = $(CATDIRS:%=$(ROOTLIB)/%)
240 ROOTDATA = $(DATA:%=$(ROOTLIB)/%)
243 # This is a list of locales that happen to have translations for them
244 # present in the gate.
246 TRANSDIR = translations
247 TRANSLOCS = \
248 zz_AA.UTF-8
249 TRANSMOS = $(TRANSLOCS:%=$(TRANSDIR)/%.mo)
251 OSTMOFILE = LC_MESSAGES/SUNW_OST_OSLIB.mo
253 PRIVTRANSLOCS = \
254 zz_AA.UTF-8
255 PRIVFILE = LC_MESSAGES/priv_names
257 ROOTTRANSLATIONS = $(TRANSLOCS:%=$(ROOTLIB)/locale/%/$(OSTMOFILE))
258 ROOTPRIVTRANS = $(PRIVTRANSLOCS:%=$(ROOTLIB)/locale/%/$(PRIVFILE))
260 $(ROOTDATA) := FILEMODE=0444
262 all: $(PROG) $(DATA)
264 translate: $(ROOTTRANSLATIONS) $(ROOTPRIVTRANS)
266 install: all $(ROOTPROG) $(ROOTDATA) $(ROOTTRANSLATIONS) $(ROOTPRIVTRANS)
268 $(NDIR):
269 -@mkdir -p $@
271 $(NDIR)/%.o: %.c
272 $(NATIVECC) $(NATIVE_CFLAGS) $(NATIVE_CPPFLAGS) -o $@ -c $<
274 $(NDIR)/avl.o : ../../common/avl/avl.c
275 $(NATIVECC) $(NATIVE_CFLAGS) $(NATIVE_CPPFLAGS) -o $@ -c \
276 ../../common/avl/avl.c
278 $(NDIR)/mkdirp.o : ../../lib/libgen/common/mkdirp.c
279 $(NATIVECC) $(NATIVE_CFLAGS) $(NATIVE_CPPFLAGS) -o $@ -c \
280 ../../lib/libgen/common/mkdirp.c
282 $(NPROG): $(NDIR) .WAIT $(NOBJS)
283 $(LINK.c) $(NOBJS) -o $@ $(NATIVELDLIBS)
284 $(POST_PROCESS)
286 $(PROG): $(OBJS)
287 $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
288 $(POST_PROCESS)
290 $(OBJS) $(NOBJS): parser.tab.h
292 parser.tab.c parser.tab.h: parser.y $(HDRS)
293 $(YACC) $(YFLAGS) parser.y
295 lint: $(SRCS)
296 $(LINT.c) $(CPPFLAGS) $(SRCS)
298 clean:
299 $(RM) $(CLEANFILES)
300 $(RM) $(STAMPFILES)
302 clobber: clean
303 $(RM) $(CLOBBERFILES)
304 $(RM) -r $(LOCDIRS)
305 $(RM) -r $(NDIR)
306 $(RM) $(TRANSMOS)
308 $(POFILE): $(PIFILES)
309 $(RM) $@
310 $(RM) messages.po
311 $(XGETTEXT) -s $(PIFILES)
312 $(SED) -e '/domain/d' messages.po > $@
313 $(RM) $(PIFILES) messages.po
315 locale $(ROOTLOCDIRS) $(ROOTCATDIRS):
316 $(INS.dir)
318 $(ROOTBIN)/%: $(ROOTBIN) %
319 $(INS.file)
321 # Strip LC_CTYPE contents for UTF-8 locales and replace them
322 # with UTF-8.ct we compiled
323 locale/%.UTF-8/stamp: data/%.UTF-8.src UTF-8.cm \
324 UTF-8.ct locale $(NPROG)
325 $(SED) '/^LC_CTYPE/,/^END LC_CTYPE/d;$$r UTF-8.ct' $< | \
326 ./$(NPROG) -U -w data/widths.txt -f UTF-8.cm $(@D)
327 $(TOUCH) $@
328 # Convert EURO_SIGN to CURRENCY_SIGN for the ISO8859-1 locales
329 locale/%.ISO8859-1/stamp: data/%.UTF-8.src 8859-1.cm locale $(NPROG)
330 sed 's/EURO_SIGN/CURRENCY_SIGN/' $< > $<.tmp
331 ./$(NPROG) -U -w data/widths.txt -i $<.tmp -f 8859-1.cm $(@D)
332 rm -f $<.tmp
333 $(TOUCH) $@
334 locale/%.ISO8859-2/stamp: data/%.UTF-8.src 8859-2.cm locale $(NPROG)
335 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-2.cm $(@D)
336 $(TOUCH) $@
337 locale/%.ISO8859-5/stamp: data/%.UTF-8.src 8859-5.cm locale $(NPROG)
338 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-5.cm $(@D)
339 $(TOUCH) $@
340 locale/%.ISO8859-7/stamp: data/%.UTF-8.src 8859-7.cm locale $(NPROG)
341 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-7.cm $(@D)
342 $(TOUCH) $@
343 locale/%.ISO8859-6/stamp: data/%.UTF-8.src 8859-6.cm locale $(NPROG)
344 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-6.cm $(@D)
345 $(TOUCH) $@
346 locale/%.ISO8859-9/stamp: data/%.UTF-8.src 8859-9.cm locale $(NPROG)
347 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-9.cm $(@D)
348 $(TOUCH) $@
349 locale/%.ISO8859-11/stamp: data/%.UTF-8.src 8859-11.cm locale $(NPROG)
350 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-11.cm $(@D)
351 $(TOUCH) $@
352 locale/%.ISO8859-13/stamp: data/%.UTF-8.src 8859-13.cm locale $(NPROG)
353 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-13.cm $(@D)
354 $(TOUCH) $@
355 locale/%.ISO8859-15/stamp: data/%.UTF-8.src 8859-15.cm locale $(NPROG)
356 ./$(NPROG) -U -w data/widths.txt -i $< -f 8859-15.cm $(@D)
357 $(TOUCH) $@
358 locale/%.KOI8-R/stamp: data/%.UTF-8.src KOI8-R.cm locale $(NPROG)
359 ./$(NPROG) -U -w data/widths.txt -i $< -f KOI8-R.cm $(@D)
360 $(TOUCH) $@
361 locale/%.GB18030/stamp: data/%.UTF-8.src GB18030.cm locale $(NPROG)
362 ./$(NPROG) -U -w data/widths.txt -i $< -f GB18030.cm $(@D)
363 $(TOUCH) $@
365 locale/%/$(DCOLL): locale/%/stamp
366 locale/%/$(DCTYPE): locale/%/stamp
367 locale/%/$(DMSGS): locale/%/stamp
368 locale/%/$(DMON): locale/%/stamp
369 locale/%/$(DNUM): locale/%/stamp
370 locale/%/$(DTIME): locale/%/stamp
372 UTF-8.cm: data/UTF-8.cm
373 $(LN) -sf data/UTF-8.cm $@
375 UTF-8.ct: $(UTF8SRCS)
376 $(SH) data/ctype.sh $(UTF8SRCS) > $@
378 GB18030.cm: data/GB18030.cm
379 $(LN) -sf data/GB18030.cm $@
381 %.cm: data/%.TXT UTF-8.cm
382 $(RM) $@
383 $(PERL) data/convert_map.pl $< > $@
385 $(ROOTDATA): $(ROOTLOCDIRS) $(ROOTCATDIRS) $(DATA)
386 $(RM) $@
387 $(CP) $(@:$(ROOTLIB)/%=%) $@
388 $(CHMOD) 0444 $@
390 %.mo: %.po
391 $(MSGFMT) -o $@ $<
393 $(ROOTLIB)/locale/%/$(OSTMOFILE): $(TRANSDIR)/%.mo
394 $(INS.rename)
395 $(CHMOD) 0444 $@
397 $(ROOTLIB)/locale/%/$(PRIVFILE): $(TRANSDIR)/%.priv
398 $(INS.rename)
399 $(CHMOD) 0444 $@