]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
For PR automake/211:
authorTom Tromey <tromey@redhat.com>
Mon, 31 Dec 2001 01:01:03 +0000 (01:01 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 31 Dec 2001 01:01:03 +0000 (01:01 +0000)
* automake.in (object_compilation_map): New global.
(initialize_per_input): Initialize it.
(COMPILE_LIBTOOL): New constant.
(COMPILE_ORDINARY): Likewise.
* tests/Makefile.am (TESTS): Added pr211.test.
* tests/pr211.test: New file.

ChangeLog
automake.in
tests/Makefile.am
tests/Makefile.in
tests/pr211.test [new file with mode: 0755]

index 6da87673b22068d5db1006054211209c78d70a94..133f3382027a11fb3c047abd0933d17a0a30e376 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2001-12-30  Tom Tromey  <tromey@redhat.com>
 
+       For PR automake/211:
+       * automake.in (object_compilation_map): New global.
+       (initialize_per_input): Initialize it.
+       (COMPILE_LIBTOOL): New constant.
+       (COMPILE_ORDINARY): Likewise.
+       * tests/Makefile.am (TESTS): Added pr211.test.
+       * tests/pr211.test: New file.
+
        For PR automake/215:
        * configure.in: Use AM_AUTOMAKE_OPTIONS.
        * Makefile.am (AUTOMAKE_OPTIONS): Removed.
index 4d0237a15a971d3e0059eb2f5fcadf4a9ba98e55..725e871c8867296a472b3a4694e330eef2b20f56 100755 (executable)
@@ -236,6 +236,11 @@ my $LANG_IGNORE = 0;
 my $LANG_PROCESS = 1;
 my $LANG_SUBDIR = 2;
 
+# These are used when keeping track of whether an object can be built
+# by two different paths.
+my $COMPILE_LIBTOOL = 1;
+my $COMPILE_ORDINARY = 2;
+
 # Map from obsolete macros to hints for new macros.
 # If you change this, change the corresponding list in aclocal.in.
 # FIXME: should just put this into a single file.
@@ -551,6 +556,12 @@ my @dist_sources;
 # by a single source file.
 my %object_map;
 
+# This hash maps object file names onto an integer value representing
+# whether this object has been built via ordinary compilation or
+# libtool compilation (the COMPILE_* constants).
+my %object_compilation_map;
+
+
 # This keeps track of the directories for which we've already
 # created `.dirstamp' code.
 my %directory_map;
@@ -725,6 +736,7 @@ sub initialize_per_input ()
     @dist_sources = ();
 
     %object_map = ();
+    %object_compilation_map = ();
 
     %directory_map = ();
 
@@ -1967,6 +1979,20 @@ sub handle_single_transform_list ($$$$@)
             }
         }
 
+       my $comp_val = (($object =~ /\.lo$/)
+                       ? $COMPILE_LIBTOOL : $COMPILE_ORDINARY);
+       (my $comp_obj = $object) =~ s/\.lo$/.\$(OBJEXT)/;
+       if (defined $object_compilation_map{$comp_obj}
+           && $object_compilation_map{$comp_obj} != 0
+           # Only see the error once.
+           && ($object_compilation_map{$comp_obj}
+               != ($COMPILE_LIBTOOL | $COMPILE_ORDINARY))
+           && $object_compilation_map{$comp_obj} != $comp_val)
+       {
+           am_error ("object `$object' created both with libtool and without");
+       }
+       $object_compilation_map{$comp_obj} |= $comp_val;
+
        if (defined $lang) {
            # Let the language do some special magic if required.
            $lang->target_hook ($aggregate, $object, $full);
index 7104b09104ddcface21c4364bb3d7673f9dcd858..6472ffe16a5e315e367cf6fbab228d8a28f4503a 100644 (file)
@@ -240,6 +240,7 @@ pluseq7.test \
 pluseq8.test \
 ppf77.test \
 pr2.test \
+pr211.test \
 pr220.test \
 pr243.test \
 pr266.test \
index 58b0eb285eef91d6ac2aedb4eb6adc01be094a27..6e69068f8cfbe4a011d2bc22f9decebaaa7064dc 100644 (file)
@@ -313,6 +313,7 @@ pluseq7.test \
 pluseq8.test \
 ppf77.test \
 pr2.test \
+pr211.test \
 pr220.test \
 pr243.test \
 pr266.test \
diff --git a/tests/pr211.test b/tests/pr211.test
new file mode 100755 (executable)
index 0000000..1d9fb0f
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+# Test for PR 211.
+
+requires=libtoolize
+. $srcdir/defs || exit 1
+
+cat > configure.in << 'END'
+AC_INIT(Makefile.am)
+AM_INIT_AUTOMAKE(hello,0.23)
+AC_PROG_CC
+AC_PROG_LIBTOOL
+AC_OUTPUT(Makefile)
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = helldl
+lib_LTLIBRARIES = libfoo.la
+helldl_SOURCES = foo.c
+libfoo_la_SOURCES = foo.c
+END
+
+libtoolize || exit 1
+$ACLOCAL || exit 1
+$AUTOMAKE -a && exit 1
+exit 0