diff options
Diffstat (limited to 'autogen.sh')
-rwxr-xr-x | autogen.sh | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 000000000000..cc7210006971 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,110 @@ +: + eval 'exec perl -S $0 ${1+"$@"}' + if 0; + +use strict; + +sub clean() +{ + system ("rm -Rf autom4te.cache"); + system ("rm -f missing install-sh mkinstalldirs libtool ltmain.sh"); + print "cleaned the build tree\n"; +} + +# one argument per line +sub read_args($) +{ + my $file = shift; + my $fh; + my @lst; + open ($fh, $file) || die "can't open file: $file"; + while (<$fh>) { + chomp(); + # migrate from the old system + if ( substr($_, 0, 1) eq "'" ) { + print "Migrating options from the old autogen.lastrun format, using:\n"; + my @opts; + @opts = split(/'/); + foreach my $opt (@opts) { + if ( substr($opt, 0, 1) eq "-" ) { + push @lst, $opt; + print " $opt\n"; + } + } + } + else { + push @lst, $_; + } + } + close ($fh); +# print "read args from file '$file': @lst\n"; + return @lst; +} + +sub invalid_distro($$) +{ + my ($config, $distro) = @_; + print STDERR "Can't find distro option set: $config\nThis is not necessarily a problem.\n"; + print STDERR "Distros with distro option sets are:\n"; + my $dirh; + opendir ($dirh, "distro-configs"); + while (($_ = readdir ($dirh))) { + /(.*)\.conf$/ || next; + print STDERR "\t$1\n"; + } + closedir ($dirh); +} + +my @cmdline_args = (); +if (!@ARGV) { + my $lastrun = "autogen.lastrun"; + @cmdline_args = read_args ($lastrun) if (-f $lastrun); +} else { + @cmdline_args = @ARGV; +} + +my @args; +for my $arg (@cmdline_args) { + if ($arg eq '--clean') { + clean(); + } elsif ($arg =~ m/--with-distro=(.*)$/) { + my $config = "distro-configs/$1.conf"; + if (! -f $config) { + invalid_distro ($config, $1); + } else { + push @args, read_args ($config); + } + } else { + push @args, $arg; + } +} + +system ("touch ChangeLog"); + +my $system = `uname -s`; +chomp $system; + +my $aclocal_flags = $ENV{ACLOCAL_FLAGS}; + +$aclocal_flags = "-I ./m4/mac" if (($aclocal_flags eq "") && ($system eq 'Darwin')); + +$ENV{AUTOMAKE_EXTRA_FLAGS} = '--warnings=no-portability' if (!($system eq 'Darwin')); + +system ("aclocal $aclocal_flags") && die "Failed to run aclocal"; +system ("autoconf") && die "Failed to run autoconf"; + +if (defined $ENV{NOCONFIGURE}) { + print "Skipping configure process."; +} else { + if ($#cmdline_args > 0) { +# print "writing args to autogen.lastrun\n"; + my $fh; + open ($fh, ">autogen.lastrun") || die "can't open autogen.lastrun: $!"; + for my $arg (@cmdline_args) { + print $fh "$arg\n"; + } + close ($fh); + } + print "running ./configure with '" . join ("' '", @args), "'\n"; + system ("./configure", @args); +} |