Support assembler for Mingw32.
This commit is contained in:
parent
a4709b3d88
commit
2da0c11926
3
CHANGES
3
CHANGES
@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
Changes between 0.9.5 and 0.9.6 [XX XXX 2000]
|
Changes between 0.9.5 and 0.9.6 [XX XXX 2000]
|
||||||
|
|
||||||
|
*) Assembler module support for Mingw32.
|
||||||
|
[Ulf Möller]
|
||||||
|
|
||||||
*) Shared library support for HPUX (in shlib/).
|
*) Shared library support for HPUX (in shlib/).
|
||||||
[Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous]
|
[Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous]
|
||||||
|
|
||||||
|
12
config
12
config
@ -292,6 +292,8 @@ TEST="false"
|
|||||||
for i
|
for i
|
||||||
do
|
do
|
||||||
case "$i" in
|
case "$i" in
|
||||||
|
# shared library support (behnke@trustcenter.de)
|
||||||
|
-shared) SHARED=true;;
|
||||||
-d*) PREFIX="debug-";;
|
-d*) PREFIX="debug-";;
|
||||||
-t*) TEST="true";;
|
-t*) TEST="true";;
|
||||||
-h*) TEST="true"; cat <<EOF
|
-h*) TEST="true"; cat <<EOF
|
||||||
@ -476,6 +478,16 @@ then
|
|||||||
options="$options -DATALLA"
|
options="$options -DATALLA"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#get some basic shared lib support (behnke@trustcenter.de)
|
||||||
|
case "$OUT" in
|
||||||
|
solaris-*-gcc)
|
||||||
|
if [ "$SHARED" = "true" ]
|
||||||
|
then
|
||||||
|
options="$options -DPIC -fPIC"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
# gcc < 2.8 does not support -mcpu=ultrasparc
|
# gcc < 2.8 does not support -mcpu=ultrasparc
|
||||||
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
|
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
|
||||||
then
|
then
|
||||||
|
@ -18,11 +18,13 @@ sub main'asm_init
|
|||||||
($type,$fn,$i386)=@_;
|
($type,$fn,$i386)=@_;
|
||||||
$filename=$fn;
|
$filename=$fn;
|
||||||
|
|
||||||
$cpp=$sol=$aout=$win32=0;
|
$cpp=$sol=$aout=$win32=$gaswin=0;
|
||||||
if ( ($type eq "elf"))
|
if ( ($type eq "elf"))
|
||||||
{ require "x86unix.pl"; }
|
{ require "x86unix.pl"; }
|
||||||
elsif ( ($type eq "a.out"))
|
elsif ( ($type eq "a.out"))
|
||||||
{ $aout=1; require "x86unix.pl"; }
|
{ $aout=1; require "x86unix.pl"; }
|
||||||
|
elsif ( ($type eq "gaswin"))
|
||||||
|
{ $gaswin=1; $aout=1; require "x86unix.pl"; }
|
||||||
elsif ( ($type eq "sol"))
|
elsif ( ($type eq "sol"))
|
||||||
{ $sol=1; require "x86unix.pl"; }
|
{ $sol=1; require "x86unix.pl"; }
|
||||||
elsif ( ($type eq "cpp"))
|
elsif ( ($type eq "cpp"))
|
||||||
@ -50,7 +52,7 @@ EOF
|
|||||||
&comment("Don't even think of reading this code");
|
&comment("Don't even think of reading this code");
|
||||||
&comment("It was automatically generated by $filename");
|
&comment("It was automatically generated by $filename");
|
||||||
&comment("Which is a perl program used to generate the x86 assember for");
|
&comment("Which is a perl program used to generate the x86 assember for");
|
||||||
&comment("any of elf, a.out, BSDI,Win32, or Solaris");
|
&comment("any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris");
|
||||||
&comment("eric <eay\@cryptsoft.com>");
|
&comment("eric <eay\@cryptsoft.com>");
|
||||||
&comment("");
|
&comment("");
|
||||||
|
|
||||||
|
@ -292,6 +292,8 @@ EOF
|
|||||||
push(@out,$tmp);
|
push(@out,$tmp);
|
||||||
if ($main'cpp)
|
if ($main'cpp)
|
||||||
{ $tmp=push(@out,"\tTYPE($func,\@function)\n"); }
|
{ $tmp=push(@out,"\tTYPE($func,\@function)\n"); }
|
||||||
|
elsif ($main'gaswin)
|
||||||
|
{ $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
|
||||||
else { $tmp=push(@out,"\t.type\t$func,\@function\n"); }
|
else { $tmp=push(@out,"\t.type\t$func,\@function\n"); }
|
||||||
push(@out,"$func:\n");
|
push(@out,"$func:\n");
|
||||||
$tmp=<<"EOF";
|
$tmp=<<"EOF";
|
||||||
@ -320,6 +322,8 @@ EOF
|
|||||||
push(@out,$tmp);
|
push(@out,$tmp);
|
||||||
if ($main'cpp)
|
if ($main'cpp)
|
||||||
{ push(@out,"\tTYPE($func,\@function)\n"); }
|
{ push(@out,"\tTYPE($func,\@function)\n"); }
|
||||||
|
elsif ($main'gaswin)
|
||||||
|
{ $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
|
||||||
else { push(@out,"\t.type $func,\@function\n"); }
|
else { push(@out,"\t.type $func,\@function\n"); }
|
||||||
push(@out,"$func:\n");
|
push(@out,"$func:\n");
|
||||||
$stack=4;
|
$stack=4;
|
||||||
@ -342,6 +346,8 @@ EOF
|
|||||||
push(@out,$tmp);
|
push(@out,$tmp);
|
||||||
if ($main'cpp)
|
if ($main'cpp)
|
||||||
{ push(@out,"\tSIZE($func,.${func}_end-$func)\n"); }
|
{ push(@out,"\tSIZE($func,.${func}_end-$func)\n"); }
|
||||||
|
elsif ($main'gaswin)
|
||||||
|
{ $tmp=push(@out,"\t.align 4\n"); }
|
||||||
else { push(@out,"\t.size\t$func,.${func}_end-$func\n"); }
|
else { push(@out,"\t.size\t$func,.${func}_end-$func\n"); }
|
||||||
push(@out,".ident \"$func\"\n");
|
push(@out,".ident \"$func\"\n");
|
||||||
$stack=0;
|
$stack=0;
|
||||||
@ -371,6 +377,8 @@ sub main'function_end_B
|
|||||||
push(@out,".L_${func}_end:\n");
|
push(@out,".L_${func}_end:\n");
|
||||||
if ($main'cpp)
|
if ($main'cpp)
|
||||||
{ push(@out,"\tSIZE($func,.L_${func}_end-$func)\n"); }
|
{ push(@out,"\tSIZE($func,.L_${func}_end-$func)\n"); }
|
||||||
|
elsif ($main'gaswin)
|
||||||
|
{ push(@out,"\t.align 4\n"); }
|
||||||
else { push(@out,"\t.size\t$func,.L_${func}_end-$func\n"); }
|
else { push(@out,"\t.size\t$func,.L_${func}_end-$func\n"); }
|
||||||
push(@out,".ident \"desasm.pl\"\n");
|
push(@out,".ident \"desasm.pl\"\n");
|
||||||
$stack=0;
|
$stack=0;
|
||||||
|
86
ms/mingw32.bat
Normal file
86
ms/mingw32.bat
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
@rem OpenSSL with Mingw32+GNU as
|
||||||
|
@rem ---------------------------
|
||||||
|
|
||||||
|
perl Configure Mingw32 %1 %2 %3 %4 %5 %6 %7 %8
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
echo Generating x86 for GNU assember
|
||||||
|
|
||||||
|
echo Bignum
|
||||||
|
cd crypto\bn\asm
|
||||||
|
perl x86.pl gaswin > bn-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 ..\..\..
|
||||||
|
|
||||||
|
@rem Makefile
|
||||||
|
perl util\mkfiles.pl >MINFO
|
||||||
|
perl util\mk1mf.pl gaswin Mingw32 >ms\mingw32a.mak
|
||||||
|
perl util\mk1mf.pl gaswin Mingw32-files >ms\mingw32f.mak
|
||||||
|
@rem 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 Create files -- this can be skipped if using the GNU file utilities
|
||||||
|
make -f ms/mingw32f.mak
|
||||||
|
echo You can ignore the error messages above
|
||||||
|
|
||||||
|
@rem Build the libraries
|
||||||
|
make -f ms/mingw32a.mak
|
||||||
|
if errorlevel 1 goto end
|
||||||
|
|
||||||
|
@rem Generate 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
|
||||||
|
|
@ -59,6 +59,7 @@ and [options] can be one of
|
|||||||
just-ssl - remove all non-ssl keys/digest
|
just-ssl - remove all non-ssl keys/digest
|
||||||
no-asm - No x86 asm
|
no-asm - No x86 asm
|
||||||
nasm - Use NASM for x86 asm
|
nasm - Use NASM for x86 asm
|
||||||
|
gaswin - Use GNU as with Mingw32
|
||||||
no-socks - No socket code
|
no-socks - No socket code
|
||||||
no-err - No error strings
|
no-err - No error strings
|
||||||
dll/shlib - Build shared libraries (MS)
|
dll/shlib - Build shared libraries (MS)
|
||||||
@ -850,6 +851,7 @@ sub read_options
|
|||||||
elsif (/^no-hmac$/) { $no_hmac=1; }
|
elsif (/^no-hmac$/) { $no_hmac=1; }
|
||||||
elsif (/^no-asm$/) { $no_asm=1; }
|
elsif (/^no-asm$/) { $no_asm=1; }
|
||||||
elsif (/^nasm$/) { $nasm=1; }
|
elsif (/^nasm$/) { $nasm=1; }
|
||||||
|
elsif (/^gaswin$/) { $gaswin=1; }
|
||||||
elsif (/^no-ssl2$/) { $no_ssl2=1; }
|
elsif (/^no-ssl2$/) { $no_ssl2=1; }
|
||||||
elsif (/^no-ssl3$/) { $no_ssl3=1; }
|
elsif (/^no-ssl3$/) { $no_ssl3=1; }
|
||||||
elsif (/^no-err$/) { $no_err=1; }
|
elsif (/^no-err$/) { $no_err=1; }
|
||||||
|
@ -21,6 +21,30 @@ if ($debug)
|
|||||||
else
|
else
|
||||||
{ $cflags="-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall"; }
|
{ $cflags="-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall"; }
|
||||||
|
|
||||||
|
if ($gaswin and !$no_asm)
|
||||||
|
{
|
||||||
|
$bn_asm_obj='$(OBJ_D)/bn-win32.o';
|
||||||
|
$bn_asm_src='crypto/bn/asm/bn-win32.s';
|
||||||
|
$des_enc_obj='$(OBJ_D)/d-win32.o $(OBJ_D)/y-win32.o';
|
||||||
|
$des_enc_src='crypto/des/asm/d-win32.s crypto/des/asm/y-win32.s';
|
||||||
|
$bf_enc_obj='$(OBJ_D)/b-win32.o';
|
||||||
|
$bf_enc_src='crypto/bf/asm/b-win32.s';
|
||||||
|
# $cast_enc_obj='$(OBJ_D)/c-win32.o';
|
||||||
|
# $cast_enc_src='crypto/cast/asm/c-win32.s';
|
||||||
|
$rc4_enc_obj='$(OBJ_D)/r4-win32.o';
|
||||||
|
$rc4_enc_src='crypto/rc4/asm/r4-win32.s';
|
||||||
|
$rc5_enc_obj='$(OBJ_D)/r5-win32.o';
|
||||||
|
$rc5_enc_src='crypto/rc5/asm/r5-win32.s';
|
||||||
|
$md5_asm_obj='$(OBJ_D)/m5-win32.o';
|
||||||
|
$md5_asm_src='crypto/md5/asm/m5-win32.s';
|
||||||
|
$rmd160_asm_obj='$(OBJ_D)/rm-win32.o';
|
||||||
|
$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';
|
||||||
|
$cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$obj='.o';
|
$obj='.o';
|
||||||
$ofile='-o ';
|
$ofile='-o ';
|
||||||
|
|
||||||
@ -76,4 +100,3 @@ sub do_link_rule
|
|||||||
return($ret);
|
return($ret);
|
||||||
}
|
}
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user