Further mingw build procedure updates.
authorAndy Polyakov <appro@openssl.org>
Tue, 24 Oct 2006 22:14:20 +0000 (22:14 +0000)
committerAndy Polyakov <appro@openssl.org>
Tue, 24 Oct 2006 22:14:20 +0000 (22:14 +0000)
Makefile.org
Makefile.shared
apps/Makefile
crypto/Makefile
test/Makefile
util/mkrc.pl [new file with mode: 0755]

index a32ed33..fa4c83b 100644 (file)
@@ -176,6 +176,7 @@ BUILDENV=   PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
                CC='${CC}' CFLAG='${CFLAG}'                     \
                AS='${CC}' ASFLAG='${CFLAG} -c'                 \
                AR='${AR}' NM='${NM}' RANLIB='${RANLIB}'        \
+               CROSS_COMPILE_PREFIX='${CROSS_COMPILE_PREFIX}'  \
                PERL='${PERL}'                                  \
                SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib'   \
                INSTALL_PREFIX='${INSTALL_PREFIX}'              \
index 40f0169..f6ae6f0 100644 (file)
@@ -255,28 +255,37 @@ link_o.cygwin:
        SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
        ALLSYMSFLAGS='-Wl,--whole-archive'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
-       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a"; \
+       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-s,-Bsymbolic"; \
        $(LINK_SO_O)
 link_a.cygwin:
        @ $(CALC_VERSIONS); \
        INHIBIT_SYMLINKS=yes; \
-       SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); def=; \
+       SHLIB=cyg$(LIBNAME); SHLIB_SOVER=-$(LIBVERSION); SHLIB_SUFFIX=.dll; \
+       dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; extras=; \
        if expr $(PLATFORM) : 'mingw' > /dev/null; then \
                SHLIB=$(LIBNAME); SHLIB_SOVER=32; \
-               def="$(LIBNAME).def"; \
-               $(PERL) util/mkdef.pl 32 $(LIBNAME) > $$def; \
+               extras="$(LIBNAME).def"; \
+               $(PERL) util/mkdef.pl 32 $(LIBNAME) > $$extras; \
        fi; \
-       SHLIB_SUFFIX=.dll; \
+       dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
+       $(PERL) util/mkrc.pl $$dll_name | \
+               $(CROSS_COMPILE_PREFIX)windres -o rc.o; \
+       extras="$$extras rc.o"; \
        ALLSYMSFLAGS='-Wl,--whole-archive'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
        base=;  [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
-       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$def"; \
-       [ -f apps/$$SHLIB$$SHLIB_SUFFIX ] && rm apps/$$SHLIB$$SHLIB_SUFFIX; \
-       [ -f test/$$SHLIB$$SHLIB_SUFFIX ] && rm test/$$SHLIB$$SHLIB_SUFFIX; \
+       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \
+       [ -f apps/$$dll_name ] && rm apps/$$dll_name; \
+       [ -f test/$$dll_name ] && rm test/$$dll_name; \
        $(LINK_SO_A) || exit 1; \
-       cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX apps/; \
-       cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX test/
+       rm $$extras; \
+       cp -p $$dll_name apps/; \
+       cp -p $$dll_name test/
 link_app.cygwin:
+       @if expr "$(CFLAGS)" : '.*OPENSSL_USE_APPLINK' > /dev/null; then \
+               LIBDEPS="$(TOP)/crypto/applink.o $${LIBDEPS:-$(LIBDEPS)}"; \
+               export LIBDEPS; \
+       fi; \
        $(LINK_APP)
 
 link_o.alpha-osf1:
index 2094de1..5ae7ee4 100644 (file)
@@ -140,7 +140,7 @@ dclean:
        rm -f CA.pl
 
 clean:
-       rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
+       rm -f *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
        rm -f req
 
 $(DLIBSSL):
index ef4f724..efe6a79 100644 (file)
@@ -64,11 +64,14 @@ x86cpuid-cof.s: x86cpuid.pl perlasm/x86asm.pl
 x86cpuid-out.s: x86cpuid.pl perlasm/x86asm.pl
        $(PERL) x86cpuid.pl a.out $(CFLAGS) $(PROCESSOR) > $@
 
-uplink.o:      ../ms/uplink.c
-       $(CC) $(CFLAGS) -c -o $@ ../ms/uplink.c
+applink.o:     $(TOP)/ms/applink.c
+       $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/applink.c
 
-uplink-cof.s:  ../ms/uplink.pl
-       $(PERL) ../ms/uplink.pl coff > $@
+uplink.o:      $(TOP)/ms/uplink.c applink.o
+       $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/uplink.c
+
+uplink-cof.s:  $(TOP)/ms/uplink.pl
+       $(PERL) $(TOP)/ms/uplink.pl coff > $@
 
 x86_64cpuid.s: x86_64cpuid.pl
        $(PERL) x86_64cpuid.pl $@
index 5afabec..5a8d185 100644 (file)
@@ -315,7 +315,7 @@ dclean:
                        testreq.pem
 
 clean:
-       rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest
+       rm -f .rnd tmp.bntest tmp.bctest *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest
 
 $(DLIBSSL):
        (cd ..; $(MAKE) DIRS=ssl all)
diff --git a/util/mkrc.pl b/util/mkrc.pl
new file mode 100755 (executable)
index 0000000..0ceadcf
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/env perl
+#
+open FD,"crypto/opensslv.h";
+while(<FD>) {
+    if (/OPENSSL_VERSION_NUMBER\s+(0x[0-9a-f]+)/i) {
+       $ver = hex($1);
+       $v1 = ($ver>>28);
+       $v2 = ($ver>>20)&0xff;
+       $v3 = ($ver>>12)&0xff;
+       $v4 = ($ver>> 4)&0xff;
+       $beta = $ver&0xf;
+       $version = "$v1.$v2.$v3";
+       if ($beta==0xf) { $version .= chr(ord('a')+$v4-1) if ($v4);     }
+       elsif ($beta==0){ $version .= "-dev";                           }
+       else            { $version .= "-beta$beta";                     }
+       last;
+    }
+}
+close(FD);
+
+$filename = $ARGV[0]; $filename =~ /(.*)\.([^.]+)$/;
+$basename = $1;
+$extname  = $2;
+
+if ($extname =~ /dll/i)        { $description = "OpenSSL shared library"; }
+else                   { $description = "OpenSSL application";    }
+
+print <<___;
+#include <winver.h>
+
+LANGUAGE 0x09,0x01
+
+1 VERSIONINFO
+  FILEVERSION $v1,$v2,$v3,$v4
+  PRODUCTVERSION $v1,$v2,$v3,$v4
+  FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+  FILEFLAGS 0x01L
+#else
+  FILEFLAGS 0x00L
+#endif
+  FILEOS VOS__WINDOWS32
+  FILETYPE VFT_DLL
+  FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            // Required:
+            VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
+            VALUE "FileDescription", "$description\\0"
+            VALUE "FileVersion", "$version\\0"
+            VALUE "InternalName", "$basename\\0"
+            VALUE "OriginalFilename", "$filename\\0"
+            VALUE "ProductName", "The OpenSSL Toolkit\\0"
+            VALUE "ProductVersion", "$version\\0"
+            // Optional:
+            //VALUE "Comments", "\\0"
+            VALUE "LegalCopyright", "Copyright © 1998-2006 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
+            //VALUE "LegalTrademarks", "\\0"
+            //VALUE "PrivateBuild", "\\0"
+            //VALUE "SpecialBuild", "\\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 0x4b0
+    END
+END
+___