]>
Commit | Line | Data |
---|---|---|
dff8da6b | 1 | # Copyright (C) 1997-2024 Free Software Foundation, Inc. |
6973fc01 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 | |
41bdb6e2 AJ |
5 | # modify it under the terms of the GNU Lesser General Public |
6 | # License as published by the Free Software Foundation; either | |
7 | # version 2.1 of the License, or (at your option) any later version. | |
6973fc01 UD |
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 | |
41bdb6e2 | 12 | # Lesser General Public License for more details. |
6973fc01 | 13 | |
41bdb6e2 | 14 | # You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 15 | # License along with the GNU C Library; if not, see |
5a82c748 | 16 | # <https://www.gnu.org/licenses/>. |
6973fc01 UD |
17 | |
18 | # | |
19 | # Makefile for iconv. | |
20 | # | |
21 | subdir := iconv | |
22 | ||
8619129f UD |
23 | include ../Makeconfig |
24 | ||
6973fc01 UD |
25 | headers = iconv.h gconv.h |
26 | routines = iconv_open iconv iconv_close \ | |
27 | gconv_open gconv gconv_close gconv_db gconv_conf \ | |
6b98979f | 28 | gconv_builtin gconv_simple gconv_trans gconv_cache |
91927b7c | 29 | routines += gconv_dl gconv_charset |
8619129f | 30 | |
dd9423a6 | 31 | vpath %.c ../locale/programs ../intl |
93693c4d UD |
32 | |
33 | iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \ | |
02eec681 CD |
34 | dummy-repertoire simple-hash xstrdup xmalloc \ |
35 | record-status | |
9429049c | 36 | iconvconfig-modules = strtab xmalloc xasprintf xstrdup hash-string |
7dbadfc5 | 37 | extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o) |
36975e8e L |
38 | CFLAGS-iconv_prog.c += -I../locale/programs |
39 | CFLAGS-iconv_charmap.c += -I../locale/programs | |
40 | CFLAGS-dummy-repertoire.c += -I../locale/programs | |
41 | CFLAGS-charmap.c += -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ | |
194c5f8d | 42 | -DDEFAULT_CHARMAP=null_pointer -DNEED_NULL_POINTER |
36975e8e L |
43 | CFLAGS-linereader.c += -DNO_TRANSLITERATION |
44 | CFLAGS-simple-hash.c += -I../locale | |
93693c4d | 45 | |
466f2be6 CD |
46 | tests = \ |
47 | tst-iconv1 \ | |
48 | tst-iconv2 \ | |
49 | tst-iconv3 \ | |
50 | tst-iconv4 \ | |
51 | tst-iconv5 \ | |
52 | tst-iconv6 \ | |
53 | tst-iconv7 \ | |
54 | tst-iconv8 \ | |
55 | tst-iconv9 \ | |
56 | tst-iconv-mt \ | |
57 | tst-iconv-opt \ | |
58 | # tests | |
c63b67bd | 59 | |
6b98979f | 60 | others = iconv_prog iconvconfig |
ff40792e | 61 | install-others-programs = $(inst_bindir)/iconv |
9fcddc2b | 62 | install-sbin = iconvconfig |
fb5663ca | 63 | |
8e294940 | 64 | CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(gconvdir)"' |
36975e8e L |
65 | CFLAGS-gconv_conf.c += -DGCONV_PATH='"$(gconvdir)"' |
66 | CFLAGS-iconvconfig.c += -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"' | |
6973fc01 | 67 | |
9cd47470 SP |
68 | # Set libof-* for each routine. |
69 | cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules) | |
70 | lib := iconvprogs | |
2bfdaedd | 71 | include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) |
51d46f73 | 72 | |
f214606a | 73 | ifeq ($(run-built-tests),yes) |
0b20a9e8 | 74 | xtests-special += $(objpfx)test-iconvconfig.out |
91927b7c | 75 | tests-special += $(objpfx)tst-iconv_prog.out |
f214606a JM |
76 | endif |
77 | ||
251bccfa FW |
78 | # Make a copy of the file because gconv module names are constructed |
79 | # relative to the path of the configuration file. | |
80 | $(objpfx)gconv-modules: test-gconv-modules | |
81 | cp $< $@ | |
82 | ||
c5288d37 AS |
83 | $(objpfx)tst-iconv-mt: $(shared-thread-library) |
84 | ||
251bccfa FW |
85 | ifeq (yes,$(build-shared)) |
86 | tests += tst-gconv-init-failure | |
87 | modules-names += tst-gconv-init-failure-mod | |
88 | modules-names-tests += tst-gconv-init-failure-mod | |
1fe00d3e | 89 | extra-test-objs += tst-gconv-init-failure-mod.os |
251bccfa FW |
90 | $(objpfx)tst-gconv-init-failure-mod.so: $(libsupport) |
91 | $(objpfx)tst-gconv-init-failure.out: \ | |
92 | $(objpfx)gconv-modules $(objpfx)tst-gconv-init-failure-mod.so | |
93 | endif | |
94 | ||
6973fc01 | 95 | include ../Rules |
fb5663ca | 96 | |
91927b7c | 97 | ifeq ($(run-built-tests),yes) |
466f2be6 CD |
98 | # We have to generate locales (list sorted alphabetically) |
99 | LOCALES := \ | |
100 | C.UTF-8 \ | |
101 | en_US.UTF-8 \ | |
102 | # LOCALES | |
91927b7c AS |
103 | include ../gen-locales.mk |
104 | ||
105 | $(objpfx)tst-iconv-opt.out: $(gen-locales) | |
466f2be6 | 106 | $(objpfx)tst-iconv9.out: $(gen-locales) |
91927b7c AS |
107 | endif |
108 | ||
73237de3 | 109 | $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force) |
9eb2730e | 110 | $(do-install-program) |
93693c4d UD |
111 | |
112 | $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) | |
6b98979f | 113 | $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) |
ff06ca8d | 114 | |
69e0a5eb | 115 | $(objpfx)test-iconvconfig.out: $(objpfx)iconvconfig |
0b20a9e8 JM |
116 | (set -e; \ |
117 | tmp=$(objpfx)gconv-modules.cache.$$$$; \ | |
118 | rm -f $$tmp; \ | |
69e0a5eb L |
119 | $(run-program-prefix) $(objpfx)iconvconfig \ |
120 | --output=$$tmp --nostdlib $(inst_gconvdir); \ | |
0b20a9e8 JM |
121 | cmp $$tmp $(inst_gconvdir)/gconv-modules.cache; \ |
122 | rm -f $$tmp) > $@; \ | |
f0881698 | 123 | $(evaluate-test) |
91927b7c AS |
124 | |
125 | $(objpfx)tst-iconv_prog.out: tst-iconv_prog.sh $(objpfx)iconv_prog | |
126 | $(BASH) $< $(common-objdir) '$(test-wrapper-env)' \ | |
127 | '$(run-program-env)' > $@; \ | |
128 | $(evaluate-test) |