提交 e87e380a 编写于 作者: R Richard Levitte

Unified - adapt the generation of sha assembler to use GENERATE

This gets rid of the BEGINRAW..ENDRAW sections in crypto/sha/build.info.

This also moves the assembler generating perl scripts to take the
output file name as last command line argument, where necessary.
Reviewed-by: NAndy Polyakov <appro@openssl.org>
上级 3c9d51ce
...@@ -40,32 +40,32 @@ lib: $(LIBOBJ) ...@@ -40,32 +40,32 @@ lib: $(LIBOBJ)
@touch lib @touch lib
sha1-586.s: asm/sha1-586.pl ../perlasm/x86asm.pl sha1-586.s: asm/sha1-586.pl ../perlasm/x86asm.pl
$(PERL) asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ $(PERL) asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) $@
sha256-586.s: asm/sha256-586.pl ../perlasm/x86asm.pl sha256-586.s: asm/sha256-586.pl ../perlasm/x86asm.pl
$(PERL) asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ $(PERL) asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) $@
sha512-586.s: asm/sha512-586.pl ../perlasm/x86asm.pl sha512-586.s: asm/sha512-586.pl ../perlasm/x86asm.pl
$(PERL) asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ $(PERL) asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) $@
sha1-ia64.s: asm/sha1-ia64.pl sha1-ia64.s: asm/sha1-ia64.pl
(cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS)) (cd asm; $(PERL) sha1-ia64.pl $(CFLAGS) ../$@)
sha256-ia64.s: asm/sha512-ia64.pl sha256-ia64.s: asm/sha512-ia64.pl
(cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) (cd asm; $(PERL) sha512-ia64.pl $(CFLAGS) ../$@)
sha512-ia64.s: asm/sha512-ia64.pl sha512-ia64.s: asm/sha512-ia64.pl
(cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) (cd asm; $(PERL) sha512-ia64.pl $(CFLAGS) ../$@)
sha256-armv4.S: asm/sha256-armv4.pl sha256-armv4.S: asm/sha256-armv4.pl
$(PERL) $< $(PERLASM_SCHEME) $@ $(PERL) $< $(PERLASM_SCHEME) $@
sha1-alpha.s: asm/sha1-alpha.pl sha1-alpha.s: asm/sha1-alpha.pl
(preproc=$$$$.$@.S; trap "rm $$preproc" INT; \ (preproc=$$$$.$@.S; trap "rm $$preproc" INT; \
$(PERL) asm/sha1-alpha.pl > $$preproc && \ $(PERL) asm/sha1-alpha.pl $$preproc && \
$(CC) -E -P $$preproc > $@ && rm $$preproc) $(CC) -E -P $$preproc > $@ && rm $$preproc)
# Solaris make has to be explicitly told # Solaris make has to be explicitly told
sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $(PERLASM_SCHEME) > $@ sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $(PERLASM_SCHEME) $@
sha1-mb-x86_64.s: asm/sha1-mb-x86_64.pl; $(PERL) asm/sha1-mb-x86_64.pl $(PERLASM_SCHEME) > $@ sha1-mb-x86_64.s: asm/sha1-mb-x86_64.pl; $(PERL) asm/sha1-mb-x86_64.pl $(PERLASM_SCHEME) $@
sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@ sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
sha256-mb-x86_64.s: asm/sha256-mb-x86_64.pl; $(PERL) asm/sha256-mb-x86_64.pl $(PERLASM_SCHEME) > $@ sha256-mb-x86_64.s: asm/sha256-mb-x86_64.pl; $(PERL) asm/sha256-mb-x86_64.pl $(PERLASM_SCHEME) $@
sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@ sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
sha1-sparcv9.S: asm/sha1-sparcv9.pl; $(PERL) asm/sha1-sparcv9.pl $(PERLASM_SCHEME) $@ sha1-sparcv9.S: asm/sha1-sparcv9.pl; $(PERL) asm/sha1-sparcv9.pl $(PERLASM_SCHEME) $@
sha256-sparcv9.S:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $(PERLASM_SCHEME) $@ sha256-sparcv9.S:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $(PERLASM_SCHEME) $@
......
...@@ -113,6 +113,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; ...@@ -113,6 +113,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
push(@INC,"${dir}","${dir}../../perlasm"); push(@INC,"${dir}","${dir}../../perlasm");
require "x86asm.pl"; require "x86asm.pl";
$output=pop;
open STDOUT,">$output";
&asm_init($ARGV[0],"sha1-586.pl",$ARGV[$#ARGV] eq "386"); &asm_init($ARGV[0],"sha1-586.pl",$ARGV[$#ARGV] eq "386");
$xmm=$ymm=0; $xmm=$ymm=0;
...@@ -1474,3 +1477,5 @@ sub Xtail_avx() ...@@ -1474,3 +1477,5 @@ sub Xtail_avx()
&asciz("SHA1 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>"); &asciz("SHA1 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>");
&asm_finish(); &asm_finish();
close STDOUT;
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
# Performance under big-endian OS such as HP-UX is 179MBps*1GHz, which # Performance under big-endian OS such as HP-UX is 179MBps*1GHz, which
# is >50% better than HP C and >2x better than gcc. # is >50% better than HP C and >2x better than gcc.
$output = pop;
$code=<<___; $code=<<___;
.ident \"sha1-ia64.s, version 1.3\" .ident \"sha1-ia64.s, version 1.3\"
.ident \"IA-64 ISA artwork by Andy Polyakov <appro\@fy.chalmers.se>\" .ident \"IA-64 ISA artwork by Andy Polyakov <appro\@fy.chalmers.se>\"
...@@ -301,5 +303,5 @@ $code.=<<___; ...@@ -301,5 +303,5 @@ $code.=<<___;
stringz "SHA1 block transform for IA64, CRYPTOGAMS by <appro\@openssl.org>" stringz "SHA1 block transform for IA64, CRYPTOGAMS by <appro\@openssl.org>"
___ ___
$output=shift and open STDOUT,">$output"; open STDOUT,">$output" if $output;
print $code; print $code;
...@@ -63,6 +63,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; ...@@ -63,6 +63,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
push(@INC,"${dir}","${dir}../../perlasm"); push(@INC,"${dir}","${dir}../../perlasm");
require "x86asm.pl"; require "x86asm.pl";
$output=pop;
open STDOUT,">$output";
&asm_init($ARGV[0],"sha512-586.pl",$ARGV[$#ARGV] eq "386"); &asm_init($ARGV[0],"sha512-586.pl",$ARGV[$#ARGV] eq "386");
$xmm=$avx=0; $xmm=$avx=0;
...@@ -1279,3 +1282,5 @@ sub bodyx_00_15 () { # +10% ...@@ -1279,3 +1282,5 @@ sub bodyx_00_15 () { # +10%
&function_end_B("sha256_block_data_order"); &function_end_B("sha256_block_data_order");
&asm_finish(); &asm_finish();
close STDOUT;
...@@ -50,6 +50,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; ...@@ -50,6 +50,9 @@ $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
push(@INC,"${dir}","${dir}../../perlasm"); push(@INC,"${dir}","${dir}../../perlasm");
require "x86asm.pl"; require "x86asm.pl";
$output=pop;
open STDOUT,">$output";
&asm_init($ARGV[0],"sha512-586.pl",$ARGV[$#ARGV] eq "386"); &asm_init($ARGV[0],"sha512-586.pl",$ARGV[$#ARGV] eq "386");
$sse2=0; $sse2=0;
...@@ -909,3 +912,5 @@ sub BODY_00_15_ssse3 { # "phase-less" copy of BODY_00_15_sse2 ...@@ -909,3 +912,5 @@ sub BODY_00_15_ssse3 { # "phase-less" copy of BODY_00_15_sse2
&asciz("SHA512 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>"); &asciz("SHA512 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>");
&asm_finish(); &asm_finish();
close STDOUT;
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
# To generate code, pass the file name with either 256 or 512 in its # To generate code, pass the file name with either 256 or 512 in its
# name and compiler flags. # name and compiler flags.
$output=shift; $output=pop;
if ($output =~ /512.*\.[s|asm]/) { if ($output =~ /512.*\.[s|asm]/) {
$SZ=8; $SZ=8;
......
...@@ -2,74 +2,48 @@ LIBS=../../libcrypto ...@@ -2,74 +2,48 @@ LIBS=../../libcrypto
SOURCE[../../libcrypto]=\ SOURCE[../../libcrypto]=\
sha1dgst.c sha1_one.c sha256.c sha512.c {- $target{sha1_asm_src} -} sha1dgst.c sha1_one.c sha256.c sha512.c {- $target{sha1_asm_src} -}
BEGINRAW[Makefile] GENERATE[sha1-586.s]=asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR)
DEPEND[sha1-586.s]=../perlasm/x86asm.pl
GENERATE[sha256-586.s]=asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR)
DEPEND[sha256-586.s]=../perlasm/x86asm.pl
GENERATE[sha512-586.s]=asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR)
DEPEND[sha512-586.s]=../perlasm/x86asm.pl
GENERATE[sha1-ia64.s]=sha1-ia64.pl $(CFLAGS)
GENERATE[sha256-ia64.s]=sha512-ia64.pl $(CFLAGS)
GENERATE[sha512-ia64.s]=sha512-ia64.pl $(CFLAGS)
GENERATE[sha256-armv4.S]=asm/sha256-armv4.pl $(PERLASM_SCHEME)
GENERATE[sha1-alpha.s]=asm/sha1-alpha.pl
GENERATE[sha1-x86_64.s]=asm/sha1-x86_64.pl $(PERLASM_SCHEME)
GENERATE[sha1-mb-x86_64.s]=asm/sha1-mb-x86_64.pl $(PERLASM_SCHEME)
GENERATE[sha256-x86_64.s]=asm/sha512-x86_64.pl $(PERLASM_SCHEME)
GENERATE[sha256-mb-x86_64.s]=asm/sha256-mb-x86_64.pl $(PERLASM_SCHEME)
GENERATE[sha512-x86_64.s]=asm/sha512-x86_64.pl $(PERLASM_SCHEME)
GENERATE[sha1-sparcv9.S]=asm/sha1-sparcv9.pl $(PERLASM_SCHEME)
GENERATE[sha256-sparcv9.S]=asm/sha512-sparcv9.pl $(PERLASM_SCHEME)
GENERATE[sha512-sparcv9.S]=asm/sha512-sparcv9.pl $(PERLASM_SCHEME)
GENERATE[sha1-ppc.s]=asm/sha1-ppc.pl $(PERLASM_SCHEME)
GENERATE[sha256-ppc.s]=asm/sha512-ppc.pl $(PERLASM_SCHEME)
GENERATE[sha512-ppc.s]=asm/sha512-ppc.pl $(PERLASM_SCHEME)
GENERATE[sha256p8-ppc.s]=asm/sha512p8-ppc.pl $(PERLASM_SCHEME)
GENERATE[sha512p8-ppc.s]=asm/sha512p8-ppc.pl $(PERLASM_SCHEME)
GENERATE[sha1-parisc.s]=asm/sha1-parisc.pl $(PERLASM_SCHEME)
GENERATE[sha256-parisc.s]=asm/sha512-parisc.pl $(PERLASM_SCHEME)
GENERATE[sha512-parisc.s]=asm/sha512-parisc.pl $(PERLASM_SCHEME)
GENERATE[sha1-mips.S]=asm/sha1-mips.pl $(PERLASM_SCHEME)
GENERATE[sha256-mips.S]=asm/sha512-mips.pl $(PERLASM_SCHEME)
GENERATE[sha512-mips.S]=asm/sha512-mips.pl $(PERLASM_SCHEME)
BEGINRAW[Makefile(unix)]
##### SHA assembler implementations ##### SHA assembler implementations
{- $builddir -}/sha1-586.s: {- $sourcedir -}/asm/sha1-586.pl {- $sourcetop -}/crypto/perlasm/x86asm.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
{- $builddir -}/sha256-586.s: {- $sourcedir -}/asm/sha256-586.pl {- $sourcetop -}/crypto/perlasm/x86asm.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
{- $builddir -}/sha512-586.s: {- $sourcedir -}/asm/sha512-586.pl {- $sourcetop -}/crypto/perlasm/x86asm.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
{- $builddir -}/sha1-ia64.s: {- $sourcedir -}/asm/sha1-ia64.pl
(cd asm; CC="$(CC)" $(PERL) sha1-ia64.pl ../$@ $(CFLAGS))
{- $builddir -}/sha256-ia64.s: {- $sourcedir -}/asm/sha512-ia64.pl
(cd asm; CC="$(CC)" $(PERL) sha512-ia64.pl ../$@ $(CFLAGS))
{- $builddir -}/sha512-ia64.s: {- $sourcedir -}/asm/sha512-ia64.pl
(cd asm; CC="$(CC)" $(PERL) sha512-ia64.pl ../$@ $(CFLAGS))
{- $builddir -}/sha256-armv4.S: {- $sourcedir -}/asm/sha256-armv4.pl
CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@
{- $builddir -}/sha1-alpha.s: {- $sourcedir -}/asm/sha1-alpha.pl
(preproc=$$$$.$@.S; trap "rm $$preproc" INT; \
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-alpha.pl > $$preproc && \
$(CC) -E -P $$preproc > $@ && rm $$preproc)
# Solaris make has to be explicitly told
{- $builddir -}/sha1-x86_64.s: {- $sourcedir -}/asm/sha1-x86_64.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-x86_64.pl $(PERLASM_SCHEME) > $@
{- $builddir -}/sha1-mb-x86_64.s: {- $sourcedir -}/asm/sha1-mb-x86_64.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-mb-x86_64.pl $(PERLASM_SCHEME) > $@
{- $builddir -}/sha256-x86_64.s:{- $sourcedir -}/asm/sha512-x86_64.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256-mb-x86_64.s: {- $sourcedir -}/asm/sha256-mb-x86_64.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha256-mb-x86_64.pl $(PERLASM_SCHEME) > $@
{- $builddir -}/sha512-x86_64.s:{- $sourcedir -}/asm/sha512-x86_64.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha1-sparcv9.S: {- $sourcedir -}/asm/sha1-sparcv9.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-sparcv9.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256-sparcv9.S:{- $sourcedir -}/asm/sha512-sparcv9.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-sparcv9.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha512-sparcv9.S:{- $sourcedir -}/asm/sha512-sparcv9.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-sparcv9.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha1-ppc.s: {- $sourcedir -}/asm/sha1-ppc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-ppc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256-ppc.s: {- $sourcedir -}/asm/sha512-ppc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha512-ppc.s: {- $sourcedir -}/asm/sha512-ppc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256p8-ppc.s: {- $sourcedir -}/asm/sha512p8-ppc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512p8-ppc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha512p8-ppc.s: {- $sourcedir -}/asm/sha512p8-ppc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512p8-ppc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha1-parisc.s: {- $sourcedir -}/asm/sha1-parisc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-parisc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256-parisc.s:{- $sourcedir -}/asm/sha512-parisc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-parisc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha512-parisc.s:{- $sourcedir -}/asm/sha512-parisc.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-parisc.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha1-mips.S: {- $sourcedir -}/asm/sha1-mips.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha1-mips.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha256-mips.S: {- $sourcedir -}/asm/sha512-mips.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-mips.pl $(PERLASM_SCHEME) $@
{- $builddir -}/sha512-mips.S: {- $sourcedir -}/asm/sha512-mips.pl
CC="$(CC)" $(PERL) {- $sourcedir -}/asm/sha512-mips.pl $(PERLASM_SCHEME) $@
# GNU make "catch all" # GNU make "catch all"
{- $builddir -}/sha1-%.S: {- $sourcedir -}/asm/sha1-%.pl {- $builddir -}/sha1-%.S: {- $sourcedir -}/asm/sha1-%.pl
CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@ CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@
...@@ -77,4 +51,4 @@ BEGINRAW[Makefile] ...@@ -77,4 +51,4 @@ BEGINRAW[Makefile]
CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@ CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@
{- $builddir -}/sha512-%.S: {- $sourcedir -}/asm/sha512-%.pl {- $builddir -}/sha512-%.S: {- $sourcedir -}/asm/sha512-%.pl
CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@ CC="$(CC)" $(PERL) $< $(PERLASM_SCHEME) $@
ENDRAW[Makefile] ENDRAW[Makefile(unix)]
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册