[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
31-autoscan-formatting++.patch
From: |
Akim Demaille |
Subject: |
31-autoscan-formatting++.patch |
Date: |
Sun, 28 Jan 2001 17:13:10 +0100 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* autoscan.pl: `Formatting++' changes: prototypes all the
functions, no longer use `&' to call functions as it disables
prototype checking, topological sort so that functions are defined
before being used, and put an Autoconf like nice comment to
describe the functions.
(output): Accept an CONFIGURE_SCAN parameters, and open CONF.
Index: autoscan.pl
--- autoscan.pl Fri, 26 Jan 2001 20:53:23 +0100 akim (ace/13_autoscan.p 1.31
664)
+++ autoscan.pl Fri, 26 Jan 2001 21:20:17 +0100 akim (ace/13_autoscan.p 1.31
664)
@@ -1,6 +1,6 @@
#! @PERL@ -w
# autoscan - Create configure.scan (a preliminary configure.ac) for a package.
-# Copyright 1994, 1999, 2000 Free Software Foundation, Inc.
+# Copyright 1994, 1999, 2000, 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,9 +30,6 @@
%c_keywords %programs %headers %identifiers %makevars
%libraries %functions %printed);
-# Find the lib files and autoconf.
-&find_autoconf;
-
($me = $0) =~ s,.*/,,;
$verbose = 0;
@@ -56,28 +53,6 @@
-&parse_args;
-&init_tables;
-&find('.');
-&scan_files;
-&output;
-
-if (-f 'configure.ac')
- {
- if (-f 'configure.in')
- {
- print STDERR "warning: `configure.ac' and `configure.in' both
present.\n";
- print STDERR "warning: proceeding with `configure.ac'.\n";
- }
- &check_configure_ac ('configure.in');
- }
-elsif (-f 'configure.in')
- {
- &check_configure_ac ('configure.in');
- }
-
-exit 0;
-
# find_autoconf
# -------------
# Find the lib files and autoconf.
@@ -103,8 +78,11 @@ sub find_autoconf
}
}
+
+# print_usage ()
+# --------------
# Display usage (--help).
-sub print_usage
+sub print_usage ()
{
print "Usage: $0 [OPTION] ... [SRCDIR]
@@ -125,20 +103,26 @@ sub print_usage
exit 0;
}
+
+# print_version ()
+# ----------------
# Display version (--version).
sub print_version
{
print "autoscan (@PACKAGE_NAME@) @VERSION@
Written by David J. MacKenzie.
-Copyright 1994, 1999, 2000 Free Software Foundation, Inc.
+Copyright 1994, 1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
exit 0;
}
+
+# parse_args ()
+# -------------
# Process any command line arguments.
-sub parse_args
+sub parse_args ()
{
my $srcdir;
Getopt::Long::config ("bundling");
@@ -157,13 +141,13 @@ sub parse_args
print "srcdir=$srcdir\n" if $verbose;
chdir $srcdir || die "$me: cannot cd to $srcdir: $!\n";
-
- open (CONF, ">configure.scan") ||
- die "$me: cannot create configure.scan: $!\n";
}
+
+# init_tables ()
+# --------------
# Put values in the tables of what to do with each token.
-sub init_tables
+sub init_tables ()
{
my ($kind, $word, $macro);
@@ -206,38 +190,44 @@ sub init_tables
}
}
+
+# wanted ()
+# ---------
# Collect names of various kinds of files in the package.
# Called by &find on each file.
-sub wanted
+sub wanted ()
{
# Strip a useless leading `./'.
$name =~ s,^\./,,;
if (/^.*\.[chlymC]$/ || /^.*\.cc$/)
{
- push(@cfiles, $name);
+ push (@cfiles, $name);
}
elsif (/^[Mm]akefile$/ || /^GNUmakefile$/)
{
# Wanted only if there is no corresponding Makefile.in.
# Using Find, $_ contains the current filename with the current
# directory of the walk through.
- push(@makefiles, $name)
+ push (@makefiles, $name)
if ! -f "$_.in";
}
elsif (/^[Mm]akefile\.in$/)
{
- push(@makefiles, $name);
+ push (@makefiles, $name);
}
elsif (/^.*\.sh$/)
{
- push(@shfiles, $name);
+ push (@shfiles, $name);
}
}
+
+# scan_files ()
+# -------------
# Read through the files and collect lists of tokens in them
# that might create nonportabilities.
-sub scan_files
+sub scan_files ()
{
my $file;
if (defined $cfiles[0])
@@ -255,23 +245,24 @@ sub scan_files
foreach $file (@cfiles)
{
push (@{$programs{"cc"}}, $file);
- &scan_c_file($file);
+ scan_c_file ($file);
}
foreach $file (@makefiles)
{
- &scan_makefile($file);
+ scan_makefile ($file);
}
foreach $file (@shfiles)
{
- &scan_sh_file($file);
+ scan_sh_file ($file);
}
}
+
# scan_c_file(FILE)
# -----------------
-sub scan_c_file
+sub scan_c_file ($)
{
my ($file) = @_;
my ($in_comment) = 0; # Nonzero if in a multiline comment.
@@ -347,7 +338,10 @@ sub scan_c_file
}
}
-sub scan_makefile
+
+# scan_makefile(MAKEFILE)
+# -----------------------
+sub scan_makefile ($)
{
my ($file) = @_;
@@ -402,7 +396,10 @@ sub scan_makefile
}
}
-sub scan_sh_file
+
+# scan_sh_file(SHELL-SCRIPT)
+# --------------------------
+sub scan_sh_file ($)
{
my ($file) = @_;
@@ -434,44 +431,12 @@ sub scan_sh_file
}
}
-# Print a proto configure.ac.
-sub output
-{
- my %unique_makefiles;
-
- print CONF "# Process this file with autoconf to produce a configure
script.\n";
- print CONF "AC_INIT\n";
- if (defined $initfile)
- {
- print CONF "AC_CONFIG_SRCDIR([$initfile])\n";
- }
- if (defined $cfiles[0])
- {
- print CONF "AC_CONFIG_HEADER([config.h])\n";
- }
-
- &output_programs;
- &output_libraries;
- &output_headers;
- &output_identifiers;
- &output_functions;
-
- # Change DIR/Makefile.in to DIR/Makefile.
- foreach $_ (@makefiles)
- {
- s/\.in$//;
- $unique_makefiles{$_}++;
- }
- print CONF "\nAC_CONFIG_FILES([",
- join ("\n ", keys(%unique_makefiles)), "])\n";
- print CONF "AC_OUTPUT\n";
-
- close CONF ||
- die "$me: closing configure.scan: $!\n";
-}
-# Print Autoconf macro $1 if it's not undef and hasn't been printed already.
-sub print_unique
+# print_unique ($MACRO, @WHERE)
+# -----------------------------
+# $MACRO is wanted from $WHERE, hence (i) print $MACRO in configure.scan
+# if it exists and hasn't been printed already, (ii), remember it's needed.
+sub print_unique ($@)
{
my ($macro, @where) = @_;
@@ -484,22 +449,28 @@ sub print_unique
}
}
-sub output_programs
+
+# output_programs ()
+# ------------------
+sub output_programs ()
{
my $word;
print CONF "\n# Checks for programs.\n";
foreach $word (sort keys %programs)
{
- &print_unique($programs_macros{$word}, @{$programs{$word}});
+ print_unique ($programs_macros{$word}, @{$programs{$word}});
}
foreach $word (sort keys %makevars)
{
- &print_unique($makevars_macros{$word}, @{$makevars{$word}});
+ print_unique ($makevars_macros{$word}, @{$makevars{$word}});
}
}
-sub output_libraries
+
+# output_libraries ()
+# -------------------
+sub output_libraries ()
{
my ($word);
@@ -511,7 +482,10 @@ sub output_libraries
}
}
-sub output_headers
+
+# output_headers ()
+# -----------------
+sub output_headers ()
{
my $word;
my @have_headers;
@@ -529,7 +503,7 @@ sub output_headers
}
else
{
- &print_unique ($headers_macros{$word}, @{$headers{$word}});
+ print_unique ($headers_macros{$word}, @{$headers{$word}});
}
}
}
@@ -537,7 +511,10 @@ sub output_headers
if @have_headers;
}
-sub output_identifiers
+
+# output_identifiers ()
+# ---------------------
+sub output_identifiers ()
{
my $word;
my @have_types;
@@ -555,8 +532,8 @@ sub output_identifiers
}
else
{
- &print_unique ($identifiers_macros{$word},
- @{$identifiers{$word}});
+ print_unique ($identifiers_macros{$word},
+ @{$identifiers{$word}});
}
}
}
@@ -564,7 +541,10 @@ sub output_identifiers
if @have_types;
}
-sub output_functions
+
+# output_functions ()
+# -------------------
+sub output_functions ()
{
my $word;
my @have_funcs;
@@ -582,8 +562,8 @@ sub output_functions
}
else
{
- &print_unique ($functions_macros{$word},
- @{$functions{$word}});
+ print_unique ($functions_macros{$word},
+ @{$functions{$word}});
}
}
}
@@ -592,9 +572,54 @@ sub output_functions
}
+# output (CONFIGURE_SCAN)
+# -----------------------
+# Print a proto configure.ac.
+sub output ($)
+{
+ my $configure_scan = shift;
+ my %unique_makefiles;
+
+ open (CONF, ">$configure_scan") ||
+ die "$me: cannot create $configure_scan: $!\n";
+
+ print CONF "# Process this file with autoconf to produce a configure
script.\n";
+ print CONF "AC_INIT\n";
+ if (defined $initfile)
+ {
+ print CONF "AC_CONFIG_SRCDIR([$initfile])\n";
+ }
+ if (defined $cfiles[0])
+ {
+ print CONF "AC_CONFIG_HEADER([config.h])\n";
+ }
+
+ output_programs;
+ output_libraries;
+ output_headers;
+ output_identifiers;
+ output_functions;
+
+ # Change DIR/Makefile.in to DIR/Makefile.
+ foreach $_ (@makefiles)
+ {
+ s/\.in$//;
+ $unique_makefiles{$_}++;
+ }
+ print CONF "\nAC_CONFIG_FILES([",
+ join ("\n ", keys(%unique_makefiles)), "])\n";
+ print CONF "AC_OUTPUT\n";
+
+ close CONF ||
+ die "$me: closing configure.scan: $!\n";
+}
+
+
+# check_configure_ac (CONFIGURE_AC)
+# ---------------------------------
# Use autoconf to check if all the suggested macros are included
-# in `configure.ac'
-sub check_configure_ac
+# in CONFIGURE_AC.
+sub check_configure_ac ($)
{
my ($configure_ac) = $@;
my ($trace_option) = '';
@@ -643,3 +668,33 @@ sub check_configure_ac
print STDERR "warning: missing $macro wanted by:
@{$needed_macros{$macro}}\n";
}
}
+
+
+## -------------- ##
+## Main program. ##
+## -------------- ##
+
+# Find the lib files and autoconf.
+find_autoconf;
+
+parse_args;
+init_tables;
+find ('.');
+scan_files;
+output ('configure.scan');
+
+if (-f 'configure.ac')
+ {
+ if (-f 'configure.in')
+ {
+ print STDERR "warning: `configure.ac' and `configure.in' both
present.\n";
+ print STDERR "warning: proceeding with `configure.ac'.\n";
+ }
+ check_configure_ac ('configure.in');
+ }
+elsif (-f 'configure.in')
+ {
+ check_configure_ac ('configure.in');
+ }
+
+exit 0;
- 31-autoscan-formatting++.patch,
Akim Demaille <=