Mercurial > hg > truffle
annotate src/share/tools/MakeDeps/WinGammaPlatformVC6.java @ 1637:a2b581345549
Merge
author | trims |
---|---|
date | Thu, 15 Jul 2010 19:51:34 -0700 |
parents | c18cbe5936b8 |
children | 2d26b0046e0d |
rev | line source |
---|---|
0 | 1 /* |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
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 | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
25 import java.io.*; | |
26 import java.util.*; | |
27 | |
28 public class WinGammaPlatformVC6 extends WinGammaPlatform { | |
29 public void writeProjectFile(String projectFileName, String projectName, | |
30 Vector allConfigs) throws IOException { | |
31 Vector allConfigNames = new Vector(); | |
32 | |
33 printWriter = new PrintWriter(new FileWriter(projectFileName)); | |
34 String cfg = ((BuildConfig)allConfigs.get(0)).get("Name"); | |
35 | |
36 printWriter.println("# Microsoft Developer Studio Project File - Name=\"" + projectName + "\" - Package Owner=<4>"); | |
37 printWriter.println("# Microsoft Developer Studio Generated Build File, Format Version 6.00"); | |
38 printWriter.println("# ** DO NOT EDIT **"); | |
39 printWriter.println(""); | |
40 printWriter.println("# TARGTYPE \"Win32 (x86) Dynamic-Link Library\" 0x0102"); | |
41 printWriter.println("CFG=" + cfg); | |
42 printWriter.println(""); | |
43 | |
44 printWriter.println("!MESSAGE This is not a valid makefile. To build this project using NMAKE,"); | |
45 printWriter.println("!MESSAGE use the Export Makefile command and run"); | |
46 printWriter.println("!MESSAGE "); | |
47 printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\"."); | |
48 printWriter.println("!MESSAGE "); | |
49 printWriter.println("!MESSAGE You can specify a configuration when running NMAKE"); | |
50 printWriter.println("!MESSAGE by defining the macro CFG on the command line. For example:"); | |
51 printWriter.println("!MESSAGE "); | |
52 printWriter.println("!MESSAGE NMAKE /f \"" + projectName + ".mak\" CFG=\"" + cfg + "\""); | |
53 printWriter.println("!MESSAGE "); | |
54 printWriter.println("!MESSAGE Possible choices for configuration are:"); | |
55 printWriter.println("!MESSAGE "); | |
56 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
57 String name = ((BuildConfig)i.next()).get("Name"); | |
58 printWriter.println("!MESSAGE \""+ name + "\" (based on \"Win32 (x86) Dynamic-Link Library\")"); | |
59 allConfigNames.add(name); | |
60 } | |
61 printWriter.println("!MESSAGE "); | |
62 printWriter.println(""); | |
63 | |
64 printWriter.println("# Begin Project"); | |
65 printWriter.println("# PROP AllowPerConfigDependencies 0"); | |
66 printWriter.println("# PROP Scc_ProjName \"\""); | |
67 printWriter.println("# PROP Scc_LocalPath \"\""); | |
68 printWriter.println("CPP=cl.exe"); | |
69 printWriter.println("MTL=midl.exe"); | |
70 printWriter.println("RSC=rc.exe"); | |
71 | |
72 | |
73 String keyword = "!IF"; | |
74 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
75 BuildConfig bcfg = (BuildConfig)i.next(); | |
76 printWriter.println(keyword + " \"$(CFG)\" == \"" + bcfg.get("Name") + "\""); | |
77 writeConfigHeader(bcfg); | |
78 keyword = "!ELSEIF"; | |
79 if (!i.hasNext()) printWriter.println("!ENDIF"); | |
80 } | |
81 | |
82 | |
83 TreeSet sortedFiles = sortFiles(computeAttributedFiles(allConfigs)); | |
84 | |
85 printWriter.println("# Begin Target"); | |
86 | |
87 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) { | |
88 printWriter.println("# Name \"" + ((BuildConfig)i.next()).get("Name") + "\""); | |
89 } | |
90 printWriter.println("# Begin Group \"Header Files\""); | |
91 printWriter.println("# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\""); | |
92 | |
93 Iterator i = sortedFiles.iterator(); | |
94 | |
95 while (i.hasNext()) { | |
96 FileInfo fi = (FileInfo)i.next(); | |
97 | |
98 // skip sources | |
99 if (!fi.isHeader()) { | |
100 continue; | |
101 } | |
102 | |
103 printFile(fi, allConfigNames); | |
104 } | |
105 printWriter.println("# End Group"); | |
106 printWriter.println(""); | |
107 | |
108 printWriter.println("# Begin Group \"Source Files\""); | |
109 printWriter.println("# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\""); | |
110 | |
111 i = sortedFiles.iterator(); | |
112 while (i.hasNext()) { | |
113 FileInfo fi = (FileInfo)i.next(); | |
114 | |
115 // skip headers | |
116 if (fi.isHeader()) { | |
117 continue; | |
118 } | |
119 | |
120 printFile(fi, allConfigNames); | |
121 } | |
122 printWriter.println("# End Group"); | |
123 printWriter.println(""); | |
124 | |
125 | |
126 printWriter.println("# Begin Group \"Resource Files\""); | |
127 printWriter.println("# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\""); | |
128 printWriter.println("# End Group"); | |
129 printWriter.println(""); | |
130 printWriter.println("# End Target"); | |
131 | |
132 printWriter.println("# End Project"); | |
133 | |
134 printWriter.close(); | |
135 } | |
136 | |
137 | |
138 void printFile(FileInfo fi, Vector allConfigNames) { | |
139 printWriter.println("# Begin Source File"); | |
140 printWriter.println(""); | |
141 printWriter.println("SOURCE=\"" + fi.full + "\""); | |
142 FileAttribute attr = fi.attr; | |
143 | |
144 if (attr.noPch) { | |
145 printWriter.println("# SUBTRACT CPP /YX /Yc /Yu"); | |
146 } | |
147 | |
148 if (attr.pchRoot) { | |
149 printWriter.println("# ADD CPP /Yc\"incls/_precompiled.incl\""); | |
150 } | |
151 if (attr.configs != null) { | |
152 String keyword = "!IF"; | |
153 for (Iterator j=allConfigNames.iterator(); j.hasNext();) { | |
154 String cfg = (String)j.next(); | |
155 if (!attr.configs.contains(cfg)) { | |
156 printWriter.println(keyword+" \"$(CFG)\" == \"" + cfg +"\""); | |
157 printWriter.println("# PROP BASE Exclude_From_Build 1"); | |
158 printWriter.println("# PROP Exclude_From_Build 1"); | |
159 keyword = "!ELSEIF"; | |
160 } | |
161 } | |
162 printWriter.println("!ENDIF"); | |
163 } | |
164 | |
165 printWriter.println("# End Source File"); | |
166 } | |
167 | |
168 void writeConfigHeader(BuildConfig cfg) { | |
169 printWriter.println("# Begin Special Build Tool"); | |
170 printWriter.println("SOURCE=\"$(InputPath)\""); | |
171 printWriter.println("PreLink_Desc=" + BuildConfig.getFieldString(null, "PrelinkDescription")); | |
172 printWriter.println("PreLink_Cmds=" + | |
173 cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand"))); | |
174 printWriter.println("# End Special Build Tool"); | |
175 printWriter.println(""); | |
176 | |
177 for (Iterator i = cfg.getV("CompilerFlags").iterator(); i.hasNext(); ) { | |
178 printWriter.println("# "+(String)i.next()); | |
179 } | |
180 | |
181 | |
182 printWriter.println("LINK32=link.exe"); | |
183 | |
184 for (Iterator i = cfg.getV("LinkerFlags").iterator(); i.hasNext(); ) { | |
185 printWriter.println("# "+(String)i.next()); | |
186 } | |
187 | |
188 printWriter.println("ADD BASE MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32"); | |
189 printWriter.println("ADD MTL /nologo /D \"_DEBUG\" /mktyplib203 /win32"); | |
190 printWriter.println("ADD BASE RSC /l 0x409 /d \"_DEBUG\""); | |
191 printWriter.println("ADD RSC /l 0x409 /d \"_DEBUG\""); | |
192 printWriter.println("BSC32=bscmake.exe"); | |
193 printWriter.println("ADD BASE BSC32 /nologo"); | |
194 printWriter.println("ADD BSC32 /nologo"); | |
195 printWriter.println(""); | |
196 } | |
197 | |
198 protected String getProjectExt() { | |
199 return ".dsp"; | |
200 } | |
201 } | |
202 | |
203 | |
204 class CompilerInterfaceVC6 extends CompilerInterface { | |
205 Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) { | |
206 Vector rv = new Vector(); | |
207 | |
208 rv.add("PROP BASE Use_MFC 0"); | |
209 rv.add("PROP Use_MFC 0"); | |
210 rv.add("ADD CPP /nologo /MT /W3 /WX /GX /YX /Fr /FD /c"); | |
211 rv.add("PROP BASE Output_Dir \""+outDir+"\""); | |
212 rv.add("PROP Output_Dir \""+outDir+"\""); | |
213 rv.add("PROP BASE Intermediate_Dir \""+outDir+"\""); | |
214 rv.add("PROP Intermediate_Dir \""+outDir+"\""); | |
215 rv.add("PROP BASE Target_Dir \"\""); | |
216 rv.add("PROP Target_Dir \"\""); | |
217 rv.add("ADD BASE CPP "+Util.prefixed_join(" /I ", includes, true)); | |
218 rv.add("ADD CPP "+Util.prefixed_join(" /I ", includes, true)); | |
219 rv.add("ADD BASE CPP "+Util.prefixed_join(" /D ", defines, true)); | |
220 rv.add("ADD CPP "+Util.prefixed_join(" /D ", defines, true)); | |
221 rv.add("ADD CPP /Yu\"incls/_precompiled.incl\""); | |
222 | |
223 return rv; | |
224 } | |
225 | |
226 Vector getBaseLinkerFlags(String outDir, String outDll) { | |
227 Vector rv = new Vector(); | |
228 | |
229 rv.add("PROP Ignore_Export_Lib 0"); | |
230 rv.add("ADD BASE CPP /MD"); | |
231 rv.add("ADD CPP /MD"); | |
232 rv.add("ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib " + | |
233 " advapi32.lib shell32.lib ole32.lib oleaut32.lib winmm.lib"); | |
234 rv.add("ADD LINK32 /out:\""+outDll+"\" "+ | |
235 " /nologo /subsystem:windows /machine:I386" + | |
236 " /nologo /base:\"0x8000000\" /subsystem:windows /dll" + | |
237 " /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+ | |
238 " /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+ | |
239 " /export:jio_vsnprintf "); | |
240 rv.add("SUBTRACT LINK32 /pdb:none /map"); | |
241 | |
242 return rv; | |
243 } | |
244 | |
245 Vector getDebugCompilerFlags(String opt) { | |
246 Vector rv = new Vector(); | |
247 | |
248 rv.add("ADD BASE CPP /Gm /Zi /O"+opt); | |
249 | |
250 return rv; | |
251 } | |
252 | |
253 Vector getDebugLinkerFlags() { | |
254 Vector rv = new Vector(); | |
255 | |
256 rv.add("PROP BASE Use_Debug_Libraries 1"); | |
257 rv.add("PROP Use_Debug_Libraries 1"); | |
258 rv.add("ADD LINK32 /debug"); | |
259 | |
260 return rv; | |
261 } | |
262 | |
263 Vector getProductCompilerFlags() { | |
264 Vector rv = new Vector(); | |
265 | |
266 rv.add("ADD CPP /O"+getOptFlag()); | |
267 | |
268 return rv; | |
269 } | |
270 | |
271 Vector getProductLinkerFlags() { | |
272 Vector rv = new Vector(); | |
273 | |
274 rv.add("PROP BASE Use_Debug_Libraries 0"); | |
275 rv.add("PROP Use_Debug_Libraries 0"); | |
276 | |
277 return rv; | |
278 } | |
279 | |
280 String getOptFlag() { | |
281 return "2"; | |
282 } | |
283 | |
284 String getNoOptFlag() { | |
285 return "d"; | |
286 } | |
287 | |
288 String makeCfgName(String flavourBuild) { | |
289 return "vm - "+ Util.os + " " + flavourBuild; | |
290 } | |
291 } |