Index: openssl/util/mk1mf.pl |
=================================================================== |
--- openssl/util/mk1mf.pl (revision 105093) |
+++ openssl/util/mk1mf.pl (working copy) |
@@ -6,36 +6,57 @@ |
# |
$INSTALLTOP="/usr/local/ssl"; |
+$OPENSSLDIR="/usr/local/ssl"; |
$OPTIONS=""; |
$ssl_version=""; |
$banner="\t\@echo Building OpenSSL"; |
-my $no_static_engine = 0; |
+my $no_static_engine = 1; |
my $engines = ""; |
+my $otherlibs = ""; |
local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic |
local $zlib_lib = ""; |
+local $perl_asm = 0; # 1 to autobuild asm files from perl scripts |
-local $fips_canister_path = ""; |
-my $fips_premain_dso_exe_path = ""; |
-my $fips_premain_c_path = ""; |
-my $fips_sha1_exe_path = ""; |
+# Options to import from top level Makefile |
-local $fipscanisterbuild = 0; |
-local $fipsdso = 0; |
+my %mf_import = ( |
+ VERSION => \$ssl_version, |
+ OPTIONS => \$OPTIONS, |
+ INSTALLTOP => \$INSTALLTOP, |
+ OPENSSLDIR => \$OPENSSLDIR, |
+ PLATFORM => \$mf_platform, |
+ CFLAG => \$mf_cflag, |
+ DEPFLAG => \$mf_depflag, |
+ CPUID_OBJ => \$mf_cpuid_asm, |
+ BN_ASM => \$mf_bn_asm, |
+ DES_ENC => \$mf_des_asm, |
+ AES_ENC => \$mf_aes_asm, |
+ BF_ENC => \$mf_bf_asm, |
+ CAST_ENC => \$mf_cast_asm, |
+ RC4_ENC => \$mf_rc4_asm, |
+ RC5_ENC => \$mf_rc5_asm, |
+ MD5_ASM_OBJ => \$mf_md5_asm, |
+ SHA1_ASM_OBJ => \$mf_sha_asm, |
+ RMD160_ASM_OBJ => \$mf_rmd_asm, |
+ WP_ASM_OBJ => \$mf_wp_asm, |
+ CMLL_ENC => \$mf_cm_asm |
+); |
-my $fipslibdir = ""; |
-my $baseaddr = ""; |
-my $ex_l_libs = ""; |
- |
open(IN,"<Makefile") || die "unable to open Makefile!\n"; |
while(<IN>) { |
- $ssl_version=$1 if (/^VERSION=(.*)$/); |
- $OPTIONS=$1 if (/^OPTIONS=(.*)$/); |
- $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/); |
+ my ($mf_opt, $mf_ref); |
+ while (($mf_opt, $mf_ref) = each %mf_import) { |
+ if (/^$mf_opt\s*=\s*(.*)$/) { |
+ $$mf_ref = $1; |
+ } |
+ } |
} |
close(IN); |
+$debug = 1 if $mf_platform =~ /^debug-/; |
+ |
die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq ""; |
$infile="MINFO"; |
@@ -58,6 +79,7 @@ |
"netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets", |
"netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets", |
"default","cc under unix", |
+ "auto", "auto detect from top level Makefile" |
); |
$platform=""; |
@@ -144,6 +166,12 @@ |
$NT=0; |
push(@INC,"util/pl","pl"); |
+ |
+if ($platform eq "auto") { |
+ $platform = $mf_platform; |
+ print STDERR "Imported platform $mf_platform\n"; |
+} |
+ |
if (($platform =~ /VC-(.+)/)) |
{ |
$FLAVOR=$1; |
@@ -228,21 +256,21 @@ |
$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa; |
$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa; |
$cflags.=" -DOPENSSL_NO_DH" if $no_dh; |
+$cflags.=" -DOPENSSL_NO_WHIRLPOOL" if $no_whirlpool; |
$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock; |
$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2; |
$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3; |
$cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext; |
$cflags.=" -DOPENSSL_NO_CMS" if $no_cms; |
-$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake; |
-$cflags.=" -DOPENSSL_NO_CAPIENG" if $no_capieng; |
$cflags.=" -DOPENSSL_NO_ERR" if $no_err; |
$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5; |
$cflags.=" -DOPENSSL_NO_EC" if $no_ec; |
$cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa; |
$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; |
+$cflags.=" -DOPENSSL_NO_GOST" if $no_gost; |
$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; |
$cflags.=" -DOPENSSL_NO_HW" if $no_hw; |
-$cflags.=" -DOPENSSL_FIPS" if $fips; |
+$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake; |
$cflags.= " -DZLIB" if $zlib_opt; |
$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; |
@@ -264,9 +292,9 @@ |
$ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); |
+ |
%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", |
- "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO", |
- "FIPS" => " -DOPENSSL_BUILD_SHLIBCRYPTO"); |
+ "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO"); |
if ($msdos) |
{ |
@@ -280,6 +308,7 @@ |
$link="$bin_dir$link" if ($link !~ /^\$/); |
$INSTALLTOP =~ s|/|$o|g; |
+$OPENSSLDIR =~ s|/|$o|g; |
############################################# |
# We parse in input file and 'store' info for later printing. |
@@ -294,21 +323,11 @@ |
{ |
if ($lib ne "") |
{ |
- if ($fips && $dir =~ /^fips/) |
- { |
- $uc = "FIPS"; |
- } |
- else |
- { |
- $uc=$lib; |
- $uc =~ s/^lib(.*)\.a/$1/; |
- $uc =~ tr/a-z/A-Z/; |
- } |
- if (($uc ne "FIPS") || $fipscanisterbuild) |
- { |
- $lib_nam{$uc}=$uc; |
- $lib_obj{$uc}.=$libobj." "; |
- } |
+ $uc=$lib; |
+ $uc =~ s/^lib(.*)\.a/$1/; |
+ $uc =~ tr/a-z/A-Z/; |
+ $lib_nam{$uc}=$uc; |
+ $lib_obj{$uc}.=$libobj." "; |
} |
last if ($val eq "FINISHED"); |
$lib=""; |
@@ -339,6 +358,12 @@ |
$lib=$val; |
$lib =~ s/^.*\/([^\/]+)$/$1/; |
} |
+ if ($key eq "LIBNAME" && $no_static_engine) |
+ { |
+ $lib=$val; |
+ $lib =~ s/^.*\/([^\/]+)$/$1/; |
+ $otherlibs .= " $lib"; |
+ } |
if ($key eq "EXHEADER") |
{ $exheader.=&var_add($dir,$val, 1); } |
@@ -351,130 +376,11 @@ |
if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) |
{ $engines.=$val } |
- if ($key eq "FIPS_EX_OBJ") |
- { |
- $fips_ex_obj=&var_add("crypto",$val,0); |
- } |
- |
- if ($key eq "FIPSLIBDIR") |
- { |
- $fipslibdir=$val; |
- $fipslibdir =~ s/\/$//; |
- $fipslibdir =~ s/\//$o/g; |
- } |
- |
- if ($key eq "BASEADDR") |
- { $baseaddr=$val;} |
- |
if (!($_=<IN>)) |
{ $_="RELATIVE_DIRECTORY=FINISHED\n"; } |
} |
close(IN); |
-if ($fips) |
- { |
- |
- foreach (split " ", $fips_ex_obj) |
- { |
- $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/); |
- } |
- |
- $fips_exclude_obj{"cpu_win32"} = 1; |
- $fips_exclude_obj{"bn_asm"} = 1; |
- $fips_exclude_obj{"des_enc"} = 1; |
- $fips_exclude_obj{"fcrypt_b"} = 1; |
- $fips_exclude_obj{"aes_core"} = 1; |
- $fips_exclude_obj{"aes_cbc"} = 1; |
- |
- my @ltmp = split " ", $lib_obj{"CRYPTO"}; |
- |
- |
- $lib_obj{"CRYPTO"} = ""; |
- |
- foreach(@ltmp) |
- { |
- if (/\/([^\/]*)$/ && exists $fips_exclude_obj{$1}) |
- { |
- if ($fipscanisterbuild) |
- { |
- $lib_obj{"FIPS"} .= "$_ "; |
- } |
- } |
- else |
- { |
- $lib_obj{"CRYPTO"} .= "$_ "; |
- } |
- } |
- |
- } |
- |
-if ($fipscanisterbuild) |
- { |
- $fips_canister_path = "\$(LIB_D)${o}fipscanister.lib" if $fips_canister_path eq ""; |
- $fips_premain_c_path = "\$(LIB_D)${o}fips_premain.c"; |
- } |
-else |
- { |
- if ($fips_canister_path eq "") |
- { |
- $fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.lib"; |
- } |
- |
- if ($fips_premain_c_path eq "") |
- { |
- $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c"; |
- } |
- } |
- |
-if ($fips) |
- { |
- if ($fips_sha1_exe_path eq "") |
- { |
- $fips_sha1_exe_path = |
- "\$(BIN_D)${o}fips_standalone_sha1$exep"; |
- } |
- } |
- else |
- { |
- $fips_sha1_exe_path = ""; |
- } |
- |
-if ($fips_premain_dso_exe_path eq "") |
- { |
- $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep"; |
- } |
- |
-# $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips); |
- |
-#$ex_l_libs .= " \$(L_FIPS)" if $fipsdso; |
- |
-if ($fips) |
- { |
- if (!$shlib) |
- { |
- $ex_build_targets .= " \$(LIB_D)$o$crypto_compat \$(PREMAIN_DSO_EXE)"; |
- $ex_l_libs .= " \$(O_FIPSCANISTER)"; |
- $ex_libs_dep .= " \$(O_FIPSCANISTER)" if $fipscanisterbuild; |
- } |
- if ($fipscanisterbuild) |
- { |
- $fipslibdir = "\$(LIB_D)"; |
- } |
- else |
- { |
- if ($fipslibdir eq "") |
- { |
- open (IN, "util/fipslib_path.txt") || fipslib_error(); |
- $fipslibdir = <IN>; |
- chomp $fipslibdir; |
- close IN; |
- } |
- fips_check_files($fipslibdir, |
- "fipscanister.lib", "fipscanister.lib.sha1", |
- "fips_premain.c", "fips_premain.c.sha1"); |
- } |
- } |
- |
if ($shlib) |
{ |
$extra_install= <<"EOF"; |
@@ -520,6 +426,7 @@ |
$defs.= <<"EOF"; |
INSTALLTOP=$INSTALLTOP |
+OPENSSLDIR=$OPENSSLDIR |
# Set your compiler options |
PLATFORM=$platform |
@@ -540,33 +447,7 @@ |
LINK=$link |
LFLAGS=$lflags |
RSC=$rsc |
-FIPSLINK=\$(PERL) util${o}fipslink.pl |
-AES_ASM_OBJ=$aes_asm_obj |
-AES_ASM_SRC=$aes_asm_src |
-BN_ASM_OBJ=$bn_asm_obj |
-BN_ASM_SRC=$bn_asm_src |
-BNCO_ASM_OBJ=$bnco_asm_obj |
-BNCO_ASM_SRC=$bnco_asm_src |
-DES_ENC_OBJ=$des_enc_obj |
-DES_ENC_SRC=$des_enc_src |
-BF_ENC_OBJ=$bf_enc_obj |
-BF_ENC_SRC=$bf_enc_src |
-CAST_ENC_OBJ=$cast_enc_obj |
-CAST_ENC_SRC=$cast_enc_src |
-RC4_ENC_OBJ=$rc4_enc_obj |
-RC4_ENC_SRC=$rc4_enc_src |
-RC5_ENC_OBJ=$rc5_enc_obj |
-RC5_ENC_SRC=$rc5_enc_src |
-MD5_ASM_OBJ=$md5_asm_obj |
-MD5_ASM_SRC=$md5_asm_src |
-SHA1_ASM_OBJ=$sha1_asm_obj |
-SHA1_ASM_SRC=$sha1_asm_src |
-RMD160_ASM_OBJ=$rmd160_asm_obj |
-RMD160_ASM_SRC=$rmd160_asm_src |
-CPUID_ASM_OBJ=$cpuid_asm_obj |
-CPUID_ASM_SRC=$cpuid_asm_src |
- |
# The output directory for everything intersting |
OUT_D=$out_dir |
# The output directory for all the temporary muck |
@@ -584,17 +465,6 @@ |
MLFLAGS=$mlflags |
ASM=$bin_dir$asm |
-# FIPS validated module and support file locations |
- |
-E_PREMAIN_DSO=fips_premain_dso |
- |
-FIPSLIB_D=$fipslibdir |
-BASEADDR=$baseaddr |
-FIPS_PREMAIN_SRC=$fips_premain_c_path |
-O_FIPSCANISTER=$fips_canister_path |
-FIPS_SHA1_EXE=$fips_sha1_exe_path |
-PREMAIN_DSO_EXE=$fips_premain_dso_exe_path |
- |
###################################################### |
# You should not need to touch anything below this point |
###################################################### |
@@ -602,7 +472,6 @@ |
E_EXE=openssl |
SSL=$ssl |
CRYPTO=$crypto |
-LIBFIPS=libosslfips |
# BIN_D - Binary output directory |
# TEST_D - Binary test file output directory |
@@ -623,14 +492,12 @@ |
O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp |
O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp |
-O_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$shlibp |
SO_SSL= $plib\$(SSL)$so_shlibp |
SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp |
L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp |
L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp |
-L_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$libp |
-L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs |
+L_LIBS= \$(L_SSL) \$(L_CRYPTO) |
###################################################### |
# Don't touch anything below this point |
@@ -640,13 +507,13 @@ |
APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) |
LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) |
SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) |
-LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) $ex_libs_dep |
+LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) |
############################################# |
EOF |
$rules=<<"EOF"; |
-all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers \$(FIPS_SHA1_EXE) lib exe $ex_build_targets |
+all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe |
banner: |
$banner |
@@ -683,8 +550,9 @@ |
\$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\" |
\$(MKDIR) \"\$(INSTALLTOP)${o}lib\" |
\$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\" |
- \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep\" \"\$(INSTALLTOP)${o}bin\" |
- \$(CP) \"apps${o}openssl.cnf\" \"\$(INSTALLTOP)\" |
+ \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\" |
+ \$(MKDIR) \"\$(OPENSSLDIR)\" |
+ \$(CP) apps${o}openssl.cnf \"\$(OPENSSLDIR)\" |
$extra_install |
@@ -761,26 +629,6 @@ |
$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj); |
$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); |
-# Special case rules for fips_start and fips_end fips_premain_dso |
- |
-if ($fips) |
- { |
- if ($fipscanisterbuild) |
- { |
- $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj", |
- "fips${o}fips_canister.c", |
- "-DFIPS_START \$(SHLIB_CFLAGS)"); |
- $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj", |
- "fips${o}fips_canister.c", "\$(SHLIB_CFLAGS)"); |
- } |
- $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj", |
- "fips${o}sha${o}fips_standalone_sha1.c", |
- "\$(SHLIB_CFLAGS)"); |
- $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj", |
- "fips${o}fips_premain.c", |
- "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)"); |
- } |
- |
foreach (values %lib_nam) |
{ |
$lib_obj=$lib_obj{$_}; |
@@ -792,71 +640,6 @@ |
next; |
} |
- if ((!$fips && ($_ eq "CRYPTO")) || ($fips && ($_ eq "FIPS"))) |
- { |
- if ($cpuid_asm_obj ne "") |
- { |
- $lib_obj =~ s/(\S*\/cryptlib\S*)/$1 \$(CPUID_ASM_OBJ)/; |
- $rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_asm_src); |
- } |
- if ($aes_asm_obj ne "") |
- { |
- $lib_obj =~ s/\s(\S*\/aes_core\S*)/ \$(AES_ASM_OBJ)/; |
- $lib_obj =~ s/\s\S*\/aes_cbc\S*//; |
- $rules.=&do_asm_rule($aes_asm_obj,$aes_asm_src); |
- } |
- if ($sha1_asm_obj ne "") |
- { |
- $lib_obj =~ s/\s(\S*\/sha1dgst\S*)/ $1 \$(SHA1_ASM_OBJ)/; |
- $rules.=&do_asm_rule($sha1_asm_obj,$sha1_asm_src); |
- } |
- if ($bn_asm_obj ne "") |
- { |
- $lib_obj =~ s/\s\S*\/bn_asm\S*/ \$(BN_ASM_OBJ)/; |
- $rules.=&do_asm_rule($bn_asm_obj,$bn_asm_src); |
- } |
- if ($bnco_asm_obj ne "") |
- { |
- $lib_obj .= "\$(BNCO_ASM_OBJ)"; |
- $rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src); |
- } |
- if ($des_enc_obj ne "") |
- { |
- $lib_obj =~ s/\s\S*des_enc\S*/ \$(DES_ENC_OBJ)/; |
- $lib_obj =~ s/\s\S*\/fcrypt_b\S*\s*/ /; |
- $rules.=&do_asm_rule($des_enc_obj,$des_enc_src); |
- } |
- } |
- if (($bf_enc_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/\s\S*\/bf_enc\S*/ \$(BF_ENC_OBJ)/; |
- $rules.=&do_asm_rule($bf_enc_obj,$bf_enc_src); |
- } |
- if (($cast_enc_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/(\s\S*\/c_enc\S*)/ \$(CAST_ENC_OBJ)/; |
- $rules.=&do_asm_rule($cast_enc_obj,$cast_enc_src); |
- } |
- if (($rc4_enc_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/\s\S*\/rc4_enc\S*/ \$(RC4_ENC_OBJ)/; |
- $rules.=&do_asm_rule($rc4_enc_obj,$rc4_enc_src); |
- } |
- if (($rc5_enc_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/\s\S*\/rc5_enc\S*/ \$(RC5_ENC_OBJ)/; |
- $rules.=&do_asm_rule($rc5_enc_obj,$rc5_enc_src); |
- } |
- if (($md5_asm_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/\s(\S*\/md5_dgst\S*)/ $1 \$(MD5_ASM_OBJ)/; |
- $rules.=&do_asm_rule($md5_asm_obj,$md5_asm_src); |
- } |
- if (($rmd160_asm_obj ne "") && ($_ eq "CRYPTO")) |
- { |
- $lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/; |
- $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src); |
- } |
$defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); |
$lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)"; |
$rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); |
@@ -872,46 +655,18 @@ |
\$(OBJ_D)\\\$(SSL).res: ms\\version32.rc |
\$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc |
-\$(OBJ_D)\\\$(LIBFIPS).res: ms\\version32.rc |
- \$(RSC) /fo"\$(OBJ_D)\\\$(LIBFIPS).res" /d FIPS ms\\version32.rc |
- |
EOF |
} |
$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep); |
foreach (split(/\s+/,$test)) |
{ |
- my $t_libs; |
$t=&bname($_); |
- my $ltype; |
- # Check to see if test program is FIPS |
- if ($fips && /fips/) |
- { |
- # If fipsdso link to libosslfips.dll |
- # otherwise perform static link to |
- # $(O_FIPSCANISTER) |
- if ($fipsdso) |
- { |
- $t_libs = "\$(L_FIPS)"; |
- $ltype = 0; |
- } |
- else |
- { |
- $t_libs = "\$(O_FIPSCANISTER)"; |
- $ltype = 2; |
- } |
- } |
- else |
- { |
- $t_libs = "\$(L_LIBS)"; |
- $ltype = 0; |
- } |
- |
$tt="\$(OBJ_D)${o}$t${obj}"; |
- $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)", $ltype); |
+ $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); |
} |
-$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp); |
+$defs.=&do_defs("E_SHLIB",$engines . $otherlibs,"\$(ENG_D)",$shlibp); |
foreach (split(/\s+/,$engines)) |
{ |
@@ -922,69 +677,17 @@ |
$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); |
+$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)"); |
-if ($fips) |
+foreach (split(" ",$otherlibs)) |
{ |
- if ($shlib) |
- { |
- if ($fipsdso) |
- { |
- $rules.= &do_lib_rule("\$(CRYPTOOBJ)", |
- "\$(O_CRYPTO)", "$crypto", |
- $shlib, "", ""); |
- $rules.= &do_lib_rule( |
- "\$(O_FIPSCANISTER)", |
- "\$(O_FIPS)", "\$(LIBFIPS)", |
- $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)"); |
- $rules.= &do_sdef_rule(); |
- } |
- else |
- { |
- $rules.= &do_lib_rule( |
- "\$(CRYPTOOBJ) \$(O_FIPSCANISTER)", |
- "\$(O_CRYPTO)", "$crypto", |
- $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)"); |
- } |
- } |
- else |
- { |
- $rules.= &do_lib_rule("\$(CRYPTOOBJ)", |
- "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", ""); |
- $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(FIPSOBJ)", |
- "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", ""); |
- } |
- } |
- else |
- { |
- $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib, |
- "\$(SO_CRYPTO)"); |
- } |
+ my $uc = $_; |
+ $uc =~ tr /a-z/A-Z/; |
+ $rules.= &do_lib_rule("\$(${uc}OBJ)","\$(ENG_D)$o$_$shlibp", "", $shlib, ""); |
-if ($fips) |
- { |
- if ($fipscanisterbuild) |
- { |
- $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", |
- "\$(OBJ_D)${o}fips_start$obj", |
- "\$(FIPSOBJ)", |
- "\$(OBJ_D)${o}fips_end$obj", |
- "\$(FIPS_SHA1_EXE)", ""); |
- $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)", |
- "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj \$(SHA1_ASM_OBJ)", |
- "","\$(EX_LIBS)", 1); |
- } |
- else |
- { |
- $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)", |
- "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(O_FIPSCANISTER)", |
- "","", 1); |
- |
- } |
- $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1); |
- |
} |
-$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)", ($fips && !$shlib) ? 2 : 0); |
+$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); |
print $defs; |
@@ -1021,9 +724,9 @@ |
return("") if $no_dsa && $dir =~ /\/dsa/; |
return("") if $no_dh && $dir =~ /\/dh/; |
return("") if $no_ec && $dir =~ /\/ec/; |
+ return("") if $no_gost && $dir =~ /\/ccgost/; |
return("") if $no_cms && $dir =~ /\/cms/; |
return("") if $no_jpake && $dir =~ /\/jpake/; |
- return("") if !$fips && $dir =~ /^fips/; |
if ($no_des && $dir =~ /\/des/) |
{ |
if ($val =~ /read_pwd/) |
@@ -1035,6 +738,7 @@ |
return("") if $no_sock && $dir =~ /\/proxy/; |
return("") if $no_bf && $dir =~ /\/bf/; |
return("") if $no_cast && $dir =~ /\/cast/; |
+ return("") if $no_whirlpool && $dir =~ /\/whrlpool/; |
$val =~ s/^\s*(.*)\s*$/$1/; |
@a=split(/\s+/,$val); |
@@ -1052,8 +756,8 @@ |
@a=grep(!/^e_camellia$/,@a) if $no_camellia; |
@a=grep(!/^e_seed$/,@a) if $no_seed; |
- @a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2; |
- @a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3; |
+ #@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2; |
+ #@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3; |
@a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock; |
@@ -1127,6 +831,7 @@ |
else { $pf=$postfix; } |
if ($_ =~ /BN_ASM/) { $t="$_ "; } |
elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; } |
+ elsif ($_ =~ /AES_ASM/){ $t="$_ "; } |
elsif ($_ =~ /DES_ENC/) { $t="$_ "; } |
elsif ($_ =~ /BF_ENC/) { $t="$_ "; } |
elsif ($_ =~ /CAST_ENC/){ $t="$_ "; } |
@@ -1134,8 +839,8 @@ |
elsif ($_ =~ /RC5_ENC/) { $t="$_ "; } |
elsif ($_ =~ /MD5_ASM/) { $t="$_ "; } |
elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; } |
- elsif ($_ =~ /AES_ASM/){ $t="$_ "; } |
elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; } |
+ elsif ($_ =~ /WHIRLPOOL_ASM/){ $t="$_ "; } |
elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; } |
else { $t="$location${o}$_$pf "; } |
@@ -1163,6 +868,13 @@ |
return($ret); |
} |
+# return the leading path |
+sub dname |
+ { |
+ my $ret=shift; |
+ $ret =~ s/(^.*)[\\\/][^\\\/]+$/$1/; |
+ return($ret); |
+ } |
############################################################## |
# do a rule for each file that says 'compile' to new direcory |
@@ -1170,19 +882,61 @@ |
sub do_compile_rule |
{ |
local($to,$files,$ex)=@_; |
- local($ret,$_,$n); |
- |
+ local($ret,$_,$n,$d,$s); |
+ |
$files =~ s/\//$o/g if $o ne '/'; |
foreach (split(/\s+/,$files)) |
{ |
$n=&bname($_); |
- $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex) |
+ $d=&dname($_); |
+ if (-f "${_}.c") |
+ { |
+ $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex) |
+ } |
+ elsif (-f ($s="${d}${o}asm${o}${n}.pl") or |
+ ($s=~s/sha256/sha512/ and -f $s) or |
+ -f ($s="${d}${o}${n}.pl")) |
+ { |
+ $ret.=&perlasm_compile_target("$to${o}$n$obj",$s,$n); |
+ } |
+ elsif (-f ($s="${d}${o}asm${o}${n}.S") or |
+ -f ($s="${d}${o}${n}.S")) |
+ { |
+ $ret.=&Sasm_compile_target("$to${o}$n$obj",$s,$n); |
+ } |
+ else { die "no rule for $_"; } |
} |
return($ret); |
} |
############################################################## |
# do a rule for each file that says 'compile' to new direcory |
+sub perlasm_compile_target |
+ { |
+ my($target,$source,$bname)=@_; |
+ my($ret); |
+ |
+ $bname =~ s/(.*)\.[^\.]$/$1/; |
+ $ret ="\$(TMP_D)$o$bname.asm: $source\n"; |
+ $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n\n"; |
+ $ret.="$target: \$(TMP_D)$o$bname.asm\n"; |
+ $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n"; |
+ return($ret); |
+ } |
+ |
+sub Sasm_compile_target |
+ { |
+ my($target,$source,$bname)=@_; |
+ my($ret); |
+ |
+ $bname =~ s/(.*)\.[^\.]$/$1/; |
+ $ret ="\$(TMP_D)$o$bname.asm: $source\n"; |
+ $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n\n"; |
+ $ret.="$target: \$(TMP_D)$o$bname.asm\n"; |
+ $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n"; |
+ return($ret); |
+ } |
+ |
sub cc_compile_target |
{ |
local($target,$source,$ex_flags)=@_; |
@@ -1205,13 +959,25 @@ |
$target =~ s/\//$o/g if $o ne "/"; |
$src =~ s/\//$o/g if $o ne "/"; |
- @s=split(/\s+/,$src); |
@t=split(/\s+/,$target); |
+ @s=split(/\s+/,$src); |
+ |
for ($i=0; $i<=$#s; $i++) |
{ |
- $ret.="$t[$i]: $s[$i]\n"; |
- $ret.="\t\$(ASM) $afile$t[$i] \$(SRC_D)$o$s[$i]\n\n"; |
+ my $objfile = $t[$i]; |
+ my $srcfile = $s[$i]; |
+ |
+ if ($perl_asm == 1) |
+ { |
+ my $plasm = $objfile; |
+ $plasm =~ s/${obj}/.pl/; |
+ $ret.="$srcfile: $plasm\n"; |
+ $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) >$srcfile\n\n"; |
+ } |
+ |
+ $ret.="$objfile: $srcfile\n"; |
+ $ret.="\t\$(ASM) $afile$objfile \$(SRC_D)$o$srcfile\n\n"; |
} |
return($ret); |
} |
@@ -1275,6 +1041,7 @@ |
"no-sha1" => \$no_sha1, |
"no-ripemd" => \$no_ripemd, |
"no-mdc2" => \$no_mdc2, |
+ "no-whirlpool" => \$no_whirlpool, |
"no-patents" => |
[\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa], |
"no-rsa" => \$no_rsa, |
@@ -1283,7 +1050,6 @@ |
"no-hmac" => \$no_hmac, |
"no-asm" => \$no_asm, |
"nasm" => \$nasm, |
- "ml64" => \$ml64, |
"nw-nasm" => \$nw_nasm, |
"nw-mwasm" => \$nw_mwasm, |
"gaswin" => \$gaswin, |
@@ -1292,13 +1058,13 @@ |
"no-tlsext" => \$no_tlsext, |
"no-cms" => \$no_cms, |
"no-jpake" => \$no_jpake, |
- "no-capieng" => \$no_capieng, |
"no-err" => \$no_err, |
"no-sock" => \$no_sock, |
"no-krb5" => \$no_krb5, |
"no-ec" => \$no_ec, |
"no-ecdsa" => \$no_ecdsa, |
"no-ecdh" => \$no_ecdh, |
+ "no-gost" => \$no_gost, |
"no-engine" => \$no_engine, |
"no-hw" => \$no_hw, |
"just-ssl" => |
@@ -1317,11 +1083,9 @@ |
"no-rfc3779" => 0, |
"no-montasm" => 0, |
"no-shared" => 0, |
+ "no-store" => 0, |
"no-zlib" => 0, |
"no-zlib-dynamic" => 0, |
- "fips" => \$fips, |
- "fipscanisterbuild" => [\$fips, \$fipscanisterbuild], |
- "fipsdso" => [\$fips, \$fipscanisterbuild, \$fipsdso], |
); |
if (exists $valid_options{$_}) |
@@ -1398,31 +1162,3 @@ |
else { return(0); } |
return(1); |
} |
- |
-sub fipslib_error |
- { |
- print STDERR "***FIPS module directory sanity check failed***\n"; |
- print STDERR "FIPS module build failed, or was deleted\n"; |
- print STDERR "Please rebuild FIPS module.\n"; |
- exit 1; |
- } |
- |
-sub fips_check_files |
- { |
- my $dir = shift @_; |
- my $ret = 1; |
- if (!-d $dir) |
- { |
- print STDERR "FIPS module directory $dir does not exist\n"; |
- fipslib_error(); |
- } |
- foreach (@_) |
- { |
- if (!-f "$dir${o}$_") |
- { |
- print STDERR "FIPS module file $_ does not exist!\n"; |
- $ret = 0; |
- } |
- } |
- fipslib_error() if ($ret == 0); |
- } |