Add support for compressed PDF streams, using Simon's new deflate library.
[sgt/halibut] / Makefile
CommitLineData
d7482997 1# Halibut master makefile
2
73a05796 3# Currently depends on gcc, because:
4# - the dependency tracking uses -MD in order to avoid needing an
5# explicit `make depend' step
6# - the definition of CFLAGS includes the gcc-specific flag
7# `-Wall'
8#
9# Currently depends on GNU make, because:
10# - the Makefile uses GNU ifdef / ifndef commands and GNU make `%'
11# pattern rules
7ce668da 12# - we use .PHONY
d7482997 13
a4d3c848 14prefix=/usr/local
15exec_prefix=$(prefix)
16bindir=$(exec_prefix)/bin
17INSTALL=install -c
18
7ce668da 19.PHONY: all install clean spotless topclean release
20
574825cf 21ifdef RELEASE
22ifndef VERSION
23VERSION := $(RELEASE)
24endif
25else
26CFLAGS += -g
27endif
28
29ifeq (x$(VERSION)y,xy)
30RELDIR := halibut
31else
32RELDIR := halibut-$(VERSION)
33endif
34
d7482997 35# `make' from top level will build in directory `build'
36# `make BUILDDIR=foo' from top level will build in directory foo
37ifndef REALBUILD
38ifndef BUILDDIR
39ifdef TEST
40BUILDDIR := test
41else
42BUILDDIR := build
43endif
44endif
574825cf 45
a4d3c848 46all install:
d7482997 47 @test -d $(BUILDDIR) || mkdir $(BUILDDIR)
1b7cc907 48 @$(MAKE) -C $(BUILDDIR) -f ../Makefile $@ REALBUILD=yes
574825cf 49
48f8f266 50spotless: topclean
d7482997 51 @test -d $(BUILDDIR) || mkdir $(BUILDDIR)
1b7cc907 52 @$(MAKE) -C $(BUILDDIR) -f ../Makefile spotless REALBUILD=yes
574825cf 53
48f8f266 54clean: topclean
d7482997 55 @test -d $(BUILDDIR) || mkdir $(BUILDDIR)
1b7cc907 56 @$(MAKE) -C $(BUILDDIR) -f ../Makefile clean REALBUILD=yes
574825cf 57
58# Remove Halibut output files in the source directory (may
59# have been created by running, for example, `build/halibut
60# inputs/test.but').
48f8f266 61topclean:
574825cf 62 rm -f *.html output.* *.tar.gz
63
64# Make a release archive. If $(VERSION) is specified, this will
65# also contain a `manifest' file which will be used to decide the
66# version number automatically.
dc69abf1 67release: release.sh
68 ./release.sh $(RELDIR) $(VERSION)
574825cf 69
d7482997 70else
71
72# The `real' makefile part.
73
ee90d1f0 74CFLAGS += -Wall -W -ansi -pedantic
7e2417cc 75LIBS += -lm
d7482997 76
77ifdef TEST
78CFLAGS += -DLOGALLOC
79LIBS += -lefence
80endif
81
d7482997 82ifndef VER
83ifdef VERSION
84VER := $(VERSION)
85endif
86endif
87ifdef VER
574825cf 88VDEF = -DVERSION=\"$(VER)\"
89else
faaa472f 90VDEF = `(cd $(SRC); md5sum -c manifest >& /dev/null && cat version)`
d7482997 91endif
92
a4d3c848 93all: halibut
05a1519d 94
d7482997 95SRC := ../
96
dc69abf1 97ifeq ($(shell test -d $(SRC)charset && echo yes),yes)
05a1519d 98LIBCHARSET_SRCDIR = $(SRC)charset/
dc69abf1 99else
100LIBCHARSET_SRCDIR = $(SRC)../charset/
101endif
05a1519d 102LIBCHARSET_OBJDIR = ./#
103LIBCHARSET_OBJPFX = cs-#
104LIBCHARSET_GENPFX = charset-#
105MD = -MD
106CFLAGS += -I$(LIBCHARSET_SRCDIR) -I$(LIBCHARSET_OBJDIR)
107include $(LIBCHARSET_SRCDIR)Makefile
108
d7482997 109MODULES := main malloc ustring error help licence version misc tree234
44407fea 110MODULES += input in_afm in_pf keywords contents index biblio
78c73085 111MODULES += bk_text bk_html bk_whlp bk_man bk_info bk_paper bk_ps bk_pdf
7e2417cc 112MODULES += winhelp deflate psdata wcwidth
d7482997 113
05a1519d 114OBJECTS := $(addsuffix .o,$(MODULES)) $(LIBCHARSET_OBJS)
d7482997 115DEPS := $(addsuffix .d,$(MODULES))
116
117halibut: $(OBJECTS)
118 $(CC) $(LFLAGS) -o halibut $(OBJECTS) $(LIBS)
119
120%.o: $(SRC)%.c
121 $(CC) $(CFLAGS) -MD -c $<
122
123version.o: FORCE
124 $(CC) $(VDEF) -MD -c $(SRC)version.c
125
126spotless:: clean
127 rm -f *.d
128
129clean::
130 rm -f *.o halibut core
131
a4d3c848 132install:
133 $(INSTALL) -m 755 halibut $(bindir)/halibut
134 $(MAKE) -C ../doc install prefix="$(prefix)" INSTALL="$(INSTALL)"
135
d7482997 136FORCE: # phony target to force version.o to be rebuilt every time
137
138-include $(DEPS)
139
140endif