]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/UserDefineCompiler.java
Change to new XML Schema.
[mirror_edk2.git] / Tools / Source / Cpptasks / net / sf / antcontrib / cpptasks / userdefine / UserDefineCompiler.java
CommitLineData
878ddf1f 1/*\r
2 * \r
3 * Copyright 2002-2006 The Ant-Contrib project\r
4 *\r
5 * Licensed under the Apache License, Version 2.0 (the "License");\r
6 * you may not use this file except in compliance with the License.\r
7 * You may obtain a copy of the License at\r
8 *\r
9 * http://www.apache.org/licenses/LICENSE-2.0\r
10 *\r
11 * Unless required by applicable law or agreed to in writing, software\r
12 * distributed under the License is distributed on an "AS IS" BASIS,\r
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 * See the License for the specific language governing permissions and\r
15 * limitations under the License.\r
16 */\r
17package net.sf.antcontrib.cpptasks.userdefine;\r
18\r
19import org.apache.tools.ant.Project;\r
20\r
21import net.sf.antcontrib.cpptasks.CCTask;\r
22import org.tianocore.build.toolchain.*;\r
23\r
24public class UserDefineCompiler extends CommandLineUserDefine {\r
25\r
26 public UserDefineCompiler(CCTask cctask, UserDefineDef userdefineDef) {\r
27 String arch = null;\r
28 String os = null;\r
29 String vendor = null;\r
30 String commandType = null;\r
31 Project project = cctask.getProject();\r
32 // get command string\r
33 if (cctask.getArch() == null) {\r
34 arch = project.getProperty("ARCH");\r
35 if (arch == null) {\r
36 arch = System.getProperty("os.arch");\r
37 }\r
38 } else {\r
39 arch = cctask.getArch();\r
40 }\r
41 arch = arch.toUpperCase();\r
42 if (cctask.getOs() == null) {\r
43 os = project.getProperty("OS");\r
44 if (os == null) {\r
45 os = System.getProperty("os.name");\r
46 }\r
47 } else {\r
48 os = cctask.getOs();\r
49 }\r
50\r
51 commandType = userdefineDef.getType();\r
52\r
53 if (commandType != null) {\r
54 if (ToolChainFactory.getValue(arch + "_" + commandType + "_VENDOR") != null\r
55 && ToolChainFactory.getValue(\r
56 arch + "_" + commandType + "_VENDOR").trim()\r
57 .length() > 0) {\r
58 vendor = ToolChainFactory.getValue(arch + "_" + commandType\r
59 + "_VENDOR");\r
60 } else if (ToolChainFactory.getValue(arch + "_VENDOR") != null) {\r
61 vendor = ToolChainFactory.getValue(arch + "_VENDOR");\r
62 }\r
63 }\r
64\r
65 // look if ARCH_VENDOR_OS_COMMANDTYPE is existed\r
66 if (arch != null && vendor != null && os != null && commandType != null) {\r
67 command = project.getProperty(arch + "_" + vendor + "_" + os + "_"\r
68 + commandType);\r
69 }\r
70 // look if ARCH_VENDOR_COMMANDTYPE is existed\r
71 if (command == null) {\r
72 if (arch != null && vendor != null && commandType != null) {\r
73 command = project.getProperty(arch + "_" + vendor + "_"\r
74 + commandType);\r
75 }\r
76 }\r
77 // look if ARCH_COMMANDTYPE is existed\r
78 if (command == null) {\r
79 if (arch != null && commandType != null) {\r
80 command = project.getProperty(arch + "_" + commandType);\r
81 }\r
82 }\r
83 // look if COMMANDTYPE is existed\r
84 if (command == null) {\r
85 if (commandType != null) {\r
86 command = project.getProperty(commandType);\r
87 }\r
88 }\r
89 // using the default value from VENDOR_OS_COMMANDTYPE or\r
90 // VENDOR_COMMANDTYPE\r
91 if (command == null) {\r
92 if (vendor != null && os != null && commandType != null) {\r
93 String str = vendor + "_" + os + "_" + commandType;\r
94 command = UserDefineMapping.getDefaultCommand(str);\r
95 }\r
96 }\r
97 // VENDOR_COMMANDTYPE\r
98 if (command == null) {\r
99 if (vendor != null && commandType != null) {\r
100 String str = vendor + "_" + commandType;\r
101 command = UserDefineMapping.getDefaultCommand(str);\r
102 }\r
103 }\r
104 // just give the name whatever\r
105 if (command == null) {\r
106 command = "cl";\r
107 }\r
108\r
109 // initialize the includePathDelimiter\r
110 if (userdefineDef.getIncludepathDelimiter() != null) {\r
111 includePathDelimiter = userdefineDef.getIncludepathDelimiter();\r
112 }\r
113 // else find VENDOR\r
114 else {\r
115 if (vendor != null) {\r
116 includePathDelimiter = UserDefineMapping\r
117 .getIncludePathDelimiter(vendor, commandType);\r
118 }\r
119 }\r
120 if (includePathDelimiter == null) {\r
121 includePathDelimiter = "-I";\r
122 }\r
123 /*\r
124 * Set libSet.\r
125 */\r
126 if (userdefineDef.getLibSet() != null\r
127 && userdefineDef.getLibSet().size() > 0) {\r
128 String[] libList;\r
129 if (vendor.equalsIgnoreCase("GCC")) {\r
130 libSetList.add("-(");\r
131 for (int i = 0; i < userdefineDef.getLibSet().size(); i++) {\r
132 libList = userdefineDef.getLibSet().get(i).getLibs();\r
133 for (int j = 0; j < libList.length; j++) {\r
134 libSetList.add(libList[j]);\r
135 }\r
136 }\r
137 libSetList.add("-)");\r
138 } else {\r
139 for (int i = 0; i < userdefineDef.getLibSet().size(); i++) {\r
140 libList = userdefineDef.getLibSet().get(i).getLibs();\r
141 for (int j = 0; j < libList.length; j++) {\r
142 libSetList.add(libList[j]);\r
143 }\r
144 }\r
145 }\r
146 }\r
147 /*\r
148 * set includeFileFlag\r
149 */\r
150 if (userdefineDef.getIncludeFile() != null) {\r
151 if (userdefineDef.getIncludeFileFlag() != null) {\r
152 includeFileFlag = userdefineDef.getIncludeFileFlag();\r
153 } else {\r
154 includeFileFlag = UserDefineMapping.getCompellingIncFileFlag(\r
155 vendor, commandType);\r
156 }\r
157 }\r
158 /*\r
159 * set entryPointFlag\r
160 */\r
161 if (userdefineDef.getEntryPointvalue() != null) {\r
162 if (userdefineDef.getEntryPointFlag() != null) {\r
163 entryPointFlag = userdefineDef.getEntryPointFlag();\r
164 } else {\r
165 entryPointFlag = UserDefineMapping.getEntryPointFlag(vendor,\r
166 commandType);\r
167 }\r
168 }\r
169 /*\r
170 * set subSystemFlag\r
171 */\r
172 if (userdefineDef.getSubSystemvalue() != null) {\r
173 if (userdefineDef.getSubSystemFlag() != null) {\r
174 subSystemFlag = userdefineDef.getSubSystemFlag();\r
175 } else {\r
176 subSystemFlag = UserDefineMapping.getSubSystemFlag(vendor,\r
177 commandType);\r
178 }\r
179 }\r
180 /*\r
181 * set mapFlag\r
182 */\r
183 if (userdefineDef.getMapvalue() != null) {\r
184 if (userdefineDef.getMapFlag() != null) {\r
185 mapFlag = userdefineDef.getMapFlag();\r
186 } else {\r
187 mapFlag = UserDefineMapping.getMapFlag(vendor, commandType);\r
188 }\r
189 }\r
190 /*\r
191 * set pdbFlag\r
192 */\r
193 if (userdefineDef.getPdbvalue() != null) {\r
194 if (userdefineDef.getPdbFlag() != null) {\r
195 pdbFlag = userdefineDef.getPdbFlag();\r
196 } else {\r
197 pdbFlag = UserDefineMapping.getPdbFlag(vendor, commandType);\r
198 }\r
199 }\r
200 /*\r
201 * set outputFileFlag\r
202 */\r
203 if (userdefineDef.getOutputFile() != null) {\r
204 if (userdefineDef.getOutPutFlag() != null) {\r
205 outputFileFlag = userdefineDef.getOutPutFlag();\r
206 } else {\r
207 outputFileFlag = UserDefineMapping.getOutputFileFlag(vendor,\r
208 arch, commandType);\r
209 }\r
210 }\r
211\r
212 /*\r
213 * set fileList\r
214 */\r
215 if (userdefineDef.getFileList() != null) {\r
216 fileList = userdefineDef.getFileList();\r
217 }\r
218 }\r
219}\r