# rsaref use RSAref
# no-asm do not use assembler
# 386 generate 80386 code
+# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
# -D, -L, -l, -f, -K: compiler options are passed through
#
-# -DRSAref build to use RSAref
-# -DNO_IDEA build with no IDEA algorithm
-# -DNO_RC4 build with no RC4 algorithm
-# -DNO_RC2 build with no RC2 algorithm
-# -DNO_BF build with no Blowfish algorithm
-# -DNO_DES build with no DES/3DES algorithm
-# -DNO_MD2 build with no MD2 algorithm
-#
# DES_PTR use pointer lookup vs arrays in the DES in crypto/des/des_locl.h
# DES_RISC1 use different DES_ENCRYPT macro that helps reduce register
# dependancies but needs to more registers, good for RISC CPU's
# -fast slows things like DES down quite a lot
"solaris-sparc-sc4","cc:-xO5 -Xa -DB_ENDIAN:-lsocket -lnsl:\
BN_LLONG RC4_CHAR DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::",
-"solaris-usparc-sc4","cc:-xtarget=ultra -xarch=v8plus -Xa -xO5 -DB_ENDIAN:\
+"solaris-usparc-sc4","cc:-xtarget=ultra -xarch=v8plus -Xa -xO2 -DB_ENDIAN:\
-lsocket -lnsl:\
BN_LLONG RC4_CHAR DES_PTR DES_RISC1 DES_UNROLL BF_PTR:asm/sparcv8.o::",
#"solaris-sparc-sc4-pic","cc:-xO5 -Xa -DB_ENDIAN -KPIC:-lsocket -lnsl:\
"CygWin32", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::BN_LLONG $x86_gcc_des $x86_gcc_opts:",
# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
-"ultrix","cc:-std1 -O -Olimit 1000 -DL_ENDIAN::::::",
-"ultrix-gcc","cc:-O3 -DL_ENDIAN::::::",
+"ultrix-cc","cc:-std1 -O -Olimit 1000 -DL_ENDIAN::::::",
+"ultrix-gcc","gcc:-O3 -DL_ENDIAN::::::",
# K&R C is no longer supported; you need gcc on old Ultrix installations
##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::::::",
my $installprefix="";
my $openssldir="";
my $no_asm=0;
+my @skip=();
my $Makefile="Makefile.ssl";
my $des_locl="crypto/des/des_locl.h";
my $des ="crypto/des/des.h";
&usage if ($#ARGV < 0);
my $flags="";
+my $depflags="";
my $libs="";
my $target="";
foreach (@ARGV)
{
if (/^no-asm$/)
{ $no_asm=1; }
+ elsif (/^no-(.+)$/)
+ {
+ my $algo=$1;
+ push @skip,$algo;
+ $algo =~ tr/[a-z]/[A-Z]/;
+ $flags .= "-DNO_$algo ";
+ $depflags .= "-DNO_$algo ";
+ }
elsif (/^386$/)
{ $processor=386; }
elsif (/^rsaref$/)
$cflags.=" -DRMD160_ASM";
}
+my $version = "unknown";
+my $major = "unknown";
+my $minor = "unknown";
+
+open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
+while (<IN>)
+ {
+ $version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
+ }
+close(IN);
+
+if ($version =~ /(^[0-9]*)\.([\0-9\.]*)/)
+ {
+ $major=$1;
+ $minor=$2;
+ }
+
open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
open(OUT,">$Makefile") || die "unable to create $Makefile:$!\n";
+my $sdirs=0;
while (<IN>)
{
chop;
+ $sdirs = 1 if /^SDIRS=/;
+ $sdirs = 0 unless /\\$/;
+ if ($sdirs) {
+ my $dir;
+ foreach $dir (@skip) {
+ s/$dir//;
+ }
+ }
+ s/^VERSION=.*/VERSION=$version/;
+ s/^MAJOR=.*/MAJOR=$major/;
+ s/^MINOR=.*/MINOR=$minor/;
s/^INSTALLTOP=.*$/INSTALLTOP=$installprefix/;
s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
s/^PLATFORM=.*$/PLATFORM=$target/;
s/^CC=.*$/CC= $cc/;
s/^CFLAG=.*$/CFLAG= $cflags/;
+ s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
s/^DES_ENC=.*$/DES_ENC= $des_obj/;
printf OUT "#define DATE \"%s\"\n", scalar gmtime();
close(OUT);
} else {
- (system 'make -f Makefile.ssl links') == 0 or exit $?;
+ if ( $perl =~ /./ ) {
+ (system "make -f Makefile.ssl PERL=\'$perl\' links") == 0 or exit $?;
+ } else {
+ (system 'make -f Makefile.ssl 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";',));