chiark / gitweb /
Build: Overhaul build system.
[mLib] / Makefile.am
1 ### -*-Makefile-*-
2 ###
3 ### Building the distribution
4 ###
5 ### (c) 1998 Straylight/Edgeware
6 ###
7
8 ###----- Licensing notice ---------------------------------------------------
9 ###
10 ### This file is part of the mLib utilities library.
11 ###
12 ### mLib is free software; you can redistribute it and/or modify
13 ### it under the terms of the GNU Library General Public License as
14 ### published by the Free Software Foundation; either version 2 of the
15 ### License, or (at your option) any later version.
16 ###
17 ### mLib is distributed in the hope that it will be useful,
18 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ### GNU Library General Public License for more details.
21 ###
22 ### You should have received a copy of the GNU Library General Public
23 ### License along with mLib; if not, write to the Free
24 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25 ### MA 02111-1307, USA.
26
27 pkglibexecdir            = $(libexecdir)/$(PACKAGE)
28
29 SUBDIRS                  =
30 BUILT_SOURCES            =
31 bin_PROGRAMS             =
32 noinst_PROGRAMS          =
33 lib_LTLIBRARIES          =
34 noinst_LTLIBRARIES       =
35 pkglibexec_PROGRAMS      =
36 pkginclude_HEADERS       =
37 EXTRA_DIST               =
38 CLEANFILES               =
39 DISTCLEANFILES           =
40
41 confsubst                = $(top_srcdir)/config/confsubst
42
43 SUBSTITUTIONS = \
44         prefix=$(prefix) exec_prefix=$(exec_prefix) \
45         libdir=$(libdir) includedir=$(includedir) \
46         bindir=$(bindir) sbindir=$(sbindir) \
47         PACKAGE=$(PACKAGE) VERSION=$(VERSION)
48
49 ###--------------------------------------------------------------------------
50 ### Library.
51
52 lib_LTLIBRARIES         += libmLib.la
53 libmLib_la_LDFLAGS       = -version-info $(LIBTOOL_VERSION_INFO)
54 libmLib_la_SOURCES       =
55 libmLib_la_LIBADD        =
56
57 pkgconfigdir             = $(libdir)/pkgconfig
58 pkgconfig_DATA           = mLib.pc
59 EXTRA_DIST              += mLib.pc.in
60 CLEANFILES              += mLib.pc
61
62 mLib.pc: mLib.pc.in Makefile
63         $(confsubst) $(srcdir)/mLib.pc.in >$@.new $(SUBSTITUTIONS) && \
64                 mv $@.new $@
65
66 ###--------------------------------------------------------------------------
67 ### Testing.
68
69 check: tests
70 .PHONY: check tests
71
72 TEST_CPPFLAGS            = -DTEST_RIG -DSRCDIR="\"(srcdir)\"" $(AM_CPPFLAGS)
73
74 LDADD                    = libmLib.la
75
76 ###--------------------------------------------------------------------------
77 ### Utilities.
78
79 noinst_LTLIBRARIES      += libutils.la
80 libutils_la_SOURCES      =
81 libutils_la_LIBADD       =
82 libmLib_la_LIBADD       += libutils.la
83
84 ## Utility macros.
85 pkginclude_HEADERS      += macros.h
86
87 ## Alignment.
88 pkginclude_HEADERS      += align.h
89
90 ## Bit manipulation.
91 pkginclude_HEADERS      += bits.h
92
93 EXTRA_DIST              += bits.in bits-testgen.c
94 tests:: bits.t bits.in
95         ./bits.t -f $(srcdir)/bits.in
96
97 noinst_PROGRAMS         += bits.t
98 bits_t_SOURCES           = bits.c
99 bits_t_CPPFLAGS          = $(TEST_CPPFLAGS)
100 bits_t_LDFLAGS           = -static
101
102 ## Exceptions.
103 pkginclude_HEADERS      += exc.h
104 libmLib_la_SOURCES      += exc.c
105
106 ## String handling.
107 pkginclude_HEADERS      += str.h
108 libutils_la_SOURCES     += str.c
109
110 ## Version comparison.
111 pkginclude_HEADERS      += versioncmp.h
112 libmLib_la_SOURCES      += versioncmp.c
113
114 EXTRA_DIST              += versioncmp.in
115 tests:: versioncmp.t versioncmp.in
116         ./versioncmp.t -f $(srcdir)/versioncmp.in
117
118 noinst_PROGRAMS         += versioncmp.t
119 versioncmp_t_SOURCES     = versioncmp-test.c
120 versioncmp_t_CPPFLAGS    = $(TEST_CPPFLAGS)
121 versioncmp_t_LDFLAGS     = -static
122
123 ###--------------------------------------------------------------------------
124 ### Memory allocation.
125
126 ## Memory allocation.
127 pkginclude_HEADERS      += alloc.h arena.h sub.h
128 libmLib_la_SOURCES      += alloc.c arena.c sub.c
129
130 ## Pool allocator.
131 pkginclude_HEADERS      += pool.h
132 libmLib_la_SOURCES      += pool.c pool-file.c pool-sub.c
133
134 ###--------------------------------------------------------------------------
135 ### Hashing.
136
137 ## CRC32.
138 pkginclude_HEADERS      += crc32.h
139 libmLib_la_SOURCES      += crc32.c crc32-tab.c
140
141 bin_PROGRAMS            += crc-mktab
142 crc_mktab_SOURCES        = crc-mktab.c $(UTIL_SOURCES)
143 crc_mktab_LDADD          = libutils.la
144
145 BUILT_SOURCES           += crc32-tab.c
146 CLEANFILES              += crc32-tab.c
147 crc32-tab.c: crc-mktab$(EXEEXT)
148         ./crc-mktab -o $@.new \
149                 -p0x04c11db7 -b32 -B8 -r -c \
150                 -scrc32_table -icrc32.h -tuint32 && \
151         mv $@.new $@
152
153 ## Universal hashing.
154 pkginclude_HEADERS      += unihash.h
155 libutils_la_SOURCES     += unihash.c
156 libmLib_la_SOURCES      += unihash-global.c
157 BUILT_SOURCES           += unihash-global.c
158
159 bin_PROGRAMS            += unihash-mkstatic
160 unihash_mkstatic_SOURCES = unihash-mkstatic.c
161 unihash_mkstatic_LDADD   = libutils.la
162
163 BUILT_SOURCES           += unihash-global.c
164 CLEANFILES              += unihash-global.c
165 unihash-global.c: unihash-mkstatic$(EXEEXT)
166         ./unihash-mkstatic -c -sunihash_global -iunihash.h -o$@.new && \
167                 mv $@.new $@
168
169 noinst_PROGRAMS         += unihash.t
170 unihash_t_SOURCES        = unihash.c
171 unihash_t_CPPFLAGS       = $(TEST_CPPFLAGS)
172 unihash_t_LDFLAGS        = -static
173
174 tests:: unihash.t unihash.in
175         ./unihash.t -f unihash.in
176
177 EXTRA_DIST              += unihash-check.pl
178 CLEANFILES              += unihash.in
179 unihash.in: unihash-check.pl
180         perl $(srcdir)/unihash-check.pl >$@.new && mv $@.new $@
181
182 ###--------------------------------------------------------------------------
183 ### Data structures.
184
185 ## Dynamic strings.
186 pkginclude_HEADERS      += dstr.h dspool.h
187 libmLib_la_SOURCES      += dstr.c dputf.c dspool.c
188
189 ## Buffers.
190 pkginclude_HEADERS      += buf.h
191 libmLib_la_SOURCES      += buf.c buf-dstr.c
192
193 ## Dynamic arrays.
194 pkginclude_HEADERS      += darray.h
195 libmLib_la_SOURCES      += darray.c
196
197 CLEANFILES              += da.out
198 tests:: darray.t da.in da.ref
199         ./darray.t <da.in >da.out
200         cmp da.out da.ref
201         @echo "darray OK"
202
203 noinst_PROGRAMS         += darray.t
204 darray_t_SOURCES         = da-test.c
205 darray_t_CPPFLAGS        = $(TEST_CPPFLAGS)
206 darray_t_LDFLAGS         = -static
207
208 EXTRA_DIST              += da-gtest
209 CLEANFILES              += da.in
210 da.in: da-gtest
211         perl $(srcdir)/da-gtest 10000 >$@.new && mv $@.new $@
212
213 EXTRA_DIST              += da-ref
214 CLEANFILES              += da.ref
215 da.ref: da-ref da.in
216         perl $(srcdir)/da-ref <da.in >$@.new && mv $@.new $@
217
218 ## Hash tables.
219 pkginclude_HEADERS      += hash.h
220 libmLib_la_SOURCES      += hash.c
221
222 ## Symbol tables.
223 pkginclude_HEADERS      += sym.h
224 libmLib_la_SOURCES      += sym.c
225
226 CLEANFILES              += sym.out
227 tests:: sym.t sym.in sym.ref
228         ./sym.t <sym.in >sym.out
229         cmp sym.out sym.ref
230         @echo "sym OK"
231
232 noinst_PROGRAMS         += sym.t
233 sym_t_SOURCES            = sym-test.c
234 sym_t_CPPFLAGS           = $(TEST_CPPFLAGS)
235 sym_t_LDFLAGS            = -static
236
237 EXTRA_DIST              += sym-gtest
238 CLEANFILES              += sym.in
239 sym.in: sym-gtest
240         perl $(srcdir)/sym-gtest 10000 >$@.new && mv $@.new $@
241
242 EXTRA_DIST              += sym-ref
243 CLEANFILES              += sym.ref
244 sym.ref: sym-ref sym.in
245         perl $(srcdir)/sym-ref <sym.in >$@.new && mv $@.new $@
246
247 ## Atoms.
248 pkginclude_HEADERS      += atom.h
249 libmLib_la_SOURCES      += atom.c
250
251 ## Association tables.
252 pkginclude_HEADERS      += assoc.h
253 libmLib_la_SOURCES      += assoc.c
254
255 CLEANFILES              += assoc.out
256 tests:: assoc.t sym.in sym.ref
257         ./assoc.t <sym.in >assoc.out
258         cmp assoc.out sym.ref
259         @echo "sym OK"
260
261 noinst_PROGRAMS         += assoc.t
262 assoc_t_SOURCES          = assoc-test.c
263 assoc_t_CPPFLAGS         = $(TEST_CPPFLAGS)
264 assoc_t_LDFLAGS          = -static
265
266 ###--------------------------------------------------------------------------
267 ### User interface.
268
269 ## Option parsing.
270 noinst_LTLIBRARIES      += libmdwopt.la
271 pkginclude_HEADERS      += mdwopt.h
272 libmdwopt_la_SOURCES     = mdwopt.c
273 libmdwopt_la_CPPFLAGS    = $(AM_CPPFLAGS) -DBUILDING_MLIB
274 libutils_la_LIBADD      += libmdwopt.la
275
276 ## Program naming.
277 pkginclude_HEADERS      += quis.h
278 libutils_la_SOURCES     += quis.c pquis.c
279
280 ## Error reporting.
281 pkginclude_HEADERS      += report.h
282 libutils_la_SOURCES     += report.c
283
284 ###--------------------------------------------------------------------------
285 ### Encoding and decoding.
286
287 ## form-urlencoded
288 pkginclude_HEADERS      += url.h
289 libmLib_la_SOURCES      += url.c
290
291 ## base64
292 pkginclude_HEADERS      += base64.h
293 libmLib_la_SOURCES      += base64.c
294
295 EXTRA_DIST              += base64.in base64.ref
296 CLEANFILES              += base64.out
297 tests:: base64.t base64.in base64.ref
298         ./base64.t <$(srcdir)/base64.in >base64.out
299         cmp base64.out $(srcdir)/base64.ref
300         ./base64.t -d <$(srcdir)/base64.ref >base64.out
301         cmp base64.out $(srcdir)/base64.in
302         @echo "base64 OK"
303
304 noinst_PROGRAMS         += base64.t
305 base64_t_SOURCES         = base64.c
306 base64_t_CPPFLAGS        = $(TEST_CPPFLAGS)
307 base64_t_LDFLAGS         = -static
308
309 ## base32
310 pkginclude_HEADERS      += base32.h
311 libmLib_la_SOURCES      += base32.c
312
313 EXTRA_DIST              += base32.in base32.ref
314 CLEANFILES              += base32.out
315 tests:: base32.t base32.in base32.ref
316         ./base32.t <$(srcdir)/base32.in >base32.out
317         cmp base32.out $(srcdir)/base32.ref
318         ./base32.t -d <$(srcdir)/base32.ref >base32.out
319         cmp base32.out $(srcdir)/base32.in
320         @echo "base32 OK"
321
322 noinst_PROGRAMS         += base32.t
323 base32_t_SOURCES         = base32.c
324 base32_t_CPPFLAGS        = $(TEST_CPPFLAGS)
325 base32_t_LDFLAGS         = -static
326
327 ## hex
328 pkginclude_HEADERS      += hex.h
329 libmLib_la_SOURCES      += hex.c
330
331 EXTRA_DIST              += hex.in hex.ref
332 CLEANFILES              += hex.out
333 tests:: hex.t hex.in hex.ref
334         ./hex.t <$(srcdir)/hex.in >hex.out
335         cmp hex.out $(srcdir)/hex.ref
336         ./hex.t -d <$(srcdir)/hex.ref >hex.out
337         cmp hex.out $(srcdir)/hex.in
338         @echo "hex OK"
339
340 noinst_PROGRAMS         += hex.t
341 hex_t_SOURCES            = hex.c
342 hex_t_CPPFLAGS           = $(TEST_CPPFLAGS)
343 hex_t_LDFLAGS            = -static
344
345 ###--------------------------------------------------------------------------
346 ### System utilities.
347
348 ## Daemons.
349 pkginclude_HEADERS      += daemonize.h
350 libmLib_la_SOURCES      += daemonize.c
351
352 ## Environment variables.
353 pkginclude_HEADERS      += env.h
354 libmLib_la_SOURCES      += env.c
355
356 ## File and descriptor flags.
357 pkginclude_HEADERS      += fdflags.h
358 libmLib_la_SOURCES      += fdflags.c
359
360 ## File descriptor passing.
361 pkginclude_HEADERS      += fdpass.h
362 libmLib_la_SOURCES      += fdpass.c
363
364 ## Watching files for modification.
365 pkginclude_HEADERS      += fwatch.h
366 libmLib_la_SOURCES      += fwatch.c
367
368 ## File locking.
369 pkginclude_HEADERS      += lock.h
370 libmLib_la_SOURCES      += lock.c
371
372 ## Time arithmetic.
373 pkginclude_HEADERS      += tv.h
374 libmLib_la_SOURCES      += tv.c
375
376 ###--------------------------------------------------------------------------
377 ### Buffering.
378
379 ## Line buffering.
380 pkginclude_HEADERS      += lbuf.h
381 libmLib_la_SOURCES      += lbuf.c
382
383 ## Packet buffering.
384 pkginclude_HEADERS      += pkbuf.h
385 libmLib_la_SOURCES      += pkbuf.c
386
387 ###--------------------------------------------------------------------------
388 ### Network utilities.
389
390 ## Core event selection.
391 pkginclude_HEADERS      += sel.h
392 libmLib_la_SOURCES      += sel.c
393
394 ## Waiting for buffers to fill.
395 pkginclude_HEADERS      += selbuf.h selpk.h
396 libmLib_la_SOURCES      += selbuf.c selpk.c
397
398 ## RFC931 identification.
399 pkginclude_HEADERS      += ident.h
400 libmLib_la_SOURCES      += ident.c
401
402 ## Nonblocking connections.
403 pkginclude_HEADERS      += conn.h
404 libmLib_la_SOURCES      += conn.c
405
406 ## Signal handling
407 pkginclude_HEADERS      += sig.h
408 libmLib_la_SOURCES      += sig.c
409
410 ## Name resolution.
411 pkginclude_HEADERS      += bres.h
412
413 if WITH_ADNS
414 libmLib_la_SOURCES      += bres-adns.c
415 else
416 libmLib_la_SOURCES      += bres.c
417 pkglibexec_PROGRAMS     += bres
418 bres_SOURCES             = bres.c
419 bres_CPPFLAGS            = -DBRES_STANDALONE $(AM_CPPFLAGS)
420 bres_LDADD               =
421 endif
422
423 ###--------------------------------------------------------------------------
424 ### Testing and debugging.
425
426 ## Tracing.
427 pkginclude_HEADERS      += trace.h
428 libmLib_la_SOURCES      += trace.c traceopt.c
429
430 ## Memory tracking.
431 pkginclude_HEADERS      += track.h
432 libmLib_la_SOURCES      += track.c
433
434 ## Testing.
435 pkginclude_HEADERS      += testrig.h
436 libmLib_la_SOURCES      += testrig.c
437
438 ###--------------------------------------------------------------------------
439 ### Manual.
440
441 SUBDIRS                 += man
442
443 install-man:
444         (cd man && $(MAKE) install-man)
445 uninstall-man:
446         (cd man && $(MAKE) uninstall-man)
447 .PHONY: install-man uninstall-man
448
449
450 ###--------------------------------------------------------------------------
451 ### Distribution.
452
453 ## Release number.
454 dist-hook::
455         echo $(VERSION) >$(distdir)/RELEASE
456
457 ## Additional build tools.
458 EXTRA_DIST              += config/confsubst
459 EXTRA_DIST              += config/auto-version
460 EXTRA_DIST              += config/maninst
461
462 ###--------------------------------------------------------------------------
463 ### Debian.
464
465 ## General stuff.
466 EXTRA_DIST              += debian/rules debian/copyright
467 EXTRA_DIST              += debian/control debian/changelog
468 EXTRA_DIST              += debian/mlib2.install
469 EXTRA_DIST              += debian/mlib2-adns.install
470 EXTRA_DIST              += debian/mlib-dev.install
471 EXTRA_DIST              += debian/mlib-bin.install
472
473 ##----- That's all, folks ---------------------------------------------------