X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=Configure;h=d93d5344ea71bbd4c3cc54e2da1c445cb643bdfa;hb=aa2b6baf4f01ec44f81f85cce508691281d2d2a2;hp=79edba214ccbd820a65a4a68f4c6e45574f8e73a;hpb=e04a6c2b358330a91ed82931127f5f8f5db7e2df;p=openssl.git diff --git a/Configure b/Configure index 79edba214c..d93d5344ea 100755 --- a/Configure +++ b/Configure @@ -1,8 +1,12 @@ -#!/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; -use POSIX qw(:errno_h); # # see PROBLEMS for instructions on what sort of things to do when @@ -78,6 +82,7 @@ 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-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::::", @@ -225,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"; @@ -295,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 ""); @@ -305,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$/); @@ -339,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/; @@ -356,7 +378,7 @@ close(OUT); 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"; @@ -574,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; @@ -599,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); @@ -610,13 +677,12 @@ sub bad_target sub Rename { my($from,$to)=@_; - unlink($to); if(!rename($from,$to)) { - POSIX::errno() == POSIX::ENOENT || die "unable to rename $from to $to:$!\n"; + -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; }