X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=Configure;h=d7eb1ffe9624a0abb6c559fec9e6e2eefc12afcc;hp=cdcb027002f11a2dd6e6cb37530daa9cd75008e3;hb=3b52c2e7155a3f754a765800eeed36961c0c593e;hpb=29c7896f13b551f319cfb94bb25072813cbbb58b diff --git a/Configure b/Configure index cdcb027002..d7eb1ffe96 100755 --- a/Configure +++ b/Configure @@ -1,4 +1,9 @@ -#!/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; @@ -77,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","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm", "dist", "cc:-O -DNOPROTO::::", # Basic configs that should work on any box @@ -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; }