~vcs-imports/libiconv/trunk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
# -*- makefile -*-
# This is the developer's makefile, not the user's makefile.
# Don't use it unless you know exactly what you do!
# It requires GNU make.
# It obeys the environment variables GNULIB_TOOL, CC, CFLAGS
# if you have set them.

ifneq (,)
This makefile requires GNU Make.
endif

SHELL = /bin/sh
MAKE = make
AUTOCONF = autoconf
AUTOHEADER = autoheader
AUTOMAKE = automake-1.16
ACLOCAL = aclocal-1.16
GPERF = gperf

# Ignore the built-in default for CC. Also ignore $(CC) if it is empty.
# https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
# https://www.gnu.org/software/make/manual/html_node/Origin-Function.html
# https://www.gnu.org/software/make/manual/html_node/Text-Functions.html#index-findstring
# https://www.gnu.org/software/make/manual/html_node/Text-Functions.html#index-stripping-whitespace
# https://www.gnu.org/software/make/manual/html_node/Conditional-Functions.html#index-or
# https://www.gnu.org/software/make/manual/html_node/Override-Directive.html
ifneq ($(or $(findstring $(origin CC), undefined default),$(if $(strip $(CC)),,empty)),)
override CC = gcc -Wall
endif

# Ignore the built-in default for CFLAGS.
# https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
# https://www.gnu.org/software/make/manual/html_node/Origin-Function.html
# https://www.gnu.org/software/make/manual/html_node/Text-Functions.html#index-findstring
ifneq ($(findstring $(origin CFLAGS), undefined default),)
CFLAGS = -O
endif

MAN2HTML = groff -mandoc -Thtml
CP = cp
RM = rm -f


all : srclib/Makefile.in \
      configures config.h.in \
      include/iconv.h.build.in \
      lib/aliases.h lib/aliases_sysaix.h lib/aliases_syshpux.h lib/aliases_sysosf1.h lib/aliases_syssolaris.h \
      lib/aliases_aix.h lib/aliases_aix_sysaix.h \
      lib/aliases_osf1.h lib/aliases_osf1_sysosf1.h \
      lib/aliases_dos.h \
      lib/aliases_zos.h \
      lib/aliases_extra.h \
      lib/flags.h lib/translit.h \
      man/iconv.1.html man/iconv.3.html man/iconv_close.3.html man/iconv_open.3.html man/iconvctl.3.html man/iconv_open_into.3.html \
      force
	cd libcharset && $(MAKE) -f Makefile.devel all


# Before making a new release:
# - check that the encoding lists in README and man/iconv_open.3 are up to date,
# - check that the files in libcharset/lib/ are in sync with the gnulib module
#   'localcharset',
# - increment the version number in
#     configure.ac
#     include/iconv.h.in
#     README
# - update the version info in lib/Makefile.in,
# - $ ./autogen.sh
# Making a new release:
# - $ ./configure CPPFLAGS=-Wall; make; make check
# - $ make dist


GNULIB_MODULES = \
  binary-io \
  error \
  gettext \
  gettext-h \
  lib-symbol-visibility \
  mbstate \
  progname \
  relocatable-prog \
  safe-read \
  sigpipe \
  stdbool \
  stdio \
  stdlib \
  strerror \
  unistd \
  uniwidth/width \
  unlocked-io \
  xalloc \
  libiconv-misc

srclib/Makefile.gnulib :
	if test -n "$$GNULIB_TOOL"; then \
	  $$GNULIB_TOOL --copy-file m4/codeset.m4 srcm4/codeset.m4 || exit $$?; \
	  $$GNULIB_TOOL --lib=libicrt --source-base=srclib --m4-base=srcm4 --makefile-name=Makefile.gnulib --no-libtool --local-dir=gnulib-local --no-vc-files \
	    --import $(GNULIB_MODULES); \
	fi

gnulib-imported-files : force
	if test -n "$$GNULIB_TOOL"; then \
	  for file in config.guess config.sub; do \
	    $$GNULIB_TOOL --copy-file build-aux/$$file || exit $$?; \
	    chmod a+x build-aux/$$file || exit $$?; \
	  done; \
	  $$GNULIB_TOOL --copy-file tests/qemu.h || exit $$?; \
	fi

srclib/Makefile.in : srclib/Makefile.am srclib/Makefile.gnulib aclocal.m4
# Make sure we get new versions of files brought in by automake.
	(cd build-aux && rm -f depcomp install-sh mdate-sh missing test-driver)
	$(AUTOMAKE) --gnits --add-missing --copy srclib/Makefile && rm -rf autom4te.cache


CONFIGURES = configure
CONFIGURES_IN = configure.ac

aclocal.m4 : $(CONFIGURES_IN) srclib/Makefile.gnulib $(wildcard m4/*.m4) $(wildcard srcm4/*.m4)
	$(ACLOCAL) -I m4 -I srcm4 --output=$@ && touch $@ && rm -rf autom4te.cache

configures : $(CONFIGURES)

AUTOCONF_FILES = aclocal.m4 $(wildcard m4/*.m4) $(wildcard srcm4/*.m4)

configure : configure.ac $(AUTOCONF_FILES)
	$(AUTOCONF) && rm -rf autom4te.cache

check-configures : $(CONFIGURES)
	set -e; for f in $(CONFIGURES); do bash -x -n $$f; done

config.h.in : configure.ac $(AUTOCONF_FILES)
	$(AUTOHEADER) && rm -rf autom4te.cache
	touch $@


include/iconv.h.build.in : include/iconv.h.in include/export.h
	cat $< \
	| sed -e 's/extern \([^"]\)/extern LIBICONV_SHLIB_EXPORTED \1/' \
	      -e '/_LIBICONV_VERSION/r include/export.h' \
	| sed -e '/_LIBICONV_VERSION/,/[*][/]$$/{/_LIBICONV_VERSION/!d;}' > $@


lib/aliases.h lib/canonical.h lib/canonical_local.h : lib/encodings.def lib/encodings_local.def lib/genaliases.c
	$(CC) $(CFLAGS) lib/genaliases.c -o genaliases
	./genaliases lib/aliases.gperf canonical.sh canonical_local.sh
	$(RM) genaliases
	$(GPERF) -m 10 lib/aliases.gperf > tmp.h
	sed -e 's/^\(const struct alias \)/static \1/' < tmp.h > lib/aliases.h
	sh canonical.sh > lib/canonical.h
	sh canonical_local.sh > lib/canonical_local.h
	$(RM) tmp.h canonical.sh canonical_local.sh

lib/aliases_sysaix.h lib/canonical_sysaix.h lib/canonical_local_sysaix.h : lib/encodings.def lib/encodings_local.def lib/genaliases.c
	$(CC) $(CFLAGS) -DUSE_AIX_ALIASES lib/genaliases.c -o genaliases
	./genaliases lib/aliases_sysaix.gperf canonical.sh canonical_local.sh
	$(RM) genaliases
	$(GPERF) -m 10 lib/aliases_sysaix.gperf > tmp.h
	sed -e 's/^\(const struct alias \)/static \1/' < tmp.h > lib/aliases_sysaix.h
	sh canonical.sh > lib/canonical_sysaix.h
	sh canonical_local.sh > lib/canonical_local_sysaix.h
	$(RM) tmp.h canonical.sh canonical_local.sh

lib/aliases_syshpux.h lib/canonical_syshpux.h lib/canonical_local_syshpux.h : lib/encodings.def lib/encodings_local.def lib/genaliases.c
	$(CC) $(CFLAGS) -DUSE_HPUX_ALIASES lib/genaliases.c -o genaliases
	./genaliases lib/aliases_syshpux.gperf canonical.sh canonical_local.sh
	$(RM) genaliases
	$(GPERF) -m 10 lib/aliases_syshpux.gperf > tmp.h
	sed -e 's/^\(const struct alias \)/static \1/' < tmp.h > lib/aliases_syshpux.h
	sh canonical.sh > lib/canonical_syshpux.h
	sh canonical_local.sh > lib/canonical_local_syshpux.h
	$(RM) tmp.h canonical.sh canonical_local.sh

lib/aliases_sysosf1.h lib/canonical_sysosf1.h lib/canonical_local_sysosf1.h : lib/encodings.def lib/encodings_local.def lib/genaliases.c
	$(CC) $(CFLAGS) -DUSE_OSF1_ALIASES lib/genaliases.c -o genaliases
	./genaliases lib/aliases_sysosf1.gperf canonical.sh canonical_local.sh
	$(RM) genaliases
	$(GPERF) -m 10 lib/aliases_sysosf1.gperf > tmp.h
	sed -e 's/^\(const struct alias \)/static \1/' < tmp.h > lib/aliases_sysosf1.h
	sh canonical.sh > lib/canonical_sysosf1.h
	sh canonical_local.sh > lib/canonical_local_sysosf1.h
	$(RM) tmp.h canonical.sh canonical_local.sh

lib/aliases_syssolaris.h lib/canonical_syssolaris.h lib/canonical_local_syssolaris.h : lib/encodings.def lib/encodings_local.def lib/genaliases.c
	$(CC) $(CFLAGS) -DUSE_SOLARIS_ALIASES lib/genaliases.c -o genaliases
	./genaliases lib/aliases_syssolaris.gperf canonical.sh canonical_local.sh
	$(RM) genaliases
	$(GPERF) -m 10 lib/aliases_syssolaris.gperf > tmp.h
	sed -e 's/^\(const struct alias \)/static \1/' < tmp.h > lib/aliases_syssolaris.h
	sh canonical.sh > lib/canonical_syssolaris.h
	sh canonical_local.sh > lib/canonical_local_syssolaris.h
	$(RM) tmp.h canonical.sh canonical_local.sh

lib/aliases_aix.h lib/canonical_aix.h : lib/encodings_aix.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_AIX lib/genaliases2.c -o genaliases
	./genaliases aix lib/aliases_aix.h lib/canonical_aix.h
	$(RM) genaliases

lib/aliases_aix_sysaix.h lib/canonical_aix_sysaix.h : lib/encodings_aix.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_AIX -DUSE_AIX_ALIASES lib/genaliases2.c -o genaliases
	./genaliases aix lib/aliases_aix_sysaix.h lib/canonical_aix_sysaix.h
	$(RM) genaliases

lib/aliases_osf1.h lib/canonical_osf1.h : lib/encodings_osf1.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_OSF1 lib/genaliases2.c -o genaliases
	./genaliases osf1 lib/aliases_osf1.h lib/canonical_osf1.h
	$(RM) genaliases

lib/aliases_osf1_sysosf1.h lib/canonical_osf1_sysosf1.h : lib/encodings_osf1.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_OSF1 -DUSE_OSF1_ALIASES lib/genaliases2.c -o genaliases
	./genaliases osf1 lib/aliases_osf1_sysosf1.h lib/canonical_osf1_sysosf1.h
	$(RM) genaliases

lib/aliases_dos.h lib/canonical_dos.h : lib/encodings_dos.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_DOS lib/genaliases2.c -o genaliases
	./genaliases dos lib/aliases_dos.h lib/canonical_dos.h
	$(RM) genaliases

lib/aliases_zos.h lib/canonical_zos.h : lib/encodings_zos.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_ZOS lib/genaliases2.c -o genaliases
	./genaliases zos lib/aliases_zos.h lib/canonical_zos.h
	$(RM) genaliases

lib/aliases_extra.h lib/canonical_extra.h : lib/encodings_extra.def lib/genaliases2.c
	$(CC) $(CFLAGS) -DUSE_EXTRA lib/genaliases2.c -o genaliases
	./genaliases extra lib/aliases_extra.h lib/canonical_extra.h
	$(RM) genaliases


lib/flags.h : lib/encodings.def lib/encodings_aix.def lib/encodings_osf1.def lib/encodings_dos.def lib/encodings_zos.def lib/encodings_extra.def lib/converters.h lib/genflags.c
	$(CC) $(CFLAGS) lib/genflags.c -o genflags
	./genflags > lib/flags.h
	$(RM) genflags


lib/translit.h : lib/translit.def lib/gentranslit.c
	$(CC) $(CFLAGS) lib/gentranslit.c -o gentranslit
	./gentranslit < lib/translit.def > lib/translit.h
	$(RM) gentranslit


man/%.html : man/%
	$(MAN2HTML) $< > $@-t
	grep -v '<!-- CreationDate' < $@-t > $@
	$(RM) $@-t


gnulib-clean : force
# Move srclib/Makefile.gnulib away, so that the target 'srclib/Makefile.gnulib' will actually do something.
	if test -f srclib/Makefile.gnulib; then \
	  mv srclib/Makefile.gnulib srclib/Makefile.gnulib~; \
	fi
# No need to remove the stale files. gnulib-tool does this itself, thanks to srcm4/gnulib-comp.m4.
#	find srclib '(' -name '*.h' -o -name '*.c' -o -name '*.valgrind' ')' -exec rm -f '{}' ';'
#	rm -rf srcm4

totally-clean : force
	rm -f srclib/Makefile.in
	rm -f aclocal.m4 $(CONFIGURES) config.h.in include/iconv.h.build.in
	rm -f lib/aliases.gperf lib/aliases_sysaix.gperf lib/aliases_syshpux.gperf lib/aliases_sysosf1.gperf lib/aliases_syssolaris.gperf
	rm -f lib/aliases.h lib/aliases_sysaix.h lib/aliases_syshpux.h lib/aliases_sysosf1.h lib/aliases_syssolaris.h
	rm -f lib/aliases_aix.h lib/aliases_aix_sysaix.h
	rm -f lib/aliases_osf1.h lib/aliases_osf1_sysosf1.h
	rm -f lib/aliases_dos.h
	rm -f lib/aliases_zos.h
	rm -f lib/aliases_extra.h
	rm -f lib/canonical.h lib/canonical_sysaix.h lib/canonical_syshpux.h lib/canonical_sysosf1.h lib/canonical_syssolaris.h
	rm -f lib/canonical_aix.h lib/canonical_aix_sysaix.h
	rm -f lib/canonical_osf1.h lib/canonical_osf1_sysosf1.h
	rm -f lib/canonical_dos.h
	rm -f lib/canonical_zos.h
	rm -f lib/canonical_extra.h
	rm -f lib/canonical_local.h lib/canonical_local_sysaix.h lib/canonical_local_syshpux.h lib/canonical_local_sysosf1.h lib/canonical_local_syssolaris.h
	rm -f lib/flags.h
	rm -f lib/translit.h
	rm -f man/iconv.1.html man/iconv.3.html man/iconv_close.3.html man/iconv_open.3.html man/iconvctl.3.html man/iconv_open_into.3.html
	cd libcharset && $(MAKE) -f Makefile.devel totally-clean


force :