From 31ff97b28a7d9c64192b8987b204ad9820c7b2c7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ulf=20M=C3=B6ller?= Date: Thu, 13 May 1999 10:28:14 +0000 Subject: [PATCH 1/1] mk1mf.pl and mkdef.pl read OPTIONS from toplevel Makefile. Configure no longer changes files in place. --- Configure | 15 +++-- INSTALL.W32 | 3 +- Makefile.org | 1 + ms/mw.bat | 3 - tools/.cvsignore | 2 + tools/{c_rehash => c_rehash.in} | 0 util/mk1mf.pl | 116 ++++++++++++++++++-------------- util/mkdef.pl | 9 ++- 8 files changed, 87 insertions(+), 62 deletions(-) create mode 100644 tools/.cvsignore rename tools/{c_rehash => c_rehash.in} (100%) diff --git a/Configure b/Configure index 46c3e188cf..b7f910f284 100755 --- a/Configure +++ b/Configure @@ -298,6 +298,7 @@ my $flags=""; my $depflags=""; my $libs=""; my $target=""; +my $options=""; foreach (@ARGV) { if (/^no-asm$/) @@ -349,15 +350,17 @@ foreach (@ARGV) exit(1); } } - elsif ($_ =~ /^([^:]+):(.+)$/) { + elsif ($_ =~ /^([^:]+):(.+)$/) + { eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string $target=$1; - } + } else { die "target already defined - $target\n" if ($target ne ""); $target=$_; } + $options .= $_ unless $_ eq $target; } &usage if (!defined($table{$target})); @@ -477,6 +480,7 @@ while () s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; s/^PLATFORM=.*$/PLATFORM=$target/; + s/^OPTIONS=.*$/OPTIONS=$options/; s/^CC=.*$/CC= $cc/; s/^CFLAG=.*$/CFLAG= $cflags/; s/^DEPFLAG=.*$/DEPFLAG= $depflags/; @@ -641,11 +645,8 @@ if($IsWindows) { (system "make -f Makefile.ssl PERL=\'$perl\' links") == 0 or exit $?; (system 'make depend') == 0 or exit $? if $depflags ne ""; &dofile("tools/c_rehash",$openssldir,'^DIR=', 'DIR=%s',); - &dofile("util/mk1mf.pl",$openssldir, - ('^\$INSTALLTOP=','$INSTALLTOP="%s";',)); } - my $pwd; if($IsWindows) { @@ -730,7 +731,7 @@ sub dofile my $f; my $p; my %m; my @a; my $k; my $ff; ($f,$p,%m)=@_; - open(IN,"<$f") || die "unable to open $f:$!\n"; + open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n"; @a=; close(IN); foreach $k (keys %m) @@ -741,6 +742,6 @@ sub dofile open(OUT,">$ff.new") || die "unable to open $f:$!\n"; print OUT @a; close(OUT); - rename($f,"$ff.bak") || die "unable to rename $f\n"; + rename($f,"$ff.bak") || die "unable to rename $f\n" if -e $f; rename("$ff.new",$f) || die "unable to rename $ff.new\n"; } diff --git a/INSTALL.W32 b/INSTALL.W32 index 8246e41605..db5d8fda01 100644 --- a/INSTALL.W32 +++ b/INSTALL.W32 @@ -82,7 +82,8 @@ * Compile OpenSSL: - Run ms\mw.bat + > perl Configure Mingw32 + > ms\mw.bat This will create the library and binaries in out. diff --git a/Makefile.org b/Makefile.org index 8c36768a77..d8dacc650f 100644 --- a/Makefile.org +++ b/Makefile.org @@ -6,6 +6,7 @@ VERSION= MAJOR= MINOR= PLATFORM=dist +OPTIONS= # INSTALL_PREFIX is for package builders so that they can configure # for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/. # Normally it is left empty. diff --git a/ms/mw.bat b/ms/mw.bat index 9cab3efb02..e6cf95728a 100644 --- a/ms/mw.bat +++ b/ms/mw.bat @@ -1,9 +1,6 @@ @rem OpenSSL with Mingw32 @rem -------------------- -perl Configure Mingw32 -if errorlevel 1 goto end - @rem Makefile perl util\mkfiles.pl >MINFO perl util\mk1mf.pl Mingw32 >ms\mingw32.mak diff --git a/tools/.cvsignore b/tools/.cvsignore new file mode 100644 index 0000000000..af0e591579 --- /dev/null +++ b/tools/.cvsignore @@ -0,0 +1,2 @@ +c_rehash +c_rehash.bak diff --git a/tools/c_rehash b/tools/c_rehash.in similarity index 100% rename from tools/c_rehash rename to tools/c_rehash.in diff --git a/util/mk1mf.pl b/util/mk1mf.pl index b4fc632891..90943de3dc 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -6,8 +6,17 @@ # $INSTALLTOP="/usr/local/ssl"; +$OPTIONS=""; +$ssl_version=""; -$ssl_version="0.9.2b"; +open(IN,") { + $ssl_version=$1 if (/^VERSION=(.*)$/); + $options=$1 if (/^OPTIONS=(.*)$/); + $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/); +} + +die "Makefile.ssl is not the toplevel Makefile!\n" if $ssl_version eq ""; $infile="MINFO"; @@ -32,53 +41,14 @@ $infile="MINFO"; $platform=""; foreach (@ARGV) { - if (/^no-rc2$/) { $no_rc2=1; } - elsif (/^no-rc4$/) { $no_rc4=1; } - elsif (/^no-rc5$/) { $no_rc5=1; } - elsif (/^no-idea$/) { $no_idea=1; } - elsif (/^no-des$/) { $no_des=1; } - elsif (/^no-bf$/) { $no_bf=1; } - elsif (/^no-cast$/) { $no_cast=1; } - elsif (/^no-md2$/) { $no_md2=1; } - elsif (/^no-md5$/) { $no_md5=1; } - elsif (/^no-sha$/) { $no_sha=1; } - elsif (/^no-sha1$/) { $no_sha1=1; } - elsif (/^no-ripemd$/) { $no_ripemd=1; } - elsif (/^no-mdc2$/) { $no_mdc2=1; } - elsif (/^no-patents$/) { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; } - elsif (/^no-rsa$/) { $no_rsa=1; } - elsif (/^no-dsa$/) { $no_dsa=1; } - elsif (/^no-dh$/) { $no_dh=1; } - elsif (/^no-hmac$/) { $no_hmac=1; } - elsif (/^no-asm$/) { $no_asm=1; } - elsif (/^no-ssl2$/) { $no_ssl2=1; } - elsif (/^no-ssl3$/) { $no_ssl3=1; } - elsif (/^no-err$/) { $no_err=1; } - elsif (/^no-sock$/) { $no_sock=1; } - - elsif (/^just-ssl$/) { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1; - $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1; - $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; } - - elsif (/^rsaref$/) { $rsaref=1; } - elsif (/^gcc$/) { $gcc=1; } - elsif (/^debug$/) { $debug=1; } - elsif (/^shlib$/) { $shlib=1; } - elsif (/^dll$/) { $shlib=1; } - elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; } - elsif (/^-[lL].*$/) { $l_flags.="$_ "; } - elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/) - { $c_flags.="$_ "; } - else + if (!&read_options && !defined($ops{$_})) { - if (!defined($ops{$_})) - { - print STDERR "unknown option - $_\n"; - print STDERR "usage: perl mk1mf.pl [system] [options]\n"; - print STDERR "\nwhere [system] can be one of the following\n"; - foreach $i (sort keys %ops) - { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; } - print STDERR <<"EOF"; + print STDERR "unknown option - $_\n"; + print STDERR "usage: perl mk1mf.pl [system] [options]\n"; + print STDERR "\nwhere [system] can be one of the following\n"; + foreach $i (sort keys %ops) + { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; } + print STDERR <<"EOF"; and [options] can be one of no-md2 no-md5 no-sha no-mdc2 no-ripemd - Skip this digest no-rc2 no-rc4 no-idea no-des no-bf no-cast - Skip this symetric cipher @@ -101,10 +71,13 @@ TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler - - extra 'cc' flags, added (MS), or replace (unix) EOF - exit(1); - } - $platform=$_; + exit(1); } + $platform=$_; + } +foreach (split / /, $OPTIONS) + { + print STDERR "unknown option - $_\n" if !&read_options; } $no_mdc2=1 if ($no_des); @@ -817,3 +790,46 @@ sub do_copy_rule } return($ret); } + +sub read_options + { + if (/^no-rc2$/) { $no_rc2=1; } + elsif (/^no-rc4$/) { $no_rc4=1; } + elsif (/^no-rc5$/) { $no_rc5=1; } + elsif (/^no-idea$/) { $no_idea=1; } + elsif (/^no-des$/) { $no_des=1; } + elsif (/^no-bf$/) { $no_bf=1; } + elsif (/^no-cast$/) { $no_cast=1; } + elsif (/^no-md2$/) { $no_md2=1; } + elsif (/^no-md5$/) { $no_md5=1; } + elsif (/^no-sha$/) { $no_sha=1; } + elsif (/^no-sha1$/) { $no_sha1=1; } + elsif (/^no-ripemd$/) { $no_ripemd=1; } + elsif (/^no-mdc2$/) { $no_mdc2=1; } + elsif (/^no-patents$/) { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; } + elsif (/^no-rsa$/) { $no_rsa=1; } + elsif (/^no-dsa$/) { $no_dsa=1; } + elsif (/^no-dh$/) { $no_dh=1; } + elsif (/^no-hmac$/) { $no_hmac=1; } + elsif (/^no-asm$/) { $no_asm=1; } + elsif (/^no-ssl2$/) { $no_ssl2=1; } + elsif (/^no-ssl3$/) { $no_ssl3=1; } + elsif (/^no-err$/) { $no_err=1; } + elsif (/^no-sock$/) { $no_sock=1; } + + elsif (/^just-ssl$/) { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1; + $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1; + $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; } + + elsif (/^rsaref$/) { $rsaref=1; } + elsif (/^gcc$/) { $gcc=1; } + elsif (/^debug$/) { $debug=1; } + elsif (/^shlib$/) { $shlib=1; } + elsif (/^dll$/) { $shlib=1; } + elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; } + elsif (/^-[lL].*$/) { $l_flags.="$_ "; } + elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/) + { $c_flags.="$_ "; } + else { return(1); } + return(0); + } diff --git a/util/mkdef.pl b/util/mkdef.pl index 4576c76144..1f05fe040f 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -18,7 +18,14 @@ $W32=1; $NT=0; # Set this to make typesafe STACK definitions appear in DEF $safe_stack_def = 1; -foreach (@ARGV) + +$options=""; +open(IN,") { + $options=$1 if (/^OPTIONS=(.*)$/); +} + +foreach (@ARGV, split(/ /, $options)) { $W32=1 if $_ eq "32"; $W32=0 if $_ eq "16"; -- 2.34.1