aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Cook <busterb@gmail.com>2019-01-20 19:56:07 -0600
committerBrent Cook <busterb@gmail.com>2019-01-20 20:03:37 -0600
commit72bb1ed61834c37819c9d4fce516a0360ca0095e (patch)
tree2921206ebe196551cf3d74b5a759653fa4836460
parent74553e53aa4a5486b800f91bf42c50fedb16d65d (diff)
downloadportable-72bb1ed61834c37819c9d4fce516a0360ca0095e.tar.gz
portable-72bb1ed61834c37819c9d4fce516a0360ca0095e.tar.bz2
portable-72bb1ed61834c37819c9d4fce516a0360ca0095e.zip
generate masm and mingw64 assembly
-rw-r--r--crypto/Makefile.am6
-rw-r--r--crypto/Makefile.am.masm-x86_6441
-rw-r--r--crypto/Makefile.am.mingw64-x86_6441
-rwxr-xr-xupdate.sh14
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 =
197include Makefile.am.elf-arm 197include Makefile.am.elf-arm
198include Makefile.am.elf-x86_64 198include Makefile.am.elf-x86_64
199include Makefile.am.macosx-x86_64 199include Makefile.am.macosx-x86_64
200include Makefile.am.masm-x86_64
201include Makefile.am.mingw64-x86_64
200 202
201if !HOST_ASM_ELF_ARM 203if !HOST_ASM_ELF_ARM
202if !HOST_ASM_ELF_X86_64 204if !HOST_ASM_ELF_X86_64
203if !HOST_ASM_MACOSX_X86_64 205if !HOST_ASM_MACOSX_X86_64
206if !HOST_ASM_MASM_X86_64
207if !HOST_ASM_MINGW64_X86_64
204libcrypto_la_SOURCES += aes/aes_cbc.c 208libcrypto_la_SOURCES += aes/aes_cbc.c
205libcrypto_la_SOURCES += aes/aes_core.c 209libcrypto_la_SOURCES += aes/aes_core.c
206libcrypto_la_SOURCES += camellia/camellia.c 210libcrypto_la_SOURCES += camellia/camellia.c
@@ -211,6 +215,8 @@ libcrypto_la_SOURCES += whrlpool/wp_block.c
211endif 215endif
212endif 216endif
213endif 217endif
218endif
219endif
214 220
215libcrypto_la_SOURCES += cpt_err.c 221libcrypto_la_SOURCES += cpt_err.c
216libcrypto_la_SOURCES += cryptlib.c 222libcrypto_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
2ASM_X86_64_MASM = aes/aes-masm-x86_64.S
3ASM_X86_64_MASM += aes/bsaes-masm-x86_64.S
4ASM_X86_64_MASM += aes/vpaes-masm-x86_64.S
5ASM_X86_64_MASM += aes/aesni-masm-x86_64.S
6ASM_X86_64_MASM += aes/aesni-sha1-masm-x86_64.S
7ASM_X86_64_MASM += bn/modexp512-masm-x86_64.S
8ASM_X86_64_MASM += bn/mont-masm-x86_64.S
9ASM_X86_64_MASM += bn/mont5-masm-x86_64.S
10ASM_X86_64_MASM += bn/gf2m-masm-x86_64.S
11ASM_X86_64_MASM += camellia/cmll-masm-x86_64.S
12ASM_X86_64_MASM += md5/md5-masm-x86_64.S
13ASM_X86_64_MASM += modes/ghash-masm-x86_64.S
14ASM_X86_64_MASM += rc4/rc4-masm-x86_64.S
15ASM_X86_64_MASM += rc4/rc4-md5-masm-x86_64.S
16ASM_X86_64_MASM += sha/sha1-masm-x86_64.S
17ASM_X86_64_MASM += sha/sha256-masm-x86_64.S
18ASM_X86_64_MASM += sha/sha512-masm-x86_64.S
19ASM_X86_64_MASM += whrlpool/wp-masm-x86_64.S
20ASM_X86_64_MASM += cpuid-masm-x86_64.S
21
22EXTRA_DIST += $(ASM_X86_64_MASM)
23
24if HOST_ASM_MASM_X86_64
25libcrypto_la_CPPFLAGS += -DAES_ASM
26libcrypto_la_CPPFLAGS += -DBSAES_ASM
27libcrypto_la_CPPFLAGS += -DVPAES_ASM
28libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m
32libcrypto_la_CPPFLAGS += -DMD5_ASM
33libcrypto_la_CPPFLAGS += -DGHASH_ASM
34libcrypto_la_CPPFLAGS += -DRSA_ASM
35libcrypto_la_CPPFLAGS += -DSHA1_ASM
36libcrypto_la_CPPFLAGS += -DSHA256_ASM
37libcrypto_la_CPPFLAGS += -DSHA512_ASM
38libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_MASM)
41endif
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
2ASM_X86_64_MINGW64 = aes/aes-mingw64-x86_64.S
3ASM_X86_64_MINGW64 += aes/bsaes-mingw64-x86_64.S
4ASM_X86_64_MINGW64 += aes/vpaes-mingw64-x86_64.S
5ASM_X86_64_MINGW64 += aes/aesni-mingw64-x86_64.S
6ASM_X86_64_MINGW64 += aes/aesni-sha1-mingw64-x86_64.S
7ASM_X86_64_MINGW64 += bn/modexp512-mingw64-x86_64.S
8ASM_X86_64_MINGW64 += bn/mont-mingw64-x86_64.S
9ASM_X86_64_MINGW64 += bn/mont5-mingw64-x86_64.S
10ASM_X86_64_MINGW64 += bn/gf2m-mingw64-x86_64.S
11ASM_X86_64_MINGW64 += camellia/cmll-mingw64-x86_64.S
12ASM_X86_64_MINGW64 += md5/md5-mingw64-x86_64.S
13ASM_X86_64_MINGW64 += modes/ghash-mingw64-x86_64.S
14ASM_X86_64_MINGW64 += rc4/rc4-mingw64-x86_64.S
15ASM_X86_64_MINGW64 += rc4/rc4-md5-mingw64-x86_64.S
16ASM_X86_64_MINGW64 += sha/sha1-mingw64-x86_64.S
17ASM_X86_64_MINGW64 += sha/sha256-mingw64-x86_64.S
18ASM_X86_64_MINGW64 += sha/sha512-mingw64-x86_64.S
19ASM_X86_64_MINGW64 += whrlpool/wp-mingw64-x86_64.S
20ASM_X86_64_MINGW64 += cpuid-mingw64-x86_64.S
21
22EXTRA_DIST += $(ASM_X86_64_MINGW64)
23
24if HOST_ASM_MINGW64_X86_64
25libcrypto_la_CPPFLAGS += -DAES_ASM
26libcrypto_la_CPPFLAGS += -DBSAES_ASM
27libcrypto_la_CPPFLAGS += -DVPAES_ASM
28libcrypto_la_CPPFLAGS += -DOPENSSL_IA32_SSE2
29libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT
30libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_MONT5
31libcrypto_la_CPPFLAGS += -DOPENSSL_BN_ASM_GF2m
32libcrypto_la_CPPFLAGS += -DMD5_ASM
33libcrypto_la_CPPFLAGS += -DGHASH_ASM
34libcrypto_la_CPPFLAGS += -DRSA_ASM
35libcrypto_la_CPPFLAGS += -DSHA1_ASM
36libcrypto_la_CPPFLAGS += -DSHA256_ASM
37libcrypto_la_CPPFLAGS += -DSHA512_ASM
38libcrypto_la_CPPFLAGS += -DWHIRLPOOL_ASM
39libcrypto_la_CPPFLAGS += -DOPENSSL_CPUID_OBJ
40libcrypto_la_SOURCES += $(ASM_X86_64_MINGW64)
41endif
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_]' >
161# generate assembly crypto algorithms 161# generate assembly crypto algorithms
162asm_src=$libcrypto_src 162asm_src=$libcrypto_src
163gen_asm_stdout() { 163gen_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}
172gen_asm() { 176gen_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
194for abi in elf macosx; do 202for 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