author | Vladimir Marek <Vladimir.Marek@oracle.com> |
Tue, 17 Jul 2012 00:25:22 +0200 | |
branch | s11-sru |
changeset 2323 | 908c7456de72 |
permissions | -rw-r--r-- |
2323
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
1 |
This diff is taken from git: |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
2 |
https://github.com/scfc/gnumake/commit/d952d36acf66398b7fe1e3efa15af73add937ecb |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
3 |
minus changes in the 'Changelog' files which don't apply cleanly to our sources |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
4 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
5 |
and it fixes Savannah bug 32511 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
6 |
http://savannah.gnu.org/bugs/?32511 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
7 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
8 |
diff --git a/ChangeLog b/ChangeLog |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
9 |
index 2345823..e2a9786 100644 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
10 |
diff --git a/remake.c b/remake.c |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
11 |
index 669eadc..5526624 100644 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
12 |
--- a/remake.c |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
13 |
+++ b/remake.c |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
14 |
@@ -1534,8 +1534,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
15 |
unsigned int liblen; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
16 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
17 |
/* Information about the earliest (in the vpath sequence) match. */ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
18 |
- unsigned int best_vpath, best_path; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
19 |
- unsigned int std_dirs = 0; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
20 |
+ unsigned int best_vpath = 0, best_path = 0; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
21 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
22 |
char **dp; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
23 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
24 |
@@ -1554,6 +1553,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
25 |
static char *buf = NULL; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
26 |
static unsigned int buflen = 0; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
27 |
static int libdir_maxlen = -1; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
28 |
+ static unsigned int std_dirs = 0; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
29 |
char *libbuf = variable_expand (""); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
30 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
31 |
/* Expand the pattern using LIB as a replacement. */ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
32 |
diff --git a/tests/scripts/features/vpath3 b/tests/scripts/features/vpath3 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
33 |
index 978c5ee..c6ede28 100644 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
34 |
--- a/tests/scripts/features/vpath3 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
35 |
+++ b/tests/scripts/features/vpath3 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
36 |
@@ -1,50 +1,35 @@ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
37 |
-# -*-perl-*- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
38 |
+# -*-perl-*- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
39 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
40 |
$description = "Test the interaction of the -lfoo feature and vpath"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
41 |
$details = ""; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
42 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
43 |
-open(MAKEFILE,"> $makefile"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
44 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
45 |
-# The Contents of the MAKEFILE ... |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
46 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
47 |
-print MAKEFILE "vpath %.a a1\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
48 |
-print MAKEFILE "vpath %.so b1\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
49 |
-print MAKEFILE "vpath % a2 b2\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
50 |
-print MAKEFILE "vpath % b3\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
51 |
-print MAKEFILE "all: -l1 -l2 -l3; \@echo \$^\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
52 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
53 |
-# END of Contents of MAKEFILE |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
54 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
55 |
-close(MAKEFILE); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
56 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
57 |
-mkdir("a1", 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
58 |
-mkdir("b1", 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
59 |
-mkdir("a2", 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
60 |
-mkdir("b2", 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
61 |
-mkdir("b3", 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
62 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
63 |
[email protected]_to_touch = ("a1${pathsep}lib1.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
64 |
- "b1${pathsep}lib1.so", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
65 |
- "a2${pathsep}lib2.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
66 |
- "b2${pathsep}lib2.so", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
67 |
- "lib3.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
68 |
- "b3${pathsep}lib3.so"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
69 |
+my @dirs_to_make = qw(a1 b1 a2 b2 b3); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
70 |
+for my $d (@dirs_to_make) { |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
71 |
+ mkdir($d, 0777); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
72 |
+} |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
73 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
74 |
+my @files_to_touch = ("a1${pathsep}lib1.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
75 |
+ "a1${pathsep}libc.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
76 |
+ "b1${pathsep}lib1.so", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
77 |
+ "a2${pathsep}lib2.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
78 |
+ "b2${pathsep}lib2.so", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
79 |
+ "lib3.a", |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
80 |
+ "b3${pathsep}lib3.so"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
81 |
&touch(@files_to_touch); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
82 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
83 |
-&run_make_with_options($makefile,"",&get_logfile); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
84 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
85 |
-# Create the answer to what should be produced by this Makefile |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
86 |
-$answer = "a1${pathsep}lib1.a a2${pathsep}lib2.a lib3.a\n"; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
87 |
- |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
88 |
-if (&compare_output($answer,&get_logfile(1))) |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
89 |
-{ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
90 |
- unlink @files_to_touch; |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
91 |
- rmdir("a1"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
92 |
- rmdir("b1"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
93 |
- rmdir("a2"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
94 |
- rmdir("b2"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
95 |
- rmdir("b3"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
96 |
+run_make_test(' |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
97 |
+vpath %.h b3 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
98 |
+vpath %.a a1 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
99 |
+vpath %.so b1 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
100 |
+vpath % a2 b2 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
101 |
+vpath % b3 |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
102 |
+all: -l1 -lc -l2 -l3; @echo $^ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
103 |
+', |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
104 |
+ '', "a1${pathsep}lib1.a a1${pathsep}libc.a a2${pathsep}lib2.a lib3.a\n"); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
105 |
+ |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
106 |
+unlink(@files_to_touch); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
107 |
+for my $d (@dirs_to_make) { |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
108 |
+ rmdir($d); |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
109 |
} |
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
110 |
|
908c7456de72
7183755 GNU make only expands first library path after applying 143307-03
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
111 |
1; |