Allow reconfiguration. This can be useful if some source update

requires that you configure again, but you don't want to reenter all
those configuration arguments again.
This commit is contained in:
Richard Levitte 2000-08-17 10:23:45 +00:00
parent fa1194d30a
commit c59cb511f3
3 changed files with 132 additions and 83 deletions

212
Configure
View File

@ -429,104 +429,149 @@ $perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
&usage if ($#ARGV < 0); &usage if ($#ARGV < 0);
my $flags=""; my $flags;
my $depflags=""; my $depflags;
my $openssl_algorithm_defines=""; my $openssl_algorithm_defines;
my $openssl_thread_defines=""; my $openssl_thread_defines;
my $openssl_other_defines=""; my $openssl_other_defines;
my $libs=""; my $libs;
my $target=""; my $target;
my $options=""; my $options;
my $symlink=1; my $symlink;
foreach (@ARGV)
my @argvcopy=@ARGV;
my $argvstring="";
my $argv_unprocessed=1;
while($argv_unprocessed)
{ {
s /^-no-/no-/; # some people just can't read the instructions $flags="";
if (/^no-asm$/) $depflags="";
{ $openssl_algorithm_defines="";
$no_asm=1; $openssl_thread_defines="";
$flags .= "-DNO_ASM "; $openssl_other_defines="";
$openssl_other_defines .= "#define NO_ASM\n"; $libs="";
} $target="";
elsif (/^no-dso$/) $options="";
{ $no_dso=1; } $symlink=1;
elsif (/^no-threads$/)
{ $no_threads=1; } $argv_unprocessed=0;
elsif (/^threads$/) $argvstring=join(' ',@argvcopy);
{ $threads=1; }
elsif (/^no-shared$/) PROCESS_ARGS:
{ $no_shared=1; } foreach (@argvcopy)
elsif (/^shared$/)
{ $no_shared=0; }
elsif (/^no-symlinks$/)
{ $symlink=0; }
elsif (/^no-(.+)$/)
{ {
my $algo=$1; s /^-no-/no-/; # some people just can't read the instructions
push @skip,$algo; if (/^no-asm$/)
$algo =~ tr/[a-z]/[A-Z]/; {
$flags .= "-DNO_$algo "; $no_asm=1;
$depflags .= "-DNO_$algo "; $flags .= "-DNO_ASM ";
$openssl_algorithm_defines .= "#define NO_$algo\n"; $openssl_other_defines .= "#define NO_ASM\n";
if ($algo eq "DES")
{
push @skip, "mdc2";
$options .= " no-mdc2";
$flags .= "-DNO_MDC2 ";
$depflags .= "-DNO_MDC2 ";
$openssl_algorithm_defines .= "#define NO_MDC2\n";
} }
} elsif (/^no-dso$/)
elsif (/^386$/) { $no_dso=1; }
{ $processor=386; } elsif (/^no-threads$/)
elsif (/^rsaref$/) { $no_threads=1; }
{ elsif (/^threads$/)
$libs.= "-lRSAglue -lrsaref "; { $threads=1; }
$flags.= "-DRSAref "; elsif (/^no-shared$/)
$openssl_other_defines .= "#define RSAref\n"; { $no_shared=1; }
} elsif (/^shared$/)
elsif (/^[-+]/) { $no_shared=0; }
{ elsif (/^no-symlinks$/)
if (/^-[lL](.*)$/) { $symlink=0; }
elsif (/^no-(.+)$/)
{ {
$libs.=$_." "; my $algo=$1;
push @skip,$algo;
$algo =~ tr/[a-z]/[A-Z]/;
$flags .= "-DNO_$algo ";
$depflags .= "-DNO_$algo ";
$openssl_algorithm_defines .= "#define NO_$algo\n";
if ($algo eq "DES")
{
push @skip, "mdc2";
$options .= " no-mdc2";
$flags .= "-DNO_MDC2 ";
$depflags .= "-DNO_MDC2 ";
$openssl_algorithm_defines .= "#define NO_MDC2\n";
}
} }
elsif (/^-[^-]/ or /^\+/) elsif (/^reconfigure/ || /^reconf/)
{ {
$flags.=$_." "; if (open(IN,"<$Makefile"))
{
while (<IN>)
{
chop;
if (/^CONFIGURE_ARGS=(.*)/)
{
$argvstring=$1;
@argvcopy=split(' ',$argvstring);
die "Incorrect data to reconfigure, please do a normal configuration\n"
if (grep(/^reconf/,@argvcopy));
print "Reconfiguring with: $argvstring\n";
$argv_unprocessed=1;
close(IN);
last PROCESS_ARGS;
}
}
close(IN);
}
die "Insufficient data to reconfigure, please do a normal configuration\n";
} }
elsif (/^--prefix=(.*)$/) elsif (/^386$/)
{ $processor=386; }
elsif (/^rsaref$/)
{ {
$prefix=$1; $libs.= "-lRSAglue -lrsaref ";
$flags.= "-DRSAref ";
$openssl_other_defines .= "#define RSAref\n";
} }
elsif (/^--openssldir=(.*)$/) elsif (/^[-+]/)
{ {
$openssldir=$1; if (/^-[lL](.*)$/)
{
$libs.=$_." ";
}
elsif (/^-[^-]/ or /^\+/)
{
$flags.=$_." ";
}
elsif (/^--prefix=(.*)$/)
{
$prefix=$1;
}
elsif (/^--openssldir=(.*)$/)
{
$openssldir=$1;
}
elsif (/^--install.prefix=(.*)$/)
{
$install_prefix=$1;
}
else
{
print STDERR $usage;
exit(1);
}
} }
elsif (/^--install.prefix=(.*)$/) elsif ($_ =~ /^([^:]+):(.+)$/)
{ {
$install_prefix=$1; eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
$target=$1;
} }
else else
{ {
print STDERR $usage; die "target already defined - $target\n" if ($target ne "");
exit(1); $target=$_;
}
unless ($_ eq $target) {
if ($options eq "") {
$options = $_;
} else {
$options .= " ".$_;
} }
}
elsif ($_ =~ /^([^:]+):(.+)$/)
{
eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
$target=$1;
}
else
{
die "target already defined - $target\n" if ($target ne "");
$target=$_;
}
unless ($_ eq $target) {
if ($options eq "") {
$options = $_;
} else {
$options .= " ".$_;
} }
} }
} }
@ -546,6 +591,8 @@ if ($target eq "LIST") {
exit 0; exit 0;
} }
print "Configuring for $target\n";
&usage if (!defined($table{$target})); &usage if (!defined($table{$target}));
my $IsWindows=scalar grep /^$target$/,@WinTargets; my $IsWindows=scalar grep /^$target$/,@WinTargets;
@ -736,6 +783,7 @@ while (<IN>)
s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
s/^PLATFORM=.*$/PLATFORM=$target/; s/^PLATFORM=.*$/PLATFORM=$target/;
s/^OPTIONS=.*$/OPTIONS=$options/; s/^OPTIONS=.*$/OPTIONS=$options/;
s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
s/^CC=.*$/CC= $cc/; s/^CC=.*$/CC= $cc/;
s/^CFLAG=.*$/CFLAG= $cflags/; s/^CFLAG=.*$/CFLAG= $cflags/;
s/^DEPFLAG=.*$/DEPFLAG= $depflags/; s/^DEPFLAG=.*$/DEPFLAG= $depflags/;

View File

@ -11,6 +11,7 @@ SHLIB_MAJOR=
SHLIB_MINOR= SHLIB_MINOR=
PLATFORM=dist PLATFORM=dist
OPTIONS= OPTIONS=
CONFIGURE_ARGS=
SHLIB_TARGET= SHLIB_TARGET=
# INSTALL_PREFIX is for package builders so that they can configure # INSTALL_PREFIX is for package builders so that they can configure

2
config
View File

@ -559,7 +559,7 @@ OUT="$PREFIX$OUT"
$PERL ./Configure LIST | grep "$OUT" > /dev/null $PERL ./Configure LIST | grep "$OUT" > /dev/null
if [ $? = "0" ]; then if [ $? = "0" ]; then
echo Configuring for $OUT #echo Configuring for $OUT
if [ "$TEST" = "true" ]; then if [ "$TEST" = "true" ]; then
echo $PERL ./Configure $OUT $options echo $PERL ./Configure $OUT $options