123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- #! /usr/bin/env perl
- # -*- perl -*-
- eval 'case $# in 0) exec /usr/bin/env perl -S "$0";; *) exec /usr/bin/env perl -S "$0" "$@";; esac'
- if 0;
- # gnu-configize - install the GNU config.guess / config.sub in a directory tree
- # Based on autoreconf:
- # Copyright (C) 1994, 1999, 2000, 2001, 2002, 2003
- # 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.
- BEGIN
- {
- my $datadir = $ENV{'autom4te_perllibdir'} || '/opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09/linux-devkit/sysroots/x86_64-arago-linux/usr/share/autoconf';
- # '/home/kergoth/code/build-arm/tmp/staging/share/autoconf';
- unshift @INC, $datadir;
- # Override SHELL. On DJGPP SHELL may not be set to a shell
- # that can handle redirection and quote arguments correctly,
- # e.g.: COMMAND.COM. For DJGPP always use the shell that configure
- # has detected.
- $ENV{'SHELL'} = '/bin/sh' if ($^O eq 'dos');
- }
- use Autom4te::ChannelDefs;
- use Autom4te::Channels;
- use Autom4te::Configure_ac;
- use Autom4te::FileUtils;
- use Autom4te::General;
- use Autom4te::XFile;
- # Do not use Cwd::chdir, since it might hang.
- use Cwd 'cwd';
- use strict;
- ## ----------- ##
- ## Variables. ##
- ## ----------- ##
- # $HELP
- # -----
- $help = "Usage: $0 [OPTION] ... [CONFIGURE-AC or DIRECTORY] ...
- Install the GNU config.sub and config.guess scripts in the
- DIRECTORIES or the directory trees driven by CONFIGURE-AC
- (defaulting to `.').
- Operation modes:
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -v, --verbose verbosely report processing
- -f, --force consider all files obsolete
- -s, --symlink install symbolic links instead of copies
- -W, --warnings=CATEGORY report the warnings falling in CATEGORY [syntax]
- " . Autom4te::ChannelDefs::usage . "
- The environment variable \`WARNINGS\' is honored. Some subtools might
- support other warning types, using \`all' is encouraged.
- ";
- # $VERSION
- # --------
- $version = "gnu-configize 1.0
- Copyright (C) 2004 Chris Larson
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- ";
- my $configdir = '/opt/ti-processor-sdk-linux-am335x-evm-04.02.00.09/linux-devkit/sysroots/x86_64-arago-linux/usr/share/gnu-config';
- #'/home/kergoth/code/build-arm/tmp/staging/i686-linux/share/gnu-config';
- my $autoconf = $ENV{'AUTOCONF'} || 'autoconf';
- # use symlinks instead.
- my $symlink = 0;
- my $configure_ac;
- my $rm = "rm -f";
- my $ln_s = "ln -sf";
- my $cp = "cp -f";
- my $mkdir = "mkdir";
- my $chmod = "chmod";
- ## ---------- ##
- ## Routines. ##
- ## ---------- ##
- # parse_args ()
- # -------------
- # Process any command line arguments.
- sub parse_args ()
- {
- my $srcdir;
- getopt ('s|symlink' => \$symlink);
- # Even if the user specified a configure.ac, trim to get the
- # directory, and look for configure.ac again. Because (i) the code
- # is simpler, and (ii) we are still able to diagnose simultaneous
- # presence of configure.ac and configure.in.
- @ARGV = map { /configure\.(ac|in)$/ ? dirname ($_) : $_ } @ARGV;
- push @ARGV, '.' unless @ARGV;
- }
- # &gnu_configize_current_directory
- # -----------------------------
- sub gnu_configize_current_directory ()
- {
- my $configure_ac = require_configure_ac;
- # ---------------------- #
- # Is it using Autoconf? #
- # ---------------------- #
- my $uses_autoconf;
- my $uses_gettext;
- my $configure_ac_file = new Autom4te::XFile $configure_ac;
- while ($_ = $configure_ac_file->getline)
- {
- s/#.*//;
- s/dnl.*//;
- $uses_autoconf = 1 if /AC_INIT/;
- }
- if (!$uses_autoconf)
- {
- verb "$configure_ac: not using Autoconf";
- return;
- }
- my $aux_dir;
- my @subdir;
- my $cmd;
- my $dest;
- verb "$configure_ac: tracing";
- my $traces = new Autom4te::XFile
- ("$autoconf"
- . join (' --trace=', '',
- # If you change this list, update the
- # `Autoreconf-preselections' section of autom4te.in.
- 'AC_CONFIG_AUX_DIR:AC_CONFIG_AUX_DIR:\$1',
- 'AC_CONFIG_SUBDIRS:AC_CONFIG_SUBDIRS:\$1',
- 'AC_INIT',
- )
- . ' |');
- while ($_ = $traces->getline)
- {
- $aux_dir = $1 if /AC_CONFIG_AUX_DIR:(.*)/;
- $uses_autoconf = 1 if /AC_INIT/;
- push @subdir, split (' ', $1) if /AC_CONFIG_SUBDIRS:(.*)/;
- }
- # The subdirs are *optional*, they may not exist.
- foreach (@subdir)
- {
- if (-d)
- {
- verb "$configure_ac: subdirectory $_ to gnu-configize";
- gnu_configize ($_);
- }
- else
- {
- verb "$configure_ac: subdirectory $_ not present";
- }
- }
- $dest = ".";
- if (defined $aux_dir)
- {
- $dest = $aux_dir;
- if (! -d $aux_dir)
- {
- verb "$configure_ac: creating directory $aux_dir";
- mkdir $aux_dir
- or error "cannot create $aux_dir: $!";
- }
- }
- if (!$symlink)
- {
- $cmd = $cp;
- }
- else
- {
- $cmd = $ln_s;
- }
- xsystem ("$cmd $configdir/config.guess $dest/");
- xsystem ("$chmod u+x $dest/config.guess");
- xsystem ("$cmd $configdir/config.sub $dest/");
- xsystem ("$chmod u+x $dest/config.sub");
- }
- # &gnu_configize ($DIRECTORY)
- # ------------------------
- # Reconf the $DIRECTORY.
- sub gnu_configize ($)
- {
- my ($directory) = @_;
- my $cwd = cwd;
- # The format for this message is not free: taken from Emacs, itself
- # using GNU Make's format.
- verb "Entering directory `$directory'";
- chdir $directory
- or error "cannot chdir to $directory: $!";
- gnu_configize_current_directory;
- # The format is not free: taken from Emacs, itself using GNU Make's
- # format.
- verb "Leaving directory `$directory'";
- chdir $cwd
- or error "cannot chdir to $cwd: $!";
- }
- ## ------ ##
- ## Main. ##
- ## ------ ##
- parse_args;
- # Autoreconf all the given configure.ac. A while loop, not a for,
- # since the list can change at runtime because of AC_CONFIG_SUBDIRS.
- for my $directory (@ARGV)
- {
- gnu_configize ($directory);
- }
- ### Setup "GNU" style for perl-mode and cperl-mode.
- ## Local Variables:
- ## perl-indent-level: 2
- ## perl-continued-statement-offset: 2
- ## perl-continued-brace-offset: 0
- ## perl-brace-offset: 0
- ## perl-brace-imaginary-offset: 0
- ## perl-label-offset: -2
- ## cperl-indent-level: 2
- ## cperl-brace-offset: 0
- ## cperl-continued-brace-offset: 0
- ## cperl-label-offset: -2
- ## cperl-extra-newline-before-brace: t
- ## cperl-merge-trailing-else: nil
- ## cperl-continued-statement-offset: 2
- ## End:
|