]>
Commit | Line | Data |
---|---|---|
1 | # Copyright (C) 1997-2024 Free Software Foundation, Inc. | |
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 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. | |
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 | # Lesser General Public License for more details. | |
13 | ||
14 | # You should have received a copy of the GNU Lesser General Public | |
15 | # License along with the GNU C Library; if not, see | |
16 | # <https://www.gnu.org/licenses/>. | |
17 | ||
18 | # | |
19 | # Makefile for iconv. | |
20 | # | |
21 | subdir := iconv | |
22 | ||
23 | include ../Makeconfig | |
24 | ||
25 | headers = iconv.h gconv.h | |
26 | routines = iconv_open iconv iconv_close \ | |
27 | gconv_open gconv gconv_close gconv_db gconv_conf \ | |
28 | gconv_builtin gconv_simple gconv_trans gconv_cache | |
29 | routines += gconv_dl gconv_charset | |
30 | ||
31 | vpath %.c ../locale/programs ../intl | |
32 | ||
33 | iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \ | |
34 | dummy-repertoire simple-hash xstrdup xmalloc \ | |
35 | record-status | |
36 | iconvconfig-modules = strtab xmalloc xasprintf xstrdup hash-string | |
37 | extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o) | |
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"' \ | |
42 | -DDEFAULT_CHARMAP=null_pointer -DNEED_NULL_POINTER | |
43 | CFLAGS-linereader.c += -DNO_TRANSLITERATION | |
44 | CFLAGS-simple-hash.c += -I../locale | |
45 | ||
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 | |
59 | ||
60 | test-srcs := \ | |
61 | tst-translit-mchar \ | |
62 | # test-srcs | |
63 | ||
64 | others = iconv_prog iconvconfig | |
65 | install-others-programs = $(inst_bindir)/iconv | |
66 | install-sbin = iconvconfig | |
67 | ||
68 | CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(gconvdir)"' | |
69 | CFLAGS-gconv_conf.c += -DGCONV_PATH='"$(gconvdir)"' | |
70 | CFLAGS-iconvconfig.c += -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"' | |
71 | ||
72 | # Set libof-* for each routine. | |
73 | cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules) | |
74 | lib := iconvprogs | |
75 | include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) | |
76 | ||
77 | ifeq ($(run-built-tests),yes) | |
78 | xtests-special += $(objpfx)test-iconvconfig.out | |
79 | tests-special += $(objpfx)tst-iconv_prog.out | |
80 | tests-special += $(objpfx)tst-translit-mchar.out | |
81 | endif | |
82 | ||
83 | # Make a copy of the file because gconv module names are constructed | |
84 | # relative to the path of the configuration file. | |
85 | $(objpfx)gconv-modules: test-gconv-modules | |
86 | cp $< $@ | |
87 | ||
88 | $(objpfx)tst-iconv-mt: $(shared-thread-library) | |
89 | ||
90 | ifeq (yes,$(build-shared)) | |
91 | tests += tst-gconv-init-failure | |
92 | modules-names += tst-gconv-init-failure-mod | |
93 | modules-names-tests += tst-gconv-init-failure-mod | |
94 | extra-test-objs += tst-gconv-init-failure-mod.os | |
95 | $(objpfx)tst-gconv-init-failure-mod.so: $(libsupport) | |
96 | $(objpfx)tst-gconv-init-failure.out: \ | |
97 | $(objpfx)gconv-modules $(objpfx)tst-gconv-init-failure-mod.so | |
98 | endif | |
99 | ||
100 | generated-dirs += tst-translit | |
101 | ||
102 | include ../Rules | |
103 | ||
104 | ifeq ($(run-built-tests),yes) | |
105 | # We have to generate locales (list sorted alphabetically) | |
106 | LOCALES := \ | |
107 | C.UTF-8 \ | |
108 | en_US.UTF-8 \ | |
109 | # LOCALES | |
110 | include ../gen-locales.mk | |
111 | ||
112 | $(objpfx)tst-iconv-opt.out: $(gen-locales) | |
113 | $(objpfx)tst-iconv9.out: $(gen-locales) | |
114 | endif | |
115 | ||
116 | $(inst_bindir)/iconv: $(objpfx)iconv_prog $(+force) | |
117 | $(do-install-program) | |
118 | ||
119 | $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) | |
120 | $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) | |
121 | ||
122 | $(objpfx)test-iconvconfig.out: $(objpfx)iconvconfig | |
123 | (set -e; \ | |
124 | tmp=$(objpfx)gconv-modules.cache.$$$$; \ | |
125 | rm -f $$tmp; \ | |
126 | $(run-program-prefix) $(objpfx)iconvconfig \ | |
127 | --output=$$tmp --nostdlib $(inst_gconvdir); \ | |
128 | cmp $$tmp $(inst_gconvdir)/gconv-modules.cache; \ | |
129 | rm -f $$tmp) > $@; \ | |
130 | $(evaluate-test) | |
131 | ||
132 | $(objpfx)tst-iconv_prog.out: tst-iconv_prog.sh $(objpfx)iconv_prog | |
133 | $(BASH) $< $(common-objdir) '$(test-wrapper-env)' \ | |
134 | '$(run-program-env)' > $@; \ | |
135 | $(evaluate-test) | |
136 | ||
137 | $(objpfx)tst-translit-mchar.out: tst-translit-mchar.sh \ | |
138 | $(objpfx)tst-translit-mchar \ | |
139 | tst-translit-locale | |
140 | $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \ | |
141 | '$(run-program-env)' '$(run-program-prefix-after-env)' \ | |
142 | $< > $@; \ | |
143 | $(evaluate-test) |