From 489d10768985e7715cd22e6ecf68062c0a2f0222 Mon Sep 17 00:00:00 2001
From: the-Arioch <the_Arioch@nm.ru>
Date: Tue, 8 Oct 2013 18:37:25 +0400
Subject: [PATCH] * Win64 platform needs Win64 conditional, not win32 *
 all_win32 targetted files are incompatible with Win64 and should not be
 included in Win64 packages

---
 .../devtools/PackagesGenerator/GenerateTargets.pas | 24 ++++++++++++++++++----
 .../PackagesGenerator/PackageGenerator.pas         |  2 +-
 jvcl/packages/d16_x64/JvSystem.dpk                 |  3 +--
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/jvcl/devtools/PackagesGenerator/GenerateTargets.pas b/jvcl/devtools/PackagesGenerator/GenerateTargets.pas
index 0fda159..36f4517 100644
--- a/jvcl/devtools/PackagesGenerator/GenerateTargets.pas
+++ b/jvcl/devtools/PackagesGenerator/GenerateTargets.pas
@@ -60,6 +60,7 @@ implementation
 
 uses
   SysUtils,
+  StrUtils,
   {$IFNDEF COMPILER12_UP}
   JvJCLUtils,
   {$ENDIF ~COMPILER12_UP}
@@ -73,7 +74,7 @@ type
   end;
 
 const
-  TargetDefines: array [0..7] of TTargetDefine =
+  TargetDefines: array [0..12] of TTargetDefine =
                 (
                   (TargetName: 'c6'; Define: 'VER140'),
                   (TargetName: 'd6'; Define: 'VER140'),
@@ -82,7 +83,12 @@ const
                   (TargetName: 'd10'; Define: 'VER180'),
                   (TargetName: 'd11'; Define: 'VER180,VER185'),
                   (TargetName: 'd12'; Define: 'VER200'),
-                  (TargetName: 'd14'; Define: 'VER210')
+                  (TargetName: 'd14'; Define: 'VER210'),
+                  (TargetName: 'd15'; Define: 'VER220'),
+                  (TargetName: 'd16'; Define: 'VER230'),
+                  (TargetName: 'd17'; Define: 'VER240'),
+                  (TargetName: 'd18'; Define: 'VER250'),
+                  (TargetName: 'd19'; Define: 'VER260')
                 );
 
 { TTarget }
@@ -91,6 +97,7 @@ constructor TTarget.Create(Node: TJclSimpleXmlElem);
 var
   I: Integer;
   Tmp: TStringList;
+  DelphiName: string;
 begin
   inherited Create;
   FName := AnsiLowerCase(Node.Properties.ItemNamed['name'].Value);
@@ -125,11 +132,20 @@ begin
   if Assigned(Node.Properties.ItemNamed['IsDotNet']) then
     FIsDotNet := Node.Properties.ItemNamed['IsDotNet'].BoolValue;
 
-  FDefines.Add('WIN32');
+  DelphiName := FName;
+  if EndsText('_x64', FName) then begin
+     FDefines.Add('WIN64');
+     SetLength(DelphiName, Length(DelphiName) - Length('_x64') );
+  end else begin
+     FDefines.Add('WIN32');
+  end;
+// Potential gotcha if new platforms would ever be added
+// Like with Delphi/LLVM or Lazarus
+
   FDefines.Add('CONDITIONALEXPRESSIONS');
 
   for I := Low(TargetDefines) to High(TargetDefines) do
-    if SameText(TargetDefines[I].TargetName, Name) then
+    if SameText(TargetDefines[I].TargetName, DelphiName) then
     begin
       Tmp := TStringList.Create;
       try
diff --git a/jvcl/devtools/PackagesGenerator/PackageGenerator.pas b/jvcl/devtools/PackagesGenerator/PackageGenerator.pas
index ac3595c..229527f 100644
--- a/jvcl/devtools/PackagesGenerator/PackageGenerator.pas
+++ b/jvcl/devtools/PackagesGenerator/PackageGenerator.pas
@@ -1112,7 +1112,7 @@ begin
         outFile.SaveToFile(OutFileName)
       else
       begin
-        CopyFile(PChar(templateName), PChar(OutFileName), False);
+        Win32Check( CopyFile(PChar(templateName), PChar(OutFileName), False) );
         FileSetDate(OutFileName, DateTimeToFileDate(Now)); // adjust file time
       end;
     end
diff --git a/jvcl/packages/d16_x64/JvSystem.dpk b/jvcl/packages/d16_x64/JvSystem.dpk
index 7cdb013..5f5b23e 100644
--- a/jvcl/packages/d16_x64/JvSystem.dpk
+++ b/jvcl/packages/d16_x64/JvSystem.dpk
@@ -4,7 +4,7 @@ package JvSystem;
      DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR
             ALWAYS EDIT THE RELATED XML FILE (JvSystem-R.xml)
 
-     Last generated: 13-06-2012  13:45:58 UTC
+     Last generated: 08-10-2013  14:34:19 UTC
 -----------------------------------------------------------------------------
 }
 
@@ -69,7 +69,6 @@ contains
   JvJoystick in '..\..\run\JvJoystick.pas' ,
   JvMRUList in '..\..\run\JvMRUList.pas' ,
   JvMRUManager in '..\..\run\JvMRUManager.pas' ,
-  JvNTEventLog in '..\..\run\JvNTEventLog.pas' ,
   JvPerfMon95 in '..\..\run\JvPerfMon95.pas' ,
   JvRas32 in '..\..\run\JvRas32.pas' ,
   JvScreenResolution in '..\..\run\JvScreenResolution.pas' ,
-- 
1.8.3.msysgit.0

