]>
Commit | Line | Data |
---|---|---|
5d003fb2 | 1 | # Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. |
f4017d20 UD |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
5 | # modify it under the terms of the GNU Library General Public License as | |
6 | # published by the Free Software Foundation; either version 2 of the | |
7 | # License, or (at your option) any later version. | |
8 | ||
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | # Library General Public License for more details. | |
13 | ||
14 | # You should have received a copy of the GNU Library General Public | |
15 | # License along with the GNU C Library; see the file COPYING.LIB. If | |
16 | # not, write to the Free Software Foundation, Inc., | |
17 | # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
18 | ||
19 | # | |
20 | # Makefile for iconv data and code. | |
21 | # | |
22 | subdir := iconvdata | |
23 | ||
24 | # Names of all the shared objects which implement the transformations. | |
9b26f5c4 UD |
25 | modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \ |
26 | ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10 \ | |
c090aa15 | 27 | ISO8859-11 ISO8859-13 ISO8859-14 ISO8859-15 \ |
30373ded UD |
28 | T.61 ISO_6937 SJIS KOI-8 HP-ROMAN8 EBCDIC-AT-DE \ |
29 | EBCDIC-AT-DE-A EBCDIC-CA-FR EUC-KR UHC JOHAB libJIS libKSC \ | |
30 | BIG5 EUC-JP libGB EUC-CN libCNS EUC-TW ISO646 EBCDIC-DK-NO \ | |
31 | EBCDIC-DK-NO-A EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE \ | |
32 | EBCDIC-FI-SE-A EBCDIC-FR EBCDIC-IS-FRISS EBCDIC-IT EBCDIC-PT \ | |
b48abe3c | 33 | EBCDIC-UK EBCDIC-US IBM037 IBM038 IBM274 IBM275 IBM423 \ |
f4a20e28 | 34 | IBM500 IBM870 IBM871 IBM891 IBM903 IBM904 IBM905 IBM1047 \ |
4510507b | 35 | IBM874 CP737 CP775 ISO-2022-KR \ |
fed8f7f7 | 36 | KOI8-R LATIN-GREEK LATIN-GREEK-1 IBM256 IBM273 IBM277 IBM278 \ |
b48abe3c UD |
37 | IBM280 IBM281 IBM284 IBM285 IBM290 IBM297 IBM420 IBM424 \ |
38 | IBM437 IBM850 IBM851 IBM852 IBM855 IBM857 IBM860 IBM861 \ | |
39 | IBM862 IBM863 IBM864 IBM865 IBM868 IBM869 IBM875 IBM880 \ | |
88fd9830 | 40 | IBM866 CP1258 \ |
b48abe3c | 41 | IBM918 IBM1004 IBM1026 CP1250 CP1251 CP1252 CP1253 CP1254 \ |
04795ad9 | 42 | CP1255 CP1256 CP1257 ISO-2022-JP MACINTOSH IEC_P27-1 BALTIC \ |
37d84717 UD |
43 | ASMO_449 ANSI_X3.110 CSN_369103 CWI DEC-MCS ECMA-CYRILLIC \ |
44 | GOST_19768-74 GREEK-CCITT GREEK7 GREEK7-OLD INIS INIS-8 \ | |
45 | INIS-CYRILLIC ISO_6937-2 ISO_2033 ISO_5427 ISO_5427-EXT \ | |
0f6052a8 | 46 | ISO_5428 ISO_10367-BOX MAC-IS MAC-UK NATS-DANO NATS-SEFI \ |
f8afba91 | 47 | SAMI-WS2 ISO-IR-197 TIS-620 KOI8-U |
f4017d20 | 48 | |
fed8f7f7 | 49 | modules.so := $(addsuffix .so, $(modules)) |
f4017d20 | 50 | |
04be94a8 UD |
51 | include ../Makeconfig |
52 | ||
04be94a8 | 53 | libJIS-routines := jis0201 jis0208 jis0212 |
a44d2393 | 54 | libKSC-routines := ksc5601 |
40b4c81d | 55 | libGB-routines := gb2312 |
2b474353 | 56 | libCNS-routines := cns11643l1 cns11643 |
04be94a8 | 57 | |
118bad87 | 58 | LDFLAGS-EUC-KR.so = -Wl,-rpath,'$$ORIGIN' |
e784ad6a | 59 | $(objpfx)EUC-KR.so: $(objpfx)libKSC.so |
118bad87 | 60 | LDFLAGS-JOHAB.so = -Wl,-rpath,'$$ORIGIN' |
e784ad6a | 61 | $(objpfx)JOHAB.so: $(objpfx)libKSC.so |
118bad87 | 62 | LDFLAGS-UHC.so = -Wl,-rpath,'$$ORIGIN' |
cab24c37 | 63 | $(objpfx)UHC.so: $(objpfx)libKSC.so |
118bad87 | 64 | LDFLAGS-EUC-JP.so = -Wl,-rpath,'$$ORIGIN' |
40b4c81d | 65 | $(objpfx)EUC-JP.so: $(objpfx)libJIS.so |
118bad87 | 66 | LDFLAGS-EUC-CN.so = -Wl,-rpath,'$$ORIGIN' |
40b4c81d | 67 | $(objpfx)EUC-CN.so: $(objpfx)libGB.so |
118bad87 | 68 | LDFLAGS-EUC-TW.so = -Wl,-rpath,'$$ORIGIN' |
2b474353 | 69 | $(objpfx)EUC-TW.so: $(objpfx)libCNS.so |
e784ad6a | 70 | |
118bad87 | 71 | LDFLAGS-ISO-2022-JP.so = -Wl,-rpath,'$$ORIGIN' |
918b9d72 | 72 | $(objpfx)ISO-2022-JP.so: $(objpfx)libJIS.so $(objpfx)libGB.so \ |
8babd571 | 73 | $(objpfx)libCNS.so $(objpfx)libKSC.so |
118bad87 | 74 | LDFLAGS-ISO-2022-KR.so = -Wl,-rpath,'$$ORIGIN' |
e3e0a182 | 75 | $(objpfx)ISO-2022-KR.so: $(objpfx)libKSC.so |
918b9d72 | 76 | |
cab24c37 UD |
77 | LDFLAGS-libJIS.so = -Wl,-soname,$(@F) |
78 | LDFLAGS-libKSC.so = -Wl,-soname,$(@F) | |
40b4c81d | 79 | LDFLAGS-libGB.so = -Wl,-soname,$(@F) |
2b474353 | 80 | LDFLAGS-libCNS.so = -Wl,-soname,$(@F) |
71bedb76 | 81 | |
118bad87 UD |
82 | distribute := gconv-modules extra-module.mk gap.awk gaptab.awk \ |
83 | gen-8bit.sh gen-8bit-gap.sh gen-8bit-gap-1.sh \ | |
b3ed8219 AS |
84 | TESTS $(filter-out testdata/CVS%, $(wildcard testdata/*)) \ |
85 | run-iconv-test.sh 8bit-generic.c 8bit-gap.c \ | |
118bad87 | 86 | ansi_x3.110.c asmo_449.c baltic.c big5.c cp737.c cp737.h \ |
4510507b | 87 | cp775.c cp775.h ibm874.c cns11643.c cns11643.h \ |
118bad87 | 88 | cns11643l1.c cns11643l1.h cp1250.c cp1251.c cp1252.c cp1253.c \ |
99179803 | 89 | cp1254.c cp1255.c cp1256.c cp1257.c cp1258.c \ |
118bad87 UD |
90 | csn_369103.c cwi.c dec-mcs.c ebcdic-at-de.c ebcdic-at-de-a.c \ |
91 | ebcdic-ca-fr.c ebcdic-dk-no.c ebcdic-dk-no-a.c ebcdic-es.c \ | |
92 | ebcdic-es-a.c ebcdic-es-s.c ebcdic-fr.c ebcdic-fi-se.c \ | |
93 | ebcdic-fi-se-a.c ebcdic-is-friss.c ebcdic-it.c ebcdic-pt.c \ | |
94 | ebcdic-uk.c ebcdic-us.c ecma-cyrillic.c euc-cn.c euc-jp.c \ | |
95 | euc-kr.c euc-tw.c gb2312.c gb2312.h gost_19768-74.c \ | |
96 | greek-ccitt.c greek7.c greek7-old.c hp-roman8.c ibm037.c \ | |
97 | ibm038.c ibm256.c ibm273.c ibm274.c ibm275.c ibm277.c \ | |
98 | ibm278.c ibm280.c ibm281.c ibm284.c ibm285.c ibm290.c \ | |
99 | ibm297.c ibm420.c ibm423.c ibm424.c ibm437.c ibm500.c \ | |
100 | ibm850.c ibm851.c ibm852.c ibm855.c ibm857.c ibm860.c \ | |
101 | ibm861.c ibm862.c ibm863.c ibm864.c ibm865.c ibm866.c \ | |
102 | ibm868.c ibm869.c ibm870.c ibm871.c ibm875.c ibm880.c \ | |
103 | ibm891.c ibm903.c ibm904.c ibm905.c ibm918.c ibm1004.c \ | |
104 | ibm1026.c ibm1047.c iec_p27-1.c inis.c inis-8.c \ | |
105 | inis-cyrillic.c iso-2022-jp.c iso-2022-kr.c iso646.c \ | |
b9b49b44 UD |
106 | iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c \ |
107 | iso8859-6.c iso8859-7.c iso8859-8.c iso8859-9.c iso8859-10.c \ | |
c090aa15 | 108 | iso8859-11.c iso8859-11.h iso8859-13.c iso8859-14.c \ |
118bad87 UD |
109 | iso8859-15.c iso_2033.c iso_5427-ext.c iso_5427.c iso_5428.c \ |
110 | iso_6937.c iso_6937-2.c iso_10367-box.c jis0201.c jis0201.h \ | |
111 | jis0208.c jis0208.h jis0212.c jis0212.h johab.c koi-8.c \ | |
112 | koi8-r.c ksc5601.c ksc5601.h latin-greek.c latin-greek-1.c \ | |
113 | macintosh.c mac-is.c mac-uk.c nats-dano.c nats-sefi.c sjis.c \ | |
f8afba91 | 114 | t.61.c uhc.c sami-ws2.c iso-ir-197.c tis-620.c koi8-u.c |
f4017d20 UD |
115 | |
116 | # We build the transformation modules only when we build shared libs. | |
117 | ifeq (yes,$(build-shared)) | |
118 | ||
f4017d20 | 119 | # Rule to generate the shared objects. |
118bad87 | 120 | charmaps = ../localedata/charmaps |
118bad87 | 121 | -include $(objpfx)iconv-rules |
f4017d20 UD |
122 | extra-modules-left := $(modules) |
123 | include extra-module.mk | |
124 | ||
125 | ||
126 | extra-objs += $(modules.so) | |
127 | install-others = $(addprefix $(inst_gconvdir)/, $(modules.so)) \ | |
128 | $(inst_gconvdir)/gconv-modules | |
129 | ||
130 | # If we have the localedata add-on available we can build the conversion | |
131 | # tables for numerous charsets. | |
b17277cf | 132 | |
118bad87 UD |
133 | gen-8bit-modules := iso8859-2 iso8859-3 iso8859-4 iso8859-6 iso8859-9 koi-8 \ |
134 | hp-roman8 ebcdic-at-de ebcdic-at-de-a ebcdic-ca-fr \ | |
135 | ebcdic-dk-no ebcdic-dk-no-a ebcdic-es ebcdic-es-a \ | |
136 | ebcdic-es-s ebcdic-fi-se ebcdic-fi-se-a ebcdic-fr \ | |
137 | ebcdic-is-friss ebcdic-it ebcdic-pt ebcdic-uk ebcdic-us \ | |
138 | ibm037 ibm038 ibm274 ibm275 ibm423 ibm500 ibm870 ibm871 \ | |
139 | ibm891 ibm903 ibm904 ibm905 ibm1047 | |
140 | ||
141 | gen-8bit-gap-modules := koi8-r latin-greek latin-greek-1 ibm256 ibm273 \ | |
142 | ibm277 ibm278 ibm280 ibm281 ibm284 ibm285 ibm290 \ | |
143 | ibm297 ibm420 ibm424 ibm437 ibm850 ibm851 ibm852 \ | |
144 | ibm855 ibm857 ibm860 ibm861 ibm862 ibm863 ibm864 \ | |
145 | ibm865 ibm868 ibm869 ibm875 ibm880 ibm918 ibm1004 \ | |
146 | ibm1026 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 \ | |
147 | cp1256 cp1257 ibm866 iso8859-5 iso8859-7 iso8859-8 \ | |
148 | iso8859-10 macintosh iec_p27-1 baltic asmo_449 \ | |
149 | csn_369103 cwi dec-mcs ecma-cyrillic gost_19768-74 \ | |
150 | greek-ccitt greek7 greek7-old inis inis-8 \ | |
151 | inis-cyrillic iso_2033 iso_5427 iso_5427-ext \ | |
152 | iso_5428 iso_10367-box mac-is nats-dano nats-sefi \ | |
0f6052a8 | 153 | iso8859-13 iso8859-14 iso8859-15 mac-uk sami-ws2 \ |
4510507b | 154 | iso-ir-197 cp1258 tis-620 koi8-u ibm874 |
118bad87 UD |
155 | |
156 | gen-special-modules := iso8859-7jp | |
157 | ||
158 | generated-modules := $(gen-8bit-modules) $(gen-8bit-gap-modules) \ | |
159 | $(gen-special-modules) | |
160 | ||
161 | generated = $(generated-modules:=.h) $(generated-modules:=.stmp) \ | |
162 | iconv-test.out iconv-rules | |
163 | ifdef objpfx | |
164 | generated += gconv-modules | |
165 | endif | |
166 | ||
167 | # Rules to generate the headers. | |
168 | export AWK | |
169 | ||
f4017d20 | 170 | define generate-8bit-table |
0111b224 | 171 | $(make-target-directory) |
b17277cf UD |
172 | $(SHELL) ./gen-8bit.sh $< > $(@:stmp=T) |
173 | $(move-if-change) $(@:stmp=T) $(@:stmp=h) | |
174 | touch $@ | |
04be94a8 UD |
175 | endef |
176 | ||
04be94a8 | 177 | define generate-8bit-gap-table |
0111b224 | 178 | $(make-target-directory) |
fed8f7f7 | 179 | $(SHELL) ./gen-8bit-gap.sh $< > $(@:stmp=T) |
b17277cf UD |
180 | $(move-if-change) $(@:stmp=T) $(@:stmp=h) |
181 | touch $@ | |
f4017d20 UD |
182 | endef |
183 | ||
04be94a8 | 184 | # The headers must be generated before the compilation. |
118bad87 | 185 | before-compile = $(addprefix $(objpfx),$(generated-modules:=.h)) |
04be94a8 | 186 | |
407a7d0e | 187 | ifndef avoid-generated |
118bad87 UD |
188 | $(objpfx)iconv-rules: Makefile |
189 | $(make-target-directory) | |
190 | { echo $(filter-out lib%, $(modules)); \ | |
191 | echo 8bit $(gen-8bit-modules); \ | |
192 | echo 8bit-gap $(gen-8bit-gap-modules); } | \ | |
193 | $(AWK) 'NR == 1 { \ | |
194 | for (i = 1; i <= NF; i++) \ | |
195 | printf "%s-routines := %s\n", $$i, tolower($$i); \ | |
196 | }; \ | |
197 | NR > 1 { \ | |
198 | for (i = 2; i <= NF; i++) { \ | |
199 | printf "$$(objpfx)%s.stmp: ", $$i; \ | |
200 | map = toupper($$i); \ | |
201 | sub(/^ISO8859/, "ISO-8859", map); \ | |
202 | if (map == "ISO_2033") map = map "-1983"; \ | |
203 | printf "$$(charmaps)/%s ", map; \ | |
204 | printf "gen-%s.sh\n", $$1; \ | |
205 | printf "\t$$(generate-%s-table)\n", $$1; \ | |
206 | } \ | |
207 | }' > $@.new | |
208 | mv -f $@.new $@ | |
407a7d0e | 209 | endif |
118bad87 UD |
210 | |
211 | $(generated-modules:%=$(objpfx)%.h): $(objpfx)%.h: $(objpfx)%.stmp | |
b17277cf UD |
212 | @: |
213 | ||
118bad87 UD |
214 | $(gen-8bit-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules |
215 | $(gen-8bit-gap-modules:%=$(objpfx)%.stmp): $(objpfx)%.stmp: $(objpfx)iconv-rules | |
3cb0cda8 | 216 | |
118bad87 | 217 | $(objpfx)iso8859-7jp.stmp: $(charmaps)/ISO-8859-7 gen-8bit-gap-1.sh |
b17277cf | 218 | $(make-target-directory) |
118bad87 | 219 | $(SHELL) ./gen-8bit-gap-1.sh $< > $(@:stmp=T) |
b17277cf UD |
220 | $(move-if-change) $(@:stmp=T) $(@:stmp=h) |
221 | touch $@ | |
222 | ||
118bad87 | 223 | headers: $(addprefix $(objpfx), $(generated-modules:=.h)) |
f4017d20 | 224 | |
73237de3 UD |
225 | $(addprefix $(inst_gconvdir)/, $(modules.so)): \ |
226 | $(inst_gconvdir)/%: $(objpfx)% $(+force) | |
f4017d20 | 227 | $(do-install-program) |
73237de3 | 228 | $(inst_gconvdir)/gconv-modules: gconv-modules $(+force) |
f4017d20 | 229 | $(do-install) |
118bad87 UD |
230 | |
231 | endif # build-shared = yes | |
f4017d20 UD |
232 | |
233 | include ../Rules | |
f1fa8b68 | 234 | |
97a0d44d | 235 | ifeq (no,$(cross-compiling)) |
df455ccb | 236 | ifeq (yes,$(build-shared)) |
4b8f94d3 | 237 | tests: $(objpfx)iconv-test.out |
df455ccb | 238 | endif |
97a0d44d | 239 | endif |
f1fa8b68 | 240 | |
4b8f94d3 UD |
241 | $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ |
242 | $(addprefix $(objpfx),$(modules.so)) \ | |
13d9048a | 243 | $(common-objdir)/iconv/iconv_prog TESTS |
4b8f94d3 | 244 | $(SHELL) -e $< $(common-objdir) > $@ |
f1fa8b68 | 245 | |
4b8f94d3 | 246 | ifdef objpfx |
f1fa8b68 UD |
247 | $(objpfx)gconv-modules: gconv-modules |
248 | cp $^ $@ | |
4b8f94d3 | 249 | endif |