Distribute .tar.gz and .tar.bz2 but not .shar.gz
[gnu-stow.git] / Makefile.am
blob3e4415c4cd3fd0690940f5a46310c480cf77f0a6
1 ## Process this file with Automake to produce Makefile.in
3 dist_bin_SCRIPTS = bin/stow bin/chkstow
4 info_TEXINFOS = doc/stow.texi
5 dist_man_MANS = doc/stow.8
6 dist_doc_DATA = README doc/manual.html doc/manual.pdf
8 # Would be nice to include the split page HTML version of the manual
9 # in the distribution, but automake doesn't support wildcards and I'm
10 # loathe to explicitly list every single page here :-(
11 #nobase_dist_doc_DATA = doc/stow.html/*.html
13 pmdir = $(libdir)/perl5
14 dist_pm_DATA = lib/Stow.pm
15 pmstowdir = $(pmdir)/Stow
16 dist_pmstow_DATA = lib/Stow/Util.pm
18 TEXINFO_TEX = doc/texinfo.tex
19 export TEXI2DVI_BUILD_MODE = clean
20 AM_MAKEINFOFLAGS = -I $(srcdir)
22 # We require this -I parameter to ensure that the include of the
23 # default ignore list in the manual works.  Unfortunately this is
24 # the only way to do it:
26 #   http://article.gmane.org/gmane.comp.sysutils.automake.bugs/4334/match=passing+parameters
28 # even though it annoyingly produces a warning with the -Wall option
29 # to AM_INIT_AUTOMAKE which has to be silenced via -Wno-override.
30 TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS)
32 DEFAULT_IGNORE_LIST = $(srcdir)/default-ignore-list
34 TESTS_DIR = $(srcdir)/t
35 TESTS_OUT = tmp-testing-trees
36 TESTS_ENVIRONMENT = $(PERL) -I$(srcdir)/bin -I$(srcdir)/lib -I$(TESTS_DIR)
38 # This is a kind of hack; TESTS needs to be set to ensure that the
39 # `check-am' target makes check-TESTS, but we override check-TESTS
40 # so it doesn't really matter what it's set to, as long as it already
41 # exists (otherwise automake will try to build it).
42 TESTS = t
44 # GNU autotools standardised on the 'check' target, but CPAN (and the
45 # rest of the world) standardised on the 'test' target.
46 test: check
48 # required in vpath mode to ensure $build/t/ exists
49 check_DATA = $(TESTS_OUT)
51 # Test::Harness produces cleaner output than automake's default test
52 # harness, albeit without the pretty colours provided by the
53 # `color-tests' AM_INIT_AUTOMAKE option.  This also dodges having to
54 # set TESTS to the full list of tests, which is good because automake
55 # doesn't support wildcards, and so it would be too easy to forget to
56 # add a new one to the list.
58 # Note that automake's `check' rule cannot be overridden
59 # for some weird reason:
61 #   http://thread.gmane.org/gmane.comp.sysutils.automake.general/13040/focus=13041
63 # so we override check-TESTS instead which is where the real work is
64 # done anyway.  Unfortunately this produces a warning with the -Wall
65 # option to AM_INIT_AUTOMAKE which has to be silenced via
66 # -Wno-override.
67 check-TESTS:
68         dir=$(TESTS_DIR); \
69         $(TESTS_ENVIRONMENT) -MTest::Harness -e 'runtests(@ARGV)' "$${dir#./}"/*.t
71 $(TESTS_OUT):
72         mkdir -p $@
74 CPAN_FILES = MANIFEST MANIFEST.SKIP Build.PL META.yml META.json
75 EXTRA_DIST = \
76         bin/stow.in bin/chkstow.in lib/Stow.pm.in \
77         $(TESTS) t/testutil.pm \
78         $(TEXINFO_TEX) \
79         $(DEFAULT_IGNORE_LIST) \
80         $(CPAN_FILES)
81 CLEANFILES = $(bin_SCRIPTS) $(dist_pm_DATA)
83 # clean up auto-generated files
84 clean-local:
85         -rm -rf $(TESTS_OUT) \
86                 bin/stow bin/chkstow doc/stow.8 ChangeLog \
87                 doc/manual.*
89 # this is more explicit and reliable than the config file trick
90 edit = sed -e 's|[@]PERL[@]|$(PERL)|g' \
91            -e 's|[@]VERSION[@]|$(VERSION)|g'
93 bin/stow: bin/stow.in Makefile
94         [ -d bin ] || mkdir bin # required in vpath mode
95         $(edit) < $< > $@
96         chmod +x $@
98 bin/chkstow: bin/chkstow.in Makefile
99         [ -d bin ] || mkdir bin # required in vpath mode
100         $(edit) < $< > $@
101         chmod +x $@
103 lib/Stow.pm: lib/Stow.pm.in Makefile $(DEFAULT_IGNORE_LIST)
104         [ -d lib ] || mkdir lib # required in vpath mode
105         ( $(edit) < $<; cat $(DEFAULT_IGNORE_LIST) ) > $@
107 ##############################################################################
108 # The below rules are only used by the developer.
109 ##############################################################################
111 # It's conventional to generate $project.info, but it's also nicer to
112 # generate manual.html and manual.pdf (which ultimately go somewhere
113 # like /usr/share/doc/stow/) rather than stow.html and stow.pdf, to
114 # make it obvious that these files contain the manual.  So we have to
115 # jump through a few extra hoops.  We preserve timestamps to avoid any
116 # unnecessary rebuilds, since not everyone has texinfo installed.
117 doc/manual.texi: doc/stow.texi doc/version.texi
118         [ -d doc ] || mkdir doc # required in vpath mode
119         cp --preserve=timestamps $< $@
121 doc/manual.pdf: doc/stow.pdf doc/version.texi
122         [ -d doc ] || mkdir doc # required in vpath mode
123         cp --preserve=timestamps $< $@
125 # It's easier to calculate the absolute path to $(srcdir) rather than
126 # the relative path to it from the doc/ build subdirectory.
127 doc/manual.html: doc/manual.texi
128         -rm -f $@
129         srcdir=$$( cd $(srcdir); pwd ); \
130         cd doc && texi2html -I $$srcdir -expandinfo -menu -monolithic -verbose manual.texi
132 doc/stow.8: bin/stow Makefile
133         [ -d doc ] || mkdir doc # required in vpath mode
134         pod2man $< > $@