X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=Configure;h=d93d5344ea71bbd4c3cc54e2da1c445cb643bdfa;hb=49bc262459b5caf2be68e8ac178df780e6004c1a;hp=6098af778560aa3dd5571cf5ccd02fcbf89d8255;hpb=11ee069b91f1c09f5e2dc4278b6cccaa2cc741a2;p=oweals%2Fopenssl.git diff --git a/Configure b/Configure index 6098af7785..d93d5344ea 100755 --- a/Configure +++ b/Configure @@ -1,5 +1,11 @@ -#!/usr/local/bin/perl -w - +: +eval 'exec perl -S $0 ${1+"$@"}' + if $running_under_some_shell; +## +## Configure -- OpenSSL source tree configuration script +## + +require 5.000; use strict; # @@ -76,7 +82,8 @@ my %table=( # A few of my development configs "purify", "purify gcc:-g -DPURIFY -Wall:-lsocket -lnsl::::", "debug", "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:-lefence::::", -"debug-rse","gcc:-DTERMIOS -DL_ENDIAN -DREF_CHECK -DCRYPTO_MDEBUG -g -ggdb3 -Wall:::::", +"debug-ben", "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -O2 -Wall -Wshadow -Werror:::::", +"debug-rse","gcc:-DTERMIOS -DL_ENDIAN -O -g -ggdb3 -m486 -Wall::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_out_asm", "dist", "cc:-O -DNOPROTO::::", # Basic configs that should work on any box @@ -198,9 +205,8 @@ my %table=( # Windows NT, Microsoft Visual C++ 4.0 -# hmm... bug in perl under NT, I need to concatinate :-( -"VC-NT","cl:::BN_LLONG RC4_INDEX ".$x86_gcc_opts.":::", -"VC-WIN32","cl:::BN_LLONG RC4_INDEX ".$x86_gcc_opts.":::", +"VC-NT","cl:::BN_LLONG RC4_INDEX ${x86_gcc_opts}:::", +"VC-WIN32","cl:::BN_LLONG RC4_INDEX ${x86_gcc_opts}:::", "VC-WIN16","cl:::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", "VC-W31-16","cl:::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::", "VC-W31-32","cl:::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::", @@ -210,6 +216,9 @@ my %table=( "BC-32","bcc32:::DES_PTR RC4_INDEX:::", "BC-16","bcc:::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::", +# CygWin32 +"CygWin32", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::BN_LLONG $x86_gcc_des $x86_gcc_opts:", + # Our old Ultrix box :-). -O2 breaks some of the bignum stuff (now fixed, # it is a compiler bug, look in bug/ultrixcc.c for example code. "ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN:::asm/mips1.o:::", @@ -221,6 +230,20 @@ my %table=( "OpenBSD-mips","gcc:-O2 -DL_ENDIAN:BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR::::", ); +# Miscellaneous hacks: this is designed to allow environments where the "one +# makefile" option does not auto build all files. +# The first six fields are the hard coded versions of the stuff generated by +# ctx_size for pem.h: that is EVP_ENCODE_CTX_SIZE, EVP_MD_SIZE EVP_MD_CTX_SIZE, +# EVP_CIPHER_SIZE, EVP_CIPHER_CTX_SIZE and EVP_MAX_MD_SIZE respectively. +# If the seventh field is 1 then auto generate +# crypto/date.h +# Need to add Win16 and others here. + +my %misc_table = ( +"VC-WIN32", "96:60:152:40:4212:20:1", +"VC-NT", "96:60:152:40:4212:20:1" +); + my $no_asm=0; my $postfix="org"; my $Makefile="Makefile.ssl"; @@ -268,7 +291,7 @@ foreach (@ARGV) } else { - die "unknown options, only -Dxxx, -Lxxx -lxxx supported\n"; + die "unknown options, only -Dxxx, -Lxxx and -lxxx supported\n"; } } else @@ -291,7 +314,7 @@ if (!defined($table{$target})) (my $cc,my $cflags,my $lflags,my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, $md5_obj,$sha1_obj,my $cast_obj,my $rc4_obj,$rmd160_obj,my $rc5_obj)= - split(/\s*:\s*/,$table{$target}); + split(/\s*:\s*/,$table{$target} . ":" x 20 , -1); $cflags="$flags$cflags" if ($flags ne ""); $lflags="$libs$lflags"if ($libs ne ""); @@ -301,9 +324,12 @@ if ($no_asm) $sha1_obj=$md5_obj=$rmd160_obj=""; } -my ($bn1)=split(/\s+/,$bn_obj); -$bn1=$bn_asm unless ($bn1 =~ /\.o$/); -$bn_obj="$bn1"; +#my ($bn1)=split(/\s+/,$bn_obj); +#$bn1 = "" unless defined $bn1; +#$bn1=$bn_asm unless ($bn1 =~ /\.o$/); +#$bn_obj="$bn1"; + +$bn_obj = $bn_asm unless $bn_obj ne ""; $des_obj=$des_enc unless ($des_obj =~ /\.o$/); $bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/); @@ -326,9 +352,8 @@ if ($rmd160_obj =~ /\.o$/) $cflags.=" -DRMD160_ASM"; } -my $n=&file_new($Makefile); -open(IN,"<".$Makefile) || die "unable to read $Makefile:$!\n"; -open(OUT,">".$n) || die "unable to read $n:$!\n"; +open(IN,'$Makefile") || die "unable to create $Makefile:$!\n"; while () { chop; @@ -336,7 +361,7 @@ while () s/^CC=.*$/CC= $cc/; s/^CFLAG=.*$/CFLAG= $cflags/; s/^EX_LIBS=.*$/EX_LIBS= $lflags/; - s/^BN_MULW=.*$/BN_MULW= $bn_obj/; + s/^BN_ASM=.*$/BN_ASM= $bn_obj/; s/^DES_ENC=.*$/DES_ENC= $des_obj/; s/^BF_ENC=.*$/BF_ENC= $bf_obj/; s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; @@ -349,12 +374,11 @@ while () } close(IN); close(OUT); -&Rename($Makefile,&file_old($Makefile)); -&Rename($n,$Makefile); + print "CC =$cc\n"; print "CFLAG =$cflags\n"; print "EX_LIBS =$lflags\n"; -print "BN_MULW =$bn_obj\n"; +print "BN_ASM =$bn_obj\n"; print "DES_ENC =$des_obj\n"; print "BF_ENC =$bf_obj\n"; print "CAST_ENC =$cast_obj\n"; @@ -408,7 +432,7 @@ foreach (sort split(/\s+/,$bn_ops)) } ((my $in=$bn) =~ s/\.([^.]+)/.$postfix/); -$n=&file_new($bn); +my $n=&file_new($bn); open(IN,"<".$in) || die "unable to read $bn:$!\n"; open(OUT,">$n") || die "unable to read $n:$!\n"; while () @@ -572,6 +596,50 @@ close(OUT); &Rename($bf,&file_old($bf)); &Rename($n,$bf); +# Now the miscellaneous fixups + +if(defined $misc_table{$target}) { + my ($enc_ctx, $md_size, $md_ctx_size, $cipher_size, $cipher_ctx_size, + $max_md_size, $date_fix) = + split(/\s*:\s*/,$misc_table{$target} . ":", -1); + +#print "EVP_ENCODE_CTX_SIZE $enc_ctx\n"; +#print "EVP_MD_SIZE $md_size\n"; +#print "EVP_MD_CTX_SIZE $md_ctx_size\n"; +#print "EVP_CIPHER_SIZE $cipher_size\n"; +#print "EVP_CIPHER_CTX_SIZE $cipher_ctx_size\n"; +#print "EVP_MAX_MD_SIZE $max_md_size\n"; +#printf "Date fix: %s\n", $date_fix ? "Yes" : "No"; + +# Fix the date + +if($date_fix) { + open (OUT,">crypto/date.h") || die "Can't open date.h"; + printf OUT "#define DATE \"%s\"\n", scalar gmtime(); + close(OUT); +} + +open (IN, "crypto/pem/pem.org") || die "Can't open crypto/pem/pem.org"; +open (OUT, ">crypto/pem/pem.h") || die "Can't create crypto/pem/pem.h"; + +# Now fix up pem.h +while() { + chop; + s/^(#define EVP_ENCODE_CTX_SIZE).*$/$1 $enc_ctx/; + s/^(#define EVP_MD_SIZE).*$/$1 $md_size/; + s/^(#define EVP_MD_CTX_SIZE).*$/$1 $md_ctx_size/; + s/^(#define EVP_CIPHER_SIZE).*$/$1 $cipher_size/; + s/^(#define EVP_CIPHER_CTX_SIZE).*$/$1 $cipher_ctx_size/; + s/^(#define EVP_MAX_MD_SIZE).*$/$1 $max_md_size/; + print OUT "$_\n"; +} + +close (IN); +close (OUT); + + +} + print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l; print "SIXTY_FOUR_BIT mode\n" if $b64; print "THIRTY_TWO_BIT mode\n" if $b32; @@ -597,7 +665,8 @@ sub bad_target print STDERR "Usage: Configure [-Dxxx] [-Lxxx] [-lxxx] os/compiler\n"; print STDERR "pick os/compiler from:"; my $j=0; - foreach my $i (sort keys %table) + my $i; + foreach $i (sort keys %table) { print STDERR "\n" if ($j++ % 4) == 0; printf(STDERR "%-18s ",$i); @@ -608,10 +677,12 @@ sub bad_target sub Rename { my($from,$to)=@_; - unlink($to); - rename($from,$to) || die "unable to rename $from to $to:$!\n"; + if(!rename($from,$to)) + { + -e $from && die "unable to rename $from to $to:$!\n"; + } } -sub file_new { local($a)=@_; $a =~ s/(\.[^.]+$|$)/.new/; $a; } -sub file_old { local($a)=@_; $a =~ s/(\.[^.]+$|$)/.old/; $a; } +sub file_new { my($a)=@_; $a =~ s/(\.[^.]+$|$)/.new/; $a; } +sub file_old { my($a)=@_; $a =~ s/(\.[^.]+$|$)/.old/; $a; }