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 <g...@gnu.org>
---
 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  <g...@gnu.org>
 
+       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 "$...@t"; \
          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" > "$...@t"; \
+         chmod a-w "$...@t"; \
+         mv -f "$...@t" "$@"; \
        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" "$...@t" "$@"; \
          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" > "$...@t"; \
          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 "$...@t"; \
+         mv -f "$...@t" "$@"; \
        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 "$...@t" "$@"
+       $(configure_edit) $(srcdir)/libtoolize.in > "$...@t"
+       chmod a+x "$...@t"
+       chmod a-w "$...@t"
+       mv -f "$...@t" "$@"
 
 # 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 "$...@t"
+       mv -f "$...@t" "$@"
 
 $(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],    [...@package_string@])'; \
          echo 'm4_define([AT_PACKAGE_BUGREPORT], [...@package_bugreport@])'; \
          echo 'm4_define([AT_PACKAGE_URL],       [...@package_url@])'; \
-       } | $(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 "$...@t" "$@"
+       $(configure_edit) "$^" > "$...@t"
+       mv -f "$...@t" "$@"
 
 # 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


Reply via email to