X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/a0150d8deebfda4b52190738dd65c3d0f27d5756..9a38b772cbcda9563d5a7c5307b2ec43a13d8e52:/Makefile.am diff --git a/Makefile.am b/Makefile.am index 5c0fd2b..5b3ddba 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,8 +1,8 @@ -### -*-Makefile-*- +### -*-makefile-*- ### -### Building the distribution +### Top-level build for mLib ### -### (c) 1998 Straylight/Edgeware +### (c) 2009 Straylight/Edgeware ### ###----- Licensing notice --------------------------------------------------- @@ -24,432 +24,96 @@ ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ### MA 02111-1307, USA. -pkglibexecdir = $(libexecdir)/$(PACKAGE) +include $(top_srcdir)/vars.am SUBDIRS = -BUILT_SOURCES = -bin_PROGRAMS = -noinst_PROGRAMS = -lib_LTLIBRARIES = -noinst_LTLIBRARIES = -pkglibexec_PROGRAMS = -pkginclude_HEADERS = -EXTRA_DIST = -CLEANFILES = -DISTCLEANFILES = - -confsubst = $(top_srcdir)/config/confsubst - -SUBSTITUTIONS = \ - prefix=$(prefix) exec_prefix=$(exec_prefix) \ - libdir=$(libdir) includedir=$(includedir) \ - bindir=$(bindir) sbindir=$(sbindir) \ - PACKAGE=$(PACKAGE) VERSION=$(VERSION) ###-------------------------------------------------------------------------- -### Library. +### Top-level library. -lib_LTLIBRARIES += libmLib.la -libmLib_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) +lib_LTLIBRARIES = libmLib.la +libmLib_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) \ + -no-undefined libmLib_la_SOURCES = libmLib_la_LIBADD = +###-------------------------------------------------------------------------- +### Package-configuration file. + pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = mLib.pc EXTRA_DIST += mLib.pc.in CLEANFILES += mLib.pc mLib.pc: mLib.pc.in Makefile - $(confsubst) $(srcdir)/mLib.pc.in >$@.new $(SUBSTITUTIONS) && \ + $(SUBST) $(srcdir)/mLib.pc.in >$@.new \ + $(SUBSTITUTIONS) && \ mv $@.new $@ ###-------------------------------------------------------------------------- -### Testing. - -check: tests -.PHONY: check tests - -TEST_CPPFLAGS = -DTEST_RIG -DSRCDIR="\"(srcdir)\"" $(AM_CPPFLAGS) - -LDADD = libmLib.la - -###-------------------------------------------------------------------------- -### Utilities. - -noinst_LTLIBRARIES += libutils.la -libutils_la_SOURCES = -libutils_la_LIBADD = -libmLib_la_LIBADD += libutils.la - -## Utility macros. -pkginclude_HEADERS += macros.h - -## Alignment. -pkginclude_HEADERS += align.h - -## Bit manipulation. -pkginclude_HEADERS += bits.h - -EXTRA_DIST += bits.in bits-testgen.c -tests:: bits.t bits.in - ./bits.t -f $(srcdir)/bits.in - -noinst_PROGRAMS += bits.t -bits_t_SOURCES = bits.c -bits_t_CPPFLAGS = $(TEST_CPPFLAGS) -bits_t_LDFLAGS = -static - -## Exceptions. -pkginclude_HEADERS += exc.h -libmLib_la_SOURCES += exc.c - -## String handling. -pkginclude_HEADERS += str.h -libutils_la_SOURCES += str.c - -## Version comparison. -pkginclude_HEADERS += versioncmp.h -libmLib_la_SOURCES += versioncmp.c - -EXTRA_DIST += versioncmp.in -tests:: versioncmp.t versioncmp.in - ./versioncmp.t -f $(srcdir)/versioncmp.in +### Subdirectories. +### +### Note: There are implicit dependencies between the subdirectories. Be +### careful about reordering them. -noinst_PROGRAMS += versioncmp.t -versioncmp_t_SOURCES = versioncmp-test.c -versioncmp_t_CPPFLAGS = $(TEST_CPPFLAGS) -versioncmp_t_LDFLAGS = -static - -###-------------------------------------------------------------------------- -### Memory allocation. +## Utilities. +SUBDIRS += utils +libmLib_la_LIBADD += utils/libutils.la ## Memory allocation. -pkginclude_HEADERS += alloc.h arena.h sub.h -libmLib_la_SOURCES += alloc.c arena.c sub.c +SUBDIRS += mem +libmLib_la_LIBADD += mem/libmem.la -## Pool allocator. -pkginclude_HEADERS += pool.h -libmLib_la_SOURCES += pool.c pool-file.c pool-sub.c +## User interface. +SUBDIRS += ui +libmLib_la_LIBADD += ui/libui.la -###-------------------------------------------------------------------------- -### Hashing. - -## CRC32. -pkginclude_HEADERS += crc32.h -libmLib_la_SOURCES += crc32.c crc32-tab.c - -bin_PROGRAMS += crc-mktab -crc_mktab_SOURCES = crc-mktab.c $(UTIL_SOURCES) -crc_mktab_LDADD = libutils.la - -BUILT_SOURCES += crc32-tab.c -CLEANFILES += crc32-tab.c -crc32-tab.c: crc-mktab$(EXEEXT) - ./crc-mktab -o $@.new \ - -p0x04c11db7 -b32 -B8 -r -c \ - -scrc32_table -icrc32.h -tuint32 && \ - mv $@.new $@ - -## Universal hashing. -pkginclude_HEADERS += unihash.h -libutils_la_SOURCES += unihash.c -libmLib_la_SOURCES += unihash-global.c -BUILT_SOURCES += unihash-global.c - -bin_PROGRAMS += unihash-mkstatic -unihash_mkstatic_SOURCES = unihash-mkstatic.c -unihash_mkstatic_LDADD = libutils.la - -BUILT_SOURCES += unihash-global.c -CLEANFILES += unihash-global.c -unihash-global.c: unihash-mkstatic$(EXEEXT) - ./unihash-mkstatic -c -sunihash_global -iunihash.h -o$@.new && \ - mv $@.new $@ - -noinst_PROGRAMS += unihash.t -unihash_t_SOURCES = unihash.c -unihash_t_CPPFLAGS = $(TEST_CPPFLAGS) -unihash_t_LDFLAGS = -static +## Hashing. +SUBDIRS += hash +libmLib_la_LIBADD += hash/libhash.la -tests:: unihash.t unihash.in - ./unihash.t -f unihash.in +## Data structures. +SUBDIRS += struct +libmLib_la_LIBADD += struct/libstruct.la -EXTRA_DIST += unihash-check.pl -CLEANFILES += unihash.in -unihash.in: unihash-check.pl - perl $(srcdir)/unihash-check.pl >$@.new && mv $@.new $@ - -###-------------------------------------------------------------------------- -### Data structures. - -## Dynamic strings. -pkginclude_HEADERS += dstr.h dspool.h -libmLib_la_SOURCES += dstr.c dputf.c dspool.c - -## Buffers. -pkginclude_HEADERS += buf.h -libmLib_la_SOURCES += buf.c buf-dstr.c - -## Dynamic arrays. -pkginclude_HEADERS += darray.h -libmLib_la_SOURCES += darray.c - -CLEANFILES += da.out -tests:: darray.t da.in da.ref - ./darray.t da.out - cmp da.out da.ref - @echo "darray OK" - -noinst_PROGRAMS += darray.t -darray_t_SOURCES = da-test.c -darray_t_CPPFLAGS = $(TEST_CPPFLAGS) -darray_t_LDFLAGS = -static - -EXTRA_DIST += da-gtest -CLEANFILES += da.in -da.in: da-gtest - perl $(srcdir)/da-gtest 10000 >$@.new && mv $@.new $@ - -EXTRA_DIST += da-ref -CLEANFILES += da.ref -da.ref: da-ref da.in - perl $(srcdir)/da-ref $@.new && mv $@.new $@ - -## Hash tables. -pkginclude_HEADERS += hash.h -libmLib_la_SOURCES += hash.c - -## Symbol tables. -pkginclude_HEADERS += sym.h -libmLib_la_SOURCES += sym.c - -CLEANFILES += sym.out -tests:: sym.t sym.in sym.ref - ./sym.t sym.out - cmp sym.out sym.ref - @echo "sym OK" - -noinst_PROGRAMS += sym.t -sym_t_SOURCES = sym-test.c -sym_t_CPPFLAGS = $(TEST_CPPFLAGS) -sym_t_LDFLAGS = -static - -EXTRA_DIST += sym-gtest -CLEANFILES += sym.in -sym.in: sym-gtest - perl $(srcdir)/sym-gtest 10000 >$@.new && mv $@.new $@ - -EXTRA_DIST += sym-ref -CLEANFILES += sym.ref -sym.ref: sym-ref sym.in - perl $(srcdir)/sym-ref $@.new && mv $@.new $@ - -## Atoms. -pkginclude_HEADERS += atom.h -libmLib_la_SOURCES += atom.c - -## Association tables. -pkginclude_HEADERS += assoc.h -libmLib_la_SOURCES += assoc.c - -CLEANFILES += assoc.out -tests:: assoc.t sym.in sym.ref - ./assoc.t assoc.out - cmp assoc.out sym.ref - @echo "sym OK" - -noinst_PROGRAMS += assoc.t -assoc_t_SOURCES = assoc-test.c -assoc_t_CPPFLAGS = $(TEST_CPPFLAGS) -assoc_t_LDFLAGS = -static +## Encoding and decoding. +SUBDIRS += codec +libmLib_la_LIBADD += codec/libcodec.la -###-------------------------------------------------------------------------- -### User interface. - -## Option parsing. -noinst_LTLIBRARIES += libmdwopt.la -pkginclude_HEADERS += mdwopt.h -libmdwopt_la_SOURCES = mdwopt.c -libmdwopt_la_CPPFLAGS = $(AM_CPPFLAGS) -DBUILDING_MLIB -libutils_la_LIBADD += libmdwopt.la - -## Program naming. -pkginclude_HEADERS += quis.h -libutils_la_SOURCES += quis.c pquis.c - -## Error reporting. -pkginclude_HEADERS += report.h -libutils_la_SOURCES += report.c - -###-------------------------------------------------------------------------- -### Encoding and decoding. - -## form-urlencoded -pkginclude_HEADERS += url.h -libmLib_la_SOURCES += url.c - -## base64 -pkginclude_HEADERS += base64.h -libmLib_la_SOURCES += base64.c - -EXTRA_DIST += base64.in base64.ref -CLEANFILES += base64.out -tests:: base64.t base64.in base64.ref - ./base64.t <$(srcdir)/base64.in >base64.out - cmp base64.out $(srcdir)/base64.ref - ./base64.t -d <$(srcdir)/base64.ref >base64.out - cmp base64.out $(srcdir)/base64.in - @echo "base64 OK" - -noinst_PROGRAMS += base64.t -base64_t_SOURCES = base64.c -base64_t_CPPFLAGS = $(TEST_CPPFLAGS) -base64_t_LDFLAGS = -static - -## base32 -pkginclude_HEADERS += base32.h -libmLib_la_SOURCES += base32.c - -EXTRA_DIST += base32.in base32.ref -CLEANFILES += base32.out -tests:: base32.t base32.in base32.ref - ./base32.t <$(srcdir)/base32.in >base32.out - cmp base32.out $(srcdir)/base32.ref - ./base32.t -d <$(srcdir)/base32.ref >base32.out - cmp base32.out $(srcdir)/base32.in - @echo "base32 OK" - -noinst_PROGRAMS += base32.t -base32_t_SOURCES = base32.c -base32_t_CPPFLAGS = $(TEST_CPPFLAGS) -base32_t_LDFLAGS = -static - -## hex -pkginclude_HEADERS += hex.h -libmLib_la_SOURCES += hex.c - -EXTRA_DIST += hex.in hex.ref -CLEANFILES += hex.out -tests:: hex.t hex.in hex.ref - ./hex.t <$(srcdir)/hex.in >hex.out - cmp hex.out $(srcdir)/hex.ref - ./hex.t -d <$(srcdir)/hex.ref >hex.out - cmp hex.out $(srcdir)/hex.in - @echo "hex OK" - -noinst_PROGRAMS += hex.t -hex_t_SOURCES = hex.c -hex_t_CPPFLAGS = $(TEST_CPPFLAGS) -hex_t_LDFLAGS = -static - -###-------------------------------------------------------------------------- -### System utilities. +## System utilities. +SUBDIRS += sys +libmLib_la_LIBADD += sys/libsys.la -## Daemons. -pkginclude_HEADERS += daemonize.h -libmLib_la_SOURCES += daemonize.c +## Buffering. +SUBDIRS += buf +libmLib_la_LIBADD += buf/libbuf.la -## Environment variables. -pkginclude_HEADERS += env.h -libmLib_la_SOURCES += env.c +## Event-driven networking. +SUBDIRS += sel +libmLib_la_LIBADD += sel/libsel.la -## File and descriptor flags. -pkginclude_HEADERS += fdflags.h -libmLib_la_SOURCES += fdflags.c - -## File descriptor passing. -pkginclude_HEADERS += fdpass.h -libmLib_la_SOURCES += fdpass.c - -## Watching files for modification. -pkginclude_HEADERS += fwatch.h -libmLib_la_SOURCES += fwatch.c - -## File locking. -pkginclude_HEADERS += lock.h -libmLib_la_SOURCES += lock.c - -## Time arithmetic. -pkginclude_HEADERS += tv.h -libmLib_la_SOURCES += tv.c - -###-------------------------------------------------------------------------- -### Buffering. - -## Line buffering. -pkginclude_HEADERS += lbuf.h -libmLib_la_SOURCES += lbuf.c - -## Packet buffering. -pkginclude_HEADERS += pkbuf.h -libmLib_la_SOURCES += pkbuf.c - -###-------------------------------------------------------------------------- -### Network utilities. - -## Core event selection. -pkginclude_HEADERS += sel.h -libmLib_la_SOURCES += sel.c - -## Waiting for buffers to fill. -pkginclude_HEADERS += selbuf.h selpk.h -libmLib_la_SOURCES += selbuf.c selpk.c - -## RFC931 identification. -pkginclude_HEADERS += ident.h -libmLib_la_SOURCES += ident.c - -## Nonblocking connections. -pkginclude_HEADERS += conn.h -libmLib_la_SOURCES += conn.c - -## Signal handling -pkginclude_HEADERS += sig.h -libmLib_la_SOURCES += sig.c - -## Name resolution. -pkginclude_HEADERS += bres.h - -if WITH_ADNS -libmLib_la_SOURCES += bres-adns.c -else -libmLib_la_SOURCES += bres.c -pkglibexec_PROGRAMS += bres -bres_SOURCES = bres.c -bres_CPPFLAGS = -DBRES_STANDALONE $(AM_CPPFLAGS) -bres_LDADD = -endif - -###-------------------------------------------------------------------------- -### Testing and debugging. +## Testing. +SUBDIRS += test +libmLib_la_LIBADD += test/libtest.la ## Tracing. -pkginclude_HEADERS += trace.h -libmLib_la_SOURCES += trace.c traceopt.c - -## Memory tracking. -pkginclude_HEADERS += track.h -libmLib_la_SOURCES += track.c - -## Testing. -pkginclude_HEADERS += testrig.h -libmLib_la_SOURCES += testrig.c +SUBDIRS += trace +libmLib_la_LIBADD += trace/libtrace.la ###-------------------------------------------------------------------------- -### Manual. - -SUBDIRS += man - -install-man: - (cd man && $(MAKE) install-man) -uninstall-man: - (cd man && $(MAKE) uninstall-man) -.PHONY: install-man uninstall-man +### Testing. +SUBDIRS += t ###-------------------------------------------------------------------------- ### Distribution. +## Make sure the precomputed tables are available. Hang this off of any +## distributed file. +mLib.pc.in: ensure-precomp-libs +ensure-precomp-libs: + for d in ui utils; do (cd $$d && $(MAKE) all) || exit 1; done + ## Release number. dist-hook:: echo $(VERSION) >$(distdir)/RELEASE @@ -465,9 +129,18 @@ EXTRA_DIST += config/maninst ## General stuff. EXTRA_DIST += debian/rules debian/copyright EXTRA_DIST += debian/control debian/changelog +EXTRA_DIST += debian/compat debian/source/format + +## mlib2 EXTRA_DIST += debian/mlib2.install -EXTRA_DIST += debian/mlib2-adns.install -EXTRA_DIST += debian/mlib-dev.install + +## mlib2-adns +EXTRA_DIST += debian/mlib2-adns.install.in + +## mlib-bin EXTRA_DIST += debian/mlib-bin.install -##----- That's all, folks --------------------------------------------------- +## mlib-dev +EXTRA_DIST += debian/mlib-dev.install + +###----- That's all, folks --------------------------------------------------