Backport of CPUID support in mk1mf and update Mingw32 batch file to build
authorDr. Stephen Henson <steve@openssl.org>
Fri, 5 May 2006 13:19:35 +0000 (13:19 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 5 May 2006 13:19:35 +0000 (13:19 +0000)
cpuid source file.

ms/mingw32.bat
util/mk1mf.pl
util/pl/Mingw32.pl

index 8c7c63e..f9377a8 100644 (file)
@@ -1,90 +1,94 @@
-@rem OpenSSL with Mingw32+GNU as\r
-@rem ---------------------------\r
-\r
-perl Configure mingw %1 %2 %3 %4 %5 %6 %7 %8\r
-\r
-@echo off\r
-\r
-perl -e "exit 1 if '%1' eq 'no-asm'"\r
-if errorlevel 1 goto noasm\r
-\r
-echo Generating x86 for GNU assember\r
-\r
-echo Bignum\r
-cd crypto\bn\asm\r
-perl bn-586.pl gaswin > bn-win32.s\r
-perl co-586.pl gaswin > co-win32.s\r
-cd ..\..\..\r
-\r
-echo DES\r
-cd crypto\des\asm\r
-perl des-586.pl gaswin > d-win32.s\r
-cd ..\..\..\r
-\r
-echo crypt\r
-cd crypto\des\asm\r
-perl crypt586.pl gaswin > y-win32.s\r
-cd ..\..\..\r
-\r
-echo Blowfish\r
-cd crypto\bf\asm\r
-perl bf-586.pl gaswin > b-win32.s\r
-cd ..\..\..\r
-\r
-echo CAST5\r
-cd crypto\cast\asm\r
-perl cast-586.pl gaswin > c-win32.s\r
-cd ..\..\..\r
-\r
-echo RC4\r
-cd crypto\rc4\asm\r
-perl rc4-586.pl gaswin > r4-win32.s\r
-cd ..\..\..\r
-\r
-echo MD5\r
-cd crypto\md5\asm\r
-perl md5-586.pl gaswin > m5-win32.s\r
-cd ..\..\..\r
-\r
-echo SHA1\r
-cd crypto\sha\asm\r
-perl sha1-586.pl gaswin > s1-win32.s\r
-cd ..\..\..\r
-\r
-echo RIPEMD160\r
-cd crypto\ripemd\asm\r
-perl rmd-586.pl gaswin > rm-win32.s\r
-cd ..\..\..\r
-\r
-echo RC5\32\r
-cd crypto\rc5\asm\r
-perl rc5-586.pl gaswin > r5-win32.s\r
-cd ..\..\..\r
-\r
-:noasm\r
-\r
-echo Generating makefile\r
-perl util\mkfiles.pl >MINFO\r
-perl util\mk1mf.pl gaswin Mingw32 >ms\mingw32a.mak\r
-echo Generating DLL definition files\r
-perl util\mkdef.pl 32 libeay >ms\libeay32.def\r
-if errorlevel 1 goto end\r
-perl util\mkdef.pl 32 ssleay >ms\ssleay32.def\r
-if errorlevel 1 goto end\r
-\r
-rem copy ms\tlhelp32.h outinc\r
-\r
-echo Building the libraries\r
-mingw32-make -f ms/mingw32a.mak\r
-if errorlevel 1 goto end\r
-\r
-echo Generating the DLLs and input libraries\r
-dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32\r
-if errorlevel 1 goto end\r
-dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a\r
-if errorlevel 1 goto end\r
-\r
-echo Done compiling OpenSSL\r
-\r
-:end\r
-\r
+@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
+
index 10eb19c..dc5416a 100755 (executable)
@@ -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 ";
index b76b7af..8f0483f 100644 (file)
@@ -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";
        }