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
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.
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
)
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
44 # Unfortunately, we have a chicken and an egg problem. libavl is becoming
45 # public, which means that all of its symbols are in a version that the build
46 # machine doesn't have and traditionally there has been no libavl compilation
47 # symlink. Therefore, because we know that we only support building on illumos,
48 # we regrettably have to link explicitly against the full library path. Sorry.
50 NATIVELDLIBS
+= /usr
/lib
/libavl.so
.1
53 CLEANFILES
= $(NOBJS
) $(OBJS
) parser.tab.c parser.tab.h
56 8859-1.cm
8859-2.cm
8859-3.cm
8859-4.cm \
57 8859-5.cm
8859-5.cm
8859-6.cm
8859-7.cm \
58 8859-8.cm
8859-9.cm
8859-9.cm
8859-10.cm \
59 8859-11.cm
8859-13.cm
8859-14.cm
8859-15.cm \
62 CLOBBERFILES
= $(PROG
) $(NPROG
) $(POFILE
) \
65 PIFILES
= $(OBJS
:%.o
=%.i
)
66 POFILE
= localedef_cmd.po
71 en_AU en_CA en_GB en_NZ en_US \
72 es_AR es_BO es_CL es_CO es_EC es_ES es_GT es_MX es_NI es_PA \
73 es_PE es_SV es_UY es_VE \
99 ISO8859_11_LOCALES
= \
102 ISO8859_13_LOCALES
= \
106 ISO8859_15_LOCALES
= \
126 # All new locales should be in UTF-8 form.
130 ar_AE ar_BH ar_DZ ar_EG ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA \
131 ar_OM ar_QA ar_SA ar_TN ar_YE \
142 de_AT de_BE de_CH de_DE de_LI de_LU \
144 en_AU en_BW en_BZ en_CA en_GB en_HK en_IE en_IN en_JM en_MH \
145 en_MT en_NA en_NZ en_PH en_PK en_SG en_TT en_US en_ZA en_ZW \
146 es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GQ es_GT \
147 es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY \
152 fr_BE fr_CA fr_CF fr_CH fr_FR fr_GN fr_LU fr_MC fr_MG fr_ML \
187 pt_BR pt_GW pt_MZ pt_PT \
205 zh_CN zh_HK zh_MO zh_SG zh_TW
207 UTF8SRCS
= $(UTF_8_LOCALES
:%=data
/%.UTF-8.src
)
210 $(ISO8859_1_LOCALES
:%=%.ISO8859-1
) \
211 $(ISO8859_2_LOCALES
:%=%.ISO8859-2
) \
212 $(ISO8859_5_LOCALES
:%=%.ISO8859-5
) \
213 $(ISO8859_6_LOCALES
:%=%.ISO8859-6
) \
214 $(ISO8859_7_LOCALES
:%=%.ISO8859-7
) \
215 $(ISO8859_9_LOCALES
:%=%.ISO8859-9
) \
216 $(ISO8859_11_LOCALES
:%=%.ISO8859-11
) \
217 $(ISO8859_13_LOCALES
:%=%.ISO8859-13
) \
218 $(ISO8859_15_LOCALES
:%=%.ISO8859-15
) \
219 $(KOI8_R_LOCALES
:%=%.KOI8-R
) \
220 $(GB18030_LOCALES
:%=%.GB18030
) \
221 $(UTF_8_LOCALES
:%=%.UTF-8
)
223 LOCDIRS
= $(LOCNAMES
:%=locale
/%)
225 STAMPFILES
= $(LOCDIRS
:%=%/stamp
)
228 $(LOCDIRS
:%=%/LC_COLLATE
) \
229 $(LOCDIRS
:%=%/LC_CTYPE
) \
230 $(LOCDIRS
:%=%/LC_MESSAGES
) \
231 $(LOCDIRS
:%=%/LC_MONETARY
) \
232 $(LOCDIRS
:%=%/LC_NUMERIC
) \
233 $(LOCDIRS
:%=%/LC_TIME
)
235 DATA
= $(CATDIRS
:%=%/LCL_DATA
)
237 DCOLL
= LC_COLLATE
/LCL_DATA
238 DCTYPE
= LC_CTYPE
/LCL_DATA
239 DMSGS
= LC_MESSAGES
/LCL_DATA
240 DMON
= LC_MONETARY
/LCL_DATA
241 DNUM
= LC_NUMERIC
/LCL_DATA
242 DTIME
= LC_TIME
/LCL_DATA
244 ROOTLOCDIRS
= $(LOCDIRS
:%=$(ROOTLIB
)/%)
245 ROOTCATDIRS
= $(CATDIRS
:%=$(ROOTLIB
)/%)
246 ROOTDATA
= $(DATA
:%=$(ROOTLIB
)/%)
248 $(ROOTDATA
) := FILEMODE
=0444
252 install: all $(ROOTPROG
) $(ROOTDATA
)
258 $(NATIVECC
) $(NATIVE_CFLAGS
) $(NATIVE_CPPFLAGS
) -o
$@
-c
$<
261 $(NPROG
): $(NDIR
) .WAIT
$(NOBJS
)
262 $(LINK.c
) $(NOBJS
) -o
$@
$(NATIVELDLIBS
)
266 $(LINK.c
) $(OBJS
) -o
$@
$(LDLIBS
)
269 $(OBJS
) $(NOBJS
): parser.tab.h
271 parser.tab.c parser.tab.h
: parser.y
$(HDRS
)
272 $(YACC
) $(YFLAGS
) parser.y
275 $(LINT.c
) $(CPPFLAGS
) $(SRCS
)
282 $(RM
) $(CLOBBERFILES
)
286 $(POFILE
): $(PIFILES
)
289 $(XGETTEXT
) -s
$(PIFILES
)
290 $(SED
) -e
'/domain/d' messages.po
> $@
291 $(RM
) $(PIFILES
) messages.po
293 locale
$(ROOTLOCDIRS
) $(ROOTCATDIRS
):
296 $(ROOTBIN
)/%: $(ROOTBIN
) %
299 # Strip LC_CTYPE contents for UTF-8 locales and replace them
300 # with UTF-8.ct we compiled
301 locale
/%.UTF-8
/stamp
: data
/%.UTF-8.src UTF-8.cm \
302 UTF-8.ct locale
$(NPROG
)
303 $(SED
) '/^LC_CTYPE/,/^END LC_CTYPE/d;$$r UTF-8.ct' $< | \
304 .
/$(NPROG
) -U
-w data
/widths.txt
-f UTF-8.cm
$(@D
)
306 # Convert EURO_SIGN to CURRENCY_SIGN for the ISO8859-1 locales
307 locale
/%.ISO8859-1
/stamp
: data
/%.UTF-8.src
8859-1.cm locale
$(NPROG
)
308 sed
's/EURO_SIGN/CURRENCY_SIGN/' $< > $<.tmp
309 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$<.tmp
-f
8859-1.cm
$(@D
)
312 locale
/%.ISO8859-2
/stamp
: data
/%.UTF-8.src
8859-2.cm locale
$(NPROG
)
313 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-2.cm
$(@D
)
315 locale
/%.ISO8859-5
/stamp
: data
/%.UTF-8.src
8859-5.cm locale
$(NPROG
)
316 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-5.cm
$(@D
)
318 locale
/%.ISO8859-7
/stamp
: data
/%.UTF-8.src
8859-7.cm locale
$(NPROG
)
319 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-7.cm
$(@D
)
321 locale
/%.ISO8859-6
/stamp
: data
/%.UTF-8.src
8859-6.cm locale
$(NPROG
)
322 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-6.cm
$(@D
)
324 locale
/%.ISO8859-9
/stamp
: data
/%.UTF-8.src
8859-9.cm locale
$(NPROG
)
325 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-9.cm
$(@D
)
327 locale
/%.ISO8859-11
/stamp
: data
/%.UTF-8.src
8859-11.cm locale
$(NPROG
)
328 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-11.cm
$(@D
)
330 locale
/%.ISO8859-13
/stamp
: data
/%.UTF-8.src
8859-13.cm locale
$(NPROG
)
331 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-13.cm
$(@D
)
333 locale
/%.ISO8859-15
/stamp
: data
/%.UTF-8.src
8859-15.cm locale
$(NPROG
)
334 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f
8859-15.cm
$(@D
)
336 locale
/%.KOI8-R
/stamp
: data
/%.UTF-8.src KOI8-R.cm locale
$(NPROG
)
337 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f KOI8-R.cm
$(@D
)
339 locale
/%.GB18030
/stamp
: data
/%.UTF-8.src GB18030.cm locale
$(NPROG
)
340 .
/$(NPROG
) -U
-w data
/widths.txt
-i
$< -f GB18030.cm
$(@D
)
343 locale
/%/$(DCOLL
): locale
/%/stamp
344 locale
/%/$(DCTYPE
): locale
/%/stamp
345 locale
/%/$(DMSGS
): locale
/%/stamp
346 locale
/%/$(DMON
): locale
/%/stamp
347 locale
/%/$(DNUM
): locale
/%/stamp
348 locale
/%/$(DTIME
): locale
/%/stamp
350 UTF-8.cm
: data
/UTF-8.cm
351 $(LN
) -sf data
/UTF-8.cm
$@
353 UTF-8.ct
: $(UTF8SRCS
)
354 $(SH
) data
/ctype.sh
$(UTF8SRCS
) > $@
356 GB18030.cm
: data
/GB18030.cm
357 $(LN
) -sf data
/GB18030.cm
$@
359 %.cm
: data
/%.TXT UTF-8.cm
361 $(PERL
) data
/convert_map.pl
$< > $@
363 $(ROOTDATA
): $(ROOTLOCDIRS
) $(ROOTCATDIRS
) $(DATA
)
365 $(CP
) $(@
:$(ROOTLIB
)/%=%) $@