mirror of
https://github.com/openssl/openssl.git
synced 2024-12-14 20:43:46 +08:00
Automate assembler support in mk1mf even further.
This commit is contained in:
parent
7398053149
commit
4287ade5b4
@ -121,7 +121,7 @@ my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o mo86-cof.o:dx86-cof.o yx8
|
||||
my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o mo86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o sha256x86-out.o sha512x86-out.o:cx86-out.o:rx86-out.o:rm86-out.o:r586-out.o:wp_block.o w86mmx-out.o:";
|
||||
my $x86_macosx_asm="x86cpuid-macosx.o:bn86-macosx.o co86-macosx.o mo86-macosx.o:dx86-macosx.o yx86-macosx.o:ax86-macosx.o:bx86-macosx.o:mx86-macosx.o:sx86-macosx.o sha256x86-macosx.o sha512x86-macosx.o:cx86-macosx.o:rx86-macosx.o:rm86-macosx.o:r586-macosx.o:wp_block.o w86mmx-macosx.o:";
|
||||
|
||||
my $x86_win32_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp-mmx.o:";
|
||||
my $x86_win32_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:";
|
||||
|
||||
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:";
|
||||
my $ia64_asm="ia64cpuid.o:bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::::";
|
||||
@ -1259,7 +1259,7 @@ $cpuid_obj="" if ($processor eq "386");
|
||||
$bn_obj = $bn_asm unless $bn_obj ne "";
|
||||
# bn86* is the only one implementing bn_*_part_words
|
||||
$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn(86|-586)/);
|
||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
|
||||
$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/);
|
||||
|
||||
$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
|
||||
|
||||
|
149
util/mk1mf.pl
149
util/mk1mf.pl
@ -437,33 +437,6 @@ LINK=$link
|
||||
LFLAGS=$lflags
|
||||
RSC=$rsc
|
||||
|
||||
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
|
||||
WHIRLPOOL_ASM_OBJ=$whirlpool_asm_obj
|
||||
WHIRLPOOL_ASM_SRC=$whirlpool_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
|
||||
@ -656,74 +629,6 @@ foreach (values %lib_nam)
|
||||
next;
|
||||
}
|
||||
|
||||
if (($aes_asm_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$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 (($bn_asm_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$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 "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$lib_obj .= "\$(BNCO_ASM_OBJ)";
|
||||
$rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src);
|
||||
}
|
||||
if (($des_enc_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$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)/;
|
||||
$lib_obj =~ s/\s\S*\/rc4_skey\S*//;
|
||||
$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 (($sha1_asm_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$lib_obj =~ s/\s(\S*\/sha1dgst\S*)/ $1 \$(SHA1_ASM_OBJ)/;
|
||||
$rules.=&do_asm_rule($sha1_asm_obj,$sha1_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);
|
||||
}
|
||||
if (($whirlpool_asm_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$lib_obj =~ s/\s(\S*\/wp_dgst\S*)/ $1 \$(WHIRLPOOL_ASM_OBJ)/;
|
||||
$rules.=&do_asm_rule($whirlpool_asm_obj,$whirlpool_asm_src);
|
||||
}
|
||||
if (($cpuid_asm_obj ne "") && ($_ eq "CRYPTO"))
|
||||
{
|
||||
$lib_obj =~ s/\s\S*\/mem_clr\S*/ \$(CPUID_ASM_OBJ)/;
|
||||
$rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_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);
|
||||
@ -940,6 +845,13 @@ sub bname
|
||||
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
|
||||
@ -947,19 +859,60 @@ sub bname
|
||||
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
|
||||
-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)=@_;
|
||||
|
@ -67,6 +67,8 @@ my @dirs = (
|
||||
"tools"
|
||||
);
|
||||
|
||||
%top;
|
||||
|
||||
foreach (@dirs) {
|
||||
&files_dir ($_, "Makefile");
|
||||
}
|
||||
@ -110,8 +112,8 @@ while (<IN>)
|
||||
$o =~ s/\s+$//;
|
||||
$o =~ s/\s+/ /g;
|
||||
|
||||
$o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g;
|
||||
$sym{$s}=$o;
|
||||
$o =~ s/\$[({]([^)}]+)[)}]/$top{$1} or $sym{$1}/ge;
|
||||
$sym{$s}=($top{$s} or $o);
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +123,15 @@ foreach (sort keys %sym)
|
||||
{
|
||||
print "$_=$sym{$_}\n";
|
||||
}
|
||||
if ($dir eq "." && defined($sym{"BUILDENV"}))
|
||||
{
|
||||
foreach (split(' ',$sym{"BUILDENV"}))
|
||||
{
|
||||
/^(.+)=/;
|
||||
$top{$1}=$sym{$1};
|
||||
}
|
||||
}
|
||||
|
||||
print "RELATIVE_DIRECTORY=\n";
|
||||
|
||||
close (IN);
|
||||
|
@ -316,7 +316,7 @@ sub win32_import_asm
|
||||
}
|
||||
|
||||
$$oref = "";
|
||||
$mf_var =~ s/\.o/.obj/g;
|
||||
$mf_var =~ s/\.o$/.obj/g;
|
||||
|
||||
foreach (split(/ /, $mf_var))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user