# THE POSSIBILITY OF SUCH DAMAGE. #
##############################################################################
-all:
-
-LDFLAGS += -Wl,--warn-common
-
-include mk/cflags.mk
-include mk/tc.mk
-
-CFLAGS += --std=gnu99 -D_GNU_SOURCE
prefix ?= /usr/local
PROGRAMS = postlicyd pfix-srsd
-LIBS = lib
-TESTS = tst-rbl
-
-GENERATED = tokens.h tokens.c
+LIBS = common
+SUBDIRS = $(LIBS) $(PROGRAMS)
-lib_SOURCES = str.c buffer.c common.c epoll.c server.c $(GENERATED)
-
-postlicyd_SOURCES = greylist.c rbl.c main-postlicyd.c lib.a
-postlicyd_LIBADD = $(TC_LIBS)
-
-pfix-srsd_SOURCES = main-srsd.c lib.a
-pfix-srsd_LIBADD = -lsrs2
-
-tst-rbl_SOURCES = tst-rbl.c
-
-install: all
- install -d $(DESTDIR)$(prefix)/sbin
- install $(PROGRAMS) $(DESTDIR)$(prefix)/sbin
- install -d $(DESTDIR)/etc/pfixtools
+CLEAN_TARGETS = $(addprefix clean-,$(SUBDIRS))
+DISTCLEAN_TARGETS = $(addprefix distclean-,$(SUBDIRS))
+INSTALL_TARGETS = $(addprefix install-,$(SUBDIRS))
# RULES ###################################################################{{{
-all: $(GENERATED) $(PROGRAMS) | $(GENERATED)
-
-clean:
- $(RM) $(LIBS:=.a) $(PROGRAMS) $(TESTS) .*.o .*.dep
-
-distclean: clean
- $(RM) $(GENERATED)
+all: $(SUBDIRS)
-tags: .tags
-.tags: $(shell git ls-files | egrep '\.[hc]$$')
- ctags -o $@ $^
+clean: $(CLEAN_TARGETS)
-headers: HEADACHEOPTS=-c mk/headache.cfg -h mk/COPYING
-headers:
- @which headache > /dev/null || \
- ( echo "package headache not installed" ; exit 1 )
- @git ls-files | egrep '(\.h|\.c|Makefile|*\.mk)$$' | xargs -t headache $(HEADACHEOPTS)
+distclean: $(DISTCLEAN_TARGETS)
-%.h: %.sh
- ./$< $@ || ($(RM) $@; exit 1)
+install: all $(INSTALL_TARGETS)
-%.c: %.sh
- ./$< $@ || ($(RM) $@; exit 1)
+$(PROGRAMS): $(LIBS)
-.%.o: %.c Makefile
- $(shell test -d $(@D) || mkdir -p $(@D))
- $(CC) $(CFLAGS) -MMD -MT ".$*.dep $@" -MF .$*.dep -g -c -o $@ $<
+$(SUBDIRS): %:
+ make -C $@ all
-.%.dep: .%.o
+$(CLEAN_TARGETS): clean-%:
+ make -C $* clean
-.SECONDEXPANSION:
+$(DISTCLEAN_TARGETS): distclean-%:
+ make -C $* distclean
-$(LIBS:=.a): $$(patsubst %.c,.%.o,$$($$(patsubst %.a,%,$$@)_SOURCES)) Makefile
- $(RM) $@
- $(AR) rcs $@ $(filter %.o,$^)
+$(INSTALL_TARGETS): install-%: install-dir
+ make -C $* install
-$(PROGRAMS) $(TESTS): $$(patsubst %.c,.%.o,$$($$@_SOURCES)) Makefile common.ld
- $(CC) -o $@ $(filter %.ld,$^) $(filter %.o,$^) $(LDFLAGS) $($@_LIBADD) $(filter %.a,$^)
-
--include $(foreach p,$(PROGRAMS) $(TESTS),$(patsubst %.c,.%.dep,$(filter %.c,$($p_SOURCES))))
+install-dir:
+ install -d $(DESTDIR)$(prefix)/sbin
+ install -d $(DESTDIR)/etc/pfixtools
+.PHONY: clean distclean install install-dir $(SUBDIRS) $(CLEAN_TARGETS) \
+ $(DISTCLEAN_TARGETS) $(INSTALL_TARGETS)
###########################################################################}}}
--- /dev/null
+##############################################################################
+# pfixtools: a collection of postfix related tools #
+# ~~~~~~~~~ #
+# ________________________________________________________________________ #
+# #
+# Redistribution and use in source and binary forms, with or without #
+# modification, are permitted provided that the following conditions #
+# are met: #
+# #
+# 1. Redistributions of source code must retain the above copyright #
+# notice, this list of conditions and the following disclaimer. #
+# 2. Redistributions in binary form must reproduce the above copyright #
+# notice, this list of conditions and the following disclaimer in the #
+# documentation and/or other materials provided with the distribution. #
+# 3. The names of its contributors may not be used to endorse or promote #
+# products derived from this software without specific prior written #
+# permission. #
+# #
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND #
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR #
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS #
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR #
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF #
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS #
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN #
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) #
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF #
+# THE POSSIBILITY OF SUCH DAMAGE. #
+##############################################################################
+
+LIBS = lib
+
+lib_SOURCES = str.c buffer.c common.c epoll.c server.c
+
+include ../mk/common.mk
--- /dev/null
+include ../mk/cflags.mk
+
+prefix ?= /usr/local
+LDFLAGS += -Wl,--warn-common
+CFLAGS += --std=gnu99 -D_GNU_SOURCE -I../ -I../common
+
+INSTALL_PROGS = $(addprefix install-,$(PROGRAMS))
+
+install: all $(INSTALL_PROGS)
+
+$(INSTALL_PROGS): install-%:
+ install $* $(DESTDIR)$(prefix)/sbin
+
+all: $(GENERATED) $(LIBS) $(PROGRAMS) | $(GENERATED)
+
+clean:
+ $(RM) $(LIBS:=.a) $(PROGRAMS) $(TESTS) .*.o .*.dep
+
+distclean: clean
+ $(RM) $(GENERATED)
+
+tags: .tags
+.tags: $(shell git ls-files | egrep '\.[hc]$$')
+ ctags -o $@ $^
+
+headers: HEADACHEOPTS=-c mk/headache.cfg -h mk/COPYING
+headers:
+ @which headache > /dev/null || \
+ ( echo "package headache not installed" ; exit 1 )
+ @git ls-files | egrep '(\.h|\.c|Makefile|*\.mk)$$' | xargs -t headache $(HEADACHEOPTS)
+
+%.h: %.sh
+ ./$< $@ || ($(RM) $@; exit 1)
+
+%.c: %.sh
+ ./$< $@ || ($(RM) $@; exit 1)
+
+.%.o: %.c Makefile
+ $(shell test -d $(@D) || mkdir -p $(@D))
+ $(CC) $(CFLAGS) -MMD -MT ".$*.dep $@" -MF .$*.dep -g -c -o $@ $<
+
+.%.dep: .%.o
+
+$(LIBS): %: %.a
+
+.SECONDEXPANSION:
+
+$(LIBS:=.a): $$(patsubst %.c,.%.o,$$($$(patsubst %.a,%,$$@)_SOURCES)) Makefile
+ $(RM) $@
+ $(AR) rcs $@ $(filter %.o,$^)
+
+$(PROGRAMS) $(TESTS): $$(patsubst %.c,.%.o,$$($$@_SOURCES)) Makefile ../common.ld
+ $(CC) -o $@ $(filter %.ld,$^) $(filter %.o,$^) $(LDFLAGS) $($@_LIBADD) $(filter %.a,$^)
+
+-include $(foreach p,$(PROGRAMS) $(TESTS),$(patsubst %.c,.%.dep,$(filter %.c,$($p_SOURCES))))
+
+.PHONY: install-dir $(INSTALL_PROGS)
--- /dev/null
+##############################################################################
+# pfixtools: a collection of postfix related tools #
+# ~~~~~~~~~ #
+# ________________________________________________________________________ #
+# #
+# Redistribution and use in source and binary forms, with or without #
+# modification, are permitted provided that the following conditions #
+# are met: #
+# #
+# 1. Redistributions of source code must retain the above copyright #
+# notice, this list of conditions and the following disclaimer. #
+# 2. Redistributions in binary form must reproduce the above copyright #
+# notice, this list of conditions and the following disclaimer in the #
+# documentation and/or other materials provided with the distribution. #
+# 3. The names of its contributors may not be used to endorse or promote #
+# products derived from this software without specific prior written #
+# permission. #
+# #
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND #
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR #
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS #
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR #
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF #
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS #
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN #
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) #
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF #
+# THE POSSIBILITY OF SUCH DAMAGE. #
+##############################################################################
+
+PROGRAMS = pfix-srsd
+
+pfix-srsd_SOURCES = main-srsd.c ../common/lib.a
+pfix-srsd_LIBADD = -lsrs2
+
+include ../mk/common.mk
--- /dev/null
+##############################################################################
+# pfixtools: a collection of postfix related tools #
+# ~~~~~~~~~ #
+# ________________________________________________________________________ #
+# #
+# Redistribution and use in source and binary forms, with or without #
+# modification, are permitted provided that the following conditions #
+# are met: #
+# #
+# 1. Redistributions of source code must retain the above copyright #
+# notice, this list of conditions and the following disclaimer. #
+# 2. Redistributions in binary form must reproduce the above copyright #
+# notice, this list of conditions and the following disclaimer in the #
+# documentation and/or other materials provided with the distribution. #
+# 3. The names of its contributors may not be used to endorse or promote #
+# products derived from this software without specific prior written #
+# permission. #
+# #
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND #
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE #
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR #
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS #
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR #
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF #
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS #
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN #
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) #
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF #
+# THE POSSIBILITY OF SUCH DAMAGE. #
+##############################################################################
+
+include ../mk/tc.mk
+
+PROGRAMS = postlicyd
+GENERATED = tokens.h tokens.c
+TESTS = test-rbl
+
+postlicyd_SOURCES = greylist.c rbl.c main-postlicyd.c $(GENERATED) ../common/lib.a
+postlicyd_LIBADD = $(TC_LIBS)
+
+tst-rbl_SOURCES = tst-rbl.c
+
+include ../mk/common.mk