From: Florent Bruneau Date: Tue, 9 Sep 2008 11:52:58 +0000 (+0200) Subject: Cleanup source structure. X-Git-Url: http://git.madism.org/?a=commitdiff_plain;h=8977d252fc44ae953df4bde4a2f1c5895beea4e0;p=apps%2Fpfixtools.git Cleanup source structure. Signed-off-by: Florent Bruneau --- diff --git a/Makefile b/Makefile index 5508e3d..a46a1e4 100644 --- a/Makefile +++ b/Makefile @@ -29,78 +29,44 @@ # 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) ###########################################################################}}} diff --git a/common/Makefile b/common/Makefile new file mode 100644 index 0000000..0c20bf0 --- /dev/null +++ b/common/Makefile @@ -0,0 +1,36 @@ +############################################################################## +# 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 diff --git a/buffer.c b/common/buffer.c similarity index 100% rename from buffer.c rename to common/buffer.c diff --git a/buffer.h b/common/buffer.h similarity index 100% rename from buffer.h rename to common/buffer.h diff --git a/common.c b/common/common.c similarity index 100% rename from common.c rename to common/common.c diff --git a/common.h b/common/common.h similarity index 100% rename from common.h rename to common/common.h diff --git a/epoll.c b/common/epoll.c similarity index 100% rename from epoll.c rename to common/epoll.c diff --git a/epoll.h b/common/epoll.h similarity index 100% rename from epoll.h rename to common/epoll.h diff --git a/mem.h b/common/mem.h similarity index 100% rename from mem.h rename to common/mem.h diff --git a/server.c b/common/server.c similarity index 100% rename from server.c rename to common/server.c diff --git a/server.h b/common/server.h similarity index 100% rename from server.h rename to common/server.h diff --git a/str.c b/common/str.c similarity index 100% rename from str.c rename to common/str.c diff --git a/str.h b/common/str.h similarity index 100% rename from str.h rename to common/str.h diff --git a/mk/common.mk b/mk/common.mk new file mode 100644 index 0000000..3fcb4e4 --- /dev/null +++ b/mk/common.mk @@ -0,0 +1,57 @@ +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) diff --git a/pfix-srsd/Makefile b/pfix-srsd/Makefile new file mode 100644 index 0000000..65f3f36 --- /dev/null +++ b/pfix-srsd/Makefile @@ -0,0 +1,37 @@ +############################################################################## +# 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 diff --git a/main-srsd.c b/pfix-srsd/main-srsd.c similarity index 100% rename from main-srsd.c rename to pfix-srsd/main-srsd.c diff --git a/postlicyd/Makefile b/postlicyd/Makefile new file mode 100644 index 0000000..5a0ab49 --- /dev/null +++ b/postlicyd/Makefile @@ -0,0 +1,43 @@ +############################################################################## +# 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 diff --git a/greylist.c b/postlicyd/greylist.c similarity index 100% rename from greylist.c rename to postlicyd/greylist.c diff --git a/greylist.h b/postlicyd/greylist.h similarity index 100% rename from greylist.h rename to postlicyd/greylist.h diff --git a/main-postlicyd.c b/postlicyd/main-postlicyd.c similarity index 100% rename from main-postlicyd.c rename to postlicyd/main-postlicyd.c diff --git a/qsort.c b/postlicyd/qsort.c similarity index 100% rename from qsort.c rename to postlicyd/qsort.c diff --git a/rbl.c b/postlicyd/rbl.c similarity index 100% rename from rbl.c rename to postlicyd/rbl.c diff --git a/rbl.h b/postlicyd/rbl.h similarity index 100% rename from rbl.h rename to postlicyd/rbl.h diff --git a/tokens.sh b/postlicyd/tokens.sh similarity index 100% rename from tokens.sh rename to postlicyd/tokens.sh diff --git a/tst-rbl.c b/postlicyd/tst-rbl.c similarity index 100% rename from tst-rbl.c rename to postlicyd/tst-rbl.c