I recently modified the tools/MakeDeps to allow it to create 64-bit visual studio projects - it's just a small patch but I think it might be interesting for the subscribers of this list anyway. (Only tested with VS2008, and I recommend using the Windows7 SDK command line to run the create.bat script.)

- Lukas
diff --git a/make/windows/create.bat b/make/windows/create.bat
--- a/make/windows/create.bat
+++ b/make/windows/create.bat
@@ -42,6 +42,8 @@ cl 2>&1 | grep "IA-64" >NUL
 cl 2>&1 | grep "IA-64" >NUL
 if %errorlevel% == 0 goto isia64
 cl 2>&1 | grep "AMD64" >NUL
+if %errorlevel% == 0 goto amd64
+cl 2>&1 | grep "x64" >NUL
 if %errorlevel% == 0 goto amd64
 set ARCH=x86
 set BUILDARCH=i486
diff --git a/src/share/tools/MakeDeps/BuildConfig.java 
b/src/share/tools/MakeDeps/BuildConfig.java
--- a/src/share/tools/MakeDeps/BuildConfig.java
+++ b/src/share/tools/MakeDeps/BuildConfig.java
@@ -242,12 +242,22 @@ class BuildConfig {
 
     void initDefaultDefines(Vector defines) {
         Vector sysDefines = new Vector();
-        sysDefines.add("WIN32");
+        if( Util.os().equals("Win32")) {
+               sysDefines.add("WIN32");
+            sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
+        } else {
+               sysDefines.add("_AMD64_");
+               sysDefines.add("AMD64");
+               sysDefines.add("_WIN64");
+               sysDefines.add("_LP64");
+               if (System.getenv("MSC_VER") != null)
+                       sysDefines.add("MSC_VER=" + System.getenv("MSC_VER"));
+            sysDefines.add("HOTSPOT_LIB_ARCH=\\\"amd64\\\"");
+        }
         sysDefines.add("_WINDOWS");
         sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name"));
         sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\"");
         sysDefines.add("_JNI_IMPLEMENTATION_");
-        sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
 
         sysDefines.addAll(defines);
 
diff --git a/src/share/tools/MakeDeps/MakeDeps.java 
b/src/share/tools/MakeDeps/MakeDeps.java
--- a/src/share/tools/MakeDeps/MakeDeps.java
+++ b/src/share/tools/MakeDeps/MakeDeps.java
@@ -1,3 +1,6 @@
+import java.util.Map;
+import java.util.Map.Entry;
+
 /*
  * Copyright 1999-2001 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
diff --git a/src/share/tools/MakeDeps/Util.java 
b/src/share/tools/MakeDeps/Util.java
--- a/src/share/tools/MakeDeps/Util.java
+++ b/src/share/tools/MakeDeps/Util.java
@@ -23,6 +23,7 @@
  */
 
 import java.util.*;
+import java.util.Map.Entry;
 import java.io.File;
 
 public class Util {
@@ -84,5 +85,25 @@ public class Util {
     }
 
     static String sep = File.separator;
-    static String os = "Win32"; //System.getProperty("os.name");
+    
+    private static String _os;
+    
+    static String os() {
+       if( _os==null) {
+
+               for(Map.Entry<String, String> entry: System.getenv().entrySet())
+                       
if("PLATFORM_ARCH_MODEL".equals(entry.getKey().toUpperCase())) {
+                               String archModel = entry.getValue();
+                               if("x86_32".equals(archModel))
+                                       _os = "Win32";
+                               else if("x86_64".equals(archModel))
+                                       _os = "x64";
+                               else
+                                       throw new RuntimeException("Unsupported 
PLATFORM_ARCH_MODEL " + archModel);
+                               return _os;
+                       }
+               throw new RuntimeException("PLATFORM_ARCH_MODEL not specified");
+       }
+       return _os;
+    }
 }
diff --git a/src/share/tools/MakeDeps/WinGammaPlatformVC6.java 
b/src/share/tools/MakeDeps/WinGammaPlatformVC6.java
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC6.java
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC6.java
@@ -286,6 +286,6 @@ class CompilerInterfaceVC6  extends Comp
     }
 
     String makeCfgName(String flavourBuild) {
-        return "vm - "+ Util.os + " " + flavourBuild;
+        return "vm - "+ "Win32" + " " + flavourBuild;
     }
 }
diff --git a/src/share/tools/MakeDeps/WinGammaPlatformVC7.java 
b/src/share/tools/MakeDeps/WinGammaPlatformVC7.java
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC7.java
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC7.java
@@ -51,7 +51,7 @@ public class WinGammaPlatformVC7 extends
             );
 
         startTag("Platforms", null);
-        tag("Platform", new String[] {"Name", Util.os});
+        tag("Platform", new String[] {"Name", Util.os()});
         endTag("Platforms");
 
         startTag("Configurations", null);
@@ -467,7 +467,7 @@ public class WinGammaPlatformVC7 extends
                 "PreprocessorDefinitions", "NDEBUG",
                 "MkTypLibCompatible", "TRUE",
                 "SuppressStartupBanner", "TRUE",
-                "TargetEnvironment", "1",
+                "TargetEnvironment", Util.os().equals("Win32") ? "1" : "3",
                 "TypeLibraryName", cfg.get("OutputDir") + Util.sep + "vm.tlb",
                 "HeaderFileName", ""
             }
@@ -609,7 +609,7 @@ class CompilerInterfaceVC7 extends Compi
         addAttr(rv, "BaseAddress", "0x8000000");
         addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
         // Set /MACHINE option. 1 is machineX86
-        addAttr(rv, "TargetMachine", "1");
+        addAttr(rv, "TargetMachine", Util.os().equals("Win32") ? "1" : "17");
 
         return rv;
     }
@@ -687,6 +687,6 @@ class CompilerInterfaceVC7 extends Compi
     }
 
     String makeCfgName(String flavourBuild) {
-        return  flavourBuild + "|" + Util.os;
+        return  flavourBuild + "|" + Util.os();
     }
 }
diff --git a/src/share/tools/MakeDeps/WinGammaPlatformVC8.java 
b/src/share/tools/MakeDeps/WinGammaPlatformVC8.java
--- a/src/share/tools/MakeDeps/WinGammaPlatformVC8.java
+++ b/src/share/tools/MakeDeps/WinGammaPlatformVC8.java
@@ -41,6 +41,8 @@ class CompilerInterfaceVC8 extends Compi
         addAttr(rv, "UsePrecompiledHeader", "2");
         // Set /EHsc- option. 0 is cppExceptionHandlingNo
         addAttr(rv, "ExceptionHandling", "0");
+        // Parallel compilation
+        addAttr(rv, "AdditionalOptions", "/MP");
 
         return rv;
     }

Reply via email to