automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.11-1


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.11-1839-ge5b964c
Date: Fri, 03 Feb 2012 13:12:48 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=e5b964c4ddac632d53138e9e483f105839514fe7

The branch, ng/master has been updated
       via  e5b964c4ddac632d53138e9e483f105839514fe7 (commit)
      from  dc04691d13078ee7aebb12d161abfa7301a6332b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e5b964c4ddac632d53138e9e483f105839514fe7
Author: Stefano Lattarini <address@hidden>
Date:   Wed Feb 1 22:07:43 2012 +0100

    [ng] yacc, lex, compiling: better use of '$<' (simplify and fix bug)
    
    With GNU make (at least since version 3.78), the automatic variable
    '$<' automatically undergoes VPATH rewrites when needed.  We can use
    this fact to simplify some of our recently-touched rules even more.
    
    This change is also a bug fix, since without it the two tests
    'yacc-subobj-nodep.test' and 'lex-subobj-nodep.test' were failing
    with at least GNU make 3.81 (while passing with GNU make 3.82),
    probably due to some incompatibility between those two versions
    that was affecting our '$(am__vpath_rewrite)' function.
    
    * lib/am/yacc.am, lib/am/lex.am: Take advantage of the described
    '$<' behaviour.
    * lib/am/depend2.am: Likewise.  Accordingly, ...
    (am__cooked_source_0, am__cooked_source_1): ... remove these
    variables, which are not needed anymore.
    * tests/spy-vpath-rewrite.test: New test, verifying that our
    expectations about '$<' really hold.
    * tests/list-of-tests.mk: Add the new test.

-----------------------------------------------------------------------

Summary of changes:
 lib/am/depend2.am            |   29 +++-----
 lib/am/lex.am                |    8 +--
 lib/am/yacc.am               |    8 +--
 tests/list-of-tests.mk       |    1 +
 tests/spy-vpath-rewrite.test |  150 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 168 insertions(+), 28 deletions(-)
 create mode 100755 tests/spy-vpath-rewrite.test

diff --git a/lib/am/depend2.am b/lib/am/depend2.am
index df5db1e..7a5db63 100644
--- a/lib/am/depend2.am
+++ b/lib/am/depend2.am
@@ -35,19 +35,12 @@
 ## and easily inline the dependency tracking.
 
 if %?FIRST%
-
 ?SUBDIROBJ?am__depdir = $(dir $@)/$(DEPDIR)
 ?!SUBDIROBJ?am__depdir = $(DEPDIR)
 ## FIXME: more precise in the removal of the suffix?
 am__depbase = $(am__depdir)/$(basename $(notdir $@))
 ## Avoid useless forks when possible.
 am__ensure_depdir = test -d $(am__depdir) || $(MKDIR_P) $(am__depdir)
-
-## Used for suffix rules.
-am__cooked_source_0 = $(call am__vpath_rewrite, $<)
-## Used for explicit rules.
-am__cooked_source_1 = $<
-
 endif %?FIRST%
 
 if %?NONLIBTOOL%
@@ -56,8 +49,8 @@ if %?NONLIBTOOL%
 if %FASTDEP%
        %SILENT%$(am__ensure_depdir)
 ## In fast-dep mode, we can always use -o.
-       %VERBOSE%%COMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo %-c% -o $@ \
-                %SOURCEFLAG%$(am__cooked_source_%GENERIC%)
+       %VERBOSE%%COMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo \
+                %-c% -o $@ %SOURCEFLAG%$<
        %SILENT%$(am__mv) $(am__depbase).Tpo $(am__depbase).Po
 else !%FASTDEP%
 if %AMDEP%
@@ -65,8 +58,8 @@ if %AMDEP%
        %VERBOSE%source='%SOURCE%' object='%OBJ%' libtool=no @AMDEPBACKSLASH@
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif %AMDEP%
-?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJ% 
%SOURCEFLAG%$(am__cooked_source_%GENERIC%)
-?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%$(am__cooked_source_%GENERIC%)
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJ% %SOURCEFLAG%$<
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%$<
 endif !%FASTDEP%
 
 ?GENERIC?%EXT%.obj:
@@ -74,8 +67,8 @@ endif !%FASTDEP%
 if %FASTDEP%
        %SILENT%$(am__ensure_depdir)
 ## In fast-dep mode, we can always use -o.
-       %VERBOSE%%COMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo %-c% -o $@ \
-                %SOURCEFLAG%`$(CYGPATH_W) $(am__cooked_source_%GENERIC%)`
+       %VERBOSE%%COMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo \
+                %-c% -o $@ %SOURCEFLAG%`$(CYGPATH_W) $<`
        %SILENT%$(am__mv) $(am__depbase).Tpo $(am__depbase).Po
 else !%FASTDEP%
 if %AMDEP%
@@ -83,8 +76,8 @@ if %AMDEP%
        %VERBOSE%source='%SOURCE%' object='%OBJOBJ%' libtool=no @AMDEPBACKSLASH@
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif %AMDEP%
-?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) 
$(am__cooked_source_%GENERIC%)`
-?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%`$(CYGPATH_W) 
$(am__cooked_source_%GENERIC%)`
+?-o?   %VERBOSE-NODEP%%COMPILE% %-c% %-o% %OBJOBJ% %SOURCEFLAG%`$(CYGPATH_W) 
$<`
+?!-o?  %VERBOSE-NODEP%%COMPILE% %-c% %SOURCEFLAG%`$(CYGPATH_W) $<`
 endif !%FASTDEP%
 endif %?NONLIBTOOL%
 
@@ -94,8 +87,8 @@ if %?LIBTOOL%
 if %FASTDEP%
        %SILENT%$(am__ensure_depdir)
 ## In fast-dep mode, we can always use -o.
-       %VERBOSE%%LTCOMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo %-c% -o $@ \
-                %SOURCEFLAG%$(am__cooked_source_%GENERIC%)
+       %VERBOSE%%LTCOMPILE% -MT $@ -MD -MP -MF $(am__depbase).Tpo \
+                %-c% -o $@ %SOURCEFLAG%$<
        %SILENT%$(am__mv) $(am__depbase).Tpo $(am__depbase).Plo
 else !%FASTDEP%
 if %AMDEP%
@@ -104,6 +97,6 @@ if %AMDEP%
        DEPDIR=$(DEPDIR) $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif %AMDEP%
 ## We can always use `-o' with Libtool.
-       %VERBOSE-NODEP%%LTCOMPILE% %-c% -o %LTOBJ% 
%SOURCEFLAG%$(am__cooked_source_%GENERIC%)
+       %VERBOSE-NODEP%%LTCOMPILE% %-c% -o %LTOBJ% %SOURCEFLAG%$<
 endif !%FASTDEP%
 endif %?LIBTOOL%
diff --git a/lib/am/lex.am b/lib/am/lex.am
index 7926d74..8036107 100644
--- a/lib/am/lex.am
+++ b/lib/am/lex.am
@@ -25,8 +25,6 @@ endif %?MAINTAINER-MODE%
 ?GENERIC?%EXT%%DERIVED-EXT%:
 ?!GENERIC?%OBJ%: %SOURCE%
 ?SUBDIROBJ?    %SILENT%test -d $(dir $@) || $(MKDIR_P) $(dir $@)
-?GENERIC?      %VERBOSE%$(am__skiplex) $(SHELL) $(YLWRAP) %SOURCE% 
$(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
-?!GENERIC?     %VERBOSE% \
-?!GENERIC??DIST_SOURCE?        $(am__skiplex) \
-## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     $(SHELL) $(YLWRAP) `test -f '%SOURCE%' || echo 
'$(srcdir)/'`%SOURCE% $(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
+?GENERIC?      %VERBOSE%$(am__skipyacc) \
+?!GENERIC??DIST_SOURCE?        %VERBOSE%$(am__skiplex) \
+       $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c %OBJ% -- %COMPILE%
diff --git a/lib/am/yacc.am b/lib/am/yacc.am
index 4f608b0..1551232 100644
--- a/lib/am/yacc.am
+++ b/lib/am/yacc.am
@@ -42,8 +42,6 @@ endif %?MAINTAINER-MODE%
 ?GENERIC?%EXT%%DERIVED-EXT%:
 ?!GENERIC?%OBJ%: %SOURCE%
 ?SUBDIROBJ?    %SILENT%test -d $(dir $@) || $(MKDIR_P) $(dir $@)
-?GENERIC?      %VERBOSE%$(am__skipyacc) $(SHELL) $(YLWRAP) %SOURCE% y.tab.c 
%OBJ% y.tab.h %BASE%.h y.output %BASE%.output -- %COMPILE%
-?!GENERIC?     %VERBOSE% \
-?!GENERIC??DIST_SOURCE?        $(am__skipyacc) \
-## For non-suffix rules, we must emulate a VPATH search on %SOURCE%.
-?!GENERIC?     $(SHELL) $(YLWRAP) `test -f '%SOURCE%' || echo 
'$(srcdir)/'`%SOURCE% y.tab.c %OBJ% y.tab.h %BASE%.h y.output %BASE%.output -- 
%COMPILE%
+?GENERIC?      %VERBOSE%$(am__skipyacc) \
+?!GENERIC??DIST_SOURCE?        %VERBOSE%$(am__skipyacc) \
+       $(SHELL) $(YLWRAP) $< y.tab.c %OBJ% y.tab.h %BASE%.h y.output 
%BASE%.output -- %COMPILE%
diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk
index ee0edf2..da40dab 100644
--- a/tests/list-of-tests.mk
+++ b/tests/list-of-tests.mk
@@ -935,6 +935,7 @@ spell2.test \
 spell3.test \
 spelling.test \
 spy.test \
+spy-vpath-rewrite.test \
 stdinc.test \
 stamph2.test \
 stdlib.test \
diff --git a/tests/spy-vpath-rewrite.test b/tests/spy-vpath-rewrite.test
new file mode 100755
index 0000000..b5dd589
--- /dev/null
+++ b/tests/spy-vpath-rewrite.test
@@ -0,0 +1,150 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check that the automatic variable '$<' always undergoes VPATH rewrite.
+# We use that assumption in some of our rules, so it better explicitly
+# check that it truly holds.
+
+. ./defs || Exit 1
+
+ocwd=`pwd` || fatal_ "couldn't get current working directory"
+
+mkdir src
+cd src
+
+cat > mk <<'END'
+.SUFFIXES:
+.SUFFIXES: .a .b .a2 .b2 .a3 .b3 .a4 .b4
+
+empty =
+source = $<
+
+all: one.b two.b2 three.b3 four.b4
+all: www.d xxx.d2 yyy.d3 zzz.d4
+all: bar/mu.x is.ok zardoz
+all: here here2 he/re
+
+.a.b:
+       cp $< $@
+
+.a2.b2:
+       cp '$<' $@
+
+.a3.b3:
+       cp $(empty)$<$(empty) $@
+
+.a4.b4:
+       cp $(source) $@
+
+%.d: %.c
+       cp $< $@
+
+%.d2: %.c2
+       cp '$(source)' $@
+
+%.d3: %.c3 %.cc
+       cp `echo '$<'` $@
+
+%.d4: %.c4 ignore-me
+       orig=x$(<)x && orig=`expr "$$orig" : 'x\(.*\)x$$'` && cp $$orig $@
+
+bar/%: foo/%
+       mkdir $(dir $@)
+       cp $< $@
+
+%.ok: zap/%
+       cp "$<" $@
+
+%: zap/sub/%
+       cp '$<' $@
+
+here: there
+       cp $< $@
+
+here2: there2 ignore-me
+       cp '$<' $@
+
+he/re: the/re
+       mkdir $(dir $@)
+       cp "$(source)" $@
+END
+
+mkdir foo zap zap/sub the
+for file in \
+  one.a \
+  two.a2 \
+  three.a3 \
+  four.a4 \
+  www.c \
+  xxx.c2 \
+  yyy.c3 \
+  zzz.c4 \
+  foo/mu.x \
+  zap/is \
+  zap/sub/zardoz \
+  there \
+  there2 \
+  the/re \
+; do
+  echo $file > $file
+done
+touch yyy.cc ignore-me
+
+do_test ()
+{
+  srcdir=$1
+  cp $srcdir/mk Makefile
+  $MAKE -k all VPATH=$srcdir
+  if test "$srcdir" != "."; then
+    test ! -f $srcdir/bar && test ! -d $srcdir/bar || Exit 1
+    test ! -f $srcdir/he && test ! -d $srcdir/he || Exit 1
+  fi
+  diff $srcdir/one.a one.b
+  diff $srcdir/two.a2 two.b2
+  diff $srcdir/three.a3 three.b3
+  diff $srcdir/four.a4 four.b4
+  diff $srcdir/www.c www.d
+  diff $srcdir/xxx.c2 xxx.d2
+  diff $srcdir/yyy.c3 yyy.d3
+  diff $srcdir/zzz.c4 zzz.d4
+  diff $srcdir/foo/mu.x bar/mu.x
+  diff $srcdir/zap/is is.ok
+  diff $srcdir/zap/sub/zardoz zardoz
+  diff $srcdir/there here
+  diff $srcdir/the/re he/re
+}
+
+cd "$ocwd"
+mkdir build
+cd build
+do_test ../src
+
+cd "$ocwd"
+mkdir build2
+cd build2
+do_test "$ocwd"/src
+
+cd "$ocwd"
+cd src
+mkdir build
+cd build
+do_test ..
+
+cd "$ocwd"
+cd src
+do_test .
+
+:


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]