From 72bb1ed61834c37819c9d4fce516a0360ca0095e Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Sun, 20 Jan 2019 19:56:07 -0600 Subject: generate masm and mingw64 assembly --- crypto/Makefile.am | 6 ++++++ crypto/Makefile.am.masm-x86_64 | 41 +++++++++++++++++++++++++++++++++++++++ crypto/Makefile.am.mingw64-x86_64 | 41 +++++++++++++++++++++++++++++++++++++++ update.sh | 14 ++++++++++--- 4 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 crypto/Makefile.am.masm-x86_64 create mode 100644 crypto/Makefile.am.mingw64-x86_64 diff --git a/crypto/Makefile.am b/crypto/Makefile.am index 716003c..ce846b4 100644 --- a/crypto/Makefile.am +++ b/crypto/Makefile.am @@ -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 diff --git a/crypto/Makefile.am.masm-x86_64 b/crypto/Makefile.am.masm-x86_64 new file mode 100644 index 0000000..27094c0 --- /dev/null +++ b/crypto/Makefile.am.masm-x86_64 @@ -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 diff --git a/crypto/Makefile.am.mingw64-x86_64 b/crypto/Makefile.am.mingw64-x86_64 new file mode 100644 index 0000000..4afac19 --- /dev/null +++ b/crypto/Makefile.am.mingw64-x86_64 @@ -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 diff --git a/update.sh b/update.sh index 7c656c2..4646bd1 100755 --- a/update.sh +++ b/update.sh @@ -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 -- cgit v1.2.3-55-g6feb