stow/Makefile.am

147 lines
4.7 KiB
Makefile
Raw Normal View History

2001-12-24 09:57:46 -05:00
## Process this file with Automake to produce Makefile.in
dist_bin_SCRIPTS = bin/stow bin/chkstow
info_TEXINFOS = doc/stow.texi
dist_man_MANS = doc/stow.8
2011-11-24 12:00:33 -05:00
dist_doc_DATA = \
README \
doc/manual.html \
2011-11-24 12:00:33 -05:00
ChangeLog doc/ChangeLog.OLD
doc_DATA = doc/manual.pdf
# Would be nice to include the split page HTML version of the manual
# in the distribution, but automake doesn't support wildcards and I'm
# loathe to explicitly list every single page here :-(
#nobase_dist_doc_DATA = doc/stow.html/*.html
pmdir = $(libdir)/perl5
dist_pm_DATA = lib/Stow.pm
pmstowdir = $(pmdir)/Stow
dist_pmstow_DATA = lib/Stow/Util.pm
TEXINFO_TEX = doc/texinfo.tex
export TEXI2DVI_BUILD_MODE = clean
AM_MAKEINFOFLAGS = -I $(srcdir)
# We require this -I parameter to ensure that the include of the
# default ignore list in the manual works. Unfortunately this is
# the only way to do it:
#
# http://article.gmane.org/gmane.comp.sysutils.automake.bugs/4334/match=passing+parameters
#
# even though it annoyingly produces a warning with the -Wall option
# to AM_INIT_AUTOMAKE which has to be silenced via -Wno-override.
TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS)
DEFAULT_IGNORE_LIST = $(srcdir)/default-ignore-list
TESTS_DIR = $(srcdir)/t
TESTS_OUT = tmp-testing-trees
TESTS_ENVIRONMENT = $(PERL) -I$(srcdir)/bin -I$(srcdir)/lib -I$(TESTS_DIR)
# This is a kind of hack; TESTS needs to be set to ensure that the
# `check-am' target makes check-TESTS, but we override check-TESTS
# so it doesn't really matter what it's set to, as long as it already
# exists (otherwise automake will try to build it).
TESTS = t
# GNU autotools standardised on the 'check' target, but CPAN (and the
# rest of the world) standardised on the 'test' target.
test: check
# required in vpath mode to ensure $build/t/ exists
check_DATA = $(TESTS_OUT)
# Test::Harness produces cleaner output than automake's default test
# harness, albeit without the pretty colours provided by the
# `color-tests' AM_INIT_AUTOMAKE option. This also dodges having to
# set TESTS to the full list of tests, which is good because automake
# doesn't support wildcards, and so it would be too easy to forget to
# add a new one to the list.
#
# Note that automake's `check' rule cannot be overridden
# for some weird reason:
#
# http://thread.gmane.org/gmane.comp.sysutils.automake.general/13040/focus=13041
#
# so we override check-TESTS instead which is where the real work is
# done anyway. Unfortunately this produces a warning with the -Wall
# option to AM_INIT_AUTOMAKE which has to be silenced via
# -Wno-override.
check-TESTS:
dir=$(TESTS_DIR); \
$(TESTS_ENVIRONMENT) -MTest::Harness -e 'runtests(@ARGV)' "$${dir#./}"/*.t
$(TESTS_OUT):
mkdir -p $@
CPAN_FILES = MANIFEST MANIFEST.SKIP Build.PL META.yml META.json
EXTRA_DIST = \
bin/stow.in bin/chkstow.in lib/Stow.pm.in \
doc/stow.pdf \
$(TESTS) t/testutil.pm \
$(TEXINFO_TEX) \
$(DEFAULT_IGNORE_LIST) \
$(CPAN_FILES)
CLEANFILES = $(bin_SCRIPTS) $(dist_pm_DATA)
# clean up auto-generated files
clean-local:
-rm -rf $(TESTS_OUT) \
bin/stow bin/chkstow doc/stow.8 ChangeLog \
doc/manual.html doc/manual.pdf
# this is more explicit and reliable than the config file trick
edit = sed -e 's|[@]PERL[@]|$(PERL)|g' \
2011-11-18 10:09:39 -05:00
-e 's|[@]VERSION[@]|$(VERSION)|g'
bin/stow: bin/stow.in Makefile
[ -d bin ] || mkdir bin # required in vpath mode
$(edit) < $< > $@
chmod +x $@
2001-12-24 09:57:46 -05:00
bin/chkstow: bin/chkstow.in Makefile
[ -d bin ] || mkdir bin # required in vpath mode
$(edit) < $< > $@
chmod +x $@
2001-12-24 09:57:46 -05:00
2011-11-23 18:45:48 -05:00
lib/Stow.pm: lib/Stow.pm.in Makefile $(DEFAULT_IGNORE_LIST)
[ -d lib ] || mkdir lib # required in vpath mode
2011-11-23 18:45:48 -05:00
( $(edit) < $<; cat $(DEFAULT_IGNORE_LIST) ) > $@
##############################################################################
# The below rules are only used by the developer.
##############################################################################
2001-12-24 09:57:46 -05:00
# It's conventional to generate $project.info, but it's also nicer to
# generate manual.html and manual.pdf (which ultimately go somewhere
# like /usr/share/doc/stow/) rather than stow.html and stow.pdf, to
# make it obvious that these files contain the manual. So we have to
# jump through a few extra hoops.
doc/manual.pdf: doc/stow.pdf
[ -d doc ] || mkdir doc # required in vpath mode
cp $< $@
doc/manual.html: doc/stow.texi
2001-12-24 09:57:46 -05:00
-rm -f $@
texi2html --P=$(srcdir) --output=$@ -expandinfo -menu -monolithic -verbose $<
2011-11-16 09:30:55 -05:00
doc/stow.8: bin/stow Makefile
[ -d doc ] || mkdir doc # required in vpath mode
pod2man $< > $@
2011-11-24 12:00:33 -05:00
ChangeLog: doc/ChangeLog.OLD Makefile
@if [ -d .git ]; then \
( \
git log \
--format="format:%ad %aN <%aE>%n%n * %w(70,0,4)%s%+b%n" \
--name-status \
v2.0.2..HEAD \
| sed 's/^\([A-Z]\)\t/ \1 /'; \
cat $< \
) > $@; \
else \
echo "Not in a git repository; can't update ChangeLog."; \
fi