PACKAGE := @PACKAGE_NAME@ VERSION := @PACKAGE_VERSION@ RELEASE := @PACKAGE_RELEASE@ PACKAGE_BUGREPORT := @PACKAGE_BUGREPORT@ prefix := @prefix@ exec_prefix := @exec_prefix@ bindir := @bindir@ libdir := @libdir@ datadir := @datadir@ docdir := @docdir@ mandir := $(datadir)/man localedir := $(datadir)/locale etcdir := $(subst /usr/etc,/etc,$(prefix)/etc) QUILT_DIR = $(datadir)/$(PACKAGE) SCRIPTS_DIR = $(QUILT_DIR)/scripts COMPAT_DIR = $(QUILT_DIR)/compat LIB_DIR = $(libdir)/$(PACKAGE) INSTALL := @INSTALL@ POD2MAN := @POD2MAN@ COLUMN := @COLUMN@ GETOPT := @GETOPT@ CP := @CP@ DATE := @DATE@ PERL := @PERL@ BASH := @BASH@ GREP := @GREP@ TAIL := @TAIL@ TR := @TR@ SED := @SED@ AWK := @AWK@ DIFF := @DIFF@ PATCH := @PATCH@ MKTEMP := @MKTEMP@ MSGFMT := @MSGFMT@ DIFFSTAT := @DIFFSTAT@ RPMBUILD := @RPMBUILD@ SENDMAIL := @SENDMAIL@ COMPAT_SYMLINKS := @COMPAT_SYMLINKS@ COMPAT_PROGRAMS := @COMPAT_PROGRAMS@ default: all define COMPAT_SYMLINK_install install-compat-symlink-$(strip $(1)): install-compat ln -sf $($(shell echo $(1) | $(AWK) '{print toupper($$1)}')) \ $(BUILD_ROOT)$(COMPAT_DIR)/$(strip $(1)) endef $(foreach symlink, $(COMPAT_SYMLINKS), $(eval $(call COMPAT_SYMLINK_install, $(symlink)))) CC := @CC@ CPPFLAGS += @CPPFLAGS@ @DEFS@ CFLAGS += @CFLAGS@ LDFLAGS += @LDFLAGS@ LIBS := @LIBS@ EXEEXT := @EXEEXT@ ISODATE := $(shell date +%Y-%m-%d) #----------------------------------------------------------------------- DIRT += $(shell find . -name '*~') DIRT += $(shell find . -name '.\#*') SRC += COPYING AUTHORS TODO Makefile.in \ configure.ac config/install-sh \ quilt.spec.in quilt.changes \ bash_completion quilt.quiltrc DIRT += quilt.spec BIN_IN := quilt guards BIN_SRC := $(BIN_IN:%=%.in) BIN := $(BIN_IN) SRC += $(BIN_SRC:%=bin/%) DIRT += $(BIN_IN:%=bin/%) QUILT_IN := $(patsubst quilt/%.in,%,$(wildcard quilt/*.in)) QUILT_SRC := $(QUILT_IN:%=%.in) QUILT := $(QUILT_IN) SRC += $(QUILT_SRC:%=quilt/%) DIRT += $(QUILT_IN:%=quilt/%) SCRIPTS_IN := patchfns parse-patch inspect dependency-graph edmail \ remove-trailing-ws SCRIPTS_SRC := $(SCRIPTS_IN:%=%.in) SCRIPTS := $(SCRIPTS_IN) SRC += $(SCRIPTS_SRC:%=scripts/%) DIRT += $(SCRIPTS_IN:%=scripts/%) SRC += $(wildcard compat/*.in) $(wildcard compat/*.sh) DIRT += $(patsubst %.in,%,$(wildcard compat/*.in)) compat/compatfns LIB_SRC := backup-files.c LIB := backup-files$(EXEEXT) SRC += $(LIB_SRC:%=lib/%) DIRT += lib/backup-files$(EXEEXT) $(LIB_SRC:%.c=lib/%.o) DOC_IN := README DOC_SRC := $(DOC_IN:%=doc/%.in) DOC := $(DOC_IN) SRC += $(DOC_SRC) SRC += doc/main.tex doc/quilt.pdf doc/Makefile \ doc/quilt.1.in doc/README.MAIL DIRT += $(DOC_IN:%=doc/%) doc/quilt.1 MAN1 := bin/guards.1 doc/quilt.1 DIRT += $(MAN1) #DEBIAN := changelog control copyright rules # #SRC += $(DEBIAN:%=debian/%) LINGUAS := fr de ja PO := quilt.pot $(LINGUAS:%=%.po) SRC += $(PO:%=po/%) DIRT += po/*.mo po/*~ SRC += $(wildcard test/*.test) test/run test/Makefile \ test/test.quiltrc SRC += changes2changelog #----------------------------------------------------------------------- all : scripts compat-programs $(if $(MSGFMT),$(LINGUAS:%=po/%.mo)) .PHONY :: compat-programs compat-programs : $(COMPAT_PROGRAMS:%=compat/%) @for program in $+; do \ test -x $$program || chmod +x $$program; \ done $(LIB:%=lib/%) : $(LIB_SRC:%.c=lib/%.o) $(CC) -o $@ $(LDFLAGS) $^ $(LIBS) %.mo : %.po msgfmt --statistics -o $@ $< %.po : po/quilt.pot msgmerge -o $@ $@ $^ scripts : $(BIN:%=bin/%) $(QUILT:%=quilt/%) $(SCRIPTS:%=scripts/%) compat \ $(LIB:%=lib/%) $(DOC:%=doc/%) $(MAN1) dist : clean $(PACKAGE)-$(VERSION).tar.gz snapshot : $(PACKAGE)-$(ISODATE).tar.bz2 rpm rpmbuild : $(PACKAGE)-$(VERSION).tar.gz $(RPMBUILD) -ta $< po/quilt.pot: $(filter-out debian/control.in doc/quilt.1.in doc/README.in, \ $(wildcard */*.in)) rm -f po/quilt.pot; touch po/quilt.pot for file in $+ ; do \ if test -n "`$(SED) -ne '1{ /@BASH''@/p }' $$file`"; then \ bash --dump-po-strings $$file ; \ elif test -n "`$(SED) -ne '1{ /@PERL''@/p }' $$file`"; then \ xgettext --from-code=UTF-8 --omit-header --language=Perl \ --keyword=_ -o - $$file; \ else \ echo "Don't know how to handle $$file" >&2 ; \ exit 1; \ fi \ done \ |msguniq \ |msgcat --force-po -F - $@ -o $@ doc/README : doc/README.in $(QUILT:%=quilt/%) @echo "README.in -> README" @while read line; do \ case "$$line" in \ '@REFERENCE''@') \ $(MAKE) -s reference |egrep -v '^make'\ ;; \ *) \ echo $$line \ ;; \ esac ; \ done 2>&1 < $< > $@ doc/quilt.1: doc/quilt.1.in $(QUILT:%=quilt/%) compat-programs @echo "quilt.1.in -> quilt.1" @here=`pwd`; \ PATH="$$here/compat:$$PATH"; \ export PATH; \ while read line; do \ case "$$line" in \ '@REFERENCE''@') \ for cmd in $(sort $(QUILT:%=quilt/%)) ; do \ ($(BASH) -c ". scripts/patchfns ; LC_ALL=C . $$here/$$cmd -h")| \ sed -e 's/Usage: quilt //' \ -e 's/^\([^ ]*\)/\\fB\1\\fP/' \ -e 's/^/.IP "/' -e 's/$$/ " 4/' | \ head -n 1; \ echo ; \ ($(BASH) -c ". scripts/patchfns ; LC_ALL=C . $$here/$$cmd -h")| \ grep -v 'Usage: quilt' | \ sed -e $$'s/^\t//' \ -e $$'s/\t/\\\n/' | \ sed -e 's/^\(-.*\)$$/.IP " \1" 8/' \ -e 's/\$$EDITOR ([^)]*)/$$EDITOR/'; \ echo; \ done \ ;; \ *) \ echo "$$line" \ ;; \ esac ; \ done 2>&1 < $< > $@ .PHONY :: reference reference : $(QUILT:%=quilt/%) compat-programs scripts/patchfns @PATH="`pwd`/compat:$$PATH"; \ export PATH; \ dir=$(CURDIR); \ for i in $(QUILT:%=quilt/%); \ do \ echo; \ ($(BASH) -c ". scripts/patchfns ; cd $$dir ;LC_ALL=C . $$i -h"); \ echo; \ done | \ sed -e 's/\$$EDITOR ([^)]*)/$$EDITOR/' \ -e '/^$$/!s/^/ /' \ -e 's/^ Usage: *//' bin/guards.1 : bin/guards mkdir -p `dirname $@` $(POD2MAN) $< > $@ $(PACKAGE)-$(VERSION).tar.gz : $(SRC) configure $(PACKAGE).spec rm -f $(PACKAGE)-$(VERSION) $@ ln -s . $(PACKAGE)-$(VERSION) tar chf - $(+:%=$(PACKAGE)-$(VERSION)/%) | gzip -9 > $@ rm -f $(PACKAGE)-$(VERSION) @echo "File $@ created." $(PACKAGE)-$(ISODATE).tar.bz2 : $(SRC) configure $(PACKAGE).spec rm -f $(PACKAGE)-$(ISODATE) $@ ln -s . $(PACKAGE)-$(ISODATE) tar chf - $(+:%=$(PACKAGE)-$(ISODATE)/%) | bzip2 -9 > $@ rm -f $(PACKAGE)-$(ISODATE) @echo "File $@ created." $(PACKAGE).spec : $(PACKAGE).spec.in $(PACKAGE).changes Makefile @echo "Generating spec file" ; \ set -e ; \ changelog="`./changes2changelog $(PACKAGE).changes`" ; \ awk '{ gsub(/@VERSION''@/, "$(VERSION)") ; \ gsub(/@RELEASE''@/, "$(RELEASE)") ; \ gsub(/@CHANGELOG''@/, changelog) ; \ print }' changelog="$$changelog" $< > $@ $(patsubst %.in,%,$(wildcard quilt/*.in scripts/*.in)) :: Makefile % :: %.in @echo "$< -> $@" >&2 @sed -e 's:@LIB''@:$(LIB_DIR):g' \ -e 's:@QUILT''@:$(QUILT_DIR):g' \ -e 's:@SCRIPTS''@:$(SCRIPTS_DIR):g' \ -e 's:@PERL''@:$(PERL):g' \ -e 's:@BASH''@:$(BASH):g' \ -e 's:@VERSION''@:$(VERSION):g' \ -e 's:@RELEASE''@:$(RELEASE):g' \ -e 's:@MTA''@:$(MTA):g' \ -e 's:@LOCALEDIR''@:$(localedir):g' \ -e 's:@DOCSUBDIR''@:$(docdir)/$(PACKAGE)-$(VERSION):g' \ $< > $@ lib/backup-files.o :: Makefile Makefile : Makefile.in @echo "Please run ./configure" @false install-main :: $(INSTALL) -d $(BUILD_ROOT)$(bindir) $(INSTALL) -m 755 $(BIN:%=bin/%) $(BUILD_ROOT)$(bindir)/ $(INSTALL) -d $(BUILD_ROOT)$(QUILT_DIR) $(INSTALL) -m 755 $(QUILT:%=quilt/%) $(BUILD_ROOT)$(QUILT_DIR)/ $(INSTALL) -d $(BUILD_ROOT)$(SCRIPTS_DIR) $(INSTALL) -m 755 $(patsubst %,scripts/%, \ $(filter-out patchfns,$(SCRIPTS))) \ $(BUILD_ROOT)$(SCRIPTS_DIR) $(INSTALL) -m 644 scripts/patchfns $(BUILD_ROOT)$(SCRIPTS_DIR) $(INSTALL) -d $(BUILD_ROOT)$(LIB_DIR) $(INSTALL) -m 755 -s $(LIB:%=lib/%) $(BUILD_ROOT)$(LIB_DIR)/ $(INSTALL) -d $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/ $(INSTALL) -m 644 doc/README \ $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/ $(INSTALL) -m 644 doc/quilt.pdf doc/README.MAIL \ $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/ $(INSTALL) -d $(BUILD_ROOT)$(mandir)/man1 $(INSTALL) -m 644 $(MAN1) $(BUILD_ROOT)$(mandir)/man1/ $(INSTALL) -d $(BUILD_ROOT)$(etcdir) $(INSTALL) -d $(BUILD_ROOT)$(etcdir)/bash_completion.d $(INSTALL) -m 644 bash_completion $(BUILD_ROOT)$(etcdir)/bash_completion.d/quilt $(INSTALL) -m 644 quilt.quiltrc $(BUILD_ROOT)$(etcdir)/ install-compat: @rm -rf $(BUILD_ROOT)$(COMPAT_DIR) ifneq ($(COMPAT_PROGRAMS)$(COMPAT_SYMLINKS),) $(INSTALL) -d $(BUILD_ROOT)$(COMPAT_DIR) ifneq ($(COMPAT_PROGRAMS),) $(INSTALL) -m 755 $(COMPAT_PROGRAMS:%=compat/%) $(BUILD_ROOT)$(COMPAT_DIR) endif endif install: scripts install-main install-compat \ $(COMPAT_SYMLINKS:%=install-compat-symlink-%) uninstall :: rm -rf $(BIN:%=$(BUILD_ROOT)$(bindir)/%) \ $(BUILD_ROOT)$(LIB_DIR) \ $(BUILD_ROOT)$(QUILT_DIR) \ $(patsubst %,$(BUILD_ROOT)$(mandir)/man1/%, \ $(notdir $(MAN1))) \ $(BUILD_ROOT)$(etcdir)/bash_completion.d/quilt \ $(BUILD_ROOT)$(etcdir)/quilt.quiltrc \ $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/ clean : rm -f $(DIRT) distclean : clean rm -f config.log config.status Makefile rm -rf autom4te.cache/ ifneq ($(MSGFMT),) install-main :: for lang in $(LINGUAS) ; do \ install -d $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES ; \ install -m 644 po/$$lang.mo \ $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES/quilt.mo ; \ done uninstall :: for lang in $(LINGUAS) ; do \ rm -f $(BUILD_ROOT)$(localedir)/$$lang/LC_MESSAGES/quilt.mo ; \ done endif .PHONY :: all install uninstall clean distclean