annotate src/share/tools/ProjectCreator/WinGammaPlatformVC10.java @ 17716:cdb71841f4bc

6498581: ThreadInterruptTest3 produces wrong output on Windows Summary: There is race condition between os::interrupt and os::is_interrupted on Windows. In JVM_Sleep(Thread.sleep), check if thread gets interrupted, it may see interrupted but not really interrupted so cause spurious waking up (early return from sleep). Fix by checking if interrupt event really gets set thus prevent false return. For intrinsic of _isInterrupted, on Windows, go fastpath only on bit not set. Reviewed-by: acorn, kvn Contributed-by: david.holmes@oracle.com, yumin.qi@oracle.com
author minqi
date Wed, 26 Feb 2014 15:20:41 -0800
parents 31f3b1e1c5e5
children 3cce976666d9 b59507f713e0 09259e52a610
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12014
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
1 /*
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
4 *
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
7 * published by the Free Software Foundation.
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
8 *
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
13 * accompanied this code).
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
14 *
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
15 * You should have received a copy of the GNU General Public License version
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
18 *
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
21 * questions.
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
22 *
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
23 */
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
24
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
25 import java.io.File;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
26 import java.io.FileNotFoundException;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
27 import java.io.IOException;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
28 import java.io.PrintWriter;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
29 import java.io.UnsupportedEncodingException;
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
30 import java.nio.file.FileSystems;
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
31 import java.util.Iterator;
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
32 import java.util.LinkedList;
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
33 import java.util.UUID;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
34 import java.util.Vector;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
35
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
36 public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
37
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
38
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
39 LinkedList <String>filters = new LinkedList<String>();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
40 LinkedList <String[]>filterDeps = new LinkedList<String[]>();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
41
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
42 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
43 protected String getProjectExt() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
44 return ".vcxproj";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
45 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
46
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
47 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
48 public void writeProjectFile(String projectFileName, String projectName,
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
49 Vector<BuildConfig> allConfigs) throws IOException {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
50 System.out.println();
12014
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
51 System.out.println(" Writing .vcxproj file: " + projectFileName);
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
52
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
53 String projDir = Util.normalize(new File(projectFileName).getParent());
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
54
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
55 printWriter = new PrintWriter(projectFileName, "UTF-8");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
56 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
57 startTag("Project",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
58 "DefaultTargets", "Build",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
59 "ToolsVersion", "4.0",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
60 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
61 startTag("ItemGroup",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
62 "Label", "ProjectConfigurations");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
63 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
64 startTag("ProjectConfiguration",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
65 "Include", cfg.get("Name"));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
66 tagData("Configuration", cfg.get("Id"));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
67 tagData("Platform", cfg.get("PlatformName"));
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
68 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
69 }
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
70 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
71
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
72 startTag("PropertyGroup", "Label", "Globals");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
73 tagData("ProjectGuid", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
74 tag("SccProjectName");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
75 tag("SccLocalPath");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
76 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
77
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
78 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
79
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
80 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
81 startTag(cfg, "PropertyGroup", "Label", "Configuration");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
82 tagData("ConfigurationType", "DynamicLibrary");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
83 tagData("UseOfMfc", "false");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
84 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
85 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
86
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
87 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.props");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
88 startTag("ImportGroup", "Label", "ExtensionSettings");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
89 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
90 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
91 startTag(cfg, "ImportGroup", "Label", "PropertySheets");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
92 tag("Import",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
93 "Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
94 "Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
95 "Label", "LocalAppDataPlatform");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
96 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
97 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
98
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
99 tag("PropertyGroup", "Label", "UserMacros");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
100
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
101 startTag("PropertyGroup");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
102 tagData("_ProjectFileVersion", "10.0.30319.1");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
103 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
104 tagData(cfg, "OutDir", cfg.get("OutputDir") + Util.sep);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
105 tagData(cfg, "IntDir", cfg.get("OutputDir") + Util.sep);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
106 tagData(cfg, "LinkIncremental", "false");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
107 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
108 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
109 tagData(cfg, "CodeAnalysisRuleSet", "AllRules.ruleset");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
110 tag(cfg, "CodeAnalysisRules");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
111 tag(cfg, "CodeAnalysisRuleAssemblies");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
112 }
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
113 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
114
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
115 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
116 startTag(cfg, "ItemDefinitionGroup");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
117 startTag("ClCompile");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
118 tagV(cfg.getV("CompilerFlags"));
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
119 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
120
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
121 startTag("Link");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
122 tagV(cfg.getV("LinkerFlags"));
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
123 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
124
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
125 startTag("PreLinkEvent");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
126 tagData("Message", BuildConfig.getFieldString(null, "PrelinkDescription"));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
127 tagData("Command", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace("\t", "\r\n")));
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
128 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
129
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
130 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
131 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
132
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
133 writeFiles(allConfigs, projDir);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
134
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
135 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
136 startTag("ImportGroup", "Label", "ExtensionTargets");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
137 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
138
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
139 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
140 printWriter.close();
12014
31f3b1e1c5e5 8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
dcubed
parents: 10277
diff changeset
141 System.out.println(" Done writing .vcxproj file.");
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
142
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
143 writeFilterFile(projectFileName, projectName, allConfigs, projDir);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
144 writeUserFile(projectFileName, allConfigs);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
145 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
146
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
147
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
148 private void writeUserFile(String projectFileName, Vector<BuildConfig> allConfigs) throws FileNotFoundException, UnsupportedEncodingException {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
149 String userFileName = projectFileName + ".user";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
150 if (new File(userFileName).exists()) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
151 return;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
152 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
153 System.out.print(" Writing .vcxproj.user file: " + userFileName);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
154 printWriter = new PrintWriter(userFileName, "UTF-8");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
155
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
156 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
157 startTag("Project",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
158 "ToolsVersion", "4.0",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
159 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
160
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
161 for (BuildConfig cfg : allConfigs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
162 startTag(cfg, "PropertyGroup");
10277
aabf54ccedb1 8008772: remove gamma launcher
twisti
parents: 6801
diff changeset
163 tagData("LocalDebuggerCommand", cfg.get("JdkTargetRoot") + "\\bin\\java.exe");
aabf54ccedb1 8008772: remove gamma launcher
twisti
parents: 6801
diff changeset
164 tagData("LocalDebuggerCommandArguments", "-XXaltjvm=$(TargetDir) -Dsun.java.launcher=gamma");
aabf54ccedb1 8008772: remove gamma launcher
twisti
parents: 6801
diff changeset
165 tagData("LocalDebuggerEnvironment", "JAVA_HOME=" + cfg.get("JdkTargetRoot"));
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
166 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
167 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
168
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
169 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
170 printWriter.close();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
171 System.out.println(" Done.");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
172 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
173
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
174 public void addFilter(String rPath) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
175 filters.add(rPath);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
176 }
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
177
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
178 public void addFilterDependency(String fileLoc, String filter) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
179 filterDeps.add(new String[] {fileLoc, filter});
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
180 }
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
181
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
182 private void writeFilterFile(String projectFileName, String projectName,
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
183 Vector<BuildConfig> allConfigs, String base) throws FileNotFoundException, UnsupportedEncodingException {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
184 String filterFileName = projectFileName + ".filters";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
185 System.out.print(" Writing .vcxproj.filters file: " + filterFileName);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
186 printWriter = new PrintWriter(filterFileName, "UTF-8");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
187
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
188 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
189 startTag("Project",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
190 "ToolsVersion", "4.0",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
191 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
192
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
193 startTag("ItemGroup");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
194 for (String filter : filters) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
195 startTag("Filter", "Include",filter);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
196 UUID uuid = UUID.randomUUID();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
197 tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
198 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
199 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
200 startTag("Filter", "Include", "Resource Files");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
201 UUID uuid = UUID.randomUUID();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
202 tagData("UniqueIdentifier", "{" + uuid.toString() + "}");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
203 tagData("Extensions", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
204 endTag();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
205 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
206
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
207 //TODO - do I need to split cpp and hpp files?
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
208
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
209 // then all files
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
210 startTag("ItemGroup");
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
211 for (String[] dep : filterDeps) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
212 String tagName = getFileTagFromSuffix(dep[0]);
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
213
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
214 startTag(tagName, "Include", dep[0]);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
215 tagData("Filter", dep[1]);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
216 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
217 }
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
218 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
219
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
220 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
221 printWriter.close();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
222 System.out.println(" Done.");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
223 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
224
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
225 public String getFileTagFromSuffix(String fileName) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
226 if (fileName.endsWith(".cpp")) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
227 return"ClCompile";
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
228 } else if (fileName.endsWith(".c")) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
229 return "ClCompile";
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
230 } else if (fileName.endsWith(".hpp")) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
231 return"ClInclude";
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
232 } else if (fileName.endsWith(".h")) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
233 return "ClInclude";
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
234 } else {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
235 return"None";
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
236 }
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
237 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
238
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
239 void writeFiles(Vector<BuildConfig> allConfigs, String projDir) {
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
240 // This code assummes there are no config specific includes.
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
241 startTag("ItemGroup");
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
242
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
243 String sourceBase = BuildConfig.getFieldString(null, "SourceBase");
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
244
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
245 // Use first config for all global absolute includes.
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
246 BuildConfig baseConfig = allConfigs.firstElement();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
247 Vector<String> rv = new Vector<String>();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
248
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
249 // Then use first config for all relative includes
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
250 Vector<String> ri = new Vector<String>();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
251 baseConfig.collectRelevantVectors(ri, "RelativeSrcInclude");
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
252 for (String f : ri) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
253 rv.add(sourceBase + Util.sep + f);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
254 }
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
255
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
256 baseConfig.collectRelevantVectors(rv, "AbsoluteSrcInclude");
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
257
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
258 handleIncludes(rv, allConfigs);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
259
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
260 endTag();
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
261 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
262
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
263 // Will visit file tree for each include
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
264 private void handleIncludes(Vector<String> includes, Vector<BuildConfig> allConfigs) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
265 for (String path : includes) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
266 FileTreeCreatorVC10 ftc = new FileTreeCreatorVC10(FileSystems.getDefault().getPath(path) , allConfigs, this);
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
267 try {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
268 ftc.writeFileTree();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
269 } catch (IOException e) {
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
270 e.printStackTrace();
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
271 }
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
272 }
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
273 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
274
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
275 String buildCond(BuildConfig cfg) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
276 return "'$(Configuration)|$(Platform)'=='"+cfg.get("Name")+"'";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
277 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
278
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
279 void tagV(Vector<String> v) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
280 Iterator<String> i = v.iterator();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
281 while(i.hasNext()) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
282 String name = i.next();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
283 String data = i.next();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
284 tagData(name, data);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
285 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
286 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
287
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
288 void tagData(BuildConfig cfg, String name, String data) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
289 tagData(name, data, "Condition", buildCond(cfg));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
290 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
291
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
292 void tag(BuildConfig cfg, String name, String... attrs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
293 String[] ss = new String[attrs.length + 2];
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
294 ss[0] = "Condition";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
295 ss[1] = buildCond(cfg);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
296 System.arraycopy(attrs, 0, ss, 2, attrs.length);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
297
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
298 tag(name, ss);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
299 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
300
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
301 void startTag(BuildConfig cfg, String name, String... attrs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
302 String[] ss = new String[attrs.length + 2];
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
303 ss[0] = "Condition";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
304 ss[1] = buildCond(cfg);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
305 System.arraycopy(attrs, 0, ss, 2, attrs.length);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
306
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
307 startTag(name, ss);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
308 }
6801
1a9b9cfcef41 7163863: Updated projectcreator
neliasso
parents: 3871
diff changeset
309
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
310 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
311
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
312 class CompilerInterfaceVC10 extends CompilerInterface {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
313
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
314 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
315 Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
316 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
317
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
318 addAttr(rv, "AdditionalIncludeDirectories", Util.join(";", includes));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
319 addAttr(rv, "PreprocessorDefinitions",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
320 Util.join(";", defines).replace("\\\"", "\""));
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
321 addAttr(rv, "PrecompiledHeaderFile", "precompiled.hpp");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
322 addAttr(rv, "PrecompiledHeaderOutputFile", outDir+Util.sep+"vm.pch");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
323 addAttr(rv, "AssemblerListingLocation", outDir);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
324 addAttr(rv, "ObjectFileName", outDir+Util.sep);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
325 addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"jvm.pdb");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
326 // Set /nologo option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
327 addAttr(rv, "SuppressStartupBanner", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
328 // Surpass the default /Tc or /Tp.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
329 addAttr(rv, "CompileAs", "Default");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
330 // Set /W3 option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
331 addAttr(rv, "WarningLevel", "Level3");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
332 // Set /WX option,
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
333 addAttr(rv, "TreatWarningAsError", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
334 // Set /GS option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
335 addAttr(rv, "BufferSecurityCheck", "false");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
336 // Set /Zi option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
337 addAttr(rv, "DebugInformationFormat", "ProgramDatabase");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
338 // Set /Yu option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
339 addAttr(rv, "PrecompiledHeader", "Use");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
340 // Set /EHsc- option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
341 addAttr(rv, "ExceptionHandling", "");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
342
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
343 addAttr(rv, "MultiProcessorCompilation", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
344
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
345 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
346 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
347
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
348 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
349 Vector getDebugCompilerFlags(String opt) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
350 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
351
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
352 // Set /On option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
353 addAttr(rv, "Optimization", opt);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
354 // Set /FR option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
355 addAttr(rv, "BrowseInformation", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
356 addAttr(rv, "BrowseInformationFile", "$(IntDir)");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
357 // Set /MD option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
358 addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
359 // Set /Oy- option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
360 addAttr(rv, "OmitFramePointers", "false");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
361
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
362 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
363 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
364
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
365 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
366 Vector getProductCompilerFlags() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
367 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
368
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
369 // Set /O2 option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
370 addAttr(rv, "Optimization", "MaxSpeed");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
371 // Set /Oy- option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
372 addAttr(rv, "OmitFramePointers", "false");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
373 // Set /Ob option. 1 is expandOnlyInline
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
374 addAttr(rv, "InlineFunctionExpansion", "OnlyExplicitInline");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
375 // Set /GF option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
376 addAttr(rv, "StringPooling", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
377 // Set /MD option. 2 is rtMultiThreadedDLL
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
378 addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
379 // Set /Gy option
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
380 addAttr(rv, "FunctionLevelLinking", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
381
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
382 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
383 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
384
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
385 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
386 Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
387 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
388
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
389 addAttr(rv, "AdditionalOptions",
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
390 "/export:JNI_GetDefaultJavaVMInitArgs " +
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
391 "/export:JNI_CreateJavaVM " +
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
392 "/export:JVM_FindClassFromBootLoader "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
393 "/export:JNI_GetCreatedJavaVMs "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
394 "/export:jio_snprintf /export:jio_printf "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
395 "/export:jio_fprintf /export:jio_vfprintf "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
396 "/export:jio_vsnprintf "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
397 "/export:JVM_GetVersionInfo "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
398 "/export:JVM_GetThreadStateNames "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
399 "/export:JVM_GetThreadStateValues "+
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
400 "/export:JVM_InitAgentProperties");
3871
2f27ed2a98fa 7082220: Visual Studio projects broken after change 7016797: Hotspot: securely/restrictive load dlls and new
brutisso
parents: 2475
diff changeset
401 addAttr(rv, "AdditionalDependencies", "kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;Wsock32.lib;winmm.lib;psapi.lib");
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
402 addAttr(rv, "OutputFile", outDll);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
403 addAttr(rv, "SuppressStartupBanner", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
404 addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
405 addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"jvm.pdb");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
406 addAttr(rv, "SubSystem", "Windows");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
407 addAttr(rv, "BaseAddress", "0x8000000");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
408 addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
409
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
410 if(platformName.equals("Win32")) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
411 addAttr(rv, "TargetMachine", "MachineX86");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
412 } else {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
413 addAttr(rv, "TargetMachine", "MachineX64");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
414 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
415
2475
c49c3947b98a 7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents: 2393
diff changeset
416 // We always want the /DEBUG option to get full symbol information in the pdb files
c49c3947b98a 7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents: 2393
diff changeset
417 addAttr(rv, "GenerateDebugInformation", "true");
c49c3947b98a 7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents: 2393
diff changeset
418
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
419 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
420 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
421
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
422 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
423 Vector getDebugLinkerFlags() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
424 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
425
2475
c49c3947b98a 7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents: 2393
diff changeset
426 // Empty now that /DEBUG option is used by all configs
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
427
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
428 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
429 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
430
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
431 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
432 Vector getProductLinkerFlags() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
433 Vector rv = new Vector();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
434
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
435 // Set /OPT:REF option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
436 addAttr(rv, "OptimizeReferences", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
437 // Set /OPT:ICF option.
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
438 addAttr(rv, "EnableCOMDATFolding", "true");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
439
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
440 return rv;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
441 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
442
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
443 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
444 void getAdditionalNonKernelLinkerFlags(Vector rv) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
445 extAttr(rv, "AdditionalOptions", " /export:AsyncGetCallTrace");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
446 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
447
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
448 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
449 String getOptFlag() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
450 return "MaxSpeed";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
451 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
452
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
453 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
454 String getNoOptFlag() {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
455 return "Disabled";
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
456 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
457
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
458 @Override
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
459 String makeCfgName(String flavourBuild, String platform) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
460 return flavourBuild + "|" + platform;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
461 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
462
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents:
diff changeset
463 }