Engage x86_64 assembler in Win64 build.
authorAndy Polyakov <appro@openssl.org>
Thu, 23 Aug 2007 12:13:55 +0000 (12:13 +0000)
committerAndy Polyakov <appro@openssl.org>
Thu, 23 Aug 2007 12:13:55 +0000 (12:13 +0000)
ms/do_fips.bat
ms/segrenam.pl
util/mk1mf.pl
util/pl/VC-32.pl

index 3b5a83bb56875c8ccbe3bba94323778911a016b4..d82e97b673e49c92e47438fe8a2da9aa89b72b3f 100644 (file)
@@ -1,8 +1,6 @@
-
 @echo off
 
-SET ASMOPTS=-DOPENSSL_IA32_SSE2
-SET ASM=no-asm
+SET ASM=%1
 
 if NOT X%PROCESSOR_ARCHITECTURE% == X goto defined 
 
@@ -25,38 +23,10 @@ echo Auto Configuring for X86
 
 SET TARGET=VC-WIN32
 
-if NOT x%1% == xno-asm SET ASM=nasm
-
-goto compile
-
-:IA64
-
-echo Auto Configuring for IA64
-SET TARGET=VC-WIN64I
-perl ms\uplink.pl win64i > ms\uptable.asm
-if ERRORLEVEL 1 goto error
-ias -o ms\uptable.obj ms\uptable.asm
-if ERRORLEVEL 1 goto error
-
-goto compile
-
-:AMD64
-
-echo Auto Configuring for AMD64
-SET TARGET=VC-WIN64A
-perl ms\uplink.pl win64a > ms\uptable.asm
-if ERRORLEVEL 1 goto error
-ml64 -c -Foms\uptable.obj ms\uptable.asm
-if ERRORLEVEL 1 goto error
-
-
-:compile
-
-perl Configure %TARGET% fipscanisterbuild
-pause
-
-if %ASM% == no-asm goto skipasm
+if x%ASM% == xno-asm goto compile
 echo Generating x86 for NASM assember
+SET ASM=nasm
+SET ASMOPTS=-DOPENSSL_IA32_SSE2
 
 echo Bignum
 cd crypto\bn\asm
@@ -138,7 +108,64 @@ perl x86cpuid.pl win32n %ASMOPTS% > cpu_win32.asm
 if ERRORLEVEL 1 goto error
 cd ..
 
-:skipasm
+goto compile
+
+:IA64
+
+echo Auto Configuring for IA64
+SET TARGET=VC-WIN64I
+perl ms\uplink.pl win64i > ms\uptable.asm
+if ERRORLEVEL 1 goto error
+ias -o ms\uptable.obj ms\uptable.asm
+if ERRORLEVEL 1 goto error
+
+goto compile
+
+:AMD64
+
+echo Auto Configuring for AMD64
+SET TARGET=VC-WIN64A
+perl ms\uplink.pl win64a > ms\uptable.asm
+if ERRORLEVEL 1 goto error
+ml64 -c -Foms\uptable.obj ms\uptable.asm
+if ERRORLEVEL 1 goto error
+
+if x%ASM% == xno-asm goto compile
+echo Generating x86_64 for ML64 assember
+SET ASM=ml64
+
+echo Bignum
+cd crypto\bn\asm
+perl x86_64-mont.pl x86_64-mont.asm
+if ERRORLEVEL 1 goto error
+cd ..\..\..
+
+echo AES
+cd crypto\aes\asm
+perl aes-x86_64.pl aes-x86_64.asm
+if ERRORLEVEL 1 goto error
+cd ..\..\..
+
+echo SHA
+cd crypto\sha\asm
+perl sha1-x86_64.pl sha1-x86_64.asm
+if ERRORLEVEL 1 goto error
+perl sha512-x86_64.pl sha256-x86_64.asm
+if ERRORLEVEL 1 goto error
+perl sha512-x86_64.pl sha512-x86_64.asm
+if ERRORLEVEL 1 goto error
+cd ..\..\..
+
+echo CPU-ID
+cd crypto
+perl x86_64cpuid.pl cpuid-x86_64.asm
+if ERRORLEVEL 1 goto error
+cd ..
+
+:compile
+
+perl Configure %TARGET% fipscanisterbuild
+pause
 
 echo on
 
index 8be98887876df9990628ba5f0730bf393bb24f28..2ab22a045944a5f6a4eb9888dc0e66f25b03d01d 100644 (file)
@@ -9,6 +9,7 @@ $suffix=(@ARGV[0]=~/^\$/) ? shift(@ARGV) : "\$m";
 #################################################################
 # rename segments in COFF modules according to %map table below        #
 %map=( ".text" => "fipstx$suffix",                             #
+       ".text\$"=> "fipstx$suffix",                            #
        ".rdata"=> "fipsrd$suffix",                             #
        ".data" => "fipsda$suffix"      );                      #
 #################################################################
index 4fb070effbd1e12f8154f3656aa035b37a4c1f4f..95daff5c04d452120644c255ebde4a3b8e50996c 100755 (executable)
@@ -1277,6 +1277,7 @@ sub read_options
                "no-hmac" => \$no_hmac,
                "no-asm" => \$no_asm,
                "nasm" => \$nasm,
+               "ml64" => \$ml64,
                "nw-nasm" => \$nw_nasm,
                "nw-mwasm" => \$nw_mwasm,
                "gaswin" => \$gaswin,
index e61a997de5663451de085c43010f0c4d23a2c1a1..af3569cff3824cf88a2abe3e1f18011b88a10260 100644 (file)
@@ -172,6 +172,10 @@ $app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/);
 if ($nasm) {
        $asm='nasmw -f win32';
        $afile='-o ';
+} elsif ($ml64) {
+       $asm='ml64 /c /Cp /Cx';
+       $asm.=' /Zi' if $debug;
+       $afile='/Fo';
 } else {
        $asm='ml /Cp /coff /c /Cx';
        $asm.=" /Zi" if $debug;
@@ -187,6 +191,8 @@ $bf_enc_obj='';
 $bf_enc_src='';
 
 if (!$no_asm)
+    {
+    if ($FLAVOR =~ "WIN32")
        {
        $aes_asm_obj='crypto\aes\asm\a_win32.obj';
        $aes_asm_src='crypto\aes\asm\a_win32.asm';
@@ -214,6 +220,19 @@ if (!$no_asm)
        $cpuid_asm_src='crypto\cpu_win32.asm';
        $cflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
        }
+    elsif ($FLAVOR =~ "WIN64A")
+       {
+       $aes_asm_obj='$(OBJ_D)\aes-x86_64.obj';
+       $aes_asm_src='crypto\aes\asm\aes-x86_64.asm';
+       $bn_asm_obj='$(OBJ_D)\x86_64-mont.obj $(OBJ_D)\bn_asm.obj';
+       $bn_asm_src='crypto\bn\asm\x86_64-mont.asm';
+       $sha1_asm_obj='$(OBJ_D)\sha1-x86_64.obj $(OBJ_D)\sha256-x86_64.obj $(OBJ_D)\sha512-x86_64.obj';
+       $sha1_asm_src='crypto\sha\asm\sha1-x86_64.asm crypto\sha\asm\sha256-x86_64.asm crypto\sha\asm\sha512-x86_64.asm';
+       $cpuid_asm_obj='$(OBJ_D)\cpuid-x86_64.obj';
+       $cpuid_asm_src='crypto\cpuid-x86_64.asm';
+       $cflags.=" -DOPENSSL_CPUID_OBJ -DAES_ASM -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM";
+       }
+    }
 
 if ($shlib && $FLAVOR !~ /CE/)
        {