diff options
| author | Brent Cook <busterb@gmail.com> | 2019-01-20 19:56:07 -0600 |
|---|---|---|
| committer | Brent Cook <busterb@gmail.com> | 2019-01-20 20:03:37 -0600 |
| commit | 72bb1ed61834c37819c9d4fce516a0360ca0095e (patch) | |
| tree | 2921206ebe196551cf3d74b5a759653fa4836460 | |
| parent | 74553e53aa4a5486b800f91bf42c50fedb16d65d (diff) | |
| download | portable-72bb1ed61834c37819c9d4fce516a0360ca0095e.tar.gz portable-72bb1ed61834c37819c9d4fce516a0360ca0095e.tar.bz2 portable-72bb1ed61834c37819c9d4fce516a0360ca0095e.zip | |
generate masm and mingw64 assembly
| -rw-r--r-- | crypto/Makefile.am | 6 | ||||
| -rw-r--r-- | crypto/Makefile.am.masm-x86_64 | 41 | ||||
| -rw-r--r-- | crypto/Makefile.am.mingw64-x86_64 | 41 | ||||
| -rwxr-xr-x | update.sh | 14 |
4 files changed, 99 insertions, 3 deletions
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 = | |||
| 197 | include Makefile.am.elf-arm | 197 | include Makefile.am.elf-arm |
| 198 | include Makefile.am.elf-x86_64 | 198 | include Makefile.am.elf-x86_64 |
| 199 | include Makefile.am.macosx-x86_64 | 199 | include Makefile.am.macosx-x86_64 |
| 200 | include Makefile.am.masm-x86_64 | ||
| 201 | include Makefile.am.mingw64-x86_64 | ||
| 200 | 202 | ||
| 201 | if !HOST_ASM_ELF_ARM | 203 | if !HOST_ASM_ELF_ARM |
| 202 | if !HOST_ASM_ELF_X86_64 | 204 | if !HOST_ASM_ELF_X86_64 |
| 203 | if !HOST_ASM_MACOSX_X86_64 | 205 | if !HOST_ASM_MACOSX_X86_64 |
| 206 | if !HOST_ASM_MASM_X86_64 | ||
| 207 | if !HOST_ASM_MINGW64_X86_64 | ||
| 204 | libcrypto_la_SOURCES += aes/aes_cbc.c | 208 | libcrypto_la_SOURCES += aes/aes_cbc.c |
| 205 | libcrypto_la_SOURCES += aes/aes_core.c | 209 | libcrypto_la_SOURCES += aes/aes_core.c |
| 206 | libcrypto_la_SOURCES += camellia/camellia.c | 210 | libcrypto_la_SOURCES += camellia/camellia.c |
| @@ -211,6 +215,8 @@ libcrypto_la_SOURCES += whrlpool/wp_block.c | |||
| 211 | endif | 215 | endif |
| 212 | endif | 216 | endif |
| 213 | endif | 217 | endif |
| 218 | endif | ||
| 219 | endif | ||
| 214 | 220 | ||
| 215 | libcrypto_la_SOURCES += cpt_err.c | 221 | libcrypto_la_SOURCES += cpt_err.c |
| 216 | libcrypto_la_SOURCES += cryptlib.c | 222 | 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 @@ | |||
| 1 | |||
| 2 | ASM_X86_64_MASM = aes/aes-masm-x86_64.S | ||
| 3 | ASM_X86_64_MASM += aes/bsaes-masm-x86_64.S | ||
| 4 | ASM_X86_64_MASM += aes/vpaes-masm-x86_64.S | ||
| 5 | ASM_X86_64_MASM += aes/aesni-masm-x86_64.S | ||
| 6 | ASM_X86_64_MASM += aes/aesni-sha1-masm-x86_64.S | ||
| 7 | ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S | ||
| 8 | ASM_X86_64_MASM += bn/mont-masm-x86_64.S | ||
| 9 | ASM_X86_64_MASM += bn/mont5-masm-x86_64.S | ||
| 10 | ASM_X86_64_MASM += bn/gf2m-masm-x86_64.S | ||
| 11 | ASM_X86_64_MASM += camellia/cmll-masm-x86_64.S | ||
| 12 | ASM_X86_64_MASM += md5/md5-masm-x86_64.S | ||
| 13 | ASM_X86_64_MASM += modes/ghash-masm-x86_64.S | ||
| 14 | ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S | ||
| 15 | ASM_X86_64_MASM += rc4/rc4-md5-masm-x86_64.S | ||
| 16 | ASM_X86_64_MASM += sha/sha1-masm-x86_64.S | ||
| 17 | ASM_X86_64_MASM += sha/sha256-masm-x86_64.S | ||
| 18 | ASM_X86_64_MASM += sha/sha512-masm-x86_64.S | ||
| 19 | ASM_X86_64_MASM += whrlpool/wp-masm-x86_64.S | ||
| 20 | ASM_X86_64_MASM += cpuid-masm-x86_64.S | ||
| 21 | |||
| 22 | EXTRA_DIST += $(ASM_X86_64_MASM) | ||
| 23 | |||
| 24 | if HOST_ASM_MASM_X86_64 | ||
| 25 | libcrypto_la_CPPFLAGS += -DAES_ASM | ||
| 26 | libcrypto_la_CPPFLAGS += -DBSAES_ASM | ||
| 27 | libcrypto_la_CPPFLAGS += -DVPAES_ASM | ||
| 28 | libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 | ||
| 29 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT | ||
| 30 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 | ||
| 31 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m | ||
| 32 | libcrypto_la_CPPFLAGS += -DMD5_ASM | ||
| 33 | libcrypto_la_CPPFLAGS += -DGHASH_ASM | ||
| 34 | libcrypto_la_CPPFLAGS += -DRSA_ASM | ||
| 35 | libcrypto_la_CPPFLAGS += -DSHA1_ASM | ||
| 36 | libcrypto_la_CPPFLAGS += -DSHA256_ASM | ||
| 37 | libcrypto_la_CPPFLAGS += -DSHA512_ASM | ||
| 38 | libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM | ||
| 39 | libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ | ||
| 40 | libcrypto_la_SOURCES += $(ASM_X86_64_MASM) | ||
| 41 | 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 @@ | |||
| 1 | |||
| 2 | ASM_X86_64_MINGW64 = aes/aes-mingw64-x86_64.S | ||
| 3 | ASM_X86_64_MINGW64 += aes/bsaes-mingw64-x86_64.S | ||
| 4 | ASM_X86_64_MINGW64 += aes/vpaes-mingw64-x86_64.S | ||
| 5 | ASM_X86_64_MINGW64 += aes/aesni-mingw64-x86_64.S | ||
| 6 | ASM_X86_64_MINGW64 += aes/aesni-sha1-mingw64-x86_64.S | ||
| 7 | ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S | ||
| 8 | ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S | ||
| 9 | ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S | ||
| 10 | ASM_X86_64_MINGW64 += bn/gf2m-mingw64-x86_64.S | ||
| 11 | ASM_X86_64_MINGW64 += camellia/cmll-mingw64-x86_64.S | ||
| 12 | ASM_X86_64_MINGW64 += md5/md5-mingw64-x86_64.S | ||
| 13 | ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S | ||
| 14 | ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S | ||
| 15 | ASM_X86_64_MINGW64 += rc4/rc4-md5-mingw64-x86_64.S | ||
| 16 | ASM_X86_64_MINGW64 += sha/sha1-mingw64-x86_64.S | ||
| 17 | ASM_X86_64_MINGW64 += sha/sha256-mingw64-x86_64.S | ||
| 18 | ASM_X86_64_MINGW64 += sha/sha512-mingw64-x86_64.S | ||
| 19 | ASM_X86_64_MINGW64 += whrlpool/wp-mingw64-x86_64.S | ||
| 20 | ASM_X86_64_MINGW64 += cpuid-mingw64-x86_64.S | ||
| 21 | |||
| 22 | EXTRA_DIST += $(ASM_X86_64_MINGW64) | ||
| 23 | |||
| 24 | if HOST_ASM_MINGW64_X86_64 | ||
| 25 | libcrypto_la_CPPFLAGS += -DAES_ASM | ||
| 26 | libcrypto_la_CPPFLAGS += -DBSAES_ASM | ||
| 27 | libcrypto_la_CPPFLAGS += -DVPAES_ASM | ||
| 28 | libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2 | ||
| 29 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT | ||
| 30 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5 | ||
| 31 | libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m | ||
| 32 | libcrypto_la_CPPFLAGS += -DMD5_ASM | ||
| 33 | libcrypto_la_CPPFLAGS += -DGHASH_ASM | ||
| 34 | libcrypto_la_CPPFLAGS += -DRSA_ASM | ||
| 35 | libcrypto_la_CPPFLAGS += -DSHA1_ASM | ||
| 36 | libcrypto_la_CPPFLAGS += -DSHA256_ASM | ||
| 37 | libcrypto_la_CPPFLAGS += -DSHA512_ASM | ||
| 38 | libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM | ||
| 39 | libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ | ||
| 40 | libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64) | ||
| 41 | endif | ||
| @@ -161,7 +161,11 @@ $GREP -v OPENSSL_ia32cap_P $libcrypto_src/Symbols.list | $GREP '^[A-Za-z0-9_]' > | |||
| 161 | # generate assembly crypto algorithms | 161 | # generate assembly crypto algorithms |
| 162 | asm_src=$libcrypto_src | 162 | asm_src=$libcrypto_src |
| 163 | gen_asm_stdout() { | 163 | gen_asm_stdout() { |
| 164 | perl $asm_src/$2 $1 > $3.tmp | 164 | if [ $1 = "mingw64" ]; then |
| 165 | CC=true perl $asm_src/$2 $1 > $3.tmp | ||
| 166 | else | ||
| 167 | perl $asm_src/$2 $1 > $3.tmp | ||
| 168 | fi | ||
| 165 | [ $1 = "elf" ] && cat <<-EOF >> $3.tmp | 169 | [ $1 = "elf" ] && cat <<-EOF >> $3.tmp |
| 166 | #if defined(HAVE_GNU_STACK) | 170 | #if defined(HAVE_GNU_STACK) |
| 167 | .section .note.GNU-stack,"",%progbits | 171 | .section .note.GNU-stack,"",%progbits |
| @@ -170,7 +174,11 @@ gen_asm_stdout() { | |||
| 170 | $MV $3.tmp $3 | 174 | $MV $3.tmp $3 |
| 171 | } | 175 | } |
| 172 | gen_asm() { | 176 | gen_asm() { |
| 173 | perl $asm_src/$2 $1 $3.tmp | 177 | if [ $1 = "mingw64" ]; then |
| 178 | CC=true perl $asm_src/$2 $1 $3.tmp | ||
| 179 | else | ||
| 180 | perl $asm_src/$2 $1 $3.tmp | ||
| 181 | fi | ||
| 174 | [ $1 = "elf" ] && cat <<-EOF >> $3.tmp | 182 | [ $1 = "elf" ] && cat <<-EOF >> $3.tmp |
| 175 | #if defined(HAVE_GNU_STACK) | 183 | #if defined(HAVE_GNU_STACK) |
| 176 | .section .note.GNU-stack,"",%progbits | 184 | .section .note.GNU-stack,"",%progbits |
| @@ -191,7 +199,7 @@ $CP $libcrypto_src/armv4cpuid.S crypto | |||
| 191 | $CP $libcrypto_src/armcap.c crypto | 199 | $CP $libcrypto_src/armcap.c crypto |
| 192 | $CP $libcrypto_src/arm_arch.h crypto | 200 | $CP $libcrypto_src/arm_arch.h crypto |
| 193 | 201 | ||
| 194 | for abi in elf macosx; do | 202 | for abi in elf macosx masm mingw64; do |
| 195 | echo generating x86_64 ASM source for $abi | 203 | echo generating x86_64 ASM source for $abi |
| 196 | gen_asm_stdout $abi aes/asm/aes-x86_64.pl crypto/aes/aes-$abi-x86_64.S | 204 | gen_asm_stdout $abi aes/asm/aes-x86_64.pl crypto/aes/aes-$abi-x86_64.S |
| 197 | gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl crypto/aes/vpaes-$abi-x86_64.S | 205 | gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl crypto/aes/vpaes-$abi-x86_64.S |
