--- old/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java 2011-02-10 13:17:44.869078900 +0100 +++ new/src/share/tools/ProjectCreator/WinGammaPlatformVC7.java 2011-02-10 13:17:44.547060400 +0100 @@ -37,7 +37,7 @@ public void writeProjectFile(String projectFileName, String projectName, Vector allConfigs) throws IOException { System.out.println(); - System.out.println(" Writing .vcproj file..."); + System.out.println(" Writing .vcproj file: "+projectFileName); // If we got this far without an error, we're safe to actually // write the .vcproj file printWriter = new PrintWriter(new FileWriter(projectFileName)); @@ -54,9 +54,8 @@ "SccLocalPath", "" } ); - startTag("Platforms", null); - tag("Platform", new String[] {"Name", Util.os}); + tag("Platform", new String[] {"Name", (String) BuildConfig.getField(null, "PlatformName")}); endTag("Platforms"); startTag("Configurations", null); @@ -81,12 +80,47 @@ abstract class NameFilter { - protected String fname; + protected String fname; abstract boolean match(FileInfo fi); String filterString() { return ""; } String name() { return this.fname;} + + @Override + // eclipse auto-generated + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + getOuterType().hashCode(); + result = prime * result + ((fname == null) ? 0 : fname.hashCode()); + return result; + } + + @Override + // eclipse auto-generated + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + NameFilter other = (NameFilter) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (fname == null) { + if (other.fname != null) + return false; + } else if (!fname.equals(other.fname)) + return false; + return true; + } + + // eclipse auto-generated + private WinGammaPlatformVC7 getOuterType() { + return WinGammaPlatformVC7.this; + } } class DirectoryFilter extends NameFilter { @@ -109,9 +143,50 @@ boolean match(FileInfo fi) { - int lastSlashIndex = fi.full.lastIndexOf('/'); - String fullDir = fi.full.substring(0, lastSlashIndex); - return fullDir.endsWith(dir); + int lastSlashIndex = fi.full.lastIndexOf('/'); + String fullDir = fi.full.substring(0, lastSlashIndex); + return fullDir.endsWith(dir); + } + + @Override + // eclipse auto-generated + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + getOuterType().hashCode(); + result = prime * result + baseLen; + result = prime * result + ((dir == null) ? 0 : dir.hashCode()); + result = prime * result + dirLen; + return result; + } + + @Override + // eclipse auto-generated + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + DirectoryFilter other = (DirectoryFilter) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (baseLen != other.baseLen) + return false; + if (dir == null) { + if (other.dir != null) + return false; + } else if (!dir.equals(other.dir)) + return false; + if (dirLen != other.dirLen) + return false; + return true; + } + + // eclipse auto-generated + private WinGammaPlatformVC7 getOuterType() { + return WinGammaPlatformVC7.this; } } @@ -232,32 +307,39 @@ DirectoryFilter container = null; for(FileInfo fileInfo : files) { - if (!fileInfo.full.startsWith(sbase)) { - continue; - } - - int lastSlash = fileInfo.full.lastIndexOf('/'); - String dir = fileInfo.full.substring(sbase.length(), lastSlash); - if(dir.equals("share/vm")) { - // skip files directly in share/vm - should only be precompiled.hpp which is handled below - continue; - } - if (!dir.equals(currentDir)) { - currentDir = dir; - if (container != null) { - rv.add(container); - } - - // remove "share/vm/" from names - String name = dir; - if (dir.startsWith("share/vm/")) { - name = dir.substring("share/vm/".length(), dir.length()); - } - container = new DirectoryFilter(name, dir, sbase); - } + if (!fileInfo.full.startsWith(sbase)) { + continue; + } + + int lastSlash = fileInfo.full.lastIndexOf('/'); + String dir = fileInfo.full.substring(sbase.length(), lastSlash); + if(dir.equals("share/vm")) { + // skip files directly in share/vm - should only be precompiled.hpp which is handled below + continue; + } + if (!dir.equals(currentDir)) { + currentDir = dir; + if (container != null && !rv.contains(container)) { + rv.add(container); + } + + // remove "share/vm/" from names + String name = dir; + if (dir.startsWith("share/vm/")) { + name = dir.substring("share/vm/".length(), dir.length()); + } + DirectoryFilter newfilter = new DirectoryFilter(name, dir, sbase); + int i = rv.indexOf(newfilter); + if(i == -1) { + container = newfilter; + } else { + // if the filter already exists, reuse it + container = (DirectoryFilter) rv.get(i); + } + } } - if (container != null) { - rv.add(container); + if (container != null && !rv.contains(container)) { + rv.add(container); } ContainerFilter generated = new ContainerFilter("Generated"); @@ -583,7 +665,7 @@ return rv; } - Vector getBaseLinkerFlags(String outDir, String outDll) { + Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) { Vector rv = new Vector(); addAttr(rv, "Name", "VCLinkerTool"); @@ -608,10 +690,15 @@ addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"jvm.pdb"); // Set /SUBSYSTEM option. 2 is subSystemWindows addAttr(rv, "SubSystem", "2"); - addAttr(rv, "BaseAddress", "0x8000000"); addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib"); - // Set /MACHINE option. 1 is machineX86 - addAttr(rv, "TargetMachine", "1"); + addAttr(rv, "BaseAddress", "0x8000000"); + if(platformName.equals("Win32")) { + // Set /MACHINE option. 1 is X86 + addAttr(rv, "TargetMachine", "1"); + } else { + // Set /MACHINE option. 17 is X64 + addAttr(rv, "TargetMachine", "17"); + } return rv; } @@ -656,12 +743,6 @@ addAttr(rv, "Optimization", "2"); // Set /Oy- option addAttr(rv, "OmitFramePointers", "FALSE"); - } - - Vector getProductCompilerFlags() { - Vector rv = new Vector(); - - getProductCompilerFlags_common(rv); // Set /Ob option. 1 is expandOnlyInline addAttr(rv, "InlineFunctionExpansion", "1"); // Set /GF option. @@ -670,6 +751,12 @@ addAttr(rv, "RuntimeLibrary", "2"); // Set /Gy option addAttr(rv, "EnableFunctionLevelLinking", "TRUE"); + } + + Vector getProductCompilerFlags() { + Vector rv = new Vector(); + + getProductCompilerFlags_common(rv); return rv; } @@ -693,7 +780,7 @@ return "0"; } - String makeCfgName(String flavourBuild) { - return flavourBuild + "|" + Util.os; + String makeCfgName(String flavourBuild, String platform) { + return flavourBuild + "|" + platform; } }