From 2874b775fdb9085a929c8d2928d5900488ddd7d6 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 8 Feb 2017 00:27:11 +0000 Subject: Enable PPC ASM optimisations in OpenSSL Doesn't work; gcc doesn't like the bclr instruction in ppccpuid.s --- sdk/Makefile | 7 ++++++- sdk/recipes/patches/openssl/Configure.p | 2 +- sdk/recipes/patches/openssl/ppc-amigaos/crypto.Makefile.p | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 sdk/recipes/patches/openssl/ppc-amigaos/crypto.Makefile.p diff --git a/sdk/Makefile b/sdk/Makefile index 2f8801d..b5a6d29 100644 --- a/sdk/Makefile +++ b/sdk/Makefile @@ -90,6 +90,7 @@ ifeq ($(TARGET),arm-unknown-riscos) SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, $(COMMON_SDK_ITEMS) libjpeg-turbo.d) EXTRAARGS_LIBCARES := --disable-shared EXTRAARGS_LIBCURL := --enable-nonblocking --enable-ares --with-random="/dev/urandom" $(LIBCURL_DISABLES) + EXTRAARGS_OPENSSL := no-asm endif ifeq ($(TARGET),m68k-atari-mint) @@ -98,6 +99,7 @@ ifeq ($(TARGET),m68k-atari-mint) EXTRAARGS_LIBCURL := --enable-optimize --enable-nonblocking --enable-ares --with-random="/dev/urandom" --disable-manual --disable-curldebug --disable-thread --disable-threaded-resolver EXTRAARGS_LIBICONV := --enable-extra-encodings LIBICONV_ENV := CFLAGS="-DPATH_MAX=1024" + EXTRAARGS_OPENSSL := no-asm endif ifeq ($(TARGET),m5475-atari-mint) @@ -106,6 +108,7 @@ ifeq ($(TARGET),m5475-atari-mint) EXTRAARGS_LIBCURL := --enable-optimize --enable-nonblocking --enable-ares --with-random="/dev/urandom" --disable-manual --disable-curldebug --disable-thread --disable-threaded-resolver EXTRAARGS_LIBICONV := --enable-extra-encodings LIBICONV_ENV := CFLAGS="-DPATH_MAX=1024" + EXTRAARGS_OPENSSL := no-asm endif ifeq ($(TARGET),ppc-amigaos) @@ -119,6 +122,7 @@ ifeq ($(TARGET),i686-w64-mingw32) EXTRAARGS_LIBCARES := --disable-shared EXTRAARGS_LIBCURL := --enable-nonblocking --enable-ares --disable-ldap --without-random LIBCURL_ENV := CFLAGS="-DCARES_STATICLIB" LIBS="-lgdi32" + EXTRAARGS_OPENSSL := no-asm endif ifeq ($(TARGET),m68k-unknown-amigaos) @@ -129,6 +133,7 @@ ifeq ($(TARGET),m68k-unknown-amigaos) LIBJPEG_ENV := LDFLAGS="-lm" LIBJPEG_TURBO_ENV := LDFLAGS="-lm" LIBCURL_ENV := LIBS="-lm" + EXTRAARGS_OPENSSL := no-asm endif ifeq ($(SDK_ITEMS),) @@ -339,7 +344,7 @@ $(BUILDSTEPS)/openssl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d $(BUILDST ifneq ($(realpath $(RECIPES)/patches/openssl/$(TARGET)),) for p in `ls $(RECIPES)/patches/openssl/$(TARGET)/*.p` ; do $(PATCH) -d $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) -p0 <$$p ; done endif - cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET) no-shared no-asm no-threads + cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET) no-shared no-threads $(EXTRAARGS_OPENSSL) cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) make install touch $@ diff --git a/sdk/recipes/patches/openssl/Configure.p b/sdk/recipes/patches/openssl/Configure.p index 9d4ba20..9a9eb62 100644 --- a/sdk/recipes/patches/openssl/Configure.p +++ b/sdk/recipes/patches/openssl/Configure.p @@ -8,7 +8,7 @@ +"m68k-atari-mint","m68k-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m68k-atari-mint-ranlib", +"m5475-atari-mint","m5475-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m5475-atari-mint-ranlib", +"m68k-unknown-amigaos","m68k-unknown-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS3 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnet -lm:BN_LLONG DES_RISC1::::::::::::::::::::m68k-unknown-amigaos-ranlib", -+"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::ppc-amigaos-ranlib", ++"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1:${ppc32_asm}:::::::::::::::::::ppc-amigaos-ranlib", +"i686-w64-mingw32", "gcc:-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", + #### SCO/Caldera targets. diff --git a/sdk/recipes/patches/openssl/ppc-amigaos/crypto.Makefile.p b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.Makefile.p new file mode 100644 index 0000000..3a9bf62 --- /dev/null +++ b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.Makefile.p @@ -0,0 +1,11 @@ +--- crypto/Makefile 2017-01-26 13:22:03.000000000 +0000 ++++ crypto/Makefile 2017-02-08 00:05:03.883009508 +0000 +@@ -71,7 +71,7 @@ uplink-x86.s: $(TOP)/ms/uplink-x86.pl + + x86_64cpuid.s: x86_64cpuid.pl; $(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@ + ia64cpuid.s: ia64cpuid.S; $(CC) $(CFLAGS) -E ia64cpuid.S > $@ +-ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@ ++ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) > $@ + pariscid.s: pariscid.pl; $(PERL) pariscid.pl $(PERLASM_SCHEME) $@ + alphacpuid.s: alphacpuid.pl + (preproc=$$$$.$@.S; trap "rm $$preproc" INT; \ -- cgit v1.2.3 From cd7176a33bf7627a03e30b23b4810d22ec04a930 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 8 Feb 2017 00:51:54 +0000 Subject: perlasm scheme needs to be linux32 --- sdk/recipes/patches/openssl/Configure.p | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/recipes/patches/openssl/Configure.p b/sdk/recipes/patches/openssl/Configure.p index 9a9eb62..72173fb 100644 --- a/sdk/recipes/patches/openssl/Configure.p +++ b/sdk/recipes/patches/openssl/Configure.p @@ -8,7 +8,7 @@ +"m68k-atari-mint","m68k-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m68k-atari-mint-ranlib", +"m5475-atari-mint","m5475-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m5475-atari-mint-ranlib", +"m68k-unknown-amigaos","m68k-unknown-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS3 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnet -lm:BN_LLONG DES_RISC1::::::::::::::::::::m68k-unknown-amigaos-ranlib", -+"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1:${ppc32_asm}:::::::::::::::::::ppc-amigaos-ranlib", ++"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1:${ppc32_asm}:linux32::::::::::::::::::ppc-amigaos-ranlib", +"i686-w64-mingw32", "gcc:-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", + #### SCO/Caldera targets. -- cgit v1.2.3 From 90c909567a6de54962de0fc4decc527e37f6cda1 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 8 Feb 2017 17:35:41 +0000 Subject: AmigaOS4 patch for ppccap.c Borrowed from https://github.com/jens-maus/amissl/blob/master/openssl/crypto/ppccap.c --- .../patches/openssl/ppc-amigaos/crypto.ppccap.c.p | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p diff --git a/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p new file mode 100644 index 0000000..e231885 --- /dev/null +++ b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p @@ -0,0 +1,35 @@ +--- /home/chris/netsurf/toolchains/sdk/builddir-ppc-amigaos/openssl/openssl-1.0.2k/crypto/ppccap.c 2017-01-26 13:22:03.000000000 +0000 ++++ ppccap.c 2017-02-08 17:33:45.674017881 +0000 +@@ -73,6 +73,7 @@ void sha512_block_data_order(void *ctx, + sha512_block_ppc(ctx, inp, len); + } + ++#ifndef OPENSSL_SYS_AMIGAOS4 + static sigjmp_buf ill_jmp; + static void ill_handler(int sig) + { +@@ -157,3 +158,24 @@ void OPENSSL_cpuid_setup(void) + sigaction(SIGILL, &ill_oact, NULL); + sigprocmask(SIG_SETMASK, &oset, NULL); + } ++#else ++#include ++void OPENSSL_cpuid_setup(void) ++{ ++ uint32 family, vec; ++ ++ GetCPUInfoTags(GCIT_Family, &family, GCIT_VectorUnit, &vec, TAG_DONE); ++ ++ OPENSSL_ppccap_P = PPC_FPU; ++ ++ if((family == CPUFAMILY_PA6T) || (family == CPUFAMILY_E5500)) ++ OPENSSL_ppccap_P |= PPC_FPU64; ++ ++ if((vec == VECTORTYPE_ALTIVEC) && ++ ((SysBase->lib_Version == 51 && SysBase->lib_Revision >= 12) || SysBase->lib_Version > 51)) ++ { ++ OPENSSL_ppccap_P |= PPC_ALTIVEC; ++ } ++} ++#endif ++ -- cgit v1.2.3 From 8f13bd7b78198224eeec2d33887c63a9532ddaa1 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 8 Feb 2017 18:09:47 +0000 Subject: OpenSSL 1.0.x does not have PPC_FPU --- sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p index e231885..eaaab73 100644 --- a/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p +++ b/sdk/recipes/patches/openssl/ppc-amigaos/crypto.ppccap.c.p @@ -1,5 +1,5 @@ ---- /home/chris/netsurf/toolchains/sdk/builddir-ppc-amigaos/openssl/openssl-1.0.2k/crypto/ppccap.c 2017-01-26 13:22:03.000000000 +0000 -+++ ppccap.c 2017-02-08 17:33:45.674017881 +0000 +--- crypto/ppccap.c 2017-01-26 13:22:03.000000000 +0000 ++++ crypto/ppccap.c 2017-02-08 17:48:09.982015412 +0000 @@ -73,6 +73,7 @@ void sha512_block_data_order(void *ctx, sha512_block_ppc(ctx, inp, len); } @@ -18,15 +18,15 @@ +{ + uint32 family, vec; + -+ GetCPUInfoTags(GCIT_Family, &family, GCIT_VectorUnit, &vec, TAG_DONE); ++ IExec->GetCPUInfoTags(GCIT_Family, &family, GCIT_VectorUnit, &vec, TAG_DONE); + -+ OPENSSL_ppccap_P = PPC_FPU; ++ OPENSSL_ppccap_P = 0; //PPC_FPU + + if((family == CPUFAMILY_PA6T) || (family == CPUFAMILY_E5500)) + OPENSSL_ppccap_P |= PPC_FPU64; + + if((vec == VECTORTYPE_ALTIVEC) && -+ ((SysBase->lib_Version == 51 && SysBase->lib_Revision >= 12) || SysBase->lib_Version > 51)) ++ (LIB_IS_AT_LEAST(SysBase, 51, 12))) + { + OPENSSL_ppccap_P |= PPC_ALTIVEC; + } -- cgit v1.2.3 From 6068138f0cc35b1d1b7eeabbaf52eb25d57fe827 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Thu, 9 Feb 2017 19:07:25 +0000 Subject: Optimal options for AmigaOS4/PowerPC --- sdk/recipes/patches/openssl/Configure.p | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/recipes/patches/openssl/Configure.p b/sdk/recipes/patches/openssl/Configure.p index 72173fb..9932cdc 100644 --- a/sdk/recipes/patches/openssl/Configure.p +++ b/sdk/recipes/patches/openssl/Configure.p @@ -8,7 +8,7 @@ +"m68k-atari-mint","m68k-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m68k-atari-mint-ranlib", +"m5475-atari-mint","m5475-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m5475-atari-mint-ranlib", +"m68k-unknown-amigaos","m68k-unknown-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS3 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnet -lm:BN_LLONG DES_RISC1::::::::::::::::::::m68k-unknown-amigaos-ranlib", -+"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1:${ppc32_asm}:linux32::::::::::::::::::ppc-amigaos-ranlib", ++"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK:${ppc32_asm}:linux32::::::::::::::::::ppc-amigaos-ranlib", +"i686-w64-mingw32", "gcc:-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", + #### SCO/Caldera targets. -- cgit v1.2.3 From 3928d1228db27b45e4b2c69ce49febce494d9857 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Fri, 10 Feb 2017 18:28:56 +0000 Subject: Ensure we use the correct ranlib --- sdk/recipes/patches/openssl/Configure.p | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/recipes/patches/openssl/Configure.p b/sdk/recipes/patches/openssl/Configure.p index 9932cdc..e9cde6c 100644 --- a/sdk/recipes/patches/openssl/Configure.p +++ b/sdk/recipes/patches/openssl/Configure.p @@ -8,7 +8,7 @@ +"m68k-atari-mint","m68k-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m68k-atari-mint-ranlib", +"m5475-atari-mint","m5475-atari-mint-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DNO_SYS_UN_H -DOPENSSL_USE_IPV6=0 -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m5475-atari-mint-ranlib", +"m68k-unknown-amigaos","m68k-unknown-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS3 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-lnet -lm:BN_LLONG DES_RISC1::::::::::::::::::::m68k-unknown-amigaos-ranlib", -+"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK:${ppc32_asm}:linux32::::::::::::::::::ppc-amigaos-ranlib", ++"ppc-amigaos","ppc-amigaos-gcc:-DB_ENDIAN -DOPENSSL_SYS_AMIGAOS4 -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK:${ppc32_asm}:linux32::::::ppc-amigaos-ranlib", +"i686-w64-mingw32", "gcc:-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", + #### SCO/Caldera targets. -- cgit v1.2.3