From 5b50f99e1e18c0b1e8cccf4d01f5d72b75c2d7ce Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Tue, 24 Oct 2006 22:14:20 +0000 Subject: [PATCH] Further mingw build procedure updates. --- Makefile.org | 1 + Makefile.shared | 29 +++++++++++++------- apps/Makefile | 2 +- crypto/Makefile | 11 +++++--- test/Makefile | 2 +- util/mkrc.pl | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 100 insertions(+), 16 deletions(-) create mode 100755 util/mkrc.pl diff --git a/Makefile.org b/Makefile.org index a32ed33ff3..fa4c83b90c 100644 --- a/Makefile.org +++ b/Makefile.org @@ -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}' \ diff --git a/Makefile.shared b/Makefile.shared index 40f0169a5d..f6ae6f0b2e 100644 --- a/Makefile.shared +++ b/Makefile.shared @@ -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: diff --git a/apps/Makefile b/apps/Makefile index 2094de1f11..5ae7ee47fa 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -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): diff --git a/crypto/Makefile b/crypto/Makefile index ef4f724f16..efe6a79d87 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -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 $@ diff --git a/test/Makefile b/test/Makefile index 5afabecb21..5a8d185604 100644 --- a/test/Makefile +++ b/test/Makefile @@ -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 index 0000000000..0ceadcf8d1 --- /dev/null +++ b/util/mkrc.pl @@ -0,0 +1,71 @@ +#!/bin/env perl +# +open FD,"crypto/opensslv.h"; +while() { + 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 + +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 +___ -- 2.34.1