Generate DLLs with Mingw32.
authorUlf Möller <ulf@openssl.org>
Fri, 7 May 1999 22:55:27 +0000 (22:55 +0000)
committerUlf Möller <ulf@openssl.org>
Fri, 7 May 1999 22:55:27 +0000 (22:55 +0000)
INSTALL.W32
ms/mw.bat [new file with mode: 0644]
util/mkdef.pl
util/pl/Mingw32.pl
util/pl/Mingw32f.pl

index 80ea905..3da0cb4 100644 (file)
 
  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
diff --git a/ms/mw.bat b/ms/mw.bat
new file mode 100644 (file)
index 0000000..1f4372c
--- /dev/null
+++ b/ms/mw.bat
@@ -0,0 +1,34 @@
+@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
index 2306441..d3263b6 100755 (executable)
@@ -109,13 +109,13 @@ if($do_crypto == 1) {
 }
 
 } 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);
 }
 
 
@@ -290,6 +290,7 @@ sub print_def_file
 {
        (*OUT,my $name,*nums,@functions)=@_;
        my $n =1;
+       my $nodef=0;
 
        if ($W32)
                { $name.="32"; }
@@ -329,14 +330,17 @@ EOF
 
        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
index f99b015..a47a961 100644 (file)
@@ -1,12 +1,11 @@
 #!/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
index d523d70..8d8ad96 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/local/bin/perl
 #
-# unix.pl - the standard unix makefile stuff.
+# Mingw32f.pl -- copy files; Mingw32.pl is needed to do the compiling. 
 #
 
 $o='\\';