video-contact-sheet/GNUmakefile

143 lines
4.5 KiB
Makefile
Executable File

#!/usr/bin/make -f
#
# $Id$
#
srcdir=dist
#VER=$(shell grep VERSION= $(srcdir)/vcs | sed 's/.*"\([^"]*\)".*/\1/')
VER=$(shell sed -n '/VERSION=/s/.*"\([^"]*\)".*/\1/p' $(srcdir)/vcs | head -n1)
all:
@echo "-------------------------------------------------------------------------------"
@echo " Use: "
@echo " $$ $(MAKE) dist # to create the actual v$(VER) distribution files"
@echo " $$ $(MAKE) manpages # to create only the manpages (in $(srcdir)/docs)"
@echo " $$ $(MAKE) docs # to create all documentation formats (in $(srcdir)/docs)"
@echo
@echo " $$ $(MAKE) lint # to validate documentation sources"
@echo " $$ $(MAKE) clean # to clean generated files"
@echo " $$ $(MAKE) distclean # to clean generated and distribution files"
@echo " $$ $(MAKE) uploadclean # to clean non-distribution files"
@echo "------------------------------------------------------------------------------"
docs: lint
$(MAKE) -C $(srcdir)/docs all
manpages: lint
$(MAKE) -C $(srcdir)/docs vcs.1 vcs.conf.5
lint:
$(MAKE) -C $(srcdir)/docs lint
tgz: vcs-$(VER).tar.gz
vcs-$(VER).tar.%: $(srcdir)/vcs-$(VER).tar.gz
mv $< $@
$(srcdir)/vcs-$(VER).tar.%:
make -C $(srcdir) distclean `basename $@`
check-no-svn:
@if [ -d .svn ]; then \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo "** Don't release from SVN working copy **" ; \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo ; \
echo -n 'Ignore? [y/N] ' ; \
read RESPONSE ; [ "$$RESPONSE" = 'y' ] || [ "$$RESPONSE" = 'Y' ] ; \
fi
@if ! sed -e '/$$Date/!d' dist/vcs | grep -E 'Mon|Tue|Wed|Thu|Fri|Sat|Sun' ; then \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo "** Don't release from localised SVN export **" ; \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo ; \
echo -n "Ignore? [y/N] " ; \
read RESPONSE ; [ "$$RESPONSE" = 'y' ] || [ "$$RESPONSE" = 'Y' ] ; \
fi
check-rel:
@if head -n50 vcs | grep -q 'RELEASE=0' ; then \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo '** RELEASE is set to 0! **' ; \
echo '*************************************************' ; \
echo '*************************************************' ; \
echo ; \
false ; \
fi
dist: check-rel check-no-svn \
vcs-$(VER).tar.gz \
PKGBUILD-$(VER) \
$(addprefix vcs-$(VER), .gz .xz .bash) \
CHANGELOG.gz CHANGELOG \
rpm deb srpm
# This shouldn't be re-built
devel_tools/mansrc/settings.man.inc.xml:
cd `dirname $@` && $(MAKE)
PKGBUILD-$(VER): vcs-$(VER).tar.gz
cd $(srcdir) && ln -s ../vcs-$(VER).tar.gz ./
make -C $(srcdir) PKGBUILD
$(RM) $(srcdir)/vcs-$(VER).tar.gz
mv $(srcdir)/PKGBUILD $@
vcs-$(VER).gz: $(srcdir)/vcs
gzip -c9 < vcs > $@
vcs-$(VER).bz2: $(srcdir)/vcs
bzip2 -c9 < vcs > $@
vcs-$(VER).xz: $(srcdir)/vcs
xz -c9 < vcs > $@
vcs-$(VER).bash: $(srcdir)/vcs
cat $< > $@
CHANGELOG.gz: $(srcdir)/CHANGELOG
gzip -c9 < $< > $@
CHANGELOG: $(srcdir)/CHANGELOG
cp $< $@
distclean: clean
$(RM) PKGBUILD-$(VER) vcs-$(VER).tar.gz $(addprefix vcs-$(VER), .gz .bz2 .bash) \
CHANGELOG.gz CHANGELOG *.deb *.rpm
# That's the old distclean
uploadclean:
$(RM) -ri vcs Makefile *.changes dist
deb: vcs-$(VER).tar.gz
ln -sf vcs-$(VER).tar.gz vcs_$(VER).orig.tar.gz
cd dist && debuild -k0x5812006E -us -uc && debclean
#$(RM) vcs_*.changes vcs_*.build
rpm: vcs-$(VER).tar.gz
rpmbuild --clean -tb vcs-$(VER).tar.gz
test -d ~/rpmbuild/RPMS/noarch && ln -s ~/rpmbuild/RPMS/noarch/vcs-$(VER)-*.rpm . || true
test -d ~/RPM/RPMS/noarch && ln -s ~/RPM/RPMS/noarch/vcs-$(VER)-*.rpm . || true
@# Don't fail even if rpmlint does. It fails with no signature on Debian
-rpmlint --file=dist/rpm/rpmlint.conf vcs-$(VER)-*.rpm
srpm: vcs-$(VER).tar.gz
rpmbuild --clean -ts vcs-$(VER).tar.gz
test -d ~/rpmbuild/SRPMS && ln -s ~/rpmbuild/SRPMS/vcs-$(VER)-*.src.rpm . || true
test -d ~/RPM/SRPMS && ln -s ~/RPM/SRPMS/vcs-$(VER)-*.src.rpm . || true
@# Don't fail even if rpmlint does. It fails with no signature on Debian
-rpmlint vcs-$(VER)-*.src.rpm
false
clean:
-$(RM) vcs[-_]$(VER)* CHANGELOG*
make -C $(srcdir)/docs clean
.PHONY: all docs manpages lint clean dist distclean uploadclean \
check-no-svn check-rel \
deb rpm tgz