forked from msys2/MSYS2-packages
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautomake1.6-add-dirlist-support.patch
322 lines (311 loc) · 10.5 KB
/
automake1.6-add-dirlist-support.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
--- origsrc/automake-1.6.3/aclocal.in 2002-06-21 15:45:04.000000000 -0400
+++ src/automake-1.6.3/aclocal.in 2008-10-25 17:03:51.225846400 -0400
@@ -46,6 +46,11 @@
# Note also that the versioned directory is handled later.
$acdir = "@datadir@/aclocal";
$default_acdir = $acdir;
+# contains a list of directories, one per line, to be added
+# to the dirlist in addition to $acdir, as if -I had been
+# added to the command line. If acdir has been redirected,
+# we will also check the specified acdir (this is done later).
+$default_dirlist = "$default_acdir/dirlist";
# Some globals.
@@ -215,6 +220,26 @@
exit 0;
}
+ $default_dirlist="$acdir/dirlist"
+ if $acdir ne $default_acdir;
+
+ if (open (DEFAULT_DIRLIST, $default_dirlist))
+ {
+ while (<DEFAULT_DIRLIST>)
+ {
+ # Ignore '#' lines.
+ next if /^#/;
+ # strip off newlines and end-of-line comments
+ s/\s*\#.*$//;
+ chomp ($contents=$_);
+ if (-d $contents )
+ {
+ push (@dirlist, $contents);
+ }
+ }
+ close (DEFAULT_DIRLIST);
+ }
+
# Search the versioned directory near the end, and then the
# unversioned directory last. Only do this if the user didn't
# override acdir.
--- origsrc/automake-1.6.3/automake.texi 2002-07-16 17:14:57.000000000 -0400
+++ src/automake-1.6.3/automake.texi 2008-10-25 17:03:51.235860800 -0400
@@ -1301,7 +1301,8 @@
to supply their own macros.
At startup, @code{aclocal} scans all the @file{.m4} files it can find,
-looking for macro definitions. Then it scans @file{configure.in}. Any
+looking for macro definitions (@pxref{Macro search path}). Then it
+scans @file{configure.in}. Any
mention of one of the macros found in the first step causes that macro,
and any macros it in turn requires, to be put into @file{aclocal.m4}.
@@ -1316,6 +1317,17 @@
comment which will be completely ignored by @code{aclocal}, use
@samp{##} as the comment leader.
+@menu
+* aclocal options:: Options supported by aclocal
+* Macro search path:: How aclocal finds .m4 files
+@end menu
+
+@node aclocal options, Macro search path, Invoking aclocal, Invoking aclocal
+@section aclocal options
+
+@cindex aclocal, Options
+@cindex Options, aclocal
+
@code{aclocal} accepts the following options:
@table @code
@@ -1353,6 +1365,143 @@
Print the version number of Automake and exit.
@end table
+@node Macro search path, , aclocal options, Invoking aclocal
+@section Macro search path
+
+@cindex Macro search path
+@cindex aclocal search path
+
+By default, @command{aclocal} searches for @file{.m4} files in the following
+directories, in this order:
+
+@table @code
+@item @var{acdir-APIVERSION}
+This is where the @file{.m4} macros distributed with automake itself
+are stored. @var{APIVERSION} depends on the automake release used;
+for automake 1.6.x, @var{APIVERSION} = @code{1.6}.
+
+@item @var{acdir}
+This directory is intended for third party @file{.m4} files, and is
+configured when @command{automake} itself is built. This is
+@file{@@datadir@@/aclocal/}, which typically
+expands to @file{$@{prefix@}/share/aclocal/}. To find the compiled-in
+value of @var{acdir}, use the @code{--print-ac-dir} option
+(@pxref{aclocal options}).
+@end table
+
+As an example, suppose that automake-1.6.2 was configured with
+@code{--prefix=/usr/local}. Then, the search path would be:
+
+@enumerate
+@item @file{/usr/local/share/aclocal-1.6/}
+@item @file{/usr/local/share/aclocal/}
+@end enumerate
+
+As explained in (@pxref{aclocal options}), there are several options that
+can be used to change or extend this search path.
+
+@subsection Modifying the macro search path: @code{--acdir}
+
+The most obvious option to modify the search path is
+@code{--acdir=@var{dir}}, which changes default directory and
+drops the @var{APIVERSION} directory. For example, if one specifies
+@code{--acdir=/opt/private/}, then the search path becomes:
+
+@enumerate
+@item @file{/opt/private/}
+@end enumerate
+
+Note that this option, @code{--acdir}, is intended for use
+by the internal automake test suite only; it is not ordinarily
+needed by end-users.
+
+@subsection Modifying the macro search path: @code{-I @var{dir}}
+
+Any extra directories specified using @code{-I} options
+(@pxref{aclocal options}) are @emph{prepended} to this search list. Thus,
+@code{aclocal -I /foo -I /bar} results in the following search path:
+
+@enumerate
+@item @file{/foo}
+@item @file{/bar}
+@item @var{acdir}-@var{APIVERSION}
+@item @var{acdir}
+@end enumerate
+
+@subsection Modifying the macro search path: @file{dirlist}
+
+There is a third mechanism for customizing the search path. If a
+@file{dirlist} file exists in @var{acdir}, then that
+file is assumed to contain a list of directories, one per line, to
+be added to the search list. These directories are searched @emph{after}
+any directories specified on the command line using @code{-I}, but
+@emph{before} the @var{acdir} and @var{acdir-APIVERSION} directories.
+
+For example, suppose
+@file{@var{acdir}/dirlist} contains the following:
+
+@example
+/test1
+/test2
+@end example
+
+and that @code{aclocal} was called with the @code{-I /foo -I /bar} options.
+Then, the search path would be
+
+@enumerate
+@item @file{/foo}
+@item @file{/bar}
+@item @file{/test1}
+@item @file{/test2}
+@item @var{acdir}-@var{APIVERSION}
+@item @var{acdir}
+@end enumerate
+
+If the @code{--acdir=@var{dir}} option is used,
+then @command{aclocal} will search for the @file{dirlist} file in
+the @emph{redirected} @var{acdir} directory. In the
+@code{--acdir} example above, @command{aclocal} will search the
+@file{/opt/private/} directory for @file{dirlist}. Again, however,
+the @code{--acdir} option is intended for use by the internal
+automake test suite only; @code{--acdir} is not ordinarily
+needed by end-users.
+
+@file{dirlist} is useful in the following situation: suppose that
+@code{automake} version @code{1.6.2} is installed with
+$prefix=/usr by the system vendor. Thus, the default search
+directories are
+
+@enumerate
+@item @file{/usr/share/aclocal-1.6/}
+@item @file{/usr/share/aclocal/}
+@end enumerate
+
+However, suppose further that many packages have been manually
+installed on the system, with $prefix=/usr/local, as is typical.
+In that case, many of these ``extra'' @file{.m4} files are in
+@file{/usr/local/share/aclocal}. The only way to force
+@file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files
+is to always call @code{aclocal -I /usr/local/share/aclocal}.
+This is inconvenient. With @file{dirlist}, one may create the file
+
+@file{/usr/share/aclocal/dirlist}
+
+which contains only the single line
+
+@file{/usr/local/share/aclocal}
+
+Now, the ``default'' search path on the affected system is
+
+@enumerate
+@item @file{/usr/local/share/aclocal/}
+@item @file{/usr/share/aclocal-1.6/}
+@item @file{/usr/share/aclocal/}
+@end enumerate
+
+without the need for @code{-I} options; @code{-I} options can be reserved
+for project-specific needs (@file{my-source-dir/m4/}), rather than
+using it to work around local system-dependent tool installation
+directories.
@node Macros, Extending aclocal, Invoking aclocal, configure
@section Autoconf macros supplied with Automake
--- origsrc/automake-1.6.3/m4/dirlist 1969-12-31 19:00:00.000000000 -0500
+++ src/automake-1.6.3/m4/dirlist 2008-10-25 17:03:51.245875200 -0400
@@ -0,0 +1,3 @@
+# This file is used by the testsuite (dirlist.test)
+# it should not be installed
+./dirlist-test
--- origsrc/automake-1.6.3/m4/Makefile.am 2002-07-23 12:58:38.000000000 -0400
+++ src/automake-1.6.3/m4/Makefile.am 2008-10-25 17:03:51.235860800 -0400
@@ -29,3 +29,4 @@
nodist_m4data_DATA = amversion.m4
DISTCLEANFILES = amversion.m4
+EXTRA_DIST = dirlist
--- origsrc/automake-1.6.3/NEWS 2002-07-26 15:25:22.000000000 -0400
+++ src/automake-1.6.3/NEWS 2008-10-25 17:03:51.205817600 -0400
@@ -1,3 +1,8 @@
+Cygwin-special:
+ - add support for extending aclocal's default macro search path
+ using a ``dirlist'' file within the $acdir directory. Accepted
+ for 1.7.x
+
New in 1.6.3:
* Support for AM_INIT_GETTEXT([external])
* Bug fixes, including:
--- origsrc/automake-1.6.3/tests/defs 2002-06-13 15:51:11.000000000 -0400
+++ src/automake-1.6.3/tests/defs 2008-10-25 17:03:51.255889600 -0400
@@ -112,14 +112,37 @@
# other `-I' directories added for libtool and gettext might contain
# files from an old version of Automake that we don't want to use.
aclocaldir=`(aclocal --print-ac-dir) 2>/dev/null`
+aclocalver=`(aclocal --version) 2>/dev/null | \
+ sed 's/^.* \([0-9][0-9]*\.[0-9][0-9]*[a-z]*\).*$/\1/;1q'`
+dirlistdir=${aclocaldir}-${aclocalver}
+extra_includes=""
+if [ -f ${dirlistdir}/dirlist ] ; then
+ extra_includes=`(tmp_inc=""
+ while read LINE ; do
+ tmp_inc="$tmp_inc -I $LINE"
+ done
+ echo $tmp_inc) < ${dirlistdir}/dirlist`
+fi
case $required in
*libtool* )
- test -f "$aclocaldir/libtool.m4" || exit 77
- ACLOCAL="$ACLOCAL -I $srcdir/../m4 -I $aclocaldir"
+ libtool_found=no
+ for d in $extra_includes $aclocaldir ; do
+ if [ "x$d" != "x-I" ] && [ -f "$d/libtool.m4" ] ; then
+ libtool_found=yes
+ fi
+ done
+ test "x$libtool_found" = "xyes" || exit 77
+ ACLOCAL="$ACLOCAL -I $srcdir/../m4 $extra_includes -I $aclocaldir"
;;
*gettext* )
- test -f "$aclocaldir/gettext.m4" || exit 77
- ACLOCAL="$ACLOCAL -I $srcdir/../m4 -I $aclocaldir"
+ gettext_found=no
+ for d in $extra_includes $aclocaldir ; do
+ if [ "x$d" != "x-I" ] && [ -f "$d/gettext.m4" ] ; then
+ gettext_found=yes
+ fi
+ done
+ test "x$gettext_found" = "xyes" || exit 77
+ ACLOCAL="$ACLOCAL -I $srcdir/../m4 $extra_includes -I $aclocaldir"
;;
esac
--- origsrc/automake-1.6.3/tests/dirlist.test 1969-12-31 19:00:00.000000000 -0500
+++ src/automake-1.6.3/tests/dirlist.test 2008-10-25 17:03:51.265904000 -0400
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+# Check dirlist support.
+# This test relies on m4/dirlist
+
+. $srcdir/defs || exit 1
+
+cat > configure.in <<EOF
+AC_INIT
+AM_INIT_GUILE_MODULE
+EOF
+
+mkdir dirlist-test
+
+cat >>dirlist-test/dirlist-check.m4 << 'END'
+AC_DEFUN([AM_INIT_GUILE_MODULE],[
+. $srcdir/../GUILE-VERSION
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AC_CONFIG_AUX_DIR(..)
+module=[$1]
+AC_SUBST(module)])
+END
+
+$ACLOCAL || exit 1
+
+grep 'DEFUN.*AM_INIT_GUILE_MODULE' aclocal.m4
--- origsrc/automake-1.6.3/tests/Makefile.am 2002-07-23 14:29:13.000000000 -0400
+++ src/automake-1.6.3/tests/Makefile.am 2008-10-25 17:03:51.245875200 -0400
@@ -126,6 +126,7 @@
depend3.test \
depend4.test \
dirforbid.test \
+dirlist.test \
dirname.test \
discover.test \
distcommon.test \