annotate src/share/tools/ProjectCreator/WinGammaPlatformVC7.java @ 2393:74e790c48cd4

7031571: Generate native VS2010 project files Reviewed-by: hosterda, stefank, brutisso
author sla
date Mon, 28 Mar 2011 12:48:08 +0200
parents 15d6977f04b0
children 0654ee04b214 1a9b9cfcef41
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
2 * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
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: 844
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
25 import java.io.FileWriter;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
26 import java.io.IOException;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
27 import java.io.PrintWriter;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
28 import java.util.Hashtable;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
29 import java.util.Iterator;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
30 import java.util.TreeSet;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
31 import java.util.Vector;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
32
a61af66fc99e Initial load
duke
parents:
diff changeset
33 public class WinGammaPlatformVC7 extends WinGammaPlatform {
a61af66fc99e Initial load
duke
parents:
diff changeset
34
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
35 String projectVersion() {return "7.10";};
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
36
0
a61af66fc99e Initial load
duke
parents:
diff changeset
37 public void writeProjectFile(String projectFileName, String projectName,
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
38 Vector<BuildConfig> allConfigs) throws IOException {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
39 System.out.println();
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
40 System.out.println(" Writing .vcproj file: "+projectFileName);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
41 // If we got this far without an error, we're safe to actually
a61af66fc99e Initial load
duke
parents:
diff changeset
42 // write the .vcproj file
a61af66fc99e Initial load
duke
parents:
diff changeset
43 printWriter = new PrintWriter(new FileWriter(projectFileName));
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 printWriter.println("<?xml version=\"1.0\" encoding=\"windows-1251\"?>");
a61af66fc99e Initial load
duke
parents:
diff changeset
46 startTag(
a61af66fc99e Initial load
duke
parents:
diff changeset
47 "VisualStudioProject",
a61af66fc99e Initial load
duke
parents:
diff changeset
48 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
49 "ProjectType", "Visual C++",
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
50 "Version", projectVersion(),
0
a61af66fc99e Initial load
duke
parents:
diff changeset
51 "Name", projectName,
a61af66fc99e Initial load
duke
parents:
diff changeset
52 "ProjectGUID", "{8822CB5C-1C41-41C2-8493-9F6E1994338B}",
a61af66fc99e Initial load
duke
parents:
diff changeset
53 "SccProjectName", "",
a61af66fc99e Initial load
duke
parents:
diff changeset
54 "SccLocalPath", ""
a61af66fc99e Initial load
duke
parents:
diff changeset
55 }
a61af66fc99e Initial load
duke
parents:
diff changeset
56 );
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
57 startTag("Platforms");
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
58 tag("Platform", new String[] {"Name", (String) BuildConfig.getField(null, "PlatformName")});
0
a61af66fc99e Initial load
duke
parents:
diff changeset
59 endTag("Platforms");
a61af66fc99e Initial load
duke
parents:
diff changeset
60
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
61 startTag("Configurations");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
62
a61af66fc99e Initial load
duke
parents:
diff changeset
63 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
64 writeConfiguration((BuildConfig)i.next());
a61af66fc99e Initial load
duke
parents:
diff changeset
65 }
a61af66fc99e Initial load
duke
parents:
diff changeset
66
a61af66fc99e Initial load
duke
parents:
diff changeset
67 endTag("Configurations");
a61af66fc99e Initial load
duke
parents:
diff changeset
68
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
69 tag("References");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
70
a61af66fc99e Initial load
duke
parents:
diff changeset
71 writeFiles(allConfigs);
a61af66fc99e Initial load
duke
parents:
diff changeset
72
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
73 tag("Globals");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
74
a61af66fc99e Initial load
duke
parents:
diff changeset
75 endTag("VisualStudioProject");
a61af66fc99e Initial load
duke
parents:
diff changeset
76 printWriter.close();
a61af66fc99e Initial load
duke
parents:
diff changeset
77
a61af66fc99e Initial load
duke
parents:
diff changeset
78 System.out.println(" Done.");
a61af66fc99e Initial load
duke
parents:
diff changeset
79 }
a61af66fc99e Initial load
duke
parents:
diff changeset
80
a61af66fc99e Initial load
duke
parents:
diff changeset
81
a61af66fc99e Initial load
duke
parents:
diff changeset
82 abstract class NameFilter {
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
83 protected String fname;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
84
a61af66fc99e Initial load
duke
parents:
diff changeset
85 abstract boolean match(FileInfo fi);
a61af66fc99e Initial load
duke
parents:
diff changeset
86
a61af66fc99e Initial load
duke
parents:
diff changeset
87 String filterString() { return ""; }
a61af66fc99e Initial load
duke
parents:
diff changeset
88 String name() { return this.fname;}
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
89
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
90 @Override
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
91 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
92 public int hashCode() {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
93 final int prime = 31;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
94 int result = 1;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
95 result = prime * result + getOuterType().hashCode();
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
96 result = prime * result + ((fname == null) ? 0 : fname.hashCode());
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
97 return result;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
98 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
99
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
100 @Override
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
101 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
102 public boolean equals(Object obj) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
103 if (this == obj)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
104 return true;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
105 if (obj == null)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
106 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
107 if (getClass() != obj.getClass())
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
108 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
109 NameFilter other = (NameFilter) obj;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
110 if (!getOuterType().equals(other.getOuterType()))
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
111 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
112 if (fname == null) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
113 if (other.fname != null)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
114 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
115 } else if (!fname.equals(other.fname))
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
116 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
117 return true;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
118 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
119
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
120 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
121 private WinGammaPlatformVC7 getOuterType() {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
122 return WinGammaPlatformVC7.this;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
123 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
124 }
a61af66fc99e Initial load
duke
parents:
diff changeset
125
a61af66fc99e Initial load
duke
parents:
diff changeset
126 class DirectoryFilter extends NameFilter {
a61af66fc99e Initial load
duke
parents:
diff changeset
127 String dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
128 int baseLen, dirLen;
a61af66fc99e Initial load
duke
parents:
diff changeset
129
a61af66fc99e Initial load
duke
parents:
diff changeset
130 DirectoryFilter(String dir, String sbase) {
a61af66fc99e Initial load
duke
parents:
diff changeset
131 this.dir = dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
132 this.baseLen = sbase.length();
a61af66fc99e Initial load
duke
parents:
diff changeset
133 this.dirLen = dir.length();
a61af66fc99e Initial load
duke
parents:
diff changeset
134 this.fname = dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
135 }
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137 DirectoryFilter(String fname, String dir, String sbase) {
a61af66fc99e Initial load
duke
parents:
diff changeset
138 this.dir = dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
139 this.baseLen = sbase.length();
a61af66fc99e Initial load
duke
parents:
diff changeset
140 this.dirLen = dir.length();
a61af66fc99e Initial load
duke
parents:
diff changeset
141 this.fname = fname;
a61af66fc99e Initial load
duke
parents:
diff changeset
142 }
a61af66fc99e Initial load
duke
parents:
diff changeset
143
a61af66fc99e Initial load
duke
parents:
diff changeset
144
a61af66fc99e Initial load
duke
parents:
diff changeset
145 boolean match(FileInfo fi) {
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
146 int lastSlashIndex = fi.full.lastIndexOf('/');
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
147 String fullDir = fi.full.substring(0, lastSlashIndex);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
148 return fullDir.endsWith(dir);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
149 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
150
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
151 @Override
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
152 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
153 public int hashCode() {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
154 final int prime = 31;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
155 int result = super.hashCode();
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
156 result = prime * result + getOuterType().hashCode();
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
157 result = prime * result + baseLen;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
158 result = prime * result + ((dir == null) ? 0 : dir.hashCode());
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
159 result = prime * result + dirLen;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
160 return result;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
161 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
162
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
163 @Override
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
164 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
165 public boolean equals(Object obj) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
166 if (this == obj)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
167 return true;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
168 if (!super.equals(obj))
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
169 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
170 if (getClass() != obj.getClass())
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
171 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
172 DirectoryFilter other = (DirectoryFilter) obj;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
173 if (!getOuterType().equals(other.getOuterType()))
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
174 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
175 if (baseLen != other.baseLen)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
176 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
177 if (dir == null) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
178 if (other.dir != null)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
179 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
180 } else if (!dir.equals(other.dir))
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
181 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
182 if (dirLen != other.dirLen)
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
183 return false;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
184 return true;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
185 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
186
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
187 // eclipse auto-generated
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
188 private WinGammaPlatformVC7 getOuterType() {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
189 return WinGammaPlatformVC7.this;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
190 }
a61af66fc99e Initial load
duke
parents:
diff changeset
191 }
a61af66fc99e Initial load
duke
parents:
diff changeset
192
a61af66fc99e Initial load
duke
parents:
diff changeset
193 class TerminatorFilter extends NameFilter {
a61af66fc99e Initial load
duke
parents:
diff changeset
194 TerminatorFilter(String fname) {
a61af66fc99e Initial load
duke
parents:
diff changeset
195 this.fname = fname;
a61af66fc99e Initial load
duke
parents:
diff changeset
196
a61af66fc99e Initial load
duke
parents:
diff changeset
197 }
a61af66fc99e Initial load
duke
parents:
diff changeset
198 boolean match(FileInfo fi) {
a61af66fc99e Initial load
duke
parents:
diff changeset
199 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
200 }
a61af66fc99e Initial load
duke
parents:
diff changeset
201
a61af66fc99e Initial load
duke
parents:
diff changeset
202 }
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 class SpecificNameFilter extends NameFilter {
a61af66fc99e Initial load
duke
parents:
diff changeset
205 String pats[];
a61af66fc99e Initial load
duke
parents:
diff changeset
206
a61af66fc99e Initial load
duke
parents:
diff changeset
207 SpecificNameFilter(String fname, String[] pats) {
a61af66fc99e Initial load
duke
parents:
diff changeset
208 this.fname = fname;
a61af66fc99e Initial load
duke
parents:
diff changeset
209 this.pats = pats;
a61af66fc99e Initial load
duke
parents:
diff changeset
210 }
a61af66fc99e Initial load
duke
parents:
diff changeset
211
a61af66fc99e Initial load
duke
parents:
diff changeset
212 boolean match(FileInfo fi) {
a61af66fc99e Initial load
duke
parents:
diff changeset
213 for (int i=0; i<pats.length; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
214 if (fi.attr.shortName.matches(pats[i])) {
a61af66fc99e Initial load
duke
parents:
diff changeset
215 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
216 }
a61af66fc99e Initial load
duke
parents:
diff changeset
217 }
a61af66fc99e Initial load
duke
parents:
diff changeset
218 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
219 }
a61af66fc99e Initial load
duke
parents:
diff changeset
220
a61af66fc99e Initial load
duke
parents:
diff changeset
221 }
a61af66fc99e Initial load
duke
parents:
diff changeset
222
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
223 class SpecificPathFilter extends NameFilter {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
224 String pats[];
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
225
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
226 SpecificPathFilter(String fname, String[] pats) {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
227 this.fname = fname;
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
228 this.pats = pats;
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
229 }
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
230
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
231 boolean match(FileInfo fi) {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
232 for (int i=0; i<pats.length; i++) {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
233 if (fi.full.matches(pats[i])) {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
234 return true;
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
235 }
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
236 }
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
237 return false;
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
238 }
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
239
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
240 }
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
241
0
a61af66fc99e Initial load
duke
parents:
diff changeset
242 class ContainerFilter extends NameFilter {
a61af66fc99e Initial load
duke
parents:
diff changeset
243 Vector children;
a61af66fc99e Initial load
duke
parents:
diff changeset
244
a61af66fc99e Initial load
duke
parents:
diff changeset
245 ContainerFilter(String fname) {
a61af66fc99e Initial load
duke
parents:
diff changeset
246 this.fname = fname;
a61af66fc99e Initial load
duke
parents:
diff changeset
247 children = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
248
a61af66fc99e Initial load
duke
parents:
diff changeset
249 }
a61af66fc99e Initial load
duke
parents:
diff changeset
250 boolean match(FileInfo fi) {
a61af66fc99e Initial load
duke
parents:
diff changeset
251 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
252 }
a61af66fc99e Initial load
duke
parents:
diff changeset
253
a61af66fc99e Initial load
duke
parents:
diff changeset
254 Iterator babies() { return children.iterator(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
255
a61af66fc99e Initial load
duke
parents:
diff changeset
256 void add(NameFilter f) {
a61af66fc99e Initial load
duke
parents:
diff changeset
257 children.add(f);
a61af66fc99e Initial load
duke
parents:
diff changeset
258 }
a61af66fc99e Initial load
duke
parents:
diff changeset
259 }
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261
a61af66fc99e Initial load
duke
parents:
diff changeset
262 void writeCustomToolConfig(Vector configs, String[] customToolAttrs) {
a61af66fc99e Initial load
duke
parents:
diff changeset
263 for (Iterator i = configs.iterator(); i.hasNext(); ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
264 startTag("FileConfiguration",
a61af66fc99e Initial load
duke
parents:
diff changeset
265 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
266 "Name", (String)i.next()
a61af66fc99e Initial load
duke
parents:
diff changeset
267 }
a61af66fc99e Initial load
duke
parents:
diff changeset
268 );
a61af66fc99e Initial load
duke
parents:
diff changeset
269 tag("Tool", customToolAttrs);
a61af66fc99e Initial load
duke
parents:
diff changeset
270
a61af66fc99e Initial load
duke
parents:
diff changeset
271 endTag("FileConfiguration");
a61af66fc99e Initial load
duke
parents:
diff changeset
272 }
a61af66fc99e Initial load
duke
parents:
diff changeset
273 }
a61af66fc99e Initial load
duke
parents:
diff changeset
274
a61af66fc99e Initial load
duke
parents:
diff changeset
275 // here we define filters, which define layout of what can be seen in 'Solution View' of MSVC
a61af66fc99e Initial load
duke
parents:
diff changeset
276 // Basically there are two types of entities - container filters and real filters
a61af66fc99e Initial load
duke
parents:
diff changeset
277 // - container filter just provides a container to group together real filters
a61af66fc99e Initial load
duke
parents:
diff changeset
278 // - real filter can select elements from the set according to some rule, put it into XML
a61af66fc99e Initial load
duke
parents:
diff changeset
279 // and remove from the list
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
280 Vector<NameFilter> makeFilters(TreeSet<FileInfo> files) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
281 Vector<NameFilter> rv = new Vector<NameFilter>();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
282 String sbase = Util.normalize(BuildConfig.getFieldString(null, "SourceBase")+"/src/");
a61af66fc99e Initial load
duke
parents:
diff changeset
283
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
284 String currentDir = "";
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
285 DirectoryFilter container = null;
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
286 for(FileInfo fileInfo : files) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
287
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
288 if (!fileInfo.full.startsWith(sbase)) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
289 continue;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
290 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
291
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
292 int lastSlash = fileInfo.full.lastIndexOf('/');
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
293 String dir = fileInfo.full.substring(sbase.length(), lastSlash);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
294 if(dir.equals("share/vm")) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
295 // skip files directly in share/vm - should only be precompiled.hpp which is handled below
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
296 continue;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
297 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
298 if (!dir.equals(currentDir)) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
299 currentDir = dir;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
300 if (container != null && !rv.contains(container)) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
301 rv.add(container);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
302 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
303
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
304 // remove "share/vm/" from names
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
305 String name = dir;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
306 if (dir.startsWith("share/vm/")) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
307 name = dir.substring("share/vm/".length(), dir.length());
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
308 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
309 DirectoryFilter newfilter = new DirectoryFilter(name, dir, sbase);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
310 int i = rv.indexOf(newfilter);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
311 if(i == -1) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
312 container = newfilter;
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
313 } else {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
314 // if the filter already exists, reuse it
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
315 container = (DirectoryFilter) rv.get(i);
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
316 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
317 }
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
318 }
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
319 if (container != null && !rv.contains(container)) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
320 rv.add(container);
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
321 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
322
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
323 ContainerFilter generated = new ContainerFilter("Generated");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
324 ContainerFilter c1Generated = new ContainerFilter("C1");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
325 c1Generated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*compiler1/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
326 c1Generated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*compiler1/generated/jvmtifiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
327 generated.add(c1Generated);
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
328 ContainerFilter c2Generated = new ContainerFilter("C2");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
329 c2Generated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*compiler2/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
330 c2Generated.add(new SpecificPathFilter("adfiles", new String[] {".*compiler2/generated/adfiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
331 c2Generated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*compiler2/generated/jvmtifiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
332 generated.add(c2Generated);
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
333 ContainerFilter coreGenerated = new ContainerFilter("Core");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
334 coreGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*core/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
335 coreGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*core/generated/jvmtifiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
336 generated.add(coreGenerated);
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
337 ContainerFilter tieredGenerated = new ContainerFilter("Tiered");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
338 tieredGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*tiered/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
339 tieredGenerated.add(new SpecificPathFilter("adfiles", new String[] {".*tiered/generated/adfiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
340 tieredGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*tiered/generated/jvmtifiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
341 generated.add(tieredGenerated);
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
342 ContainerFilter kernelGenerated = new ContainerFilter("Kernel");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
343 kernelGenerated.add(new SpecificPathFilter("C++ Interpreter Generated", new String[] {".*kernel/generated/jvmtifiles/bytecodeInterpreterWithChecks.+"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
344 kernelGenerated.add(new SpecificPathFilter("jvmtifiles", new String[] {".*kernel/generated/jvmtifiles/.*"}));
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
345 generated.add(kernelGenerated);
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
346 rv.add(generated);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
347
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
348 rv.add(new SpecificNameFilter("Precompiled Header", new String[] {"precompiled.hpp"}));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
349
a61af66fc99e Initial load
duke
parents:
diff changeset
350 // this one is to catch files not caught by other filters
a61af66fc99e Initial load
duke
parents:
diff changeset
351 rv.add(new TerminatorFilter("Source Files"));
a61af66fc99e Initial load
duke
parents:
diff changeset
352
a61af66fc99e Initial load
duke
parents:
diff changeset
353 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
354 }
a61af66fc99e Initial load
duke
parents:
diff changeset
355
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
356 void writeFiles(Vector<BuildConfig> allConfigs) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
357
a61af66fc99e Initial load
duke
parents:
diff changeset
358 Hashtable allFiles = computeAttributedFiles(allConfigs);
a61af66fc99e Initial load
duke
parents:
diff changeset
359
a61af66fc99e Initial load
duke
parents:
diff changeset
360 Vector allConfigNames = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
361 for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
362 allConfigNames.add(((BuildConfig)i.next()).get("Name"));
a61af66fc99e Initial load
duke
parents:
diff changeset
363 }
a61af66fc99e Initial load
duke
parents:
diff changeset
364
a61af66fc99e Initial load
duke
parents:
diff changeset
365 TreeSet sortedFiles = sortFiles(allFiles);
a61af66fc99e Initial load
duke
parents:
diff changeset
366
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
367 startTag("Files");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
368
a61af66fc99e Initial load
duke
parents:
diff changeset
369 for (Iterator i = makeFilters(sortedFiles).iterator(); i.hasNext(); ) {
a61af66fc99e Initial load
duke
parents:
diff changeset
370 doWriteFiles(sortedFiles, allConfigNames, (NameFilter)i.next());
a61af66fc99e Initial load
duke
parents:
diff changeset
371 }
a61af66fc99e Initial load
duke
parents:
diff changeset
372
a61af66fc99e Initial load
duke
parents:
diff changeset
373
a61af66fc99e Initial load
duke
parents:
diff changeset
374 startTag("Filter",
a61af66fc99e Initial load
duke
parents:
diff changeset
375 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
376 "Name", "Resource Files",
a61af66fc99e Initial load
duke
parents:
diff changeset
377 "Filter", "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
a61af66fc99e Initial load
duke
parents:
diff changeset
378 }
a61af66fc99e Initial load
duke
parents:
diff changeset
379 );
a61af66fc99e Initial load
duke
parents:
diff changeset
380 endTag("Filter");
a61af66fc99e Initial load
duke
parents:
diff changeset
381
a61af66fc99e Initial load
duke
parents:
diff changeset
382 endTag("Files");
a61af66fc99e Initial load
duke
parents:
diff changeset
383 }
a61af66fc99e Initial load
duke
parents:
diff changeset
384
a61af66fc99e Initial load
duke
parents:
diff changeset
385 void doWriteFiles(TreeSet allFiles, Vector allConfigNames, NameFilter filter) {
a61af66fc99e Initial load
duke
parents:
diff changeset
386 startTag("Filter",
a61af66fc99e Initial load
duke
parents:
diff changeset
387 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
388 "Name", filter.name(),
a61af66fc99e Initial load
duke
parents:
diff changeset
389 "Filter", filter.filterString()
a61af66fc99e Initial load
duke
parents:
diff changeset
390 }
a61af66fc99e Initial load
duke
parents:
diff changeset
391 );
a61af66fc99e Initial load
duke
parents:
diff changeset
392
a61af66fc99e Initial load
duke
parents:
diff changeset
393 if (filter instanceof ContainerFilter) {
a61af66fc99e Initial load
duke
parents:
diff changeset
394
a61af66fc99e Initial load
duke
parents:
diff changeset
395 Iterator i = ((ContainerFilter)filter).babies();
a61af66fc99e Initial load
duke
parents:
diff changeset
396 while (i.hasNext()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
397 doWriteFiles(allFiles, allConfigNames, (NameFilter)i.next());
a61af66fc99e Initial load
duke
parents:
diff changeset
398 }
a61af66fc99e Initial load
duke
parents:
diff changeset
399
a61af66fc99e Initial load
duke
parents:
diff changeset
400 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
401
a61af66fc99e Initial load
duke
parents:
diff changeset
402 Iterator i = allFiles.iterator();
a61af66fc99e Initial load
duke
parents:
diff changeset
403 while (i.hasNext()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
404 FileInfo fi = (FileInfo)i.next();
a61af66fc99e Initial load
duke
parents:
diff changeset
405
a61af66fc99e Initial load
duke
parents:
diff changeset
406 if (!filter.match(fi)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
407 continue;
a61af66fc99e Initial load
duke
parents:
diff changeset
408 }
a61af66fc99e Initial load
duke
parents:
diff changeset
409
a61af66fc99e Initial load
duke
parents:
diff changeset
410 startTag("File",
a61af66fc99e Initial load
duke
parents:
diff changeset
411 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
412 "RelativePath", fi.full.replace('/', '\\')
a61af66fc99e Initial load
duke
parents:
diff changeset
413 }
a61af66fc99e Initial load
duke
parents:
diff changeset
414 );
a61af66fc99e Initial load
duke
parents:
diff changeset
415
a61af66fc99e Initial load
duke
parents:
diff changeset
416 FileAttribute a = fi.attr;
a61af66fc99e Initial load
duke
parents:
diff changeset
417 if (a.pchRoot) {
a61af66fc99e Initial load
duke
parents:
diff changeset
418 writeCustomToolConfig(allConfigNames,
a61af66fc99e Initial load
duke
parents:
diff changeset
419 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
420 "Name", "VCCLCompilerTool",
a61af66fc99e Initial load
duke
parents:
diff changeset
421 "UsePrecompiledHeader", "1"
a61af66fc99e Initial load
duke
parents:
diff changeset
422 });
a61af66fc99e Initial load
duke
parents:
diff changeset
423 }
a61af66fc99e Initial load
duke
parents:
diff changeset
424
a61af66fc99e Initial load
duke
parents:
diff changeset
425 if (a.noPch) {
a61af66fc99e Initial load
duke
parents:
diff changeset
426 writeCustomToolConfig(allConfigNames,
a61af66fc99e Initial load
duke
parents:
diff changeset
427 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
428 "Name", "VCCLCompilerTool",
a61af66fc99e Initial load
duke
parents:
diff changeset
429 "UsePrecompiledHeader", "0"
a61af66fc99e Initial load
duke
parents:
diff changeset
430 });
a61af66fc99e Initial load
duke
parents:
diff changeset
431 }
a61af66fc99e Initial load
duke
parents:
diff changeset
432
a61af66fc99e Initial load
duke
parents:
diff changeset
433 if (a.configs != null) {
a61af66fc99e Initial load
duke
parents:
diff changeset
434 for (Iterator j=allConfigNames.iterator(); j.hasNext();) {
a61af66fc99e Initial load
duke
parents:
diff changeset
435 String cfg = (String)j.next();
a61af66fc99e Initial load
duke
parents:
diff changeset
436 if (!a.configs.contains(cfg)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
437 startTag("FileConfiguration",
a61af66fc99e Initial load
duke
parents:
diff changeset
438 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
439 "Name", cfg,
a61af66fc99e Initial load
duke
parents:
diff changeset
440 "ExcludedFromBuild", "TRUE"
a61af66fc99e Initial load
duke
parents:
diff changeset
441 });
a61af66fc99e Initial load
duke
parents:
diff changeset
442 endTag("FileConfiguration");
a61af66fc99e Initial load
duke
parents:
diff changeset
443
a61af66fc99e Initial load
duke
parents:
diff changeset
444 }
a61af66fc99e Initial load
duke
parents:
diff changeset
445 }
a61af66fc99e Initial load
duke
parents:
diff changeset
446 }
a61af66fc99e Initial load
duke
parents:
diff changeset
447
a61af66fc99e Initial load
duke
parents:
diff changeset
448 endTag("File");
a61af66fc99e Initial load
duke
parents:
diff changeset
449
a61af66fc99e Initial load
duke
parents:
diff changeset
450 // we not gonna look at this file anymore
a61af66fc99e Initial load
duke
parents:
diff changeset
451 i.remove();
a61af66fc99e Initial load
duke
parents:
diff changeset
452 }
a61af66fc99e Initial load
duke
parents:
diff changeset
453 }
a61af66fc99e Initial load
duke
parents:
diff changeset
454
a61af66fc99e Initial load
duke
parents:
diff changeset
455 endTag("Filter");
a61af66fc99e Initial load
duke
parents:
diff changeset
456 }
a61af66fc99e Initial load
duke
parents:
diff changeset
457
a61af66fc99e Initial load
duke
parents:
diff changeset
458
a61af66fc99e Initial load
duke
parents:
diff changeset
459 void writeConfiguration(BuildConfig cfg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
460 startTag("Configuration",
a61af66fc99e Initial load
duke
parents:
diff changeset
461 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
462 "Name", cfg.get("Name"),
a61af66fc99e Initial load
duke
parents:
diff changeset
463 "OutputDirectory", cfg.get("OutputDir"),
a61af66fc99e Initial load
duke
parents:
diff changeset
464 "IntermediateDirectory", cfg.get("OutputDir"),
a61af66fc99e Initial load
duke
parents:
diff changeset
465 "ConfigurationType", "2",
a61af66fc99e Initial load
duke
parents:
diff changeset
466 "UseOfMFC", "0",
a61af66fc99e Initial load
duke
parents:
diff changeset
467 "ATLMinimizesCRunTimeLibraryUsage", "FALSE"
a61af66fc99e Initial load
duke
parents:
diff changeset
468 }
a61af66fc99e Initial load
duke
parents:
diff changeset
469 );
a61af66fc99e Initial load
duke
parents:
diff changeset
470
a61af66fc99e Initial load
duke
parents:
diff changeset
471
a61af66fc99e Initial load
duke
parents:
diff changeset
472
a61af66fc99e Initial load
duke
parents:
diff changeset
473 tagV("Tool", cfg.getV("CompilerFlags"));
a61af66fc99e Initial load
duke
parents:
diff changeset
474
a61af66fc99e Initial load
duke
parents:
diff changeset
475 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
476 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
477 "Name", "VCCustomBuildTool"
a61af66fc99e Initial load
duke
parents:
diff changeset
478 }
a61af66fc99e Initial load
duke
parents:
diff changeset
479 );
a61af66fc99e Initial load
duke
parents:
diff changeset
480
a61af66fc99e Initial load
duke
parents:
diff changeset
481 tagV("Tool", cfg.getV("LinkerFlags"));
a61af66fc99e Initial load
duke
parents:
diff changeset
482
a61af66fc99e Initial load
duke
parents:
diff changeset
483 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
484 new String[] {
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
485 "Name", "VCPostBuildEventTool",
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
486 "Description", BuildConfig.getFieldString(null, "PostbuildDescription"),
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
487 //Caution: String.replace(String,String) is available from JDK5 onwards only
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
488 "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PostbuildCommand").replace
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
489 ("\t", "&#x0D;&#x0A;"))
0
a61af66fc99e Initial load
duke
parents:
diff changeset
490 }
a61af66fc99e Initial load
duke
parents:
diff changeset
491 );
a61af66fc99e Initial load
duke
parents:
diff changeset
492
a61af66fc99e Initial load
duke
parents:
diff changeset
493 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
494 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
495 "Name", "VCPreBuildEventTool"
a61af66fc99e Initial load
duke
parents:
diff changeset
496 }
a61af66fc99e Initial load
duke
parents:
diff changeset
497 );
a61af66fc99e Initial load
duke
parents:
diff changeset
498
a61af66fc99e Initial load
duke
parents:
diff changeset
499 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
500 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
501 "Name", "VCPreLinkEventTool",
a61af66fc99e Initial load
duke
parents:
diff changeset
502 "Description", BuildConfig.getFieldString(null, "PrelinkDescription"),
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
503 //Caution: String.replace(String,String) is available from JDK5 onwards only
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
504 "CommandLine", cfg.expandFormat(BuildConfig.getFieldString(null, "PrelinkCommand").replace
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
505 ("\t", "&#x0D;&#x0A;"))
0
a61af66fc99e Initial load
duke
parents:
diff changeset
506 }
a61af66fc99e Initial load
duke
parents:
diff changeset
507 );
a61af66fc99e Initial load
duke
parents:
diff changeset
508
a61af66fc99e Initial load
duke
parents:
diff changeset
509 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
510 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
511 "Name", "VCResourceCompilerTool",
a61af66fc99e Initial load
duke
parents:
diff changeset
512 // XXX???
a61af66fc99e Initial load
duke
parents:
diff changeset
513 "PreprocessorDefinitions", "NDEBUG",
a61af66fc99e Initial load
duke
parents:
diff changeset
514 "Culture", "1033"
a61af66fc99e Initial load
duke
parents:
diff changeset
515 }
a61af66fc99e Initial load
duke
parents:
diff changeset
516 );
a61af66fc99e Initial load
duke
parents:
diff changeset
517
a61af66fc99e Initial load
duke
parents:
diff changeset
518 tag("Tool",
a61af66fc99e Initial load
duke
parents:
diff changeset
519 new String[] {
a61af66fc99e Initial load
duke
parents:
diff changeset
520 "Name", "VCMIDLTool",
a61af66fc99e Initial load
duke
parents:
diff changeset
521 "PreprocessorDefinitions", "NDEBUG",
a61af66fc99e Initial load
duke
parents:
diff changeset
522 "MkTypLibCompatible", "TRUE",
a61af66fc99e Initial load
duke
parents:
diff changeset
523 "SuppressStartupBanner", "TRUE",
a61af66fc99e Initial load
duke
parents:
diff changeset
524 "TargetEnvironment", "1",
a61af66fc99e Initial load
duke
parents:
diff changeset
525 "TypeLibraryName", cfg.get("OutputDir") + Util.sep + "vm.tlb",
a61af66fc99e Initial load
duke
parents:
diff changeset
526 "HeaderFileName", ""
a61af66fc99e Initial load
duke
parents:
diff changeset
527 }
a61af66fc99e Initial load
duke
parents:
diff changeset
528 );
a61af66fc99e Initial load
duke
parents:
diff changeset
529
a61af66fc99e Initial load
duke
parents:
diff changeset
530 endTag("Configuration");
a61af66fc99e Initial load
duke
parents:
diff changeset
531 }
a61af66fc99e Initial load
duke
parents:
diff changeset
532
a61af66fc99e Initial load
duke
parents:
diff changeset
533 int indent;
a61af66fc99e Initial load
duke
parents:
diff changeset
534
a61af66fc99e Initial load
duke
parents:
diff changeset
535 private void startTagPrim(String name,
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
536 String[] attrs,
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
537 boolean close) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
538 startTagPrim(name, attrs, close, true);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
539 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
540
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
541 private void startTagPrim(String name,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
542 String[] attrs,
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
543 boolean close,
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
544 boolean newline) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
545 doIndent();
a61af66fc99e Initial load
duke
parents:
diff changeset
546 printWriter.print("<"+name);
a61af66fc99e Initial load
duke
parents:
diff changeset
547 indent++;
a61af66fc99e Initial load
duke
parents:
diff changeset
548
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
549 if (attrs != null && attrs.length > 0) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
550 for (int i=0; i<attrs.length; i+=2) {
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
551 printWriter.print(" " + attrs[i]+"=\""+attrs[i+1]+"\"");
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
552 if (i < attrs.length - 2) {
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
553 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
554 }
a61af66fc99e Initial load
duke
parents:
diff changeset
555 }
a61af66fc99e Initial load
duke
parents:
diff changeset
556
a61af66fc99e Initial load
duke
parents:
diff changeset
557 if (close) {
a61af66fc99e Initial load
duke
parents:
diff changeset
558 indent--;
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
559 printWriter.print(" />");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
560 } else {
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
561 printWriter.print(">");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
562 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
563 if(newline) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
564 printWriter.println();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
565 }
a61af66fc99e Initial load
duke
parents:
diff changeset
566 }
a61af66fc99e Initial load
duke
parents:
diff changeset
567
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
568 void startTag(String name, String... attrs) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
569 startTagPrim(name, attrs, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
570 }
a61af66fc99e Initial load
duke
parents:
diff changeset
571
a61af66fc99e Initial load
duke
parents:
diff changeset
572 void startTagV(String name, Vector attrs) {
a61af66fc99e Initial load
duke
parents:
diff changeset
573 String s[] = new String [attrs.size()];
a61af66fc99e Initial load
duke
parents:
diff changeset
574 for (int i=0; i<attrs.size(); i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
575 s[i] = (String)attrs.elementAt(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
576 }
a61af66fc99e Initial load
duke
parents:
diff changeset
577 startTagPrim(name, s, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
578 }
a61af66fc99e Initial load
duke
parents:
diff changeset
579
a61af66fc99e Initial load
duke
parents:
diff changeset
580 void endTag(String name) {
a61af66fc99e Initial load
duke
parents:
diff changeset
581 indent--;
a61af66fc99e Initial load
duke
parents:
diff changeset
582 doIndent();
a61af66fc99e Initial load
duke
parents:
diff changeset
583 printWriter.println("</"+name+">");
a61af66fc99e Initial load
duke
parents:
diff changeset
584 }
a61af66fc99e Initial load
duke
parents:
diff changeset
585
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
586 void tag(String name, String... attrs) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
587 startTagPrim(name, attrs, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
588 }
a61af66fc99e Initial load
duke
parents:
diff changeset
589
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
590 void tagData(String name, String data) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
591 doIndent();
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
592 printWriter.print("<"+name+">");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
593 printWriter.print(data);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
594 printWriter.println("</"+name+">");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
595 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
596
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
597 void tagData(String name, String data, String... attrs) {
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
598 startTagPrim(name, attrs, false, false);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
599 printWriter.print(data);
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
600 printWriter.println("</"+name+">");
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
601 indent--;
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
602 }
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
603
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
604 void tagV(String name, Vector attrs) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
605 String s[] = new String [attrs.size()];
a61af66fc99e Initial load
duke
parents:
diff changeset
606 for (int i=0; i<attrs.size(); i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
607 s[i] = (String)attrs.elementAt(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
608 }
a61af66fc99e Initial load
duke
parents:
diff changeset
609 startTagPrim(name, s, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
610 }
a61af66fc99e Initial load
duke
parents:
diff changeset
611
a61af66fc99e Initial load
duke
parents:
diff changeset
612
a61af66fc99e Initial load
duke
parents:
diff changeset
613 void doIndent() {
a61af66fc99e Initial load
duke
parents:
diff changeset
614 for (int i=0; i<indent; i++) {
2393
74e790c48cd4 7031571: Generate native VS2010 project files
sla
parents: 2233
diff changeset
615 printWriter.print(" ");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
616 }
a61af66fc99e Initial load
duke
parents:
diff changeset
617 }
a61af66fc99e Initial load
duke
parents:
diff changeset
618
a61af66fc99e Initial load
duke
parents:
diff changeset
619 protected String getProjectExt() {
a61af66fc99e Initial load
duke
parents:
diff changeset
620 return ".vcproj";
a61af66fc99e Initial load
duke
parents:
diff changeset
621 }
a61af66fc99e Initial load
duke
parents:
diff changeset
622 }
a61af66fc99e Initial load
duke
parents:
diff changeset
623
a61af66fc99e Initial load
duke
parents:
diff changeset
624 class CompilerInterfaceVC7 extends CompilerInterface {
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
625 void getBaseCompilerFlags_common(Vector defines, Vector includes, String outDir,Vector rv) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
626
a61af66fc99e Initial load
duke
parents:
diff changeset
627 // advanced M$ IDE (2003) can only recognize name if it's first or
a61af66fc99e Initial load
duke
parents:
diff changeset
628 // second attribute in the tag - go guess
a61af66fc99e Initial load
duke
parents:
diff changeset
629 addAttr(rv, "Name", "VCCLCompilerTool");
a61af66fc99e Initial load
duke
parents:
diff changeset
630 addAttr(rv, "AdditionalIncludeDirectories", Util.join(",", includes));
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
631 addAttr(rv, "PreprocessorDefinitions",
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
632 Util.join(";", defines).replace("\"","&quot;"));
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
633 addAttr(rv, "PrecompiledHeaderThrough", "precompiled.hpp");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
634 addAttr(rv, "PrecompiledHeaderFile", outDir+Util.sep+"vm.pch");
a61af66fc99e Initial load
duke
parents:
diff changeset
635 addAttr(rv, "AssemblerListingLocation", outDir);
a61af66fc99e Initial load
duke
parents:
diff changeset
636 addAttr(rv, "ObjectFile", outDir+Util.sep);
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
637 addAttr(rv, "ProgramDataBaseFileName", outDir+Util.sep+"jvm.pdb");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
638 // Set /nologo optin
0
a61af66fc99e Initial load
duke
parents:
diff changeset
639 addAttr(rv, "SuppressStartupBanner", "TRUE");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
640 // Surpass the default /Tc or /Tp. 0 is compileAsDefault
0
a61af66fc99e Initial load
duke
parents:
diff changeset
641 addAttr(rv, "CompileAs", "0");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
642 // Set /W3 option. 3 is warningLevel_3
0
a61af66fc99e Initial load
duke
parents:
diff changeset
643 addAttr(rv, "WarningLevel", "3");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
644 // Set /WX option,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
645 addAttr(rv, "WarnAsError", "TRUE");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
646 // Set /GS option
0
a61af66fc99e Initial load
duke
parents:
diff changeset
647 addAttr(rv, "BufferSecurityCheck", "FALSE");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
648 // Set /Zi option. 3 is debugEnabled
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
649 addAttr(rv, "DebugInformationFormat", "3");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
650 }
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
651 Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir) {
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
652 Vector rv = new Vector();
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
653
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
654 getBaseCompilerFlags_common(defines,includes, outDir, rv);
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
655 // Set /Yu option. 3 is pchUseUsingSpecific
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
656 // Note: Starting VC8 pchUseUsingSpecific is 2 !!!
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
657 addAttr(rv, "UsePrecompiledHeader", "3");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
658 // Set /EHsc- option
0
a61af66fc99e Initial load
duke
parents:
diff changeset
659 addAttr(rv, "ExceptionHandling", "FALSE");
a61af66fc99e Initial load
duke
parents:
diff changeset
660
a61af66fc99e Initial load
duke
parents:
diff changeset
661 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
662 }
a61af66fc99e Initial load
duke
parents:
diff changeset
663
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
664 Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
665 Vector rv = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
666
a61af66fc99e Initial load
duke
parents:
diff changeset
667 addAttr(rv, "Name", "VCLinkerTool");
a61af66fc99e Initial load
duke
parents:
diff changeset
668 addAttr(rv, "AdditionalOptions",
a61af66fc99e Initial load
duke
parents:
diff changeset
669 "/export:JNI_GetDefaultJavaVMInitArgs " +
a61af66fc99e Initial load
duke
parents:
diff changeset
670 "/export:JNI_CreateJavaVM " +
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
671 "/export:JVM_FindClassFromBootLoader "+
0
a61af66fc99e Initial load
duke
parents:
diff changeset
672 "/export:JNI_GetCreatedJavaVMs "+
a61af66fc99e Initial load
duke
parents:
diff changeset
673 "/export:jio_snprintf /export:jio_printf "+
a61af66fc99e Initial load
duke
parents:
diff changeset
674 "/export:jio_fprintf /export:jio_vfprintf "+
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
675 "/export:jio_vsnprintf "+
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
676 "/export:JVM_GetVersionInfo "+
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
677 "/export:JVM_GetThreadStateNames "+
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
678 "/export:JVM_GetThreadStateValues "+
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
679 "/export:JVM_InitAgentProperties ");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
680 addAttr(rv, "AdditionalDependencies", "Wsock32.lib winmm.lib");
a61af66fc99e Initial load
duke
parents:
diff changeset
681 addAttr(rv, "OutputFile", outDll);
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
682 // Set /INCREMENTAL option. 1 is linkIncrementalNo
0
a61af66fc99e Initial load
duke
parents:
diff changeset
683 addAttr(rv, "LinkIncremental", "1");
a61af66fc99e Initial load
duke
parents:
diff changeset
684 addAttr(rv, "SuppressStartupBanner", "TRUE");
a61af66fc99e Initial load
duke
parents:
diff changeset
685 addAttr(rv, "ModuleDefinitionFile", outDir+Util.sep+"vm.def");
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
686 addAttr(rv, "ProgramDatabaseFile", outDir+Util.sep+"jvm.pdb");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
687 // Set /SUBSYSTEM option. 2 is subSystemWindows
0
a61af66fc99e Initial load
duke
parents:
diff changeset
688 addAttr(rv, "SubSystem", "2");
a61af66fc99e Initial load
duke
parents:
diff changeset
689 addAttr(rv, "BaseAddress", "0x8000000");
a61af66fc99e Initial load
duke
parents:
diff changeset
690 addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
691 if(platformName.equals("Win32")) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
692 // Set /MACHINE option. 1 is X86
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
693 addAttr(rv, "TargetMachine", "1");
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
694 } else {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
695 // Set /MACHINE option. 17 is X64
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
696 addAttr(rv, "TargetMachine", "17");
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
697 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
698
a61af66fc99e Initial load
duke
parents:
diff changeset
699 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
700 }
a61af66fc99e Initial load
duke
parents:
diff changeset
701
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
702 void getDebugCompilerFlags_common(String opt,Vector rv) {
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
703
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
704 // Set /On option
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
705 addAttr(rv, "Optimization", opt);
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
706 // Set /FR option. 1 is brAllInfo
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
707 addAttr(rv, "BrowseInformation", "1");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
708 addAttr(rv, "BrowseInformationFile", "$(IntDir)" + Util.sep);
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
709 // Set /MD option. 2 is rtMultiThreadedDLL
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
710 addAttr(rv, "RuntimeLibrary", "2");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
711 // Set /Oy- option
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
712 addAttr(rv, "OmitFramePointers", "FALSE");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
713
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
714 }
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
715
0
a61af66fc99e Initial load
duke
parents:
diff changeset
716 Vector getDebugCompilerFlags(String opt) {
a61af66fc99e Initial load
duke
parents:
diff changeset
717 Vector rv = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
718
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
719 getDebugCompilerFlags_common(opt,rv);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
720
a61af66fc99e Initial load
duke
parents:
diff changeset
721 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
722 }
a61af66fc99e Initial load
duke
parents:
diff changeset
723
a61af66fc99e Initial load
duke
parents:
diff changeset
724 Vector getDebugLinkerFlags() {
a61af66fc99e Initial load
duke
parents:
diff changeset
725 Vector rv = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
726
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
727 addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
0
a61af66fc99e Initial load
duke
parents:
diff changeset
728
a61af66fc99e Initial load
duke
parents:
diff changeset
729 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
730 }
a61af66fc99e Initial load
duke
parents:
diff changeset
731
2027
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
732 void getAdditionalNonKernelLinkerFlags(Vector rv) {
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
733 extAttr(rv, "AdditionalOptions",
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
734 "/export:AsyncGetCallTrace ");
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
735 }
aa6e219afbf1 7006354: Updates to Visual Studio project creation and development launcher
sla
parents: 1972
diff changeset
736
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
737 void getProductCompilerFlags_common(Vector rv) {
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
738 // Set /O2 option. 2 is optimizeMaxSpeed
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
739 addAttr(rv, "Optimization", "2");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
740 // Set /Oy- option
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
741 addAttr(rv, "OmitFramePointers", "FALSE");
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
742 // Set /Ob option. 1 is expandOnlyInline
0
a61af66fc99e Initial load
duke
parents:
diff changeset
743 addAttr(rv, "InlineFunctionExpansion", "1");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
744 // Set /GF option.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
745 addAttr(rv, "StringPooling", "TRUE");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
746 // Set /MD option. 2 is rtMultiThreadedDLL
0
a61af66fc99e Initial load
duke
parents:
diff changeset
747 addAttr(rv, "RuntimeLibrary", "2");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
748 // Set /Gy option
0
a61af66fc99e Initial load
duke
parents:
diff changeset
749 addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
750 }
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
751
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
752 Vector getProductCompilerFlags() {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
753 Vector rv = new Vector();
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
754
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
755 getProductCompilerFlags_common(rv);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
756
a61af66fc99e Initial load
duke
parents:
diff changeset
757 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
758 }
a61af66fc99e Initial load
duke
parents:
diff changeset
759
a61af66fc99e Initial load
duke
parents:
diff changeset
760 Vector getProductLinkerFlags() {
a61af66fc99e Initial load
duke
parents:
diff changeset
761 Vector rv = new Vector();
a61af66fc99e Initial load
duke
parents:
diff changeset
762
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
763 // Set /OPT:REF option. 2 is optReferences
0
a61af66fc99e Initial load
duke
parents:
diff changeset
764 addAttr(rv, "OptimizeReferences", "2");
659
520d43965b1f 6812297: update project creation for Visual Studio 2005-2008
ikrylov
parents: 0
diff changeset
765 // Set /OPT:optFolding option. 2 is optFolding
0
a61af66fc99e Initial load
duke
parents:
diff changeset
766 addAttr(rv, "EnableCOMDATFolding", "2");
a61af66fc99e Initial load
duke
parents:
diff changeset
767
a61af66fc99e Initial load
duke
parents:
diff changeset
768 return rv;
a61af66fc99e Initial load
duke
parents:
diff changeset
769 }
a61af66fc99e Initial load
duke
parents:
diff changeset
770
a61af66fc99e Initial load
duke
parents:
diff changeset
771 String getOptFlag() {
a61af66fc99e Initial load
duke
parents:
diff changeset
772 return "2";
a61af66fc99e Initial load
duke
parents:
diff changeset
773 }
a61af66fc99e Initial load
duke
parents:
diff changeset
774
a61af66fc99e Initial load
duke
parents:
diff changeset
775 String getNoOptFlag() {
a61af66fc99e Initial load
duke
parents:
diff changeset
776 return "0";
a61af66fc99e Initial load
duke
parents:
diff changeset
777 }
a61af66fc99e Initial load
duke
parents:
diff changeset
778
2233
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
779 String makeCfgName(String flavourBuild, String platform) {
15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects
sla
parents: 2027
diff changeset
780 return flavourBuild + "|" + platform;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
781 }
a61af66fc99e Initial load
duke
parents:
diff changeset
782 }