7183755 GNU make only expands first library path after applying 143307-03
authorVladimir Marek <Vladimir.Marek@oracle.com>
Mon, 16 Jul 2012 14:42:16 +0200
changeset 913 646785c43987
parent 912 d98bdeebbbb3
child 914 39cfb488e7d8
7183755 GNU make only expands first library path after applying 143307-03
components/make/patches/32511.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/make/patches/32511.patch	Mon Jul 16 14:42:16 2012 +0200
@@ -0,0 +1,111 @@
+This diff is taken from git:
+https://github.com/scfc/gnumake/commit/d952d36acf66398b7fe1e3efa15af73add937ecb
+minus changes in the 'Changelog' files which don't apply cleanly to our sources
+
+and it fixes Savannah bug 32511
+http://savannah.gnu.org/bugs/?32511
+
+diff --git a/ChangeLog b/ChangeLog
+index 2345823..e2a9786 100644
+diff --git a/remake.c b/remake.c
+index 669eadc..5526624 100644
+--- a/remake.c
++++ b/remake.c
+@@ -1534,8 +1534,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
+   unsigned int liblen;
+ 
+   /* Information about the earliest (in the vpath sequence) match.  */
+-  unsigned int best_vpath, best_path;
+-  unsigned int std_dirs = 0;
++  unsigned int best_vpath = 0, best_path = 0;
+ 
+   char **dp;
+ 
+@@ -1554,6 +1553,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
+       static char *buf = NULL;
+       static unsigned int buflen = 0;
+       static int libdir_maxlen = -1;
++      static unsigned int std_dirs = 0;
+       char *libbuf = variable_expand ("");
+ 
+       /* Expand the pattern using LIB as a replacement.  */
+diff --git a/tests/scripts/features/vpath3 b/tests/scripts/features/vpath3
+index 978c5ee..c6ede28 100644
+--- a/tests/scripts/features/vpath3
++++ b/tests/scripts/features/vpath3
+@@ -1,50 +1,35 @@
+-#                                                                     -*-perl-*-
++#                                                                    -*-perl-*-
+ 
+ $description = "Test the interaction of the -lfoo feature and vpath";
+ $details = "";
+ 
+-open(MAKEFILE,"> $makefile");
+-
+-# The Contents of the MAKEFILE ...
+-
+-print MAKEFILE "vpath %.a a1\n";
+-print MAKEFILE "vpath %.so b1\n";
+-print MAKEFILE "vpath % a2 b2\n";
+-print MAKEFILE "vpath % b3\n";
+-print MAKEFILE "all: -l1 -l2 -l3; \@echo \$^\n";
+-
+-# END of Contents of MAKEFILE
+-
+-close(MAKEFILE);
+-
+-mkdir("a1", 0777);
+-mkdir("b1", 0777);
+-mkdir("a2", 0777);
+-mkdir("b2", 0777);
+-mkdir("b3", 0777);
+-
+-@files_to_touch = ("a1${pathsep}lib1.a",
+-		   "b1${pathsep}lib1.so",
+-		   "a2${pathsep}lib2.a",
+-		   "b2${pathsep}lib2.so",
+-		   "lib3.a",
+-		   "b3${pathsep}lib3.so");
++my @dirs_to_make = qw(a1 b1 a2 b2 b3);
++for my $d (@dirs_to_make) {
++    mkdir($d, 0777);
++}
+ 
++my @files_to_touch = ("a1${pathsep}lib1.a",
++                      "a1${pathsep}libc.a",
++                      "b1${pathsep}lib1.so",
++                      "a2${pathsep}lib2.a",
++                      "b2${pathsep}lib2.so",
++                      "lib3.a",
++                      "b3${pathsep}lib3.so");
+ &touch(@files_to_touch);
+ 
+-&run_make_with_options($makefile,"",&get_logfile);
+-
+-# Create the answer to what should be produced by this Makefile
+-$answer = "a1${pathsep}lib1.a a2${pathsep}lib2.a lib3.a\n";
+-
+-if (&compare_output($answer,&get_logfile(1)))
+-{
+-  unlink @files_to_touch;
+-  rmdir("a1");
+-  rmdir("b1");
+-  rmdir("a2");
+-  rmdir("b2");
+-  rmdir("b3");
++run_make_test('
++vpath %.h b3
++vpath %.a a1
++vpath %.so b1
++vpath % a2 b2
++vpath % b3
++all: -l1 -lc -l2 -l3; @echo $^
++',
++              '', "a1${pathsep}lib1.a a1${pathsep}libc.a a2${pathsep}lib2.a lib3.a\n");
++
++unlink(@files_to_touch);
++for my $d (@dirs_to_make) {
++    rmdir($d);
+ }
+ 
+ 1;