Mercurial > hg > truffle
annotate src/share/tools/ProjectCreator/WinGammaPlatformVC10.java @ 14714:b602356a9cfc
additional canonicalizers for accesses and value nodes (improves number of implicit null checks)
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Thu, 20 Mar 2014 17:15:36 +0100 |
parents | d8041d695d19 |
children | 4ca6dc0799b6 |
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 | 25 import java.io.File; |
26 import java.io.FileNotFoundException; | |
27 import java.io.IOException; | |
28 import java.io.PrintWriter; | |
29 import java.io.UnsupportedEncodingException; | |
6801 | 30 import java.nio.file.FileSystems; |
2393 | 31 import java.util.Iterator; |
6801 | 32 import java.util.LinkedList; |
2393 | 33 import java.util.UUID; |
34 import java.util.Vector; | |
35 | |
36 public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 { | |
37 | |
6801 | 38 |
39 LinkedList <String>filters = new LinkedList<String>(); | |
40 LinkedList <String[]>filterDeps = new LinkedList<String[]>(); | |
41 | |
2393 | 42 @Override |
43 protected String getProjectExt() { | |
44 return ".vcxproj"; | |
45 } | |
46 | |
47 @Override | |
48 public void writeProjectFile(String projectFileName, String projectName, | |
49 Vector<BuildConfig> allConfigs) throws IOException { | |
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 | 52 |
53 String projDir = Util.normalize(new File(projectFileName).getParent()); | |
54 | |
55 printWriter = new PrintWriter(projectFileName, "UTF-8"); | |
56 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); | |
57 startTag("Project", | |
58 "DefaultTargets", "Build", | |
59 "ToolsVersion", "4.0", | |
60 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003"); | |
61 startTag("ItemGroup", | |
62 "Label", "ProjectConfigurations"); | |
63 for (BuildConfig cfg : allConfigs) { | |
64 startTag("ProjectConfiguration", | |
65 "Include", cfg.get("Name")); | |
66 tagData("Configuration", cfg.get("Id")); | |
67 tagData("Platform", cfg.get("PlatformName")); | |
6801 | 68 endTag(); |
2393 | 69 } |
6801 | 70 endTag(); |
2393 | 71 |
72 startTag("PropertyGroup", "Label", "Globals"); | |
73 tagData("ProjectGuid", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}"); | |
74 tag("SccProjectName"); | |
75 tag("SccLocalPath"); | |
6801 | 76 endTag(); |
2393 | 77 |
78 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props"); | |
79 | |
80 for (BuildConfig cfg : allConfigs) { | |
81 startTag(cfg, "PropertyGroup", "Label", "Configuration"); | |
82 tagData("ConfigurationType", "DynamicLibrary"); | |
83 tagData("UseOfMfc", "false"); | |
6801 | 84 endTag(); |
2393 | 85 } |
86 | |
87 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.props"); | |
88 startTag("ImportGroup", "Label", "ExtensionSettings"); | |
6801 | 89 endTag(); |
2393 | 90 for (BuildConfig cfg : allConfigs) { |
91 startTag(cfg, "ImportGroup", "Label", "PropertySheets"); | |
92 tag("Import", | |
93 "Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props", | |
94 "Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')", | |
95 "Label", "LocalAppDataPlatform"); | |
6801 | 96 endTag(); |
2393 | 97 } |
98 | |
99 tag("PropertyGroup", "Label", "UserMacros"); | |
100 | |
101 startTag("PropertyGroup"); | |
102 tagData("_ProjectFileVersion", "10.0.30319.1"); | |
103 for (BuildConfig cfg : allConfigs) { | |
104 tagData(cfg, "OutDir", cfg.get("OutputDir") + Util.sep); | |
105 tagData(cfg, "IntDir", cfg.get("OutputDir") + Util.sep); | |
106 tagData(cfg, "LinkIncremental", "false"); | |
107 } | |
108 for (BuildConfig cfg : allConfigs) { | |
109 tagData(cfg, "CodeAnalysisRuleSet", "AllRules.ruleset"); | |
110 tag(cfg, "CodeAnalysisRules"); | |
111 tag(cfg, "CodeAnalysisRuleAssemblies"); | |
112 } | |
6801 | 113 endTag(); |
2393 | 114 |
115 for (BuildConfig cfg : allConfigs) { | |
116 startTag(cfg, "ItemDefinitionGroup"); | |
117 startTag("ClCompile"); | |
118 tagV(cfg.getV("CompilerFlags")); | |
6801 | 119 endTag(); |
2393 | 120 |
121 startTag("Link"); | |
122 tagV(cfg.getV("LinkerFlags")); | |
6801 | 123 endTag(); |
2393 | 124 |
125 startTag("PreLinkEvent"); | |
126 tagData("Message", BuildConfig.getFieldString(null, "PrelinkDescription")); | |
127 tagData("Command", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace("\t", "\r\n"))); | |
6801 | 128 endTag(); |
2393 | 129 |
6801 | 130 endTag(); |
2393 | 131 } |
132 | |
133 writeFiles(allConfigs, projDir); | |
134 | |
135 tag("Import", "Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets"); | |
136 startTag("ImportGroup", "Label", "ExtensionTargets"); | |
6801 | 137 endTag(); |
2393 | 138 |
6801 | 139 endTag(); |
2393 | 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 | 142 |
143 writeFilterFile(projectFileName, projectName, allConfigs, projDir); | |
144 writeUserFile(projectFileName, allConfigs); | |
145 } | |
146 | |
147 | |
148 private void writeUserFile(String projectFileName, Vector<BuildConfig> allConfigs) throws FileNotFoundException, UnsupportedEncodingException { | |
149 String userFileName = projectFileName + ".user"; | |
150 if (new File(userFileName).exists()) { | |
151 return; | |
152 } | |
153 System.out.print(" Writing .vcxproj.user file: " + userFileName); | |
154 printWriter = new PrintWriter(userFileName, "UTF-8"); | |
155 | |
156 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); | |
157 startTag("Project", | |
158 "ToolsVersion", "4.0", | |
159 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003"); | |
160 | |
161 for (BuildConfig cfg : allConfigs) { | |
162 startTag(cfg, "PropertyGroup"); | |
10277 | 163 tagData("LocalDebuggerCommand", cfg.get("JdkTargetRoot") + "\\bin\\java.exe"); |
14317
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
164 // The JVM loads some libraries using a path relative to |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
165 // itself because it expects to be in a JRE or a JDK. The java |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
166 // launcher's '-XXaltjvm=' option allows the JVM to be outside |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
167 // the JRE or JDK so '-Dsun.java.launcher.is_altjvm=true' |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
168 // forces a fake JAVA_HOME relative path to be used to |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
169 // find the other libraries. The '-XX:+PauseAtExit' option |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
170 // causes the VM to wait for key press before exiting; this |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
171 // allows any stdout or stderr messages to be seen before |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
172 // the cmdtool exits. |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
173 tagData("LocalDebuggerCommandArguments", "-XXaltjvm=$(TargetDir) " |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
174 + "-Dsun.java.launcher.is_altjvm=true " |
b59507f713e0
8027113: decouple the '-XXaltjvm=<path>' option from the gamma launcher
rdurbin
parents:
12014
diff
changeset
|
175 + "-XX:+UnlockDiagnosticVMOptions -XX:+PauseAtExit"); |
10277 | 176 tagData("LocalDebuggerEnvironment", "JAVA_HOME=" + cfg.get("JdkTargetRoot")); |
6801 | 177 endTag(); |
2393 | 178 } |
179 | |
6801 | 180 endTag(); |
2393 | 181 printWriter.close(); |
182 System.out.println(" Done."); | |
183 } | |
184 | |
6801 | 185 public void addFilter(String rPath) { |
186 filters.add(rPath); | |
187 } | |
188 | |
189 public void addFilterDependency(String fileLoc, String filter) { | |
190 filterDeps.add(new String[] {fileLoc, filter}); | |
191 } | |
192 | |
2393 | 193 private void writeFilterFile(String projectFileName, String projectName, |
194 Vector<BuildConfig> allConfigs, String base) throws FileNotFoundException, UnsupportedEncodingException { | |
195 String filterFileName = projectFileName + ".filters"; | |
196 System.out.print(" Writing .vcxproj.filters file: " + filterFileName); | |
197 printWriter = new PrintWriter(filterFileName, "UTF-8"); | |
198 | |
199 printWriter.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); | |
200 startTag("Project", | |
201 "ToolsVersion", "4.0", | |
202 "xmlns", "http://schemas.microsoft.com/developer/msbuild/2003"); | |
203 | |
204 startTag("ItemGroup"); | |
6801 | 205 for (String filter : filters) { |
206 startTag("Filter", "Include",filter); | |
207 UUID uuid = UUID.randomUUID(); | |
208 tagData("UniqueIdentifier", "{" + uuid.toString() + "}"); | |
209 endTag(); | |
2393 | 210 } |
211 startTag("Filter", "Include", "Resource Files"); | |
212 UUID uuid = UUID.randomUUID(); | |
213 tagData("UniqueIdentifier", "{" + uuid.toString() + "}"); | |
214 tagData("Extensions", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"); | |
6801 | 215 endTag(); |
216 endTag(); | |
2393 | 217 |
6801 | 218 //TODO - do I need to split cpp and hpp files? |
2393 | 219 |
6801 | 220 // then all files |
2393 | 221 startTag("ItemGroup"); |
6801 | 222 for (String[] dep : filterDeps) { |
223 String tagName = getFileTagFromSuffix(dep[0]); | |
2393 | 224 |
6801 | 225 startTag(tagName, "Include", dep[0]); |
226 tagData("Filter", dep[1]); | |
227 endTag(); | |
2393 | 228 } |
6801 | 229 endTag(); |
2393 | 230 |
6801 | 231 endTag(); |
2393 | 232 printWriter.close(); |
233 System.out.println(" Done."); | |
234 } | |
235 | |
6801 | 236 public String getFileTagFromSuffix(String fileName) { |
237 if (fileName.endsWith(".cpp")) { | |
238 return"ClCompile"; | |
239 } else if (fileName.endsWith(".c")) { | |
240 return "ClCompile"; | |
241 } else if (fileName.endsWith(".hpp")) { | |
242 return"ClInclude"; | |
243 } else if (fileName.endsWith(".h")) { | |
244 return "ClInclude"; | |
245 } else { | |
246 return"None"; | |
247 } | |
2393 | 248 } |
249 | |
250 void writeFiles(Vector<BuildConfig> allConfigs, String projDir) { | |
6801 | 251 // This code assummes there are no config specific includes. |
252 startTag("ItemGroup"); | |
2393 | 253 |
6801 | 254 String sourceBase = BuildConfig.getFieldString(null, "SourceBase"); |
255 | |
256 // Use first config for all global absolute includes. | |
257 BuildConfig baseConfig = allConfigs.firstElement(); | |
258 Vector<String> rv = new Vector<String>(); | |
2393 | 259 |
6801 | 260 // Then use first config for all relative includes |
261 Vector<String> ri = new Vector<String>(); | |
262 baseConfig.collectRelevantVectors(ri, "RelativeSrcInclude"); | |
263 for (String f : ri) { | |
264 rv.add(sourceBase + Util.sep + f); | |
265 } | |
2393 | 266 |
6801 | 267 baseConfig.collectRelevantVectors(rv, "AbsoluteSrcInclude"); |
268 | |
269 handleIncludes(rv, allConfigs); | |
270 | |
271 endTag(); | |
2393 | 272 } |
273 | |
6801 | 274 // Will visit file tree for each include |
275 private void handleIncludes(Vector<String> includes, Vector<BuildConfig> allConfigs) { | |
276 for (String path : includes) { | |
277 FileTreeCreatorVC10 ftc = new FileTreeCreatorVC10(FileSystems.getDefault().getPath(path) , allConfigs, this); | |
278 try { | |
279 ftc.writeFileTree(); | |
280 } catch (IOException e) { | |
281 e.printStackTrace(); | |
282 } | |
283 } | |
2393 | 284 } |
285 | |
286 String buildCond(BuildConfig cfg) { | |
287 return "'$(Configuration)|$(Platform)'=='"+cfg.get("Name")+"'"; | |
288 } | |
289 | |
290 void tagV(Vector<String> v) { | |
291 Iterator<String> i = v.iterator(); | |
292 while(i.hasNext()) { | |
293 String name = i.next(); | |
294 String data = i.next(); | |
295 tagData(name, data); | |
296 } | |
297 } | |
298 | |
299 void tagData(BuildConfig cfg, String name, String data) { | |
300 tagData(name, data, "Condition", buildCond(cfg)); | |
301 } | |
302 | |
303 void tag(BuildConfig cfg, String name, String... attrs) { | |
304 String[] ss = new String[attrs.length + 2]; | |
305 ss[0] = "Condition"; | |
306 ss[1] = buildCond(cfg); | |
307 System.arraycopy(attrs, 0, ss, 2, attrs.length); | |
308 | |
309 tag(name, ss); | |
310 } | |
311 | |
312 void startTag(BuildConfig cfg, String name, String... attrs) { | |
313 String[] ss = new String[attrs.length + 2]; | |
314 ss[0] = "Condition"; | |
315 ss[1] = buildCond(cfg); | |
316 System.arraycopy(attrs, 0, ss, 2, attrs.length); | |
317 | |
318 startTag(name, ss); | |
319 } | |
6801 | 320 |
2393 | 321 } |
322 | |
323 class CompilerInterfaceVC10 extends CompilerInterface { | |
324 | |
325 @Override | |
326 Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) { | |
327 Vector rv = new Vector(); | |
328 | |
329 addAttr(rv, "AdditionalIncludeDirectories", Util.join(";", includes)); | |
330 addAttr(rv, "PreprocessorDefinitions", | |
331 Util.join(";", defines).replace("\\\"", "\"")); | |
332 addAttr(rv, "PrecompiledHeaderFile", "precompiled.hpp"); | |
333 addAttr(rv, "PrecompiledHeaderOutputFile", outDir+Util.sep+"vm.pch"); | |
334 addAttr(rv, "AssemblerListingLocation", outDir); | |
335 addAttr(rv, "ObjectFileName", outDir+Util.sep); | |
336 addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"jvm.pdb"); | |
337 // Set /nologo option | |
338 addAttr(rv, "SuppressStartupBanner", "true"); | |
339 // Surpass the default /Tc or /Tp. | |
340 addAttr(rv, "CompileAs", "Default"); | |
341 // Set /W3 option. | |
342 addAttr(rv, "WarningLevel", "Level3"); | |
343 // Set /WX option, | |
344 addAttr(rv, "TreatWarningAsError", "true"); | |
345 // Set /GS option | |
346 addAttr(rv, "BufferSecurityCheck", "false"); | |
347 // Set /Zi option. | |
348 addAttr(rv, "DebugInformationFormat", "ProgramDatabase"); | |
349 // Set /Yu option. | |
350 addAttr(rv, "PrecompiledHeader", "Use"); | |
351 // Set /EHsc- option | |
352 addAttr(rv, "ExceptionHandling", ""); | |
353 | |
354 addAttr(rv, "MultiProcessorCompilation", "true"); | |
355 | |
356 return rv; | |
357 } | |
358 | |
359 @Override | |
360 Vector getDebugCompilerFlags(String opt) { | |
361 Vector rv = new Vector(); | |
362 | |
363 // Set /On option | |
364 addAttr(rv, "Optimization", opt); | |
365 // Set /FR option. | |
366 addAttr(rv, "BrowseInformation", "true"); | |
367 addAttr(rv, "BrowseInformationFile", "$(IntDir)"); | |
368 // Set /MD option. | |
369 addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL"); | |
370 // Set /Oy- option | |
371 addAttr(rv, "OmitFramePointers", "false"); | |
372 | |
373 return rv; | |
374 } | |
375 | |
376 @Override | |
377 Vector getProductCompilerFlags() { | |
378 Vector rv = new Vector(); | |
379 | |
380 // Set /O2 option. | |
381 addAttr(rv, "Optimization", "MaxSpeed"); | |
382 // Set /Oy- option | |
383 addAttr(rv, "OmitFramePointers", "false"); | |
384 // Set /Ob option. 1 is expandOnlyInline | |
385 addAttr(rv, "InlineFunctionExpansion", "OnlyExplicitInline"); | |
386 // Set /GF option. | |
387 addAttr(rv, "StringPooling", "true"); | |
388 // Set /MD option. 2 is rtMultiThreadedDLL | |
389 addAttr(rv, "RuntimeLibrary", "MultiThreadedDLL"); | |
390 // Set /Gy option | |
391 addAttr(rv, "FunctionLevelLinking", "true"); | |
392 | |
393 return rv; | |
394 } | |
395 | |
396 @Override | |
397 Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) { | |
398 Vector rv = new Vector(); | |
399 | |
400 addAttr(rv, "AdditionalOptions", | |
401 "/export:JNI_GetDefaultJavaVMInitArgs " + | |
402 "/export:JNI_CreateJavaVM " + | |
403 "/export:JVM_FindClassFromBootLoader "+ | |
404 "/export:JNI_GetCreatedJavaVMs "+ | |
405 "/export:jio_snprintf /export:jio_printf "+ | |
406 "/export:jio_fprintf /export:jio_vfprintf "+ | |
407 "/export:jio_vsnprintf "+ | |
408 "/export:JVM_GetVersionInfo "+ | |
409 "/export:JVM_GetThreadStateNames "+ | |
410 "/export:JVM_GetThreadStateValues "+ | |
411 "/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
|
412 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 | 413 addAttr(rv, "OutputFile", outDll); |
414 addAttr(rv, "SuppressStartupBanner", "true"); | |
415 addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def"); | |
416 addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"jvm.pdb"); | |
417 addAttr(rv, "SubSystem", "Windows"); | |
418 addAttr(rv, "BaseAddress", "0x8000000"); | |
419 addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib"); | |
420 | |
421 if(platformName.equals("Win32")) { | |
422 addAttr(rv, "TargetMachine", "MachineX86"); | |
423 } else { | |
424 addAttr(rv, "TargetMachine", "MachineX64"); | |
425 } | |
426 | |
2475
c49c3947b98a
7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents:
2393
diff
changeset
|
427 // 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
|
428 addAttr(rv, "GenerateDebugInformation", "true"); |
c49c3947b98a
7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents:
2393
diff
changeset
|
429 |
2393 | 430 return rv; |
431 } | |
432 | |
433 @Override | |
434 Vector getDebugLinkerFlags() { | |
435 Vector rv = new Vector(); | |
436 | |
2475
c49c3947b98a
7034625: Product builds in Visual Studio projects should produce full symbol information
brutisso
parents:
2393
diff
changeset
|
437 // Empty now that /DEBUG option is used by all configs |
2393 | 438 |
439 return rv; | |
440 } | |
441 | |
442 @Override | |
443 Vector getProductLinkerFlags() { | |
444 Vector rv = new Vector(); | |
445 | |
446 // Set /OPT:REF option. | |
447 addAttr(rv, "OptimizeReferences", "true"); | |
448 // Set /OPT:ICF option. | |
449 addAttr(rv, "EnableCOMDATFolding", "true"); | |
450 | |
451 return rv; | |
452 } | |
453 | |
454 @Override | |
455 void getAdditionalNonKernelLinkerFlags(Vector rv) { | |
456 extAttr(rv, "AdditionalOptions", " /export:AsyncGetCallTrace"); | |
457 } | |
458 | |
459 @Override | |
460 String getOptFlag() { | |
461 return "MaxSpeed"; | |
462 } | |
463 | |
464 @Override | |
465 String getNoOptFlag() { | |
466 return "Disabled"; | |
467 } | |
468 | |
469 @Override | |
470 String makeCfgName(String flavourBuild, String platform) { | |
471 return flavourBuild + "|" + platform; | |
472 } | |
473 | |
474 } |