From: Dr. Stephen Henson Date: Fri, 5 May 2006 13:19:35 +0000 (+0000) Subject: Backport of CPUID support in mk1mf and update Mingw32 batch file to build X-Git-Tag: OpenSSL_0_9_8c~40 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b03a4917be536c299d4b9cbb31ae998cdf365a1d;p=oweals%2Fopenssl.git Backport of CPUID support in mk1mf and update Mingw32 batch file to build cpuid source file. --- diff --git a/ms/mingw32.bat b/ms/mingw32.bat index 8c7c63e0f2..f9377a8695 100644 --- a/ms/mingw32.bat +++ b/ms/mingw32.bat @@ -1,90 +1,94 @@ -@rem OpenSSL with Mingw32+GNU as -@rem --------------------------- - -perl Configure mingw %1 %2 %3 %4 %5 %6 %7 %8 - -@echo off - -perl -e "exit 1 if '%1' eq 'no-asm'" -if errorlevel 1 goto noasm - -echo Generating x86 for GNU assember - -echo Bignum -cd crypto\bn\asm -perl bn-586.pl gaswin > bn-win32.s -perl co-586.pl gaswin > co-win32.s -cd ..\..\.. - -echo DES -cd crypto\des\asm -perl des-586.pl gaswin > d-win32.s -cd ..\..\.. - -echo crypt -cd crypto\des\asm -perl crypt586.pl gaswin > y-win32.s -cd ..\..\.. - -echo Blowfish -cd crypto\bf\asm -perl bf-586.pl gaswin > b-win32.s -cd ..\..\.. - -echo CAST5 -cd crypto\cast\asm -perl cast-586.pl gaswin > c-win32.s -cd ..\..\.. - -echo RC4 -cd crypto\rc4\asm -perl rc4-586.pl gaswin > r4-win32.s -cd ..\..\.. - -echo MD5 -cd crypto\md5\asm -perl md5-586.pl gaswin > m5-win32.s -cd ..\..\.. - -echo SHA1 -cd crypto\sha\asm -perl sha1-586.pl gaswin > s1-win32.s -cd ..\..\.. - -echo RIPEMD160 -cd crypto\ripemd\asm -perl rmd-586.pl gaswin > rm-win32.s -cd ..\..\.. - -echo RC5\32 -cd crypto\rc5\asm -perl rc5-586.pl gaswin > r5-win32.s -cd ..\..\.. - -:noasm - -echo Generating makefile -perl util\mkfiles.pl >MINFO -perl util\mk1mf.pl gaswin Mingw32 >ms\mingw32a.mak -echo Generating DLL definition files -perl util\mkdef.pl 32 libeay >ms\libeay32.def -if errorlevel 1 goto end -perl util\mkdef.pl 32 ssleay >ms\ssleay32.def -if errorlevel 1 goto end - -rem copy ms\tlhelp32.h outinc - -echo Building the libraries -mingw32-make -f ms/mingw32a.mak -if errorlevel 1 goto end - -echo Generating the DLLs and input libraries -dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32 -if errorlevel 1 goto end -dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a -if errorlevel 1 goto end - -echo Done compiling OpenSSL - -:end - +@rem OpenSSL with Mingw32+GNU as +@rem --------------------------- + +perl Configure mingw %1 %2 %3 %4 %5 %6 %7 %8 + +@echo off + +perl -e "exit 1 if '%1' eq 'no-asm'" +if errorlevel 1 goto noasm + +echo Generating x86 for GNU assember + +echo Bignum +cd crypto\bn\asm +perl bn-586.pl gaswin > bn-win32.s +perl co-586.pl gaswin > co-win32.s +cd ..\..\.. + +echo DES +cd crypto\des\asm +perl des-586.pl gaswin > d-win32.s +cd ..\..\.. + +echo crypt +cd crypto\des\asm +perl crypt586.pl gaswin > y-win32.s +cd ..\..\.. + +echo Blowfish +cd crypto\bf\asm +perl bf-586.pl gaswin > b-win32.s +cd ..\..\.. + +echo CAST5 +cd crypto\cast\asm +perl cast-586.pl gaswin > c-win32.s +cd ..\..\.. + +echo RC4 +cd crypto\rc4\asm +perl rc4-586.pl gaswin > r4-win32.s +cd ..\..\.. + +echo MD5 +cd crypto\md5\asm +perl md5-586.pl gaswin > m5-win32.s +cd ..\..\.. + +echo SHA1 +cd crypto\sha\asm +perl sha1-586.pl gaswin > s1-win32.s +cd ..\..\.. + +echo RIPEMD160 +cd crypto\ripemd\asm +perl rmd-586.pl gaswin > rm-win32.s +cd ..\..\.. + +echo RC5\32 +cd crypto\rc5\asm +perl rc5-586.pl gaswin > r5-win32.s +cd ..\..\.. +echo CPUID +cd crypto +perl x86cpuid.pl gaswin > cpu-win32.s +cd .. + +:noasm + +echo Generating makefile +perl util\mkfiles.pl >MINFO +perl util\mk1mf.pl gaswin Mingw32 >ms\mingw32a.mak +echo Generating DLL definition files +perl util\mkdef.pl 32 libeay >ms\libeay32.def +if errorlevel 1 goto end +perl util\mkdef.pl 32 ssleay >ms\ssleay32.def +if errorlevel 1 goto end + +rem copy ms\tlhelp32.h outinc + +echo Building the libraries +mingw32-make -f ms/mingw32a.mak +if errorlevel 1 goto end + +echo Generating the DLLs and input libraries +dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32 +if errorlevel 1 goto end +dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a +if errorlevel 1 goto end + +echo Done compiling OpenSSL + +:end + diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 10eb19c671..dc5416af4d 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -413,6 +413,8 @@ SHA1_ASM_OBJ=$sha1_asm_obj SHA1_ASM_SRC=$sha1_asm_src RMD160_ASM_OBJ=$rmd160_asm_obj RMD160_ASM_SRC=$rmd160_asm_src +CPUID_ASM_OBJ=$cpuid_asm_obj +CPUID_ASM_SRC=$cpuid_asm_src # The output directory for everything intersting OUT_D=$out_dir @@ -656,6 +658,11 @@ foreach (values %lib_nam) $lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/; $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src); } + if (($cpuid_asm_obj ne "") && ($_ eq "CRYPTO")) + { + $lib_obj =~ s/\s(\S*\/cversion\S*)/ $1 \$(CPUID_ASM_OBJ)/; + $rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_asm_src); + } $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)"; $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); @@ -838,6 +845,7 @@ sub do_defs elsif ($_ =~ /MD5_ASM/) { $t="$_ "; } elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; } elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; } + elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; } else { $t="$location${o}$_$pf "; } $Vars{$var}.="$t "; diff --git a/util/pl/Mingw32.pl b/util/pl/Mingw32.pl index b76b7afd27..8f0483fb93 100644 --- a/util/pl/Mingw32.pl +++ b/util/pl/Mingw32.pl @@ -19,7 +19,7 @@ $cc='gcc'; if ($debug) { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; } else - { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -mcpu=i486 -Wall"; } + { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -march=i486 -Wall"; } if ($gaswin and !$no_asm) { @@ -43,6 +43,8 @@ if ($gaswin and !$no_asm) $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s'; $sha1_asm_obj='$(OBJ_D)\s1-win32.o'; $sha1_asm_src='crypto/sha/asm/s1-win32.s'; + $cpuid_asm_obj='$(OBJ_D)\cpu-win32.o'; + $cpuid_asm_src='crypto/cpu-win32.s'; $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; }