srcdir = @srcdir@ INSTALL = @INSTALL@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ mandir = @mandir@ man1dir = $(mandir)/man1 exeext = @EXEEXT@ CC = @CC@ CFLAGS = @CFLAGS@ @WARN_CFLAGS@ CXX = @CXX@ CXXFLAGS = @CXXFLAGS@ @WARN_CFLAGS@ named_version = @PACKAGE_NAME@-@PACKAGE_VERSION@ release_version = @PACKAGE_NAME@--release--@PACKAGE_VERSION@ PCRE_CFLAGS := $(shell pcre-config --cflags) PCRE_LIBS := $(shell pcre-config --libs) INCLUDES = -I. -I$(srcdir) -I$(srcdir)/lib LIBS = $(PCRE_LIBS) @LIBS@ ifeq ($(wildcard $(srcdir)/.svn/*),) include Make.inventory else INVENTORY := $(shell cd $(srcdir) && perl etc/inventory.pl --files) endif SRC_C_FILES = $(patsubst src/%,%,$(filter src/%.cc, $(INVENTORY))) LIB_C_FILES = $(patsubst lib/%,%,$(filter lib/%.c, $(INVENTORY))) LIB_H_FILES = $(patsubst lib/%,%,$(filter lib/%.h, $(INVENTORY))) PROTO_C_FILES = $(filter proto_%.cc, $(SRC_C_FILES)) DISTFILES_GENERATED = Make.inventory config.h.in stamp-h.in configure gen_h_files = config.h gen_c_files = gen_proto_register.cc src_d_files = $(patsubst %.cc,src/%.d,$(SRC_C_FILES)) src_obj_files = $(patsubst %.cc, src/%.o, $(SRC_C_FILES)) $(patsubst %.cc, src/%.o, $(gen_c_files)) lib_obj_files = $(patsubst %.c, lib/%.o, $(LIB_C_FILES)) lib_depend = $(gen_h_files) \ $(patsubst %, $(srcdir)/lib/%, $(LIB_H_FILES)) all : doscan$(exeext) -include $(src_d_files) install: $(INSTALL) -m 755 doscan$(exeext) $(DESTDIR)$(bindir)/doscan$(exeext) $(INSTALL) -m 644 $(srcdir)/doc/doscan.1 $(DESTDIR)$(man1dir)/doscan.1 dist: mkdir $(named_version) tar cf - -C $(srcdir) $(INVENTORY) $(DISTFILES_GENERATED) \ | tar xf - -C $(named_version) cd $(named_version)/ && touch $(DISTFILES_GENERATED) (echo "# Automatically generated. Do not edit." ; \ echo ; echo "INVENTORY=$(INVENTORY)") \ > $(named_version)/Make.inventory GZIP=--best tar czf $(named_version).tar.gz $(named_version)/ rm -rf $(named_version) clean : -rm doscan -rm src/*.o src/*.d lib/*.o lib/*.d -rm src/gen_proto_register.cc -rm stamp-dir distclean : clean -rm config.log config.status config.h stamp-h Makefile doscan$(exeext) : stamp-dir $(src_obj_files) $(lib_obj_files) $(CXX) -o $@ $(src_obj_files) $(lib_obj_files) $(LIBS) stamp-dir : -mkdir src -mkdir lib echo timestamp > stamp-dir src/%.o : $(srcdir)/src/%.cc $(CXX) $(CFLAGS) $(PCRE_CFLAGS) $(INCLUDES) \ -MMD -MF $(patsubst %.o,%.d, $@) \ -c -o $@ $< src/%.o : src/%.cc $(CXX) $(CFLAGS) $(PCRE_CFLAGS) $(INCLUDES) \ -MMD -MF $(patsubst %.o,%.d, $@) \ -c -o $@ $< protocols = $(patsubst proto_%.cc, %, $(filter proto_%.cc, $(SRC_C_FILES))) src/gen_proto_register.cc : $(patsubst %,$(srcdir)/src/%, $(filter proto_%.cc, $(SRC_C_FILES))) Makefile @echo "$@: generating" @echo "/* Automatically generated file. Do not edit. */" > $@ @echo >> $@ @echo "void proto_register_all (void)" >> $@ @echo "{" >> $@ @for p in $(protocols) ; do \ echo " void proto_$${p}_register (void);" >> $@ ; \ done @echo >> $@ @for p in $(protocols) ; do \ echo " proto_$${p}_register ();" >> $@ ; \ done @echo "}" >> $@ lib/%.o : $(srcdir)/lib/%.c $(lib_depend) $(CC) $(CFLAGS) $(PCRE_CFLAGS) $(INCLUDES) -c -o $@ $< # Check sources for basic conformance rules. .PHONY : check check : @echo 'make: Entering directory `'`cd $(srcdir) ; pwd`"'" cd $(srcdir) && perl etc/check-source.pl $(INVENTORY) # Automatic regeneration of files generated by the autoconf machinery. # autoheader might not change config.h.in, so touch a stamp file. $(srcdir)/config.h.in: $(srcdir)/stamp-h.in $(srcdir)/stamp-h.in: $(srcdir)/configure.ac cd $(srcdir) && autoheader echo timestamp > $(srcdir)/stamp-h.in $(srcdir)/config.h: stamp-h stamp-h: $(srcdir)/config.h.in config.status ./config.status Makefile: $(srcdir)/Makefile.in config.status ./config.status config.status: $(srcdir)/configure ./config.status --recheck