[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/11] build: make better use of automatic variables in `Makef
From: |
Gary V. Vaughan |
Subject: |
[PATCH v2 07/11] build: make better use of automatic variables in `Makefile.am'. |
Date: |
Thu, 23 Sep 2010 22:21:24 +0700 |
Rules are getting shorter and more readable again now. I'm assuming
there are no portability problems with "$@" and "$^" in regular rules?
If there are, at least keeping this change in a separate patch makes
it easy enough to omit or amend.
Now that these rules are all executing from the build tree, there's
no need to manually check all the paths match the current directory,
or keep long hand-typed duplicate paths scattered around. We can
use $@ (and $^ in some places) knowing that they're still correct
when we've stayed in the same directory they were calculated for.
Okay to push?
* Makefile.am (libtoolize, libtoolize.in, libltdl/Makefile.am)
(libltdl/config/mkstamp, libltdl/config/ltmain.m4sh)
(libltdl/m4/ltversion.m4, tests/testsuite,.tests/defs.in):
Make better use of automatic variables.
Signed-off-by: Gary V. Vaughan <address@hidden>
---
ChangeLog | 6 +++
Makefile.am | 99 +++++++++++++++++++++++++++-------------------------------
2 files changed, 52 insertions(+), 53 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f26e65b..85ac802 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2010-08-31 Gary V. Vaughan <address@hidden>
+ build: make better use of automatic variables in `Makefile.am'.
+ * Makefile.am (libtoolize, libtoolize.in, libltdl/Makefile.am)
+ (libltdl/config/mkstamp, libltdl/config/ltmain.m4sh)
+ (libltdl/m4/ltversion.m4, tests/testsuite,.tests/defs.in):
+ Make better use of automatic variables.
+
build: name temporary files in `Makefile.am' consistently.
* Makefile.am (libltdl/m4/ltversion.m4): Rename temporary file
to `ltversion.m4T'.
diff --git a/Makefile.am b/Makefile.am
index 9143350..32b192c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -108,23 +108,21 @@ bootstrap_edit = sed \
## how ltversion.m4 appears in our dependencies.
EXTRA_DIST += $(m4dir)/ltversion.in $(srcdir)/$(m4dir)/ltversion.m4
$(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in configure.ac ChangeLog
- @target='$(srcdir)/$(m4dir)/ltversion.m4'; $(rebuild); \
- if test -f "$$target"; then \
- eval `sed -n '/^macro_revision=/p' $(srcdir)/$(m4dir)/ltversion.m4`; \
+ @$(rebuild); \
+ if test -f "$@"; then \
+ eval `sed -n '/^macro_revision=/p' "$@"`; \
test "$$macro_revision" = "$$revision" && rebuild=false; \
fi; \
for prereq in $?; do \
case $$prereq in *ChangeLog | *configure.ac);; *) rebuild=:;; esac; \
done; \
if $$rebuild; then \
- rm -f $(srcdir)/$(m4dir)/ltversion.m4T; \
+ rm -f "address@hidden"; \
serial=`echo "$$revision" | sed 's,^1[.],,g'`; \
- echo $(bootstrap_edit) \
- $(srcdir)/$(m4dir)/ltversion.in \> $(srcdir)/$(m4dir)/ltversion.m4;
\
- $(bootstrap_edit) \
- $(srcdir)/$(m4dir)/ltversion.in >
$(srcdir)/$(m4dir)/ltversion.m4T; \
- chmod a-w $(srcdir)/$(m4dir)/ltversion.m4T; \
- mv -f $(srcdir)/$(m4dir)/ltversion.m4T
$(srcdir)/$(m4dir)/ltversion.m4; \
+ echo "$(bootstrap_edit) $(srcdir)/$(m4dir)/ltversion.in > $@"; \
+ $(bootstrap_edit) "$(srcdir)/$(m4dir)/ltversion.in" >
"address@hidden"; \
+ chmod a-w "address@hidden"; \
+ mv -f "address@hidden" "$@"; \
fi
## And for similar reasons, ltmain.sh can't be built from config.status.
@@ -139,41 +137,37 @@ $(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in
configure.ac ChangeLog
## tree whenever config.status regenerates the Makefile.
EXTRA_DIST += $(srcdir)/$(auxdir)/ltmain.sh
$(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) $(auxdir)/ltmain.m4sh configure.ac
ChangeLog
- @target='$(srcdir)/$(auxdir)/ltmain.sh'; $(rebuild); \
- if test -f "$$target"; then \
- eval `sed -n '/^package_revision=/p' "$$target"`; \
+ @$(rebuild); \
+ if test -f "$@"; then \
+ eval `sed -n '/^package_revision=/p' "$@"`; \
test "$$package_revision" = "$$revision" && rebuild=false; \
fi; \
for prereq in $?; do \
case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
done; \
if $$rebuild; then \
- rm -f $(srcdir)/$(auxdir)/ltmain.in $(srcdir)/$(auxdir)/ltmain.shT \
- $(srcdir)/$(auxdir)/ltmain.sh; \
+ rm -f "$(srcdir)/$(auxdir)/ltmain.in" "address@hidden" "$@"; \
echo $(LT_M4SH) $(srcdir)/$(auxdir)/ltmain.m4sh \
\> $(srcdir)/$(auxdir)/ltmain.in; \
- $(LT_M4SH) $(srcdir)/$(auxdir)/ltmain.m4sh \
- > $(srcdir)/$(auxdir)/ltmain.in; \
- echo $(bootstrap_edit) \
- $(srcdir)/$(auxdir)/ltmain.in "> $$target"; \
- $(bootstrap_edit) \
- $(srcdir)/$(auxdir)/ltmain.in > $(srcdir)/$(auxdir)/ltmain.shT;
\
+ $(LT_M4SH) "$(srcdir)/$(auxdir)/ltmain.m4sh" \
+ > "$(srcdir)/$(auxdir)/ltmain.in"; \
+ echo "$(bootstrap_edit) $(srcdir)/$(auxdir)/ltmain.in > $@"; \
+ $(bootstrap_edit) "$(srcdir)/$(auxdir)/ltmain.in" > "address@hidden";
\
rm -f $(srcdir)/$(auxdir)/ltmain.in; \
- chmod a-w $(srcdir)/$(auxdir)/ltmain.shT; \
- mv -f $(srcdir)/$(auxdir)/ltmain.shT $(srcdir)/$(auxdir)/ltmain.sh; \
+ chmod a-w "address@hidden"; \
+ mv -f "address@hidden" "$@"; \
fi
# Use `$(srcdir)' for the benefit of non-GNU makes: this is
# how libtoolize.in appears in our dependencies.
EXTRA_DIST += libtoolize.m4sh
$(srcdir)/libtoolize.in: $(sh_files) libtoolize.m4sh Makefile.am
- rm -f $(srcdir)/libtoolize.in
- $(LT_M4SH) $(srcdir)/libtoolize.m4sh > $(srcdir)/libtoolize.in
+ rm -f "$@"
+ $(LT_M4SH) "$(srcdir)/libtoolize.m4sh" > "$@"
$(srcdir)/libltdl/Makefile.am: $(srcdir)/libltdl/Makefile.inc
- in=$(srcdir)/libltdl/Makefile.inc; out=$(srcdir)/libltdl/Makefile.am; \
- rm -f $$out; \
- ( $(SED) -n '1,/^.. DO NOT REMOVE THIS LINE -- /p' $$in; \
+ rm -f "$@"
+ ( $(SED) -n '1,/^.. DO NOT REMOVE THIS LINE -- /p' "$^"; \
{ echo 'ACLOCAL_AMFLAGS = -I m4'; \
echo 'AUTOMAKE_OPTIONS = foreign'; \
echo 'AM_CPPFLAGS ='; \
@@ -187,13 +181,13 @@ $(srcdir)/libltdl/Makefile.am:
$(srcdir)/libltdl/Makefile.inc
echo 'CLEANFILES ='; \
echo 'MOSTLYCLEANFILES ='; \
}; \
- $(SED) -n '/^.. DO NOT REMOVE THIS LINE -- /,$$p' $$in | \
+ $(SED) -n '/^.. DO NOT REMOVE THIS LINE -- /,$$p' "$^" | \
$(SED) -e 's,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,' \
-e 's,\$$(libltdl_,$$(,' \
) | \
$(SED) -e '/^.. DO NOT REMOVE THIS LINE -- /d' \
- -e '1s,^\(.. Makefile.\)inc.*,\1am -- Process this file with
automake to produce Makefile.in,' > $$out;
- chmod a-w $(srcdir)/libltdl/Makefile.am
+ -e '1s,^\(.. Makefile.\)inc.*,\1am -- Process this file with
automake to produce Makefile.in,' > "$@"
+ chmod a-w "$@"
## Unfortunately, all this bogeyness means that we have to manually
@@ -229,28 +223,27 @@ configure_edit = sed \
bin_SCRIPTS = libtoolize libtool
libtoolize: $(srcdir)/libtoolize.in $(top_builddir)/config.status
- rm -f libtoolizeT libtoolize
- $(configure_edit) \
- $(srcdir)/libtoolize.in > libtoolizeT
- chmod a+x libtoolizeT
- chmod a-w libtoolizeT
- mv -f libtoolizeT libtoolize
+ rm -f "address@hidden" "$@"
+ $(configure_edit) $(srcdir)/libtoolize.in > "address@hidden"
+ chmod a+x "address@hidden"
+ chmod a-w "address@hidden"
+ mv -f "address@hidden" "$@"
# We used to do this with a 'stamp-vcl' file, but non-gmake builds
# would rerun configure on every invocation, so now we manually
# check the version numbers from the build rule when necessary.
libtool: $(top_builddir)/config.status $(srcdir)/$(auxdir)/ltmain.sh ChangeLog
- @target=libtool; $(rebuild); \
- if test -f "$$target"; then \
- eval `sed -n '/^package_revision=/p' "$$target"`; \
+ @$(rebuild); \
+ if test -f "$@"; then \
+ eval `sed -n '/^package_revision=/p' "$@"`; \
test "$$package_revision" = "$$revision" && rebuild=false; \
fi; \
for prereq in $?; do \
case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
done; \
if $$rebuild; then \
- echo $(SHELL) ./config.status $$target; \
- cd $(top_builddir) && $(SHELL) ./config.status $$target; \
+ echo "$(SHELL) ./config.status $@"; \
+ cd $(top_builddir) && $(SHELL) ./config.status "$@"; \
fi
.PHONY: configure-subdirs
@@ -277,9 +270,9 @@ $(srcdir)/libltdl/Makefile.in:
$(srcdir)/libltdl/Makefile.am \
$(srcdir)/libltdl/stamp-mk: $(srcdir)/libltdl/Makefile.in
sed -e 's,config/mdate-sh,,' -e 's,config/texinfo.tex,,' \
-e 's,config/mkinstalldirs,,' \
- < $(srcdir)/libltdl/Makefile.in > $(srcdir)/libltdl/Makefile.inT &&
\
- mv -f $(srcdir)/libltdl/Makefile.inT $(srcdir)/libltdl/Makefile.in
- echo stamp > $@
+ < "$^" > "$^T" && \
+ mv -f "$^T" "$^"
+ echo stamp > "$@"
sub_aclocal_m4_deps = \
$(srcdir)/libltdl/configure.ac \
@@ -539,8 +532,8 @@ INSTALLCHECK_ENVIRONMENT = \
# Use `$(srcdir)' for the benefit of non-GNU makes: this is
# how `testsuite' appears in our dependencies.
$(srcdir)/$(TESTSUITE): $(srcdir)/tests/package.m4 $(TESTSUITE_AT) Makefile.am
- $(AUTOTEST) -I $(srcdir)/tests $(TESTSUITE_AT) -o $(srcdir)/testsuiteT
- mv -f $(srcdir)/testsuiteT $(srcdir)/testsuite
+ $(AUTOTEST) -I $(srcdir)/tests $(TESTSUITE_AT) -o "address@hidden"
+ mv -f "address@hidden" "$@"
$(srcdir)/tests/package.m4: $(srcdir)/configure.ac Makefile.am
{ \
@@ -551,7 +544,7 @@ $(srcdir)/tests/package.m4: $(srcdir)/configure.ac
Makefile.am
echo 'm4_define([AT_PACKAGE_STRING], address@hidden@])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], address@hidden@])'; \
echo 'm4_define([AT_PACKAGE_URL], address@hidden@])'; \
- } | $(configure_edit) > $(srcdir)/tests/package.m4
+ } | $(configure_edit) > "$@"
tests/atconfig: $(top_builddir)/config.status
$(SHELL) ./config.status tests/atconfig
@@ -895,15 +888,15 @@ DIST_SUBDIRS += $(CONF_SUBDIRS)
# regenerated since the source tree can be read-only.
check-recursive: tests/defs
tests/defs: $(srcdir)/tests/defs.in
- rm -f tests/defsT tests/defs; \
- $(configure_edit) $(srcdir)/tests/defs.in > tests/defsT; \
- mv -f tests/defsT tests/defs
+ rm -f "address@hidden" "$@"
+ $(configure_edit) "$^" > "address@hidden"
+ mv -f "address@hidden" "$@"
# Use `$(srcdir)/tests' for the benefit of non-GNU makes: this is
# how defs.in appears in our dependencies.
$(srcdir)/tests/defs.in: $(auxdir)/general.m4sh tests/defs.m4sh Makefile.am
- rm -f $(srcdir)/tests/defs.in; \
- $(LT_M4SH) $(srcdir)/tests/defs.m4sh > $(srcdir)/tests/defs.in
+ rm -f "$@"
+ $(LT_M4SH) "$(srcdir)/tests/defs.m4sh" > "$@"
# We need to remove any files that the above tests created.
clean-local-legacy:
--
1.7.3
- Re: [PATCH v2 02/11] maint: don't leak developer GREP, SED etc into distribution file., (continued)
- [PATCH v2 03/11] build: compare `revision' rather than `correctver' in Makefile.am., Gary V. Vaughan, 2010/09/23
- [PATCH v2 04/11] build: avoid unnecessary directory changes in Makefile rules., Gary V. Vaughan, 2010/09/23
- [PATCH v2 05/11] build: factor Makefile.am `m4sh' invocations to LT_M4SH., Gary V. Vaughan, 2010/09/23
- [PATCH v2 06/11] build: name temporary files in `Makefile.am' consistently., Gary V. Vaughan, 2010/09/23
- [PATCH v2 09/11] build: eliminate `ltmain.in' intermediate file., Gary V. Vaughan, 2010/09/23
- [PATCH v2 08/11] build: don't hardcode repeated long paths in Makefile rules., Gary V. Vaughan, 2010/09/23
- [PATCH v2 10/11] build: eliminate superfluous temporary files from `Makefile.am'., Gary V. Vaughan, 2010/09/23
- [PATCH v2 11/11] maint: simplify and improve safety of bootstrap process., Gary V. Vaughan, 2010/09/23
- [PATCH v2 07/11] build: make better use of automatic variables in `Makefile.am'.,
Gary V. Vaughan <=