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 \
(LANG=C LC_MESSAGES=C LC_ALL=C $(BASH) -c ". scripts/patchfns ; . $$here/$$cmd -h")| \
sed -e 's/Usage: *quilt *//i' \
-e 's/^\([^ ]*\)/\\fB\1\\fP/' \
-e 's/^/.IP "/' -e 's/$$/ " 4/' | \
head -n 1; \
echo ; \
(LANG=C LC_MESSAGES=C LC_ALL=C $(BASH) -c ". scripts/patchfns ; . $$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 $(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