]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* lib/Autom4te/General.pm: New.
authorAkim Demaille <akim@epita.fr>
Wed, 1 Aug 2001 15:01:16 +0000 (15:01 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 1 Aug 2001 15:01:16 +0000 (15:01 +0000)
* bin/autom4te.in (Autom4te::General): Use it.
($me, $tmp, $verbose, $debug, &mktmpdir, &verbose, &xsystem)
(&find_configure_ac, &find_slave): Remove.
* bin/autoscan.in: Likewise.
* bin/autoupdate.in: Likewise.

ChangeLog
bin/autom4te.in
bin/autoscan.in
bin/autoupdate.in
lib/Autom4te/General.pm [new file with mode: 0644]
lib/Autom4te/Makefile.am
lib/Autom4te/Makefile.in

index 46575b847bd5cbfe291c7f2d9ec53acb27d7975d..743a1b75392c436ea07fc786b4d5c3926c3162e1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2001-08-01  Akim Demaille  <akim@epita.fr>
+
+       * lib/Autom4te/General.pm: New.
+       * bin/autom4te.in (Autom4te::General): Use it.
+       ($me, $tmp, $verbose, $debug, &mktmpdir, &verbose, &xsystem)
+       (&find_configure_ac, &find_slave): Remove.
+       * bin/autoscan.in: Likewise.
+       * bin/autoupdate.in: Likewise.
+
 2001-08-01  Akim Demaille  <akim@epita.fr>
 
        * autoconf.in, autom4te.in, autoscan.in, ifnames.in,
index e891fa26681e9e770e4dfd63696a6774431147cf..660465e5e1cbe8cfbab3eb00c0c24af3920c252f 100644 (file)
@@ -43,6 +43,7 @@ BEGIN
 }
 
 use Data::Dumper;
+use Autom4te::General;
 use Autom4te::Struct;
 use Carp;
 use Getopt::Long;
@@ -225,14 +226,12 @@ sub load
 
 package Autom4te;
 
+use Autom4te::General;
 use Getopt::Long;
 use File::Basename;
 use IO::File;
 use strict;
 
-# Our tmp dir.
-my $tmp;
-
 # The macros we always trace.
 my @required_trace =
   (
@@ -251,8 +250,6 @@ my @required_trace =
 # user.
 my %trace;
 
-my $verbose = 0;
-my $debug = 0;
 my $output = '-';
 my @warning;
 
@@ -283,40 +280,6 @@ map { s/:.*//;s/\W// } @m4_builtins;
 ## ---------- ##
 
 
-# mktmpdir ($SIGNATURE)
-# ---------------------
-# Create a temporary directory which name is based on $SIGNATURE.
-sub mktmpdir ($)
-{
-  my ($signature) = @_;
-  my $TMPDIR = $ENV{'TMPDIR'} || '/tmp';
-
-  # If mktemp supports dirs, use it.
-  $tmp = `(umask 077 &&
-           mktemp -d -q "$TMPDIR/${signature}XXXXXX") 2>/dev/null`;
-  chomp $tmp;
-
-  if (!$tmp || ! -d $tmp)
-    {
-      $tmp = "$TMPDIR/$signature" . int (rand 10000) . ".$$";
-      mkdir $tmp, 0700
-       or die "$me: cannot create $tmp: $!\n";
-    }
-
-  print STDERR "$me:$$: working in $tmp\n"
-    if $debug;
-}
-
-
-# verbose
-# -------
-sub verbose (@)
-{
-  print STDERR "$me: ", @_, "\n"
-    if $verbose;
-}
-
-
 # END
 # ---
 # Exit nonzero whenever closing STDOUT fails.
@@ -350,23 +313,6 @@ sub END
 }
 
 
-# xsystem ($COMMAND)
-# ------------------
-sub xsystem ($)
-{
-  my ($command) = @_;
-
-  verbose "running: $command";
-
-  (system $command) == 0
-    or die ("$me: "
-           . (split (' ', $command))[0]
-           . " failed with exit status: "
-           . ($? >> 8)
-           . "\n");
-}
-
-
 # $FILENAME
 # find_file ($FILENAME)
 # ---------------------
index 38826d1c981ce946bf970590b32a4c448c65ae83..21290889975a9af7523ed6155502478cca821093 100644 (file)
 # Written by David MacKenzie <djm@gnu.ai.mit.edu>.
 
 use 5.005;
+
+BEGIN
+{
+  my $prefix = "@prefix@";
+  # FIXME: Import Struct into Autoconf.
+  my $perllibdir = $ENV{'autom4te_perllibdir'} || "@datadir@";
+  unshift @INC, "$perllibdir";
+}
+
 use File::Basename;
 use File::Find;
 use Getopt::Long;
 use IO::File;
+use Autom4te::General;
 use strict;
 
 use vars qw(@cfiles @makefiles @shfiles %c_keywords %printed);
 
-my $me = basename ($0);
-my $verbose = 0;
-
 # $USED{KIND}{ITEM} is set if ITEM is used in the program.
 # It is set to its list of locations.
 my %used = ();
@@ -67,7 +74,7 @@ my $log = new IO::File ">$me.log"
   or die "$me: cannot open $me.log: $!\n";
 
 # Autoconf and lib files.
-my $autoconf;
+my $autoconf = find_peer ('autoconf', "@bindir@", 'autoconf-name');
 my $datadir = $ENV{"AC_MACRODIR"} || "@datadir@";
 
 # Exit nonzero whenever closing STDOUT fails.
@@ -152,50 +159,6 @@ Try `$me --help' for more information.\n"
 }
 
 
-# find_autoconf
-# -------------
-# Find the lib files and autoconf.
-sub find_autoconf
-{
-  my $dir = dirname ($0);
-  # We test "$dir/autoconf" in case we are in the build tree, in which case
-  # the names are not transformed yet.
-  foreach my $file ($ENV{"AUTOCONF"} || '',
-                   "$dir/@autoconf-name@",
-                   "$dir/autoconf",
-                   "@bindir@/@autoconf-name@")
-    {
-      if (-x $file)
-       {
-         $autoconf = $file;
-         last;
-       }
-    }
-}
-
-
-# $CONFIGURE_AC
-# &find_configure_ac ()
-# ---------------------
-sub find_configure_ac ()
-{
-  if (-f 'configure.ac')
-    {
-      if (-f 'configure.in')
-       {
-         warn "warning: `configure.ac' and `configure.in' both present.\n";
-         warn "warning: proceeding with `configure.ac'.\n";
-       }
-      return 'configure.ac';
-    }
-  elsif (-f 'configure.in')
-    {
-      return 'configure.in';
-    }
-  return;
-}
-
-
 # init_tables ()
 # --------------
 # Put values in the tables of what to do with each token.
@@ -642,8 +605,6 @@ sub check_configure_ac ($)
 ## -------------- ##
 
 parse_args;
-# Find the lib files and autoconf.
-find_autoconf;
 my $configure_ac = find_configure_ac;
 init_tables;
 scan_files;
index d162a03c04ef74b4124ddab0310190001bda5abe..a5dbae70fb706d7426ca4d826cfed57c9f0ecfe0 100644 (file)
 # Rewritten by Akim Demaille <akim@freefriends.org>.
 
 use 5.005;
+
+BEGIN
+{
+  my $prefix = "@prefix@";
+  # FIXME: Import Struct into Autoconf.
+  my $perllibdir = $ENV{'autom4te_perllibdir'} || "@datadir@";
+  unshift @INC, "$perllibdir";
+}
+
 use Getopt::Long;
 use File::Basename;
+use Autom4te::General;
 use strict;
 
-(my $me = $0) =~ s,.*[\\/],,;
-
 # Lib files.
 my $autoconf_dir = $ENV{"AC_MACRODIR"} || "@datadir@";
-my $autoconf = '';
-my $debug = 0;
+my $autoconf = find_peer ('autoconf', "@bindir@", 'autoconf-name');
 my $localdir = '.';
 # m4.
 my $m4 = $ENV{"M4"} || "@M4@";
-my $verbose = 0;
 my $SIMPLE_BACKUP_SUFFIX = $ENV{'SIMPLE_BACKUP_SUFFIX'} || '~';
-my $tmp = '';
 
 
 ## ---------- ##
@@ -45,37 +50,6 @@ my $tmp = '';
 ## ---------- ##
 
 
-# &mktmpdir ()
-# ------------
-sub mktmpdir ()
-{
-  my $TMPDIR = $ENV{'TMPDIR'} || '/tmp';
-
-  # If mktemp supports dirs, use it to please Marc E.
-  $tmp = `(umask 077 && mktemp -d -q "$TMPDIR/auXXXXXX") 2>/dev/null`;
-  chomp $tmp;
-
-  if (!$tmp || !-d $tmp)
-    {
-      $tmp = "$TMPDIR/au" . int (rand 10000) . ".$$";
-      mkdir $tmp, 0700
-       or die "$me: cannot create $tmp: $!\n";
-    }
-
-  print STDERR "$me:$$: working in $tmp\n"
-    if $debug;
-}
-
-
-# verbose
-# -------
-sub verbose (@)
-{
-  print STDERR "$me: ", @_, "\n"
-    if $verbose;
-}
-
-
 # END
 # ---
 # Exit nonzero whenever closing STDOUT fails.
@@ -106,23 +80,6 @@ sub END
 }
 
 
-# xsystem ($COMMAND)
-# ------------------
-sub xsystem ($)
-{
-  my ($command) = @_;
-
-  verbose "running: $command";
-
-  (system $command) == 0
-    or die ("$me: "
-           . (split (' ', $command))[0]
-           . " failed with exit status: "
-           . ($? >> 8)
-           . "\n");
-}
-
-
 # print_usage ()
 # --------------
 # Display usage (--help).
@@ -172,28 +129,6 @@ END
 }
 
 
-# $CONFIGURE_AC
-# &find_configure_ac ()
-# ---------------------
-sub find_configure_ac ()
-{
-  if (-f 'configure.ac')
-    {
-      if (-f 'configure.in')
-       {
-         warn "warning: `configure.ac' and `configure.in' both present.\n";
-         warn "warning: proceeding with `configure.ac'.\n";
-       }
-      return 'configure.ac';
-    }
-  elsif (-f 'configure.in')
-    {
-      return 'configure.in';
-    }
-  return;
-}
-
-
 # parse_args ()
 # -------------
 # Process any command line arguments.
@@ -226,45 +161,11 @@ sub parse_args ()
 }
 
 
-# find_slaves
-# -----------
-# Find the lib files and autoconf.
-sub find_slaves ()
-{
-  # Some non-GNU m4's don't reject the --help option, so give them /dev/null.
-  die "Autoconf requires GNU m4 1.4 or later\n"
-    if system "$m4 --help </dev/null 2>&1 | fgrep reload-state >/dev/null";
-
-  # autoconf.
-  (my $dir = $0) =~ s,[^\\/]*$,,;
-
-  # We test "$dir/autoconf" in case we are in the build tree, in which case
-  # the names are not transformed yet.
-  foreach my $file ($ENV{"AUTOCONF"} || '',
-                   "$dir/@autoconf-name@",
-                   "$dir/autoconf",
-                   "@bindir@/@autoconf-name@")
-    {
-      if (-x $file)
-       {
-         $autoconf = $file;
-         last;
-       }
-    }
-
-  # This is needed because perl's '-x' isn't a smart as bash's; that
-  # is, it won't find autoconf.sh.
-  $autoconf = 'autoconf'
-    if !$autoconf;
-}
-
-
 ## -------------- ##
 ## Main program.  ##
 ## -------------- ##
-find_slaves;
 parse_args;
-mktmpdir;
+mktmpdir ('au');
 $autoconf .= " --autoconf-dir $autoconf_dir --localdir $localdir ";
 $autoconf .= "--debug " if $debug;
 $autoconf .= "--verbose " if $verbose;
@@ -278,11 +179,11 @@ map { s/:.*//;s/\W// } @m4_builtins;
 # unm4.m4 -- disable the m4 builtins.
 # savem4.m4 -- save the m4 builtins.
 open M4_M4, ">$tmp/m4.m4"
-  or die "$me: cannot open: $!\n";
+  or die "$me: cannot open $tmp/m4.m4: $!\n";
 open UNM4_M4, ">$tmp/unm4.m4"
-  or die "$me: cannot open: $!\n";
+  or die "$me: cannot open $tmp/unm4.m4: $!\n";
 open M4SAVE_M4, ">$tmp/m4save.m4"
-  or die "$me: cannot open: $!\n";
+  or die "$me: cannot open $tmp/unm4.m4: $!\n";
 foreach (@m4_builtins)
   {
     print M4_M4     "_au_define([$_], _au_defn([_au_$_]))\n";
diff --git a/lib/Autom4te/General.pm b/lib/Autom4te/General.pm
new file mode 100644 (file)
index 0000000..23c1ef8
--- /dev/null
@@ -0,0 +1,160 @@
+# autoconf -- create `configure' using m4 macros
+# Copyright 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
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+package Autom4te::General;
+
+use 5.005;
+use Exporter;
+use File::Basename;
+use Carp;
+use strict;
+use vars qw (@ISA @EXPORT $me);
+
+@ISA = qw (Exporter);
+@EXPORT = qw (&find_configure_ac &find_peer &mktmpdir &verbose &xsystem
+             $me $verbose $debug $tmp);
+
+# Variable we share with the main package.  Be sure to have a single
+# copy of them: using `my' together with multiple inclusion of this
+# package would introduce several copies.
+use vars qw ($me);
+$me = basename ($0);
+
+use vars qw ($verbose);
+$verbose = 0;
+
+use vars qw ($debug);
+$debug = 0;
+
+
+# $CONFIGURE_AC
+# &find_configure_ac ()
+# ---------------------
+sub find_configure_ac ()
+{
+  if (-f 'configure.ac')
+    {
+      if (-f 'configure.in')
+       {
+         warn "warning: `configure.ac' and `configure.in' both present.\n";
+         warn "warning: proceeding with `configure.ac'.\n";
+       }
+      return 'configure.ac';
+    }
+  elsif (-f 'configure.in')
+    {
+      return 'configure.in';
+    }
+  return;
+}
+
+
+# $PEER_PATH
+# find_peer($PEER, $BINDIR, $PEER-NAME)
+# -------------------------------------
+# Look for $PEER executables: autoconf, autoheader etc.
+# $BINDIR is @bindir@, and $PEER-NAME the transformed peer name
+# (when configured with --transform-program-names etc.).
+# We could have it AC_SUBST'ed in here, but it then means General.pm
+# is in builddir, hence more paths to adjust etc.  Yick.
+sub find_peer ($$$)
+{
+  my ($peer, $bindir, $peer_name) = @_;
+  my $res = undef;
+  my $PEER = uc $peer;
+  my $dir = dirname ($0);
+
+  # We test "$dir/autoconf" in case we are in the build tree, in which case
+  # the names are not transformed yet.
+  foreach my $file ($ENV{"$PEER"} || '',
+                   "$dir/$peer_name",
+                   "$dir/$peer",
+                   "$bindir/$peer_name")
+    {
+      # FIXME: This prevents passing options...  Maybe run --version?
+      if (-x $file)
+       {
+         $res = $file;
+         last;
+       }
+    }
+
+  # This is needed because perl's '-x' isn't a smart as bash's; that
+  # is, it won't find `autoconf.sh' etc.
+  $res ||= $peer;
+
+  return $res;
+}
+
+
+# Our tmp dir.
+use vars qw ($tmp);
+$tmp = undef;
+
+# mktmpdir ($SIGNATURE)
+# ---------------------
+# Create a temporary directory which name is based on $SIGNATURE.
+sub mktmpdir ($)
+{
+  my ($signature) = @_;
+  my $TMPDIR = $ENV{'TMPDIR'} || '/tmp';
+
+  # If mktemp supports dirs, use it.
+  $tmp = `(umask 077 &&
+           mktemp -d -q "$TMPDIR/${signature}XXXXXX") 2>/dev/null`;
+  chomp $tmp;
+
+  if (!$tmp || ! -d $tmp)
+    {
+      $tmp = "$TMPDIR/$signature" . int (rand 10000) . ".$$";
+      mkdir $tmp, 0700
+       or croak "$me: cannot create $tmp: $!\n";
+    }
+
+  print STDERR "$me:$$: working in $tmp\n"
+    if $debug;
+}
+
+
+# verbose
+# -------
+sub verbose (@)
+{
+  print STDERR "$me: ", @_, "\n"
+    if $verbose;
+}
+
+
+# xsystem ($COMMAND)
+# ------------------
+sub xsystem ($)
+{
+  my ($command) = @_;
+
+  verbose "running: $command";
+
+  (system $command) == 0
+    or croak ("$me: "
+             . (split (' ', $command))[0]
+             . " failed with exit status: "
+             . ($? >> 8)
+             . "\n");
+}
+
+
+1; # for require
index 0a77c247bfc046b9b16a196dff2c6c02b745a1b8..3fff4a7f0c79965b82d485c3f278960fbfe73e17 100644 (file)
@@ -1,5 +1,5 @@
 ## Process this file with automake to create Makefile.in
 
 perllibdir = $(pkgdatadir)/Autoconf
-perllib_DATA = Struct.pm
+perllib_DATA = General.pm Struct.pm
 EXTRA_DIST = $(perllib_DATA)
index 9756066675e4ad8d1c934baaa3ed3d70aad9af05..e3e74f64e98a6e7f9c3efeaeed2116e5f26980db 100644 (file)
@@ -67,7 +67,7 @@ PERL = @PERL@
 VERSION = @VERSION@
 
 perllibdir = $(pkgdatadir)/Autoconf
-perllib_DATA = Struct.pm
+perllib_DATA = General.pm Struct.pm
 EXTRA_DIST = $(perllib_DATA)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_CLEAN_FILES =