metasploit_payloads-mettle 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/build/aarch64-iphone-darwin/bin/mettle +0 -0
  5. data/build/aarch64-linux-musl/bin/mettle +0 -0
  6. data/build/aarch64-linux-musl/bin/mettle.bin +0 -0
  7. data/build/aarch64-linux-musl/bin/sniffer +0 -0
  8. data/build/aarch64-linux-musl/bin/sniffer.bin +0 -0
  9. data/build/arm-iphone-darwin/bin/mettle +0 -0
  10. data/build/armv5b-linux-musleabi/bin/mettle +0 -0
  11. data/build/armv5b-linux-musleabi/bin/mettle.bin +0 -0
  12. data/build/armv5b-linux-musleabi/bin/sniffer +0 -0
  13. data/build/armv5b-linux-musleabi/bin/sniffer.bin +0 -0
  14. data/build/armv5l-linux-musleabi/bin/mettle +0 -0
  15. data/build/armv5l-linux-musleabi/bin/mettle.bin +0 -0
  16. data/build/armv5l-linux-musleabi/bin/sniffer +0 -0
  17. data/build/armv5l-linux-musleabi/bin/sniffer.bin +0 -0
  18. data/build/darwin.x86_64/bin/mettle +0 -0
  19. data/build/i486-linux-musl/bin/mettle +0 -0
  20. data/build/i486-linux-musl/bin/mettle.bin +0 -0
  21. data/build/i486-linux-musl/bin/sniffer +0 -0
  22. data/build/i486-linux-musl/bin/sniffer.bin +0 -0
  23. data/build/i686-w64-mingw32/bin/mettle.exe +0 -0
  24. data/build/mips-linux-muslsf/bin/mettle +0 -0
  25. data/build/mips-linux-muslsf/bin/mettle.bin +0 -0
  26. data/build/mips-linux-muslsf/bin/sniffer +0 -0
  27. data/build/mips-linux-muslsf/bin/sniffer.bin +0 -0
  28. data/build/mips64-linux-muslsf/bin/mettle +0 -0
  29. data/build/mips64-linux-muslsf/bin/mettle.bin +0 -0
  30. data/build/mips64-linux-muslsf/bin/sniffer +0 -0
  31. data/build/mips64-linux-muslsf/bin/sniffer.bin +0 -0
  32. data/build/mipsel-linux-muslsf/bin/mettle +0 -0
  33. data/build/mipsel-linux-muslsf/bin/mettle.bin +0 -0
  34. data/build/mipsel-linux-muslsf/bin/sniffer +0 -0
  35. data/build/mipsel-linux-muslsf/bin/sniffer.bin +0 -0
  36. data/build/powerpc-e500v2-linux-musl/bin/mettle +0 -0
  37. data/build/powerpc-e500v2-linux-musl/bin/mettle.bin +0 -0
  38. data/build/powerpc-e500v2-linux-musl/bin/sniffer +0 -0
  39. data/build/powerpc-e500v2-linux-musl/bin/sniffer.bin +0 -0
  40. data/build/powerpc-linux-muslsf/bin/mettle +0 -0
  41. data/build/powerpc-linux-muslsf/bin/mettle.bin +0 -0
  42. data/build/powerpc-linux-muslsf/bin/sniffer +0 -0
  43. data/build/powerpc-linux-muslsf/bin/sniffer.bin +0 -0
  44. data/build/powerpc64le-linux-musl/bin/mettle +0 -0
  45. data/build/powerpc64le-linux-musl/bin/mettle.bin +0 -0
  46. data/build/powerpc64le-linux-musl/bin/sniffer +0 -0
  47. data/build/powerpc64le-linux-musl/bin/sniffer.bin +0 -0
  48. data/build/s390x-linux-musl/bin/mettle +0 -0
  49. data/build/s390x-linux-musl/bin/mettle.bin +0 -0
  50. data/build/s390x-linux-musl/bin/sniffer +0 -0
  51. data/build/s390x-linux-musl/bin/sniffer.bin +0 -0
  52. data/build/x86_64-apple-darwin/bin/mettle +0 -0
  53. data/build/x86_64-linux-musl/bin/mettle +0 -0
  54. data/build/x86_64-linux-musl/bin/mettle.bin +0 -0
  55. data/build/x86_64-linux-musl/bin/sniffer +0 -0
  56. data/build/x86_64-linux-musl/bin/sniffer.bin +0 -0
  57. data/lib/metasploit_payloads/mettle/version.rb +1 -1
  58. metadata +2 -20
  59. metadata.gz.sig +0 -0
  60. data/build/tools/bin/aclocal +0 -1225
  61. data/build/tools/bin/aclocal-1.16 +0 -1225
  62. data/build/tools/bin/autoconf +0 -505
  63. data/build/tools/bin/autoheader +0 -303
  64. data/build/tools/bin/autom4te +0 -1074
  65. data/build/tools/bin/automake +0 -8378
  66. data/build/tools/bin/automake-1.16 +0 -8378
  67. data/build/tools/bin/autoreconf +0 -717
  68. data/build/tools/bin/autoscan +0 -678
  69. data/build/tools/bin/autoupdate +0 -1063
  70. data/build/tools/bin/bison +0 -0
  71. data/build/tools/bin/elf2bin +0 -0
  72. data/build/tools/bin/flex +0 -0
  73. data/build/tools/bin/flex++ +0 -1
  74. data/build/tools/bin/ifnames +0 -153
  75. data/build/tools/bin/libtool +0 -12556
  76. data/build/tools/bin/libtoolize +0 -4332
  77. data/build/tools/bin/yacc +0 -2
@@ -1,678 +0,0 @@
1
- #! /usr/bin/perl -w
2
- # -*- perl -*-
3
- # Generated from autoscan.in; do not edit by hand.
4
-
5
- # autoscan - Create configure.scan (a preliminary configure.ac) for a package.
6
- # Copyright (C) 1994, 1999-2012 Free Software Foundation, Inc.
7
-
8
- # This program is free software: you can redistribute it and/or modify
9
- # it under the terms of the GNU General Public License as published by
10
- # the Free Software Foundation, either version 3 of the License, or
11
- # (at your option) any later version.
12
-
13
- # This program is distributed in the hope that it will be useful,
14
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- # GNU General Public License for more details.
17
-
18
- # You should have received a copy of the GNU General Public License
19
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
-
21
- # Written by David MacKenzie <djm@gnu.ai.mit.edu>.
22
-
23
- eval 'case $# in 0) exec /usr/bin/perl -S "$0";; *) exec /usr/bin/perl -S "$0" "$@";; esac'
24
- if 0;
25
-
26
- BEGIN
27
- {
28
- my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '/mettle/build/tools/share/autoconf';
29
- unshift @INC, $pkgdatadir;
30
-
31
- # Override SHELL. On DJGPP SHELL may not be set to a shell
32
- # that can handle redirection and quote arguments correctly,
33
- # e.g.: COMMAND.COM. For DJGPP always use the shell that configure
34
- # has detected.
35
- $ENV{'SHELL'} = '/bin/bash' if ($^O eq 'dos');
36
- }
37
-
38
- use Autom4te::ChannelDefs;
39
- use Autom4te::Configure_ac;
40
- use Autom4te::General;
41
- use Autom4te::FileUtils;
42
- use Autom4te::XFile;
43
- use File::Basename;
44
- use File::Find;
45
- use strict;
46
-
47
- use vars qw(@cfiles @makefiles @shfiles @subdirs %printed);
48
-
49
- # The kind of the words we are looking for.
50
- my @kinds = qw (function header identifier program
51
- makevar librarie);
52
-
53
- # For each kind, the default macro.
54
- my %generic_macro =
55
- (
56
- 'function' => 'AC_CHECK_FUNCS',
57
- 'header' => 'AC_CHECK_HEADERS',
58
- 'identifier' => 'AC_CHECK_TYPES',
59
- 'program' => 'AC_CHECK_PROGS',
60
- 'library' => 'AC_CHECK_LIB'
61
- );
62
-
63
- my %kind_comment =
64
- (
65
- 'function' => 'Checks for library functions.',
66
- 'header' => 'Checks for header files.',
67
- 'identifier' => 'Checks for typedefs, structures, and compiler characteristics.',
68
- 'program' => 'Checks for programs.',
69
- );
70
-
71
- # $USED{KIND}{ITEM} is the list of locations where the ITEM (of KIND) was used
72
- # in the user package.
73
- # For instance $USED{function}{alloca} is the list of `file:line' where
74
- # `alloca (...)' appears.
75
- my %used = ();
76
-
77
- # $MACRO{KIND}{ITEM} is the list of macros to use to test ITEM.
78
- # Initialized from lib/autoscan/*. E.g., $MACRO{function}{alloca} contains
79
- # the singleton AC_FUNC_ALLOCA. Some require several checks.
80
- my %macro = ();
81
-
82
- # $NEEDED_MACROS{MACRO} is an array of locations requiring MACRO.
83
- # E.g., $NEEDED_MACROS{AC_FUNC_ALLOC} the list of `file:line' containing
84
- # `alloca (...)'.
85
- my %needed_macros =
86
- (
87
- 'AC_PREREQ' => [$me],
88
- );
89
-
90
- my $configure_scan = 'configure.scan';
91
- my $log;
92
-
93
- # Autoconf and lib files.
94
- my $autom4te = $ENV{'AUTOM4TE'} || '/mettle/build/tools/bin/autom4te';
95
- my $autoconf = "$autom4te --language=autoconf";
96
- my @prepend_include;
97
- my @include = ('/mettle/build/tools/share/autoconf');
98
-
99
- # $help
100
- # -----
101
- $help = "Usage: $0 [OPTION]... [SRCDIR]
102
-
103
- Examine source files in the directory tree rooted at SRCDIR, or the
104
- current directory if none is given. Search the source files for
105
- common portability problems, check for incompleteness of
106
- `configure.ac', and create a file `$configure_scan' which is a
107
- preliminary `configure.ac' for that package.
108
-
109
- -h, --help print this help, then exit
110
- -V, --version print version number, then exit
111
- -v, --verbose verbosely report processing
112
- -d, --debug don't remove temporary files
113
-
114
- Library directories:
115
- -B, --prepend-include=DIR prepend directory DIR to search path
116
- -I, --include=DIR append directory DIR to search path
117
-
118
- Report bugs to <bug-autoconf\@gnu.org>.
119
- GNU Autoconf home page: <http://www.gnu.org/software/autoconf/>.
120
- General help using GNU software: <http://www.gnu.org/gethelp/>.
121
- ";
122
-
123
- # $version
124
- # --------
125
- $version = "autoscan (GNU Autoconf) 2.69
126
- Copyright (C) 2012 Free Software Foundation, Inc.
127
- License GPLv3+/Autoconf: GNU GPL version 3 or later
128
- <http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
129
- This is free software: you are free to change and redistribute it.
130
- There is NO WARRANTY, to the extent permitted by law.
131
-
132
- Written by David J. MacKenzie and Akim Demaille.
133
- ";
134
-
135
-
136
-
137
-
138
- ## ------------------------ ##
139
- ## Command line interface. ##
140
- ## ------------------------ ##
141
-
142
- # parse_args ()
143
- # -------------
144
- # Process any command line arguments.
145
- sub parse_args ()
146
- {
147
- getopt ('I|include=s' => \@include,
148
- 'B|prepend-include=s' => \@prepend_include);
149
-
150
- die "$me: too many arguments
151
- Try `$me --help' for more information.\n"
152
- if @ARGV > 1;
153
-
154
- my $srcdir = $ARGV[0] || ".";
155
-
156
- verb "srcdir = $srcdir";
157
- chdir $srcdir || error "cannot cd to $srcdir: $!";
158
- }
159
-
160
-
161
- # init_tables ()
162
- # --------------
163
- # Put values in the tables of what to do with each token.
164
- sub init_tables ()
165
- {
166
- # The data file format supports only one line of macros per function.
167
- # If more than that is required for a common portability problem,
168
- # a new Autoconf macro should probably be written for that case,
169
- # instead of duplicating the code in lots of configure.ac files.
170
- my $file = find_file ("autoscan/autoscan.list",
171
- reverse (@prepend_include), @include);
172
- my $table = new Autom4te::XFile "< " . open_quote ($file);
173
- my $tables_are_consistent = 1;
174
-
175
- while ($_ = $table->getline)
176
- {
177
- # Ignore blank lines and comments.
178
- next
179
- if /^\s*$/ || /^\s*\#/;
180
-
181
- # '<kind>: <word> <macro invocation>' or...
182
- # '<kind>: <word> warn: <message>'.
183
- if (/^(\S+):\s+(\S+)\s+(\S.*)$/)
184
- {
185
- my ($kind, $word, $macro) = ($1, $2, $3);
186
- error "$file:$.: invalid kind: $_"
187
- unless grep { $_ eq $kind } @kinds;
188
- push @{$macro{$kind}{$word}}, $macro;
189
- }
190
- else
191
- {
192
- error "$file:$.: invalid definition: $_";
193
- }
194
- }
195
-
196
- if ($debug)
197
- {
198
- foreach my $kind (@kinds)
199
- {
200
- foreach my $word (sort keys %{$macro{$kind}})
201
- {
202
- print "$kind: $word: @{$macro{$kind}{$word}}\n";
203
- }
204
- }
205
-
206
- }
207
- }
208
-
209
-
210
- # used ($KIND, $WORD, [$WHERE])
211
- # -----------------------------
212
- # $WORD is used as a $KIND.
213
- sub used ($$;$)
214
- {
215
- my ($kind, $word, $where) = @_;
216
- $where ||= "$File::Find::name:$.";
217
- if (
218
- # Check for all the libraries. But `-links' is certainly a
219
- # `find' argument, and `-le', a `test' argument.
220
- ($kind eq 'library' && $word !~ /^(e|inks)$/)
221
- # Other than libraries are to be checked only if listed in
222
- # the Autoscan library files.
223
- || defined $macro{$kind}{$word}
224
- )
225
- {
226
- push (@{$used{$kind}{$word}}, $where);
227
- }
228
- }
229
-
230
-
231
-
232
- ## ----------------------- ##
233
- ## Scanning source files. ##
234
- ## ----------------------- ##
235
-
236
-
237
- # scan_c_file ($FILE-NAME)
238
- # ------------------------
239
- sub scan_c_file ($)
240
- {
241
- my ($file_name) = @_;
242
- push @cfiles, $File::Find::name;
243
-
244
- # Nonzero if in a multiline comment.
245
- my $in_comment = 0;
246
-
247
- my $file = new Autom4te::XFile "< " . open_quote ($file_name);
248
-
249
- while ($_ = $file->getline)
250
- {
251
- # Strip out comments.
252
- if ($in_comment && s,^.*?\*/,,)
253
- {
254
- $in_comment = 0;
255
- }
256
- # The whole line is inside a comment.
257
- next if $in_comment;
258
- # All on one line.
259
- s,/\*.*?\*/,,g;
260
-
261
- # Starting on this line.
262
- if (s,/\*.*$,,)
263
- {
264
- $in_comment = 1;
265
- }
266
-
267
- # Preprocessor directives.
268
- if (s/^\s*\#\s*//)
269
- {
270
- if (/^include\s*<([^>]*)>/)
271
- {
272
- used ('header', $1);
273
- }
274
- if (s/^(if|ifdef|ifndef|elif)\s+//)
275
- {
276
- foreach my $word (split (/\W+/))
277
- {
278
- used ('identifier', $word)
279
- unless $word eq 'defined' || $word !~ /^[a-zA-Z_]/;
280
- }
281
- }
282
- # Ignore other preprocessor directives.
283
- next;
284
- }
285
-
286
- # Remove string and character constants.
287
- s,\"[^\"]*\",,g;
288
- s,\'[^\']*\',,g;
289
-
290
- # Tokens in the code.
291
- # Maybe we should ignore function definitions (in column 0)?
292
- while (s/\b([a-zA-Z_]\w*)\s*\(/ /)
293
- {
294
- used ('function', $1);
295
- }
296
- while (s/\b([a-zA-Z_]\w*)\b/ /)
297
- {
298
- used ('identifier', $1);
299
- }
300
- }
301
-
302
- $file->close;
303
- }
304
-
305
-
306
- # scan_makefile($MAKEFILE-NAME)
307
- # -----------------------------
308
- sub scan_makefile ($)
309
- {
310
- my ($file_name) = @_;
311
- push @makefiles, $File::Find::name;
312
-
313
- my $file = new Autom4te::XFile "< " . open_quote ($file_name);
314
-
315
- while ($_ = $file->getline)
316
- {
317
- # Strip out comments.
318
- s/#.*//;
319
-
320
- # Variable assignments.
321
- while (s/\b([a-zA-Z_]\w*)\s*=/ /)
322
- {
323
- used ('makevar', $1);
324
- }
325
- # Be sure to catch a whole word. For instance `lex$U.$(OBJEXT)'
326
- # is a single token. Otherwise we might believe `lex' is needed.
327
- foreach my $word (split (/\s+/))
328
- {
329
- # Libraries.
330
- if ($word =~ /^-l([a-zA-Z_]\w*)$/)
331
- {
332
- used ('library', $1);
333
- }
334
- # Tokens in the code.
335
- # We allow some additional characters, e.g., `+', since
336
- # autoscan/programs includes `c++'.
337
- if ($word =~ /^[a-zA-Z_][\w+]*$/)
338
- {
339
- used ('program', $word);
340
- }
341
- }
342
- }
343
-
344
- $file->close;
345
- }
346
-
347
-
348
- # scan_sh_file($SHELL-SCRIPT-NAME)
349
- # --------------------------------
350
- sub scan_sh_file ($)
351
- {
352
- my ($file_name) = @_;
353
- push @shfiles, $File::Find::name;
354
-
355
- my $file = new Autom4te::XFile "< " . open_quote ($file_name);
356
-
357
- while ($_ = $file->getline)
358
- {
359
- # Strip out comments and variable references.
360
- s/#.*//;
361
- s/\${[^\}]*}//g;
362
- s/@[^@]*@//g;
363
-
364
- # Tokens in the code.
365
- while (s/\b([a-zA-Z_]\w*)\b/ /)
366
- {
367
- used ('program', $1);
368
- }
369
- }
370
-
371
- $file->close;
372
- }
373
-
374
-
375
- # scan_file ()
376
- # ------------
377
- # Called by &find on each file. $_ contains the current file name with
378
- # the current directory of the walk through.
379
- sub scan_file ()
380
- {
381
- # Wanted only if there is no corresponding FILE.in.
382
- return
383
- if -f "$_.in";
384
-
385
- # Save $_ as Find::File requires it to be preserved.
386
- local $_ = $_;
387
-
388
- # Strip a useless leading `./'.
389
- $File::Find::name =~ s,^\./,,;
390
-
391
- if ($_ ne '.' and -d $_ and
392
- -f "$_/configure.in" ||
393
- -f "$_/configure.ac" ||
394
- -f "$_/configure.gnu" ||
395
- -f "$_/configure")
396
- {
397
- $File::Find::prune = 1;
398
- push @subdirs, $File::Find::name;
399
- }
400
- if (/\.[chlym](\.in)?$/)
401
- {
402
- used 'program', 'cc', $File::Find::name;
403
- scan_c_file ($_);
404
- }
405
- elsif (/\.(cc|cpp|cxx|CC|C|hh|hpp|hxx|HH|H|yy|ypp|ll|lpp)(\.in)?$/)
406
- {
407
- used 'program', 'c++', $File::Find::name;
408
- scan_c_file ($_);
409
- }
410
- elsif ((/^((?:GNUm|M|m)akefile)(\.in)?$/ && ! -f "$1.am")
411
- || /^(?:GNUm|M|m)akefile(\.am)?$/)
412
- {
413
- scan_makefile ($_);
414
- }
415
- elsif (/\.sh(\.in)?$/)
416
- {
417
- scan_sh_file ($_);
418
- }
419
- }
420
-
421
-
422
- # scan_files ()
423
- # -------------
424
- # Read through the files and collect lists of tokens in them
425
- # that might create nonportabilities.
426
- sub scan_files ()
427
- {
428
- find (\&scan_file, '.');
429
-
430
- if ($verbose)
431
- {
432
- print "cfiles: @cfiles\n";
433
- print "makefiles: @makefiles\n";
434
- print "shfiles: @shfiles\n";
435
-
436
- foreach my $kind (@kinds)
437
- {
438
- print "\n$kind:\n";
439
- foreach my $word (sort keys %{$used{$kind}})
440
- {
441
- print "$word: @{$used{$kind}{$word}}\n";
442
- }
443
- }
444
- }
445
- }
446
-
447
-
448
- ## ----------------------- ##
449
- ## Output configure.scan. ##
450
- ## ----------------------- ##
451
-
452
-
453
- # output_kind ($FILE, $KIND)
454
- # --------------------------
455
- sub output_kind ($$)
456
- {
457
- my ($file, $kind) = @_;
458
- # Lists of words to be checked with the generic macro.
459
- my @have;
460
-
461
- print $file "\n# $kind_comment{$kind}\n"
462
- if exists $kind_comment{$kind};
463
- foreach my $word (sort keys %{$used{$kind}})
464
- {
465
- # Output the needed macro invocations in $configure_scan if not
466
- # already printed, and remember these macros are needed.
467
- foreach my $macro (@{$macro{$kind}{$word}})
468
- {
469
- if ($macro =~ /^warn:\s+(.*)/)
470
- {
471
- my $message = $1;
472
- foreach my $location (@{$used{$kind}{$word}})
473
- {
474
- warn "$location: warning: $message\n";
475
- }
476
- }
477
- elsif (exists $generic_macro{$kind}
478
- && $macro eq $generic_macro{$kind})
479
- {
480
- push (@have, $word);
481
- push (@{$needed_macros{"$generic_macro{$kind}([$word])"}},
482
- @{$used{$kind}{$word}});
483
- }
484
- else
485
- {
486
- if (! $printed{$macro})
487
- {
488
- print $file "$macro\n";
489
- $printed{$macro} = 1;
490
- }
491
- push (@{$needed_macros{$macro}},
492
- @{$used{$kind}{$word}});
493
- }
494
- }
495
- }
496
- print $file "$generic_macro{$kind}([" . join(' ', sort(@have)) . "])\n"
497
- if @have;
498
- }
499
-
500
-
501
- # output_libraries ($FILE)
502
- # ------------------------
503
- sub output_libraries ($)
504
- {
505
- my ($file) = @_;
506
-
507
- print $file "\n# Checks for libraries.\n";
508
- foreach my $word (sort keys %{$used{'library'}})
509
- {
510
- print $file "# FIXME: Replace `main' with a function in `-l$word':\n";
511
- print $file "AC_CHECK_LIB([$word], [main])\n";
512
- }
513
- }
514
-
515
-
516
- # output ($CONFIGURE_SCAN)
517
- # ------------------------
518
- # Print a proto configure.ac.
519
- sub output ($)
520
- {
521
- my $configure_scan = shift;
522
- my %unique_makefiles;
523
-
524
- my $file = new Autom4te::XFile "> " . open_quote ($configure_scan);
525
-
526
- print $file
527
- ("# -*- Autoconf -*-\n" .
528
- "# Process this file with autoconf to produce a configure script.\n" .
529
- "\n" .
530
- "AC_PREREQ([2.69])\n" .
531
- "AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])\n");
532
- if (defined $cfiles[0])
533
- {
534
- print $file "AC_CONFIG_SRCDIR([$cfiles[0]])\n";
535
- print $file "AC_CONFIG_HEADERS([config.h])\n";
536
- }
537
-
538
- output_kind ($file, 'program');
539
- output_kind ($file, 'makevar');
540
- output_libraries ($file);
541
- output_kind ($file, 'header');
542
- output_kind ($file, 'identifier');
543
- output_kind ($file, 'function');
544
-
545
- print $file "\n";
546
- if (@makefiles)
547
- {
548
- # Change DIR/Makefile.in to DIR/Makefile.
549
- foreach my $m (@makefiles)
550
- {
551
- $m =~ s/\.(?:in|am)$//;
552
- $unique_makefiles{$m}++;
553
- }
554
- print $file ("AC_CONFIG_FILES([",
555
- join ("\n ",
556
- sort keys %unique_makefiles), "])\n");
557
- }
558
- if (@subdirs)
559
- {
560
- print $file ("AC_CONFIG_SUBDIRS([",
561
- join ("\n ",
562
- sort @subdirs), "])\n");
563
- }
564
- print $file "AC_OUTPUT\n";
565
-
566
- $file->close;
567
- }
568
-
569
-
570
-
571
- ## --------------------------------------- ##
572
- ## Checking the accuracy of configure.ac. ##
573
- ## --------------------------------------- ##
574
-
575
-
576
- # &check_configure_ac ($CONFIGURE_AC)
577
- # -----------------------------------
578
- # Use autoconf to check if all the suggested macros are included
579
- # in CONFIGURE_AC.
580
- sub check_configure_ac ($)
581
- {
582
- my ($configure_ac) = @_;
583
-
584
- # Find what needed macros are invoked in CONFIGURE_AC.
585
- # I'd be very happy if someone could explain to me why sort (uniq ...)
586
- # doesn't work properly: I need `uniq (sort ...)'. --akim
587
- my $trace_option =
588
- join (' --trace=', '',
589
- uniq (sort (map { s/\(.*//; $_ } keys %needed_macros)));
590
-
591
- verb "running: $autoconf $trace_option $configure_ac";
592
- my $traces =
593
- new Autom4te::XFile "$autoconf $trace_option $configure_ac |";
594
-
595
- while ($_ = $traces->getline)
596
- {
597
- chomp;
598
- my ($file, $line, $macro, @args) = split (/:/, $_);
599
- if ($macro =~ /^AC_CHECK_(HEADER|FUNC|TYPE|MEMBER)S$/)
600
- {
601
- # To be rigorous, we should distinguish between space and comma
602
- # separated macros. But there is no point.
603
- foreach my $word (split (/\s|,/, $args[0]))
604
- {
605
- # AC_CHECK_MEMBERS wants `struct' or `union'.
606
- if ($macro eq "AC_CHECK_MEMBERS"
607
- && $word =~ /^stat.st_/)
608
- {
609
- $word = "struct " . $word;
610
- }
611
- delete $needed_macros{"$macro([$word])"};
612
- }
613
- }
614
- else
615
- {
616
- delete $needed_macros{$macro};
617
- }
618
- }
619
-
620
- $traces->close;
621
-
622
- # Report the missing macros.
623
- foreach my $macro (sort keys %needed_macros)
624
- {
625
- warn ("$configure_ac: warning: missing $macro wanted by: "
626
- . (${$needed_macros{$macro}}[0])
627
- . "\n");
628
- print $log "$me: warning: missing $macro wanted by: \n";
629
- foreach my $need (@{$needed_macros{$macro}})
630
- {
631
- print $log "\t$need\n";
632
- }
633
- }
634
- }
635
-
636
-
637
- ## -------------- ##
638
- ## Main program. ##
639
- ## -------------- ##
640
-
641
- parse_args;
642
- $log = new Autom4te::XFile "> " . open_quote ("$me.log");
643
-
644
- $autoconf .= " --debug" if $debug;
645
- $autoconf .= " --verbose" if $verbose;
646
- $autoconf .= join (' --include=', '', map { shell_quote ($_) } @include);
647
- $autoconf .= join (' --prepend-include=', '', map { shell_quote ($_) } @prepend_include);
648
-
649
- my $configure_ac = find_configure_ac;
650
- init_tables;
651
- scan_files;
652
- output ('configure.scan');
653
- if (-f $configure_ac)
654
- {
655
- check_configure_ac ($configure_ac);
656
- }
657
- # This close is really needed. For some reason, probably best named
658
- # a bug, it seems that the dtor of $LOG is not called automatically
659
- # at END. It results in a truncated file.
660
- $log->close;
661
- exit 0;
662
-
663
- ### Setup "GNU" style for perl-mode and cperl-mode.
664
- ## Local Variables:
665
- ## perl-indent-level: 2
666
- ## perl-continued-statement-offset: 2
667
- ## perl-continued-brace-offset: 0
668
- ## perl-brace-offset: 0
669
- ## perl-brace-imaginary-offset: 0
670
- ## perl-label-offset: -2
671
- ## cperl-indent-level: 2
672
- ## cperl-brace-offset: 0
673
- ## cperl-continued-brace-offset: 0
674
- ## cperl-label-offset: -2
675
- ## cperl-extra-newline-before-brace: t
676
- ## cperl-merge-trailing-else: nil
677
- ## cperl-continued-statement-offset: 2
678
- ## End: