X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/d7482997dd1ca71b70df43c15dd5956f435a1a7e..5dd44dceca3dd3c1a4886dd6a7bdf05924e3447f:/Makefile diff --git a/Makefile b/Makefile index b82ba23..3802c58 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,28 @@ # Halibut master makefile -# Requires a compiler with -MD support, currently +# Currently depends on gcc, because: +# - the dependency tracking uses -MD in order to avoid needing an +# explicit `make depend' step +# - the definition of CFLAGS includes the gcc-specific flag +# `-Wall' +# +# Currently depends on GNU make, because: +# - the Makefile uses GNU ifdef / ifndef commands and GNU make `%' +# pattern rules + +ifdef RELEASE +ifndef VERSION +VERSION := $(RELEASE) +endif +else +CFLAGS += -g +endif + +ifeq (x$(VERSION)y,xy) +RELDIR := halibut +else +RELDIR := halibut-$(VERSION) +endif # `make' from top level will build in directory `build' # `make BUILDDIR=foo' from top level will build in directory foo @@ -12,15 +34,46 @@ else BUILDDIR := build endif endif + all: @test -d $(BUILDDIR) || mkdir $(BUILDDIR) @make -C $(BUILDDIR) -f ../Makefile REALBUILD=yes -spotless: + +spotless: topclean @test -d $(BUILDDIR) || mkdir $(BUILDDIR) @make -C $(BUILDDIR) -f ../Makefile spotless REALBUILD=yes -clean: + +clean: topclean @test -d $(BUILDDIR) || mkdir $(BUILDDIR) @make -C $(BUILDDIR) -f ../Makefile clean REALBUILD=yes + +# Remove Halibut output files in the source directory (may +# have been created by running, for example, `build/halibut +# inputs/test.but'). +topclean: + rm -f *.html output.* *.tar.gz + +# Make a release archive. If $(VERSION) is specified, this will +# also contain a `manifest' file which will be used to decide the +# version number automatically. +release: + find . -name CVS -prune -o -name build -prune -o -name reltmp -prune \ + -o -type d -exec mkdir -p reltmp/$(RELDIR)/{} \; + find . -name CVS -prune -o -name build -prune -o -name reltmp -prune \ + -o -name '*.orig' -prune -o -name '*.rej' -prune \ + -o -name '*.txt' -prune -o -name '*.html' -prune \ + -o -name '*.1' -prune -o -name '.cvsignore' -prune \ + -o -name '*.gz' -prune -o -name '.[^.]*' -prune \ + -o -type f -exec ln -s $(PWD)/{} reltmp/$(RELDIR)/{} \; + if test "x$(VERSION)y" != "xy"; then \ + (cd reltmp/$(RELDIR); \ + find . -name '*.[ch]' -exec md5sum {} \; \ + ) > reltmp/$(RELDIR)/manifest; \ + echo "-DVERSION=\"$(VERSION)\"" > reltmp/$(RELDIR)/version; \ + fi + tar chzvCf reltmp - $(RELDIR) > $(RELDIR).tar.gz + rm -rf reltmp + else # The `real' makefile part. @@ -32,28 +85,22 @@ CFLAGS += -DLOGALLOC LIBS += -lefence endif -ifdef RELEASE -ifndef VERSION -VERSION := $(RELEASE) -endif -else -CFLAGS += -g -endif - ifndef VER ifdef VERSION VER := $(VERSION) endif endif ifdef VER -VDEF := -DVERSION=\"$(VER)\" +VDEF = -DVERSION=\"$(VER)\" +else +VDEF = `(cd $(SRC); md5sum -c manifest && cat version)` endif SRC := ../ MODULES := main malloc ustring error help licence version misc tree234 MODULES += input keywords contents index style biblio -MODULES += bk_text bk_xhtml bk_whlp +MODULES += bk_text bk_xhtml bk_whlp bk_man bk_info MODULES += winhelp OBJECTS := $(addsuffix .o,$(MODULES))