1 ##############################################################################
2 # pfixtools: a collection of postfix related tools #
4 # ________________________________________________________________________ #
6 # Redistribution and use in source and binary forms, with or without #
7 # modification, are permitted provided that the following conditions #
10 # 1. Redistributions of source code must retain the above copyright #
11 # notice, this list of conditions and the following disclaimer. #
12 # 2. Redistributions in binary form must reproduce the above copyright #
13 # notice, this list of conditions and the following disclaimer in the #
14 # documentation and/or other materials provided with the distribution. #
15 # 3. The names of its contributors may not be used to endorse or promote #
16 # products derived from this software without specific prior written #
19 # THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS #
20 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED #
21 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE #
22 # DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY #
23 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL #
24 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS #
25 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) #
26 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, #
27 # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN #
28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE #
29 # POSSIBILITY OF SUCH DAMAGE. #
31 # Copyright (c) 2006-2008 the Authors #
32 # see AUTHORS and source files for details #
33 ##############################################################################
35 __DIR__:=$(realpath $(dir $(lastword $(MAKEFILE_LIST))))
37 include $(__DIR__)/cflags.mk
40 LDFLAGSBASE += $(if $(DARWIN),-L/opt/local/lib,-Wl,-warn-common)
41 CFLAGSBASE += --std=gnu99 -I../ -I../common $(if $(DARWIN),-I/opt/local/include,)
42 ASCIIDOC = asciidoc -f $(__DIR__)/asciidoc.conf -d manpage \
43 -apft_version=$(shell git-describe)
44 XMLTO = xmlto -m $(__DIR__)/callouts.xsl
45 MAN_SECTIONS = 1 2 3 4 5 6 7 8 9
47 INSTALL_PROGS = $(addprefix install-,$(PROGRAMS))
49 all: $(GENERATED) $(LIBS) $(PROGRAMS)
51 DOCS_SRC = $(foreach s,$(MAN_SECTIONS),$(patsubst %.$(s),%.txt,$(filter %.$(s),$(DOCS))))
52 DOCS_HTML = $(DOCS_SRC:.txt=.html)
53 DOCS_XML = $(DOCS_SRC:.txt=.xml)
54 doc: $(DOCS) $(DOCS_HTML)
56 install: all $(INSTALL_PROGS) install-doc
61 $(foreach s,$(MAN_SECTIONS),\
62 $(foreach m,$(filter %.$(s),$(DOCS)),\
63 ; install -d $(DESTDIR)$(prefix)/share/man/man$(s)/ \
64 ; install $(m) $(DESTDIR)$(prefix)/share/man/man$(s)/ \
66 $(if $(DOCS_HTML),install $(DOCS_HTML) $(DESTDIR)$(prefix)/share/doc/pfixtools)
68 $(INSTALL_PROGS): install-%:
69 install $* $(DESTDIR)$(prefix)/sbin
72 $(RM) $(LIBS:=.a) $(PROGRAMS) $(TESTS) .*.o .*.dep
73 $(RM) $(DOCS) $(DOCS_XML) $(DOCS_HTML)
79 .tags: $(shell git ls-files | egrep '\.[hc]$$')
82 headers: HEADACHEOPTS=-c mk/headache.cfg -h mk/COPYING
84 @which headache > /dev/null || \
85 ( echo "package headache not installed" ; exit 1 )
86 @git ls-files | egrep '(\.h|\.c|Makefile|*\.mk)$$' | xargs -t headache $(HEADACHEOPTS)
89 ./$< $@ || ($(RM) $@; exit 1)
92 ./$< $@ || ($(RM) $@; exit 1)
95 $(shell test -d $(@D) || mkdir -p $(@D))
96 $(CC) $(CFLAGS) -MMD -MT ".$*.dep $@" -MF .$*.dep -g -c -o $@ $<
102 $(DOCS_HTML): %.html: %.txt
103 $(ASCIIDOC) -b xhtml11 -o $@ $<
105 $(DOCS_XML): %.xml: %.txt
106 $(ASCIIDOC) -b docbook -o $@ $<
108 %.1 %.2 %.3 %.4 %.5 %.6 %.7 %.8 %.9: %.xml
113 $(LIBS:=.a): $$(patsubst %.c,.%.o,$$($$(patsubst %.a,%,$$@)_SOURCES)) Makefile
115 $(AR) rcs $@ $(filter %.o,$^)
117 $(PROGRAMS) $(TESTS): $$(patsubst %.c,.%.o,$$($$@_SOURCES)) Makefile
118 $(CC) -o $@ $(filter %.o,$^) $(LDFLAGS) $($@_LIBADD) $(filter %.a,$^)
122 -include $(foreach p,$(PROGRAMS) $(TESTS),$(patsubst %.c,.%.dep,$(filter %.c,$($p_SOURCES))))
124 .PHONY: install-doc install-dir $(INSTALL_PROGS)