Mercurial > hg > truffle
comparison src/share/tools/ProjectCreator/BuildConfig.java @ 2233:15d6977f04b0
7017824: Add support for creating 64-bit Visual Studio projects
Summary: Updated create.bat and ProjectCreator
Reviewed-by: brutisso, stefank, ohair
author | sla |
---|---|
date | Thu, 10 Feb 2011 13:03:22 +0100 |
parents | aa6e219afbf1 |
children | 2ab52cda08e5 2eeebe4b4213 |
comparison
equal
deleted
inserted
replaced
2205:b83527d0482d | 2233:15d6977f04b0 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
49 | 49 |
50 protected void initNames(String flavour, String build, String outDll) { | 50 protected void initNames(String flavour, String build, String outDll) { |
51 if (vars == null) vars = new Hashtable(); | 51 if (vars == null) vars = new Hashtable(); |
52 | 52 |
53 String flavourBuild = flavour + "_" + build; | 53 String flavourBuild = flavour + "_" + build; |
54 String platformName = getFieldString(null, "PlatformName"); | |
54 System.out.println(); | 55 System.out.println(); |
55 System.out.println(flavourBuild); | 56 System.out.println(flavourBuild); |
56 | 57 |
57 put("Name", getCI().makeCfgName(flavourBuild)); | 58 put("Name", getCI().makeCfgName(flavourBuild, platformName)); |
58 put("Flavour", flavour); | 59 put("Flavour", flavour); |
59 put("Build", build); | 60 put("Build", build); |
61 put("PlatformName", platformName); | |
60 | 62 |
61 // ones mentioned above were needed to expand format | 63 // ones mentioned above were needed to expand format |
62 String buildBase = expandFormat(getFieldString(null, "BuildBase")); | 64 String buildBase = expandFormat(getFieldString(null, "BuildBase")); |
63 String sourceBase = getFieldString(null, "SourceBase"); | 65 String sourceBase = getFieldString(null, "SourceBase"); |
64 String outDir = buildBase; | 66 String outDir = buildBase; |
91 } | 93 } |
92 | 94 |
93 protected void initDefaultLinkerFlags() { | 95 protected void initDefaultLinkerFlags() { |
94 Vector linkerFlags = new Vector(); | 96 Vector linkerFlags = new Vector(); |
95 | 97 |
96 linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"))); | 98 linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"), get("PlatformName"))); |
97 | 99 |
98 put("LinkerFlags", linkerFlags); | 100 put("LinkerFlags", linkerFlags); |
99 } | 101 } |
100 | 102 |
101 DirectoryTree getSourceTree(String sourceBase, String startAt) { | 103 DirectoryTree getSourceTree(String sourceBase, String startAt) { |
113 | 115 |
114 return tree; | 116 return tree; |
115 } | 117 } |
116 | 118 |
117 | 119 |
118 Vector getPreferredPaths(MacroDefinitions macros) { | 120 Vector getPreferredPaths() { |
119 Vector preferredPaths = new Vector(); | 121 Vector preferredPaths = new Vector(); |
122 | |
120 // In the case of multiple files with the same name in | 123 // In the case of multiple files with the same name in |
121 // different subdirectories, prefer the versions specified in | 124 // different subdirectories, prefer these versions |
122 // the platform file as the "os_family" and "arch" macros. | 125 preferredPaths.add("windows"); |
123 for (Iterator iter = macros.getMacros(); iter.hasNext(); ) { | 126 preferredPaths.add("x86"); |
124 Macro macro = (Macro) iter.next(); | 127 preferredPaths.add("closed"); |
125 if (macro.name.equals("os_family") || | 128 |
126 macro.name.equals("arch")) { | |
127 preferredPaths.add(macro.contents); | |
128 } | |
129 } | |
130 // Also prefer "opto" over "adlc" for adlcVMDeps.hpp | 129 // Also prefer "opto" over "adlc" for adlcVMDeps.hpp |
131 preferredPaths.add("opto"); | 130 preferredPaths.add("opto"); |
132 | 131 |
133 return preferredPaths; | 132 return preferredPaths; |
134 } | 133 } |
135 | 134 |
136 | 135 |
137 void handleDB() { | 136 void handleDB() { |
138 WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject"); | 137 WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject"); |
139 | 138 |
140 File incls = new File(get("OutputDir")+Util.sep+"incls"); | 139 putSpecificField("AllFilesHash", computeAllFiles(platform)); |
141 | |
142 incls.mkdirs(); | |
143 | |
144 MacroDefinitions macros = new MacroDefinitions(); | |
145 try { | |
146 macros.readFrom(getFieldString(null, "Platform"), false); | |
147 } catch (Exception e) { | |
148 throw new RuntimeException(e); | |
149 } | |
150 | |
151 putSpecificField("AllFilesHash", computeAllFiles(platform, macros)); | |
152 } | 140 } |
153 | 141 |
154 | 142 |
155 private boolean matchesIgnoredPath(String prefixedName) { | 143 private boolean matchesIgnoredPath(String prefixedName) { |
156 Vector rv = new Vector(); | 144 Vector rv = new Vector(); |
188 | 176 |
189 void addTo(Hashtable ht, String key, String value) { | 177 void addTo(Hashtable ht, String key, String value) { |
190 ht.put(expandFormat(key), expandFormat(value)); | 178 ht.put(expandFormat(key), expandFormat(value)); |
191 } | 179 } |
192 | 180 |
193 Hashtable computeAllFiles(WinGammaPlatform platform, MacroDefinitions macros) { | 181 Hashtable computeAllFiles(WinGammaPlatform platform) { |
194 Hashtable rv = new Hashtable(); | 182 Hashtable rv = new Hashtable(); |
195 DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt")); | 183 DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt")); |
196 Vector preferredPaths = getPreferredPaths(macros); | 184 Vector preferredPaths = getPreferredPaths(); |
197 | 185 |
198 // Hold errors until end | 186 // Hold errors until end |
199 Vector filesNotFound = new Vector(); | 187 Vector filesNotFound = new Vector(); |
200 Vector filesDuplicate = new Vector(); | 188 Vector filesDuplicate = new Vector(); |
201 | 189 |
226 if ((filesNotFound.size() != 0) || | 214 if ((filesNotFound.size() != 0) || |
227 (filesDuplicate.size() != 0)) { | 215 (filesDuplicate.size() != 0)) { |
228 System.err.println("Error: some files were not found or " + | 216 System.err.println("Error: some files were not found or " + |
229 "appeared in multiple subdirectories of " + | 217 "appeared in multiple subdirectories of " + |
230 "directory " + get("SourceBase") + " and could not " + | 218 "directory " + get("SourceBase") + " and could not " + |
231 "be resolved with the os_family and arch " + | 219 "be resolved with os_family and arch."); |
232 "macros in the platform file."); | |
233 if (filesNotFound.size() != 0) { | 220 if (filesNotFound.size() != 0) { |
234 System.err.println("Files not found:"); | 221 System.err.println("Files not found:"); |
235 for (Iterator iter = filesNotFound.iterator(); | 222 for (Iterator iter = filesNotFound.iterator(); |
236 iter.hasNext(); ) { | 223 iter.hasNext(); ) { |
237 System.err.println(" " + (String) iter.next()); | 224 System.err.println(" " + (String) iter.next()); |
252 | 239 |
253 void initDefaultDefines(Vector defines) { | 240 void initDefaultDefines(Vector defines) { |
254 Vector sysDefines = new Vector(); | 241 Vector sysDefines = new Vector(); |
255 sysDefines.add("WIN32"); | 242 sysDefines.add("WIN32"); |
256 sysDefines.add("_WINDOWS"); | 243 sysDefines.add("_WINDOWS"); |
257 sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name")); | 244 sysDefines.add("HOTSPOT_BUILD_USER=\\\""+System.getProperty("user.name")+"\\\""); |
258 sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\""); | 245 sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\""); |
259 sysDefines.add("_JNI_IMPLEMENTATION_"); | 246 sysDefines.add("_JNI_IMPLEMENTATION_"); |
260 sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\""); | 247 if (vars.get("PlatformName").equals("Win32")) { |
248 sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\""); | |
249 } else { | |
250 sysDefines.add("HOTSPOT_LIB_ARCH=\\\"amd64\\\""); | |
251 } | |
261 | 252 |
262 sysDefines.addAll(defines); | 253 sysDefines.addAll(defines); |
263 | 254 |
264 put("Define", sysDefines); | 255 put("Define", sysDefines); |
265 } | 256 } |
708 init(getIncludes(), getDefines()); | 699 init(getIncludes(), getDefines()); |
709 } | 700 } |
710 } | 701 } |
711 abstract class CompilerInterface { | 702 abstract class CompilerInterface { |
712 abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir); | 703 abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir); |
713 abstract Vector getBaseLinkerFlags(String outDir, String outDll); | 704 abstract Vector getBaseLinkerFlags(String outDir, String outDll, String platformName); |
714 abstract Vector getDebugCompilerFlags(String opt); | 705 abstract Vector getDebugCompilerFlags(String opt); |
715 abstract Vector getDebugLinkerFlags(); | 706 abstract Vector getDebugLinkerFlags(); |
716 abstract void getAdditionalNonKernelLinkerFlags(Vector rv); | 707 abstract void getAdditionalNonKernelLinkerFlags(Vector rv); |
717 abstract Vector getProductCompilerFlags(); | 708 abstract Vector getProductCompilerFlags(); |
718 abstract Vector getProductLinkerFlags(); | 709 abstract Vector getProductLinkerFlags(); |
719 abstract String getOptFlag(); | 710 abstract String getOptFlag(); |
720 abstract String getNoOptFlag(); | 711 abstract String getNoOptFlag(); |
721 abstract String makeCfgName(String flavourBuild); | 712 abstract String makeCfgName(String flavourBuild, String platformName); |
722 | 713 |
723 void addAttr(Vector receiver, String attr, String value) { | 714 void addAttr(Vector receiver, String attr, String value) { |
724 receiver.add(attr); receiver.add(value); | 715 receiver.add(attr); receiver.add(value); |
725 } | 716 } |
726 void extAttr(Vector receiver, String attr, String value) { | 717 void extAttr(Vector receiver, String attr, String value) { |