automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, master, updated. Release-1-


From: Ralf Wildenhues
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. Release-1-10-215-gd20e982
Date: Sun, 02 Nov 2008 21:58:05 +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=d20e982e3cd4966d727c36801e7fa329c7b32011

The branch, master has been updated
       via  d20e982e3cd4966d727c36801e7fa329c7b32011 (commit)
      from  956cf31f30be90b613d7afb8082b44feb8d2750f (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 d20e982e3cd4966d727c36801e7fa329c7b32011
Author: Ralf Wildenhues <address@hidden>
Date:   Sun Nov 2 22:55:30 2008 +0100

    Choose default source extension: AM_DEFAULT_SOURCE_EXT.
    
    * automake.in (handle_source_transform): Accept unconditional
    literal extension in AM_DEFAULT_SOURCE_EXT as override for the
    default source extension `.c'.  If set, ignore the old default
    source rule for libtool libraries.
    * doc/automake.texi (Default _SOURCES): Document this.
    * NEWS: Update.
    * tests/specflg10.test: New test.
    * tests/Makefile.am: Update.
    Suggestion by Akim Demaille.
    
    Signed-off-by: Ralf Wildenhues <address@hidden>

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

Summary of changes:
 ChangeLog            |   11 ++++++
 NEWS                 |    3 ++
 automake.in          |   10 ++++-
 doc/automake.texi    |   14 +++++---
 tests/Makefile.am    |    1 +
 tests/Makefile.in    |    1 +
 tests/specflg10.test |   87 ++++++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 120 insertions(+), 7 deletions(-)
 create mode 100755 tests/specflg10.test

diff --git a/ChangeLog b/ChangeLog
index 95fba5c..00cfc0b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2008-11-02  Ralf Wildenhues  <address@hidden>
 
+       Choose default source extension: AM_DEFAULT_SOURCE_EXT.
+       * automake.in (handle_source_transform): Accept unconditional
+       literal extension in AM_DEFAULT_SOURCE_EXT as override for the
+       default source extension `.c'.  If set, ignore the old default
+       source rule for libtool libraries.
+       * doc/automake.texi (Default _SOURCES): Document this.
+       * NEWS: Update.
+       * tests/specflg10.test: New test.
+       * tests/Makefile.am: Update.
+       Suggestion by Akim Demaille.
+
        Fix maintainer-check failure.
        * tests/parallel-am.test: Rename variable to not match pattern
        used in maintainer-check.
diff --git a/NEWS b/NEWS
index 98f6b53..5c7d295 100644
--- a/NEWS
+++ b/NEWS
@@ -36,6 +36,9 @@ New in 1.10a:
   - Python 3.0 is supported now, Python releases prior to 2.0 are no
     longer supported.
 
+  - The default source file extension (.c) can be overridden with
+    AM_DEFAULT_SOURCE_EXT now.
+
 * Miscellaneous changes:
 
   - Automake development is done in a git repository on Savannah now, see
diff --git a/automake.in b/automake.in
index 0815773..4b54457 100755
--- a/automake.in
+++ b/automake.in
@@ -2058,10 +2058,16 @@ sub handle_source_transform ($$$$%)
     if (scalar @keys == 0)
     {
        # The default source for libfoo.la is libfoo.c, but for
-       # backward compatibility we first look at libfoo_la.c
+       # backward compatibility we first look at libfoo_la.c,
+       # if no default source suffix is given.
        my $old_default_source = "$one_file.c";
-       (my $default_source = $unxformed) =~ s,(\.[^./\\]*)?$,.c,;
+       my $ext_var = var ('AM_DEFAULT_SOURCE_EXT');
+       my $default_source_ext = $ext_var ? variable_value ($ext_var) : '.c';
+       msg_var ('unsupported', $ext_var, $ext_var->name . " can assume at most 
one value")
+         if $default_source_ext =~ /[\t ]/;
+       (my $default_source = $unxformed) =~ 
s,(\.[^./\\]*)?$,$default_source_ext,;
        if ($old_default_source ne $default_source
+           && !$default_source_ext
            && (rule $old_default_source
                || rule '$(srcdir)/' . $old_default_source
                || rule '${srcdir}/' . $old_default_source
diff --git a/doc/automake.texi b/doc/automake.texi
index cd2f920..86f1312 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -5605,6 +5605,7 @@ and we recommend avoiding it until you find it is 
required.
 @vindex SOURCES
 @cindex @code{_SOURCES}, default
 @cindex default @code{_SOURCES}
address@hidden AM_DEFAULT_SOURCE_EXT
 
 @code{_SOURCES} variables are used to specify source files of programs
 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
@@ -5613,8 +5614,7 @@ libraries (@pxref{A Shared Library}).
 When no such variable is specified for a target, Automake will define
 one itself.  The default is to compile a single C file whose base name
 is the name of the target itself, with any extension replaced by
address@hidden  (Defaulting to C is terrible but we are stuck with it for
-historical reasons.)
address@hidden, which defaults to @file{.c}.
 
 For example if you have the following somewhere in your
 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
@@ -5631,7 +5631,7 @@ would be built from @file{sub_libc___a.c}, i.e., the 
default source
 was the canonized name of the target, with @file{.c} appended.
 We believe the new behavior is more sensible, but for backward
 compatibility automake will use the old name if a file or a rule
-with that name exist.)
+with that name exist and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
 
 @cindex @code{check_PROGRAMS} example
 @vindex check_PROGRAMS
@@ -5640,16 +5640,20 @@ tests programs each from a single source.  For 
instance, in
 
 @example
 check_PROGRAMS = test1 test2 test3
+AM_DEFAULT_SOURCE_EXT = .cpp
 @end example
 
 @noindent
 @file{test1}, @file{test2}, and @file{test3} will be built
-from @file{test1.c}, @file{test2.c}, and @file{test3.c}.
+from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
+Without the last line, they will be built from @file{test1.c},
address@hidden, and @file{test3.c}.
 
 @cindex Libtool modules, default source example
 @cindex default source, Libtool modules example
 Another case where is this convenient is building many Libtool modules
-(@file{moduleN.la}), each defined in its own file (@file{moduleN.c}).
+(@address@hidden), each defined in its own file
+(@address@hidden).
 
 @example
 AM_LDFLAGS = -module
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2526acf..fa2b9a8 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -533,6 +533,7 @@ specflg6.test       \
 specflg7.test  \
 specflg8.test  \
 specflg9.test  \
+specflg10.test \
 spell.test \
 spell2.test \
 spell3.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 05bf946..f063770 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -686,6 +686,7 @@ specflg6.test       \
 specflg7.test  \
 specflg8.test  \
 specflg9.test  \
+specflg10.test \
 spell.test \
 spell2.test \
 spell3.test \
diff --git a/tests/specflg10.test b/tests/specflg10.test
new file mode 100755
index 0000000..23a7e64
--- /dev/null
+++ b/tests/specflg10.test
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2008  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 3, 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/>.
+
+# AM_DEFAULT_SOURCE_EXT
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_PROG_CXX
+AC_CONFIG_FILES([sub/Makefile sub2/Makefile])
+AM_CONDITIONAL([COND], [:])
+AC_OUTPUT
+END
+
+mkdir sub sub2
+
+cat > Makefile.am << 'END'
+SUBDIRS = sub sub2
+bin_PROGRAMS = foo
+END
+
+cat > sub/Makefile.am << 'END'
+bin_PROGRAMS = bar baz
+AM_DEFAULT_SOURCE_EXT = .cpp
+END
+
+cat > sub2/Makefile.am << 'END'
+bin_PROGRAMS = bla
+if COND
+AM_DEFAULT_SOURCE_EXT = .foo .quux
+endif
+SUFFIXES = .foo .c
+.foo.c:
+       cat $< >$@
+CLEANFILES = bla.c
+END
+
+cat > foo.c << 'END'
+int main () { return 0; }
+END
+
+cp foo.c sub/bar.cpp
+cp foo.c sub/baz.cpp
+cp foo.c sub2/bla.foo
+
+$ACLOCAL
+$AUTOCONF
+
+# Conditional AM_DEFAULT_SOURCE_EXT does not work yet  :-(
+# (this limitation could be lifted).
+AUTOMAKE_fails --add-missing
+grep 'defined conditionally' stderr
+
+sed '/^if/d; /^endif/d' sub2/Makefile.am > t
+mv -f t sub2/Makefile.am
+
+# AM_DEFAULT_SOURCE_EXT can only assume one value
+# (lifting this limitation is not such a good idea).
+AUTOMAKE_fails --add-missing
+grep 'at most one value' stderr
+
+sed 's/ \.quux//' sub2/Makefile.am > t
+mv -f t sub2/Makefile.am
+
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+$MAKE distcheck
+
+:


hooks/post-receive
--
GNU Automake




reply via email to

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