Makefile: avoid use of GNU-specific form of $<

$< is only allowed in implicit rules in some non-GNU makes (e.g. BSD,
AIX) so avoid use elsewhere by referencing the dependent curl.1 file
directly instead. This is somewhat tricky because the file is supplied
in the packaged tar ball (but not in git) but must still be able to be
rebuilt when its dependencies change. The right thing must happen in
both tar ball and git source trees, as well as in both in-tree and
out-of-tree builds.
This commit is contained in:
Dan Fandrich 2017-04-23 09:49:59 +02:00
Родитель c8ac0b6a7f
Коммит 80a87e8abc
2 изменённых файлов: 22 добавлений и 11 удалений

Просмотреть файл

@ -22,7 +22,7 @@
AUTOMAKE_OPTIONS = foreign no-dependencies AUTOMAKE_OPTIONS = foreign no-dependencies
man_MANS = curl.1 curl-config.1 man_MANS = $(abs_builddir)/curl.1 curl-config.1
noinst_man_MANS = mk-ca-bundle.1 noinst_man_MANS = mk-ca-bundle.1
GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html
PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf
@ -30,7 +30,9 @@ MANDISTPAGES = curl.1.dist curl-config.1.dist
HTMLPAGES = $(GENHTMLPAGES) index.html HTMLPAGES = $(GENHTMLPAGES) index.html
SUBDIRS = libcurl cmdline-opts # Build targets in this file (.) before cmdline-opts to ensure that
# the curl.1 rule below runs first
SUBDIRS = libcurl . cmdline-opts
DIST_SUBDIRS = $(SUBDIRS) examples DIST_SUBDIRS = $(SUBDIRS) examples
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
@ -47,7 +49,17 @@ MAN2HTML= roffit $< >$@
SUFFIXES = .1 .html .pdf SUFFIXES = .1 .html .pdf
curl.1: # $(abs_builddir) is to disable VPATH when searching for this file, which
# would otherwise find the copy in $(srcdir) which breaks the $(HUGE)
# rule in src/Makefile.am in out-of-tree builds that references the file in the
# build directory.
#
# First, seed the used copy of curl.1 with the prebuilt copy (in an out-of-tree
# build), then run make recursively to rebuild it only if its dependencies
# have changed.
$(abs_builddir)/curl.1:
if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \
cp -fp "$(srcdir)/curl.1" $@; fi
cd cmdline-opts && $(MAKE) cd cmdline-opts && $(MAKE)
html: $(HTMLPAGES) html: $(HTMLPAGES)

Просмотреть файл

@ -92,7 +92,8 @@ EXTRA_DIST = mkhelp.pl makefile.dj Makefile.b32 \
macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \ macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt curl.rc Makefile.netware Makefile.inc Makefile.Watcom CMakeLists.txt
MANPAGE=$(top_builddir)/docs/curl.1 # Use absolute directory to disable VPATH
MANPAGE=$(abs_top_builddir)/docs/curl.1
README=$(top_srcdir)/docs/MANUAL README=$(top_srcdir)/docs/MANUAL
MKHELP=$(top_srcdir)/src/mkhelp.pl MKHELP=$(top_srcdir)/src/mkhelp.pl
HUGE=tool_hugehelp.c HUGE=tool_hugehelp.c
@ -101,25 +102,23 @@ if USE_MANUAL
# Here are the stuff to create a built-in manual # Here are the stuff to create a built-in manual
$(MANPAGE): $(MANPAGE):
cd $(top_builddir)/docs && $(MAKE) curl.1 cd $(top_builddir)/docs && $(MAKE)
if HAVE_LIBZ if HAVE_LIBZ
# This generates the tool_hugehelp.c file in both uncompressed and # This generates the tool_hugehelp.c file in both uncompressed and
# compressed formats. $(MANPAGE) must be the first dependency so it # compressed formats.
# can be referenced with $< which points to the correct location in
# the VPATH.
$(HUGE): $(MANPAGE) $(README) $(MKHELP) $(HUGE): $(MANPAGE) $(README) $(MKHELP)
echo '#include "tool_setup.h"' > $(HUGE) echo '#include "tool_setup.h"' > $(HUGE)
echo '#ifndef HAVE_LIBZ' >> $(HUGE) echo '#ifndef HAVE_LIBZ' >> $(HUGE)
$(NROFF) $< | $(PERL) $(MKHELP) $(README) >> $(HUGE) $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) $(README) >> $(HUGE)
echo '#else' >> $(HUGE) echo '#else' >> $(HUGE)
$(NROFF) $< | $(PERL) $(MKHELP) -c $(README) >> $(HUGE) $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c $(README) >> $(HUGE)
echo '#endif /* HAVE_LIBZ */' >> $(HUGE) echo '#endif /* HAVE_LIBZ */' >> $(HUGE)
else # HAVE_LIBZ else # HAVE_LIBZ
# This generates the tool_hugehelp.c file uncompressed only # This generates the tool_hugehelp.c file uncompressed only
$(HUGE): $(MANPAGE) $(README) mkhelp.pl $(HUGE): $(MANPAGE) $(README) mkhelp.pl
echo '#include "tool_setup.h"' > $(HUGE) echo '#include "tool_setup.h"' > $(HUGE)
$(NROFF) $< | $(PERL) $(MKHELP) $(README) >> $(HUGE) $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) $(README) >> $(HUGE)
endif endif
else # USE_MANUAL else # USE_MANUAL