From ffa68b84004f80a5123078f26b40b8af887f9f9a Mon Sep 17 00:00:00 2001
From: John Eichenberger <john.eichenberger@intermec.com>
Date: Wed, 4 Dec 2013 20:18:58 -0800
Subject: [PATCH] Add version information to OpenSSL DLLs

+ mk1mf.pl: Create and use version32.rc for platform VC-CE.
+ Configure: When Version_Major is defined as an environment variable
   use Version_Major, Version_Minor, Version_Internal, and Build_Number
   as the file version.

Issue:IA-133
Change-Id: Ibfd80d67ad3e645037954d58dc5996f881f0e4b7
---
 Configure     | 22 ++++++++++++++++++----
 util/mk1mf.pl |  5 +++--
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/Configure b/Configure
index c4148a0..103f8cb 100755
--- a/Configure
+++ b/Configure
@@ -1984,6 +1984,20 @@ if ($IsMK1MF && ($target !~ /^netware/)) {
 		$v3=hex $3;
 		$v4=hex $4;
 	}
+	my ($build, $build_major, $build_minor, $build_internal, $build_number);
+	if (exists $ENV{Version_Major}) {
+		$build_major = $ENV{Version_Major};
+		$build_minor = $ENV{Version_Minor};
+		$build_internal = $ENV{Version_Internal};
+		$build_number = $ENV{Build_Number};
+		$build = join ".", $build_major, $build_minor, $build_internal, $build_number;
+	} else {
+		$build_major = $v1;
+		$build_minor = $v2;
+		$build_internal = $v3;
+		$build_number = $v4;
+		$build = $version;
+	}
 	open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
 	print OUT <<EOF;
 #include <winver.h>
@@ -1991,7 +2005,7 @@ if ($IsMK1MF && ($target !~ /^netware/)) {
 LANGUAGE 0x09,0x01
 
 1 VERSIONINFO
-  FILEVERSION $v1,$v2,$v3,$v4
+  FILEVERSION $build_major,$build_minor,$build_internal,$build_number
   PRODUCTVERSION $v1,$v2,$v3,$v4
   FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
@@ -2010,13 +2024,13 @@ BEGIN
 	    // Required:	    
 	    VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
 	    VALUE "FileDescription", "OpenSSL Shared Library\\0"
-	    VALUE "FileVersion", "$version\\0"
+	    VALUE "FileVersion", "$build\\0"
 #if defined(CRYPTO)
 	    VALUE "InternalName", "libeay32\\0"
-	    VALUE "OriginalFilename", "$crypto_prefix", "libeay32.dll\\0"
+	    VALUE "OriginalFilename", "$crypto_prefix" "libeay32.dll\\0"
 #elif defined(SSL)
 	    VALUE "InternalName", "ssleay32\\0"
-	    VALUE "OriginalFilename", "$crypto_prefix", "ssleay32.dll\\0"
+	    VALUE "OriginalFilename", "$crypto_prefix" "ssleay32.dll\\0"
 #endif
 	    VALUE "ProductName", "The OpenSSL Toolkit\\0"
 	    VALUE "ProductVersion", "$version\\0"
diff --git a/util/mk1mf.pl b/util/mk1mf.pl
index c1139ea..78eae4e 100755
--- a/util/mk1mf.pl
+++ b/util/mk1mf.pl
@@ -686,7 +686,7 @@ foreach (values %lib_nam)
 	}
 
 # hack to add version info on MSVC
-if (($platform eq "VC-WIN32") || ($platform eq "VC-WIN64A")
+if (($platform eq "VC-WIN32") || ($platform eq "VC-WIN64A") || ($platform eq "VC-CE")
 	|| ($platform eq "VC-WIN64I") || ($platform eq "VC-NT")) {
     $rules.= <<"EOF";
 \$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc
@@ -911,7 +911,8 @@ sub do_defs
 		$ret.=$t;
 		}
 	# hack to add version info on MSVC
-	if ($shlib && (($platform eq "VC-WIN32") || ($platfrom eq "VC-WIN64I") || ($platform eq "VC-WIN64A") || ($platform eq "VC-NT")))
+	if ($shlib && (($platform eq "VC-WIN32") || ($platfrom eq "VC-WIN64I") || ($platform eq "VC-CE")
+	 || ($platform eq "VC-WIN64A") || ($platform eq "VC-NT")))
 		{
 		if ($var eq "CRYPTOOBJ")
 			{ $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; }
-- 
1.8.1.msysgit.1

