X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/7c7ba2aaa02381088315d7ab1c9d9de6afbd5458..e39fbd1495903837a8cdff011fbbe5448963352e:/Makefile.am diff --git a/Makefile.am b/Makefile.am index 7f61828..5b393f7 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,491 +24,85 @@ ### 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 = -check_PROGRAMS = -lib_LTLIBRARIES = -noinst_LTLIBRARIES = -pkglibexec_PROGRAMS = -pkginclude_HEADERS = -EXTRA_DIST = -CLEANFILES = -DISTCLEANFILES = -PROGMANS = -LIBMANS = - -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 +lib_LTLIBRARIES = libmLib.la libmLib_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) 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) && \ + $(AM_V_GEN)$(confsubst) $(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 -LIBMANS += macros.3 - -## Alignment. -pkginclude_HEADERS += align.h -LIBMANS += align.3 - -## Bit manipulation. -pkginclude_HEADERS += bits.h -LIBMANS += bits.3 - -EXTRA_DIST += bits.in bits-testgen.c -tests:: bits.t bits.in - ./bits.t -f $(srcdir)/bits.in - -check_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 -LIBMANS += exc.3 - -## String handling. -pkginclude_HEADERS += str.h -libutils_la_SOURCES += str.c -LIBMANS += str.3 - -## Version comparison. -pkginclude_HEADERS += versioncmp.h -libmLib_la_SOURCES += versioncmp.c -LIBMANS += versioncmp.3 - -EXTRA_DIST += versioncmp.in -tests:: versioncmp.t versioncmp.in - ./versioncmp.t -f $(srcdir)/versioncmp.in - -check_PROGRAMS += versioncmp.t -versioncmp_t_SOURCES = versioncmp-test.c -versioncmp_t_CPPFLAGS = $(TEST_CPPFLAGS) -versioncmp_t_LDFLAGS = -static +### Subdirectories. +### +### Note: There are implicit dependencies between the subdirectories. Be +### careful about reordering them. -###-------------------------------------------------------------------------- -### 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 -LIBMANS += alloc.3 arena.3 sub.3 - -## Pool allocator. -pkginclude_HEADERS += pool.h -libmLib_la_SOURCES += pool.c pool-file.c pool-sub.c -LIBMANS += pool.3 - -###-------------------------------------------------------------------------- -### Hashing. - -## CRC32. -pkginclude_HEADERS += crc32.h -libmLib_la_SOURCES += crc32.c crc32-tab.c -LIBMANS += crc32.3 - -bin_PROGRAMS += crc-mktab -crc_mktab_SOURCES = crc-mktab.c $(UTIL_SOURCES) -crc_mktab_LDADD = libutils.la -PROGMANS += crc-mktab.1 - -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 -LIBMANS += unihash.3 - -bin_PROGRAMS += unihash-mkstatic -unihash_mkstatic_SOURCES = unihash-mkstatic.c -unihash_mkstatic_LDADD = libutils.la -PROGMANS += unihash-mkstatic.1 - -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 $@ - -check_PROGRAMS += unihash.t -unihash_t_SOURCES = unihash.c -unihash_t_CPPFLAGS = $(TEST_CPPFLAGS) -unihash_t_LDFLAGS = -static - -tests:: unihash.t unihash.in - ./unihash.t -f unihash.in - -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 -LIBMANS += dstr.3 dspool.3 - -## Buffers. -pkginclude_HEADERS += buf.h -libmLib_la_SOURCES += buf.c buf-dstr.c -LIBMANS += buf.3 - -## Dynamic arrays. -pkginclude_HEADERS += darray.h -libmLib_la_SOURCES += darray.c -LIBMANS += darray.3 - -CLEANFILES += da.out -tests:: darray.t da.in da.ref - ./darray.t da.out - cmp da.out da.ref - @echo "darray OK" - -check_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 -LIBMANS += hash.3 - -## Symbol tables. -pkginclude_HEADERS += sym.h -libmLib_la_SOURCES += sym.c -LIBMANS += sym.3 - -CLEANFILES += sym.out -tests:: sym.t sym.in sym.ref - ./sym.t sym.out - cmp sym.out sym.ref - @echo "sym OK" +SUBDIRS += mem +libmLib_la_LIBADD += mem/libmem.la -check_PROGRAMS += sym.t -sym_t_SOURCES = sym-test.c -sym_t_CPPFLAGS = $(TEST_CPPFLAGS) -sym_t_LDFLAGS = -static +## User interface. +SUBDIRS += ui +libmLib_la_LIBADD += ui/libui.la -EXTRA_DIST += sym-gtest -CLEANFILES += sym.in -sym.in: sym-gtest - perl $(srcdir)/sym-gtest 10000 >$@.new && mv $@.new $@ +## Hashing. +SUBDIRS += hash +libmLib_la_LIBADD += hash/libhash.la -EXTRA_DIST += sym-ref -CLEANFILES += sym.ref -sym.ref: sym-ref sym.in - perl $(srcdir)/sym-ref $@.new && mv $@.new $@ +## Data structures. +SUBDIRS += struct +libmLib_la_LIBADD += struct/libstruct.la -## Atoms. -pkginclude_HEADERS += atom.h -libmLib_la_SOURCES += atom.c -LIBMANS += atom.3 +## Encoding and decoding. +SUBDIRS += codec +libmLib_la_LIBADD += codec/libcodec.la -## Association tables. -pkginclude_HEADERS += assoc.h -libmLib_la_SOURCES += assoc.c -LIBMANS += assoc.3 +## System utilities. +SUBDIRS += sys +libmLib_la_LIBADD += sys/libsys.la -CLEANFILES += assoc.out -tests:: assoc.t sym.in sym.ref - ./assoc.t assoc.out - cmp assoc.out sym.ref - @echo "sym OK" +## Buffering. +SUBDIRS += buf +libmLib_la_LIBADD += buf/libbuf.la -check_PROGRAMS += assoc.t -assoc_t_SOURCES = assoc-test.c -assoc_t_CPPFLAGS = $(TEST_CPPFLAGS) -assoc_t_LDFLAGS = -static +## Event-driven networking. +SUBDIRS += sel +libmLib_la_LIBADD += sel/libsel.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 -LIBMANS += mdwopt.3 - -## Program naming. -pkginclude_HEADERS += quis.h -libutils_la_SOURCES += quis.c pquis.c -LIBMANS += quis.3 - -## Error reporting. -pkginclude_HEADERS += report.h -libutils_la_SOURCES += report.c -LIBMANS += report.3 - -###-------------------------------------------------------------------------- -### Encoding and decoding. - -## form-urlencoded -pkginclude_HEADERS += url.h -libmLib_la_SOURCES += url.c -LIBMANS += url.3 - -## base64 -pkginclude_HEADERS += base64.h -libmLib_la_SOURCES += base64.c -LIBMANS += base64.3 - -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" - -check_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 -LIBMANS += base32.3 - -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" - -check_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 -LIBMANS += hex.3 - -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" - -check_PROGRAMS += hex.t -hex_t_SOURCES = hex.c -hex_t_CPPFLAGS = $(TEST_CPPFLAGS) -hex_t_LDFLAGS = -static - -###-------------------------------------------------------------------------- -### System utilities. - -## Daemons. -pkginclude_HEADERS += daemonize.h -libmLib_la_SOURCES += daemonize.c -LIBMANS += daemonize.3 - -## Environment variables. -pkginclude_HEADERS += env.h -libmLib_la_SOURCES += env.c -LIBMANS += env.3 - -## File and descriptor flags. -pkginclude_HEADERS += fdflags.h -libmLib_la_SOURCES += fdflags.c -LIBMANS += fdflags.3 - -## File descriptor passing. -pkginclude_HEADERS += fdpass.h -libmLib_la_SOURCES += fdpass.c -LIBMANS += fdpass.3 - -## Watching files for modification. -pkginclude_HEADERS += fwatch.h -libmLib_la_SOURCES += fwatch.c -LIBMANS += fwatch.3 - -## File locking. -pkginclude_HEADERS += lock.h -libmLib_la_SOURCES += lock.c -LIBMANS += lock.3 - -## Time arithmetic. -pkginclude_HEADERS += tv.h -libmLib_la_SOURCES += tv.c -LIBMANS += tv.3 - -###-------------------------------------------------------------------------- -### Buffering. - -## Line buffering. -pkginclude_HEADERS += lbuf.h -libmLib_la_SOURCES += lbuf.c -LIBMANS += lbuf.3 - -## Packet buffering. -pkginclude_HEADERS += pkbuf.h -libmLib_la_SOURCES += pkbuf.c -LIBMANS += pkbuf.3 - -###-------------------------------------------------------------------------- -### Network utilities. - -## Core event selection. -pkginclude_HEADERS += sel.h -libmLib_la_SOURCES += sel.c -LIBMANS += sel.3 - -## Waiting for buffers to fill. -pkginclude_HEADERS += selbuf.h selpk.h -libmLib_la_SOURCES += selbuf.c selpk.c -LIBMANS += selbuf.3 selpk.3 - -## RFC931 identification. -pkginclude_HEADERS += ident.h -libmLib_la_SOURCES += ident.c -LIBMANS += ident.3 - -## Nonblocking connections. -pkginclude_HEADERS += conn.h -libmLib_la_SOURCES += conn.c -LIBMANS += conn.3 - -## Signal handling -pkginclude_HEADERS += sig.h -libmLib_la_SOURCES += sig.c -LIBMANS += sig.3 - -## Name resolution. -pkginclude_HEADERS += bres.h -LIBMANS += bres.3 - -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 -LIBMANS += trace.3 - -## Memory tracking. -pkginclude_HEADERS += track.h -libmLib_la_SOURCES += track.c - -## Testing. -pkginclude_HEADERS += testrig.h -libmLib_la_SOURCES += testrig.c -LIBMANS += testrig.3 +SUBDIRS += trace +libmLib_la_LIBADD += trace/libtrace.la ###-------------------------------------------------------------------------- -### Manual. - -EXTRA_DIST += $(LIBMANS) $(PROGMANS) - -install-data-local: install-man -install-man: $(LIBMANS) $(PROGMANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(mandir) - $(top_srcdir)/config/maninst \ - -d $(DESTDIR)$(mandir) -s $(srcdir) \ - -i "$(INSTALL)" \ - install $(PROGMANS) - $(top_srcdir)/config/maninst \ - -d $(DESTDIR)$(mandir) -s $(srcdir) \ - -i "$(INSTALL)" -e $(manext) \ - install $(LIBMANS) -.PHONY: install-man +### Testing. -uninstall-local: uninstall-man -uninstall-man: - @$(NORMAL_UNINSTALL) - $(top_srcdir)/config/maninst \ - -d $(DESTDIR)$(mandir) -s $(srcdir) \ - uninstall $(PROGMANS) - $(top_srcdir)/config/maninst \ - -d $(DESTDIR)$(mandir) -s $(srcdir) -e $(manext) \ - uninstall $(LIBMANS) -.PHONY: uninstall-man +SUBDIRS += t ###-------------------------------------------------------------------------- ### Distribution. @@ -533,4 +127,4 @@ EXTRA_DIST += debian/mlib2-adns.install EXTRA_DIST += debian/mlib-dev.install EXTRA_DIST += debian/mlib-bin.install -##----- That's all, folks --------------------------------------------------- +###----- That's all, folks --------------------------------------------------