To build OpenSSL, you need the Mingw32 package and GNU make.
- Compiler installation:
+ * Compiler installation:
- Mingw32 is available from <ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/
- mingw32/egcs-1.1.2/egcs-1.1.2-mingw32.zip>. GNU make is at
- <ftp://agnes.dida.physik.uni-essen.de/home/janjaap/mingw32/binaries/
- make-3.76.1.zip>. Install both of them in C:\egcs-1.1.2 and run
- C:\egcs-1.1.2\mingw32.bat to set the PATH.
+ Mingw32 is available from <ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/
+ mingw32/egcs-1.1.2/egcs-1.1.2-mingw32.zip>. GNU make is at
+ <ftp://agnes.dida.physik.uni-essen.de/home/janjaap/mingw32/binaries/
+ make-3.76.1.zip>. Install both of them in C:\egcs-1.1.2 and run
+ C:\egcs-1.1.2\mingw32.bat to set the PATH.
- * Configure OpenSSL:
+ * Compile OpenSSL:
- > perl Configure Mingw32
- > perl util\mkfiles.pl >MINFO
- > perl util\mk1mf.pl Mingw32 >ms\mingw32.mak
+ Run ms\mw.bat
- * This step can be skipped if you have the GNU file utitilities (cp, rm, ...)
- installed:
+ This will create the library and binaries in out.
- > perl util\mk1mf.pl Mingw32-files >ms\mingw32f.mak
- > make -f ms/mingw32f.mak
+ libcrypto.a and libssl.a are the static libraries. To use the DLLs,
+ link with libeay32.a and libssl32.a instead.
- This will end with an error message. If you don't like that, install
- the file utilities. :)
+ See troubleshooting if you get error messages about functions not having
+ a number assigned.
- * Compile the library:
- > make -f ms/mingw32.mak
-
- You can now try the tests:
+ * You can now try the tests:
> cd out
> ..\ms\test
- * Build the OpenSSL DLLs:
-
- > perl util\mkdef.pl 32 libeay > ms\libeay32.def
- > perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
-
- [to be done]
-
Troubleshooting
---------------
program will almost certainly crash: see the original SSLeay description
below for more details.
- Tweaks
- ------
-
--------------------------------------------------------------------------------
The orignal Windows build instructions from SSLeay follow.
Note: some of this may be out of date and no longer applicable
--- /dev/null
+@rem OpenSSL with Mingw32\r
+@rem --------------------\r
+\r
+perl Configure Mingw32\r
+if errorlevel 1 goto end\r
+\r
+@rem Makefile\r
+perl util\mkfiles.pl >MINFO\r
+perl util\mk1mf.pl Mingw32 >ms\mingw32.mak\r
+perl util\mk1mf.pl Mingw32-files >ms\mingw32f.mak\r
+@rem DLL defintion 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 Create files -- this can be skipped if using the GNU file utilities\r
+make -f ms/mingw32f.mak\r
+echo You can ignore the error messages above\r
+\r
+@rem Build the libraries\r
+make -f ms/mingw32.mak\r
+if errorlevel 1 goto end\r
+\r
+@rem Generate 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/libssl32.def out/libssl.a out/libeay32.a\r
+if errorlevel 1 goto end\r
+\r
+echo Done compiling OpenSSL\r
+\r
+:end\r
+\r
}
} else {
-
- &print_def_file(*STDOUT,"SSLEAY",*ssl_list,@ssl_func)
+ my $err = 0;
+ $err += &print_def_file(*STDOUT,"SSLEAY",*ssl_list,@ssl_func)
if $do_ssl == 1;
- &print_def_file(*STDOUT,"LIBEAY",*crypto_list,@crypto_func)
+ $err += &print_def_file(*STDOUT,"LIBEAY",*crypto_list,@crypto_func)
if $do_crypto == 1;
-
+ exit($err);
}
{
(*OUT,my $name,*nums,@functions)=@_;
my $n =1;
+ my $nodef=0;
if ($W32)
{ $name.="32"; }
foreach $func (@functions) {
if (!defined($nums{$func})) {
- printf STDERR "$func does not have a number assigned\n"
- if(!$do_update);
+ if(!$do_update) {
+ printf STDERR "$func does not have a number assigned\n";
+ $nodef = 1;
+ }
} else {
$n=$nums{$func};
printf OUT " %s%-40s@%d\n",($W32)?"":"_",$func,$n;
}
}
printf OUT "\n";
+ return ($nodef);
}
sub load_numbers
#!/usr/local/bin/perl
#
-# unix.pl - the standard unix makefile stuff.
+# Mingw32.pl -- Mingw32 with GNU cp (Mingw32f.pl uses DOS tools)
#
-# Need the Cygwin32 file utilities
$o='/';
$cp='cp';
-$rm='rm';
+$rm='del'; # use 'rm -f' if using GNU file utilities
$mkdir='gmkdir';
# gcc wouldn't accept backslashes in paths
#!/usr/local/bin/perl
#
-# unix.pl - the standard unix makefile stuff.
+# Mingw32f.pl -- copy files; Mingw32.pl is needed to do the compiling.
#
$o='\\';