generate masm and mingw64 assembly

This commit is contained in:
Brent Cook 2019-01-20 19:56:07 -06:00
parent 74553e53aa
commit 72bb1ed618
4 changed files with 99 additions and 3 deletions

View File

@ -197,10 +197,14 @@ EXTRA_libcrypto_la_SOURCES =
include Makefile.am.elf-arm
include Makefile.am.elf-x86_64
include Makefile.am.macosx-x86_64
include Makefile.am.masm-x86_64
include Makefile.am.mingw64-x86_64
if !HOST_ASM_ELF_ARM
if !HOST_ASM_ELF_X86_64
if !HOST_ASM_MACOSX_X86_64
if !HOST_ASM_MASM_X86_64
if !HOST_ASM_MINGW64_X86_64
libcrypto_la_SOURCES += aes/aes_cbc.c
libcrypto_la_SOURCES += aes/aes_core.c
libcrypto_la_SOURCES += camellia/camellia.c
@ -211,6 +215,8 @@ libcrypto_la_SOURCES += whrlpool/wp_block.c
endif
endif
endif
endif
endif
libcrypto_la_SOURCES += cpt_err.c
libcrypto_la_SOURCES += cryptlib.c

View File

@ -0,0 +1,41 @@
ASM_X86_64_MASM = aes/aes-masm-x86_64.S
ASM_X86_64_MASM += aes/bsaes-masm-x86_64.S
ASM_X86_64_MASM += aes/vpaes-masm-x86_64.S
ASM_X86_64_MASM += aes/aesni-masm-x86_64.S
ASM_X86_64_MASM += aes/aesni-sha1-masm-x86_64.S
ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S
ASM_X86_64_MASM += bn/mont-masm-x86_64.S
ASM_X86_64_MASM += bn/mont5-masm-x86_64.S
ASM_X86_64_MASM += bn/gf2m-masm-x86_64.S
ASM_X86_64_MASM += camellia/cmll-masm-x86_64.S
ASM_X86_64_MASM += md5/md5-masm-x86_64.S
ASM_X86_64_MASM += modes/ghash-masm-x86_64.S
ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S
ASM_X86_64_MASM += rc4/rc4-md5-masm-x86_64.S
ASM_X86_64_MASM += sha/sha1-masm-x86_64.S
ASM_X86_64_MASM += sha/sha256-masm-x86_64.S
ASM_X86_64_MASM += sha/sha512-masm-x86_64.S
ASM_X86_64_MASM += whrlpool/wp-masm-x86_64.S
ASM_X86_64_MASM += cpuid-masm-x86_64.S
EXTRA_DIST += $(ASM_X86_64_MASM)
if HOST_ASM_MASM_X86_64
libcrypto_la_CPPFLAGS += -DAES_ASM
libcrypto_la_CPPFLAGS += -DBSAES_ASM
libcrypto_la_CPPFLAGS += -DVPAES_ASM
libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m
libcrypto_la_CPPFLAGS += -DMD5_ASM
libcrypto_la_CPPFLAGS += -DGHASH_ASM
libcrypto_la_CPPFLAGS += -DRSA_ASM
libcrypto_la_CPPFLAGS += -DSHA1_ASM
libcrypto_la_CPPFLAGS += -DSHA256_ASM
libcrypto_la_CPPFLAGS += -DSHA512_ASM
libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
libcrypto_la_SOURCES += $(ASM_X86_64_MASM)
endif

View File

@ -0,0 +1,41 @@
ASM_X86_64_MINGW64 = aes/aes-mingw64-x86_64.S
ASM_X86_64_MINGW64 += aes/bsaes-mingw64-x86_64.S
ASM_X86_64_MINGW64 += aes/vpaes-mingw64-x86_64.S
ASM_X86_64_MINGW64 += aes/aesni-mingw64-x86_64.S
ASM_X86_64_MINGW64 += aes/aesni-sha1-mingw64-x86_64.S
ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S
ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S
ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S
ASM_X86_64_MINGW64 += bn/gf2m-mingw64-x86_64.S
ASM_X86_64_MINGW64 += camellia/cmll-mingw64-x86_64.S
ASM_X86_64_MINGW64 += md5/md5-mingw64-x86_64.S
ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S
ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S
ASM_X86_64_MINGW64 += rc4/rc4-md5-mingw64-x86_64.S
ASM_X86_64_MINGW64 += sha/sha1-mingw64-x86_64.S
ASM_X86_64_MINGW64 += sha/sha256-mingw64-x86_64.S
ASM_X86_64_MINGW64 += sha/sha512-mingw64-x86_64.S
ASM_X86_64_MINGW64 += whrlpool/wp-mingw64-x86_64.S
ASM_X86_64_MINGW64 += cpuid-mingw64-x86_64.S
EXTRA_DIST += $(ASM_X86_64_MINGW64)
if HOST_ASM_MINGW64_X86_64
libcrypto_la_CPPFLAGS += -DAES_ASM
libcrypto_la_CPPFLAGS += -DBSAES_ASM
libcrypto_la_CPPFLAGS += -DVPAES_ASM
libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m
libcrypto_la_CPPFLAGS += -DMD5_ASM
libcrypto_la_CPPFLAGS += -DGHASH_ASM
libcrypto_la_CPPFLAGS += -DRSA_ASM
libcrypto_la_CPPFLAGS += -DSHA1_ASM
libcrypto_la_CPPFLAGS += -DSHA256_ASM
libcrypto_la_CPPFLAGS += -DSHA512_ASM
libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64)
endif

View File

@ -161,7 +161,11 @@ $GREP -v OPENSSL_ia32cap_P $libcrypto_src/Symbols.list | $GREP '^[A-Za-z0-9_]' >
# generate assembly crypto algorithms
asm_src=$libcrypto_src
gen_asm_stdout() {
perl $asm_src/$2 $1 > $3.tmp
if [ $1 = "mingw64" ]; then
CC=true perl $asm_src/$2 $1 > $3.tmp
else
perl $asm_src/$2 $1 > $3.tmp
fi
[ $1 = "elf" ] && cat <<-EOF >> $3.tmp
#if defined(HAVE_GNU_STACK)
.section .note.GNU-stack,"",%progbits
@ -170,7 +174,11 @@ gen_asm_stdout() {
$MV $3.tmp $3
}
gen_asm() {
perl $asm_src/$2 $1 $3.tmp
if [ $1 = "mingw64" ]; then
CC=true perl $asm_src/$2 $1 $3.tmp
else
perl $asm_src/$2 $1 $3.tmp
fi
[ $1 = "elf" ] && cat <<-EOF >> $3.tmp
#if defined(HAVE_GNU_STACK)
.section .note.GNU-stack,"",%progbits
@ -191,7 +199,7 @@ $CP $libcrypto_src/armv4cpuid.S crypto
$CP $libcrypto_src/armcap.c crypto
$CP $libcrypto_src/arm_arch.h crypto
for abi in elf macosx; do
for abi in elf macosx masm mingw64; do
echo generating x86_64 ASM source for $abi
gen_asm_stdout $abi aes/asm/aes-x86_64.pl crypto/aes/aes-$abi-x86_64.S
gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl crypto/aes/vpaes-$abi-x86_64.S