From 2da0c119260afd15433dde7c431c69c837ee840b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ulf=20M=C3=B6ller?= Date: Mon, 28 Feb 2000 19:16:41 +0000 Subject: [PATCH] Support assembler for Mingw32. --- CHANGES | 3 ++ config | 12 ++++++ crypto/perlasm/x86asm.pl | 6 ++- crypto/perlasm/x86unix.pl | 8 ++++ ms/mingw32.bat | 86 +++++++++++++++++++++++++++++++++++++++ util/mk1mf.pl | 2 + util/pl/Mingw32.pl | 25 +++++++++++- 7 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 ms/mingw32.bat diff --git a/CHANGES b/CHANGES index 62d2ec1829..336be9804c 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,9 @@ 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/). [Lutz Jaenicke and Anonymous] diff --git a/config b/config index f57969bb44..d85fbde3aa 100755 --- a/config +++ b/config @@ -292,6 +292,8 @@ TEST="false" for i do case "$i" in +# shared library support (behnke@trustcenter.de) +-shared) SHARED=true;; -d*) PREFIX="debug-";; -t*) TEST="true";; -h*) TEST="true"; cat <"); &comment(""); diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl index 60d75f5ce4..309060ea00 100644 --- a/crypto/perlasm/x86unix.pl +++ b/crypto/perlasm/x86unix.pl @@ -292,6 +292,8 @@ EOF push(@out,$tmp); if ($main'cpp) { $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"); } push(@out,"$func:\n"); $tmp=<<"EOF"; @@ -320,6 +322,8 @@ EOF push(@out,$tmp); if ($main'cpp) { 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"); } push(@out,"$func:\n"); $stack=4; @@ -342,6 +346,8 @@ EOF push(@out,$tmp); if ($main'cpp) { 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"); } push(@out,".ident \"$func\"\n"); $stack=0; @@ -371,6 +377,8 @@ sub main'function_end_B push(@out,".L_${func}_end:\n"); if ($main'cpp) { 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"); } push(@out,".ident \"desasm.pl\"\n"); $stack=0; diff --git a/ms/mingw32.bat b/ms/mingw32.bat new file mode 100644 index 0000000000..87294d06f5 --- /dev/null +++ b/ms/mingw32.bat @@ -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 + diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 6fbf3ceca6..bbeb7b62fe 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -59,6 +59,7 @@ and [options] can be one of just-ssl - remove all non-ssl keys/digest no-asm - No x86 asm nasm - Use NASM for x86 asm + gaswin - Use GNU as with Mingw32 no-socks - No socket code no-err - No error strings dll/shlib - Build shared libraries (MS) @@ -850,6 +851,7 @@ sub read_options elsif (/^no-hmac$/) { $no_hmac=1; } elsif (/^no-asm$/) { $no_asm=1; } elsif (/^nasm$/) { $nasm=1; } + elsif (/^gaswin$/) { $gaswin=1; } elsif (/^no-ssl2$/) { $no_ssl2=1; } elsif (/^no-ssl3$/) { $no_ssl3=1; } elsif (/^no-err$/) { $no_err=1; } diff --git a/util/pl/Mingw32.pl b/util/pl/Mingw32.pl index 585cacd820..c687d9b118 100644 --- a/util/pl/Mingw32.pl +++ b/util/pl/Mingw32.pl @@ -21,6 +21,30 @@ if ($debug) else { $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'; $ofile='-o '; @@ -76,4 +100,3 @@ sub do_link_rule return($ret); } 1; - -- 2.25.1