]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Conf/BuildMacro.xml
modify critic
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
CommitLineData
878ddf1f 1<?xml version="1.0" encoding="UTF-8"?>\r
2<!--\r
3Copyright (c) 2006, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11-->\r
12<project name="common">\r
88f858a1 13 <!--\r
14 Macro for intialize some properties. This Macro build will be called before source file build. \r
15 -->\r
16 <macrodef name="Build_Init">\r
17 <sequential>\r
18 <var name="OBJECTS" value="" />\r
19 <var name="SDB_FILES" value="" />\r
20 </sequential>\r
21 </macrodef>\r
22\r
23\r
878ddf1f 24 <!--\r
25 macro definitions for building files with different types\r
26 -->\r
27 <!--\r
28 C Code\r
29 -->\r
5fc17c92 30 <macrodef name="Build_CCode">\r
878ddf1f 31 <attribute name="FILEPATH"/>\r
32 <attribute name="FILENAME"/>\r
33 <attribute name="FILEEXT" default="c"/>\r
5fc17c92 34 \r
878ddf1f 35 <element name="EXTRA.INC" optional="yes"/>\r
36 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 37 \r
878ddf1f 38 <sequential>\r
5fc17c92 39 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
40 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 41 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 42\r
43 <if>\r
22e0585c 44 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 45 <then>\r
22e0585c 46 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
47 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
48 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
878ddf1f 49 <EXTRA.INC/>\r
50 </makedeps>\r
51 </then>\r
52 </if>\r
53\r
54 <OnDependency>\r
55 <sourcefiles>\r
22e0585c 56 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 57 </sourcefiles>\r
58 <targetfiles>\r
22e0585c 59 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 60 </targetfiles>\r
61\r
62 <sequential>\r
63 <cc userdefine="on">\r
5fc17c92 64 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
65 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
878ddf1f 66 <EXTRA.INC/>\r
878ddf1f 67 <argument value="${CC_FLAGS}"/>\r
68 <EXTRA.ARG/>\r
3fc9d866 69 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 70 </command>\r
71 </cc>\r
72 </sequential>\r
73 </OnDependency>\r
32a47954 74 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
75 <if>\r
76 <equals arg1="@{FILEPATH}" arg2="." />\r
77 <then>\r
78 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
79 </then>\r
80 <else>\r
81 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
82 </else>\r
83 </if>\r
878ddf1f 84 </sequential>\r
85 </macrodef>\r
86\r
87\r
88 <macrodef name="Build_AUTOGEN">\r
89 <attribute name="FILEPATH"/>\r
90 <attribute name="FILENAME"/>\r
91 <attribute name="FILEEXT" default="c"/>\r
92\r
93 <element name="EXTRA.INC" optional="yes"/>\r
94 <element name="EXTRA.ARG" optional="yes"/>\r
95\r
96 <sequential>\r
5fc17c92 97 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
98 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 99 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 100\r
101 <if>\r
22e0585c 102 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 103 <then>\r
22e0585c 104 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
105 <input file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
106 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
878ddf1f 107 <EXTRA.INC/>\r
108 </makedeps>\r
109 </then>\r
110 </if>\r
111\r
112 <OnDependency>\r
113 <sourcefiles>\r
22e0585c 114 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 115 </sourcefiles>\r
116 <targetfiles>\r
22e0585c 117 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 118 </targetfiles>\r
119\r
120 <sequential>\r
121 <cc userdefine="on">\r
5fc17c92 122 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
123 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
878ddf1f 124 <EXTRA.INC/>\r
878ddf1f 125 <argument value="${CC_FLAGS}"/>\r
126 <EXTRA.ARG/>\r
3fc9d866 127 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 128 </command>\r
129 </cc>\r
130 </sequential>\r
131 </OnDependency>\r
32a47954 132 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
133 <if>\r
134 <equals arg1="@{FILEPATH}" arg2="." />\r
135 <then>\r
136 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
137 </then>\r
138 <else>\r
139 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
140 </else>\r
141 </if>\r
878ddf1f 142 </sequential>\r
143 </macrodef>\r
144\r
5fc17c92 145 <macrodef name="Build_DPX">\r
878ddf1f 146 <attribute name="FILEPATH"/>\r
147 <attribute name="FILENAME"/>\r
148 <attribute name="FILEEXT" default="dxs"/>\r
149\r
150 <element name="EXTRA.INC" optional="yes"/>\r
151 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 152 \r
878ddf1f 153\r
154 <sequential>\r
5fc17c92 155 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
156 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 157 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 158\r
159 <OnDependency>\r
160 <sourcefiles>\r
22e0585c 161 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 162 </sourcefiles>\r
163 <targetfiles>\r
5fc17c92 164 <file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 165 </targetfiles>\r
166\r
167 <sequential>\r
878ddf1f 168 <cc userdefine="on">\r
df569f61 169 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"\r
170 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
878ddf1f 171 <EXTRA.INC/>\r
172 <argument value="${PP_FLAGS}"/>\r
3fc9d866 173 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 174 </command>\r
175 </cc>\r
5fc17c92 176 \r
df569f61 177 <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 178 </sequential>\r
179 </OnDependency>\r
180 </sequential>\r
181 </macrodef>\r
5fc17c92 182 \r
183 <macrodef name="Build_ASM">\r
878ddf1f 184 <attribute name="FILEPATH"/>\r
185 <attribute name="FILENAME"/>\r
186 <attribute name="FILEEXT" default="asm"/>\r
187\r
188 <element name="EXTRA.INC" optional="yes"/>\r
189 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 190 \r
191 <!-- Dispath ASM file, there are three type. \r
df569f61 192 asm - Build_Assembly\r
193 S - Build_Gcc_Assembly\r
194 s - Build_Ipf_Assembly -->\r
878ddf1f 195 <sequential>\r
5fc17c92 196 <if>\r
df569f61 197 <equals arg1="@{FILEEXT}" arg2="asm" />\r
5fc17c92 198 <then>\r
199 <Build_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
200 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
201 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
202 </Build_Assembly>\r
203 </then>\r
df569f61 204 <elseif>\r
205 <equals arg1="@{FILEEXT}" arg2="S" />\r
206 <then>\r
207 <Build_Gcc_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
208 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
209 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
210 </Build_Gcc_Assembly>\r
211 </then>\r
212 </elseif>\r
5fc17c92 213 <elseif>\r
25832ed3 214 <equals arg1="@{FILEEXT}" arg2="s" />\r
5fc17c92 215 <then>\r
216 <Build_IPF_Assembly_Code FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
217 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
218 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
219 </Build_IPF_Assembly_Code>\r
220 </then>\r
221 </elseif>\r
222 </if>\r
878ddf1f 223 </sequential>\r
224 </macrodef>\r
5fc17c92 225 \r
0fd9e137 226 <!--\r
5fc17c92 227 IA32/x64 Assembly\r
0fd9e137 228 -->\r
5fc17c92 229 <macrodef name="Build_Assembly">\r
0fd9e137 230 <attribute name="FILEPATH"/>\r
231 <attribute name="FILENAME"/>\r
232 <attribute name="FILEEXT" default="asm"/>\r
233\r
5fc17c92 234 <element name="EXTRA.INC.1" optional="yes"/>\r
235 <element name="EXTRA.ARG.1" optional="yes"/>\r
0fd9e137 236\r
237 <sequential>\r
5fc17c92 238 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
239 <var name="FILE_PATH" value="@{FILEPATH}" />\r
0fd9e137 240 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
241\r
0fd9e137 242 <OnDependency>\r
243 <sourcefiles>\r
5fc17c92 244 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
0fd9e137 245 </sourcefiles>\r
246 <targetfiles>\r
247 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
248 </targetfiles>\r
249\r
250 <sequential>\r
c44794ef 251 <cc userdefine="on">\r
cfa5a9c5 252 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
c44794ef 253 <EXTRA.INC.1/>\r
254 <argument value="${PP_FLAGS}"/>\r
3fc9d866 255 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
c44794ef 256 </command>\r
257 </cc>\r
258\r
259 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
260 match="^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}&quot;).+\1"\r
261 replace=";"\r
262 flags="gs"/>\r
263 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
264 match="^(#line .*)$"\r
265 replace="; \1"\r
266 byline="true"/>\r
267 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
268 match="([^_a-zA-Z])0x([0-9a-fA-F]+)"\r
269 replace="\10\2h"\r
270 flags="g"\r
271 byline="true"/>\r
0d2001d3 272\r
0fd9e137 273 <cc userdefine="on">\r
5fc17c92 274 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
275 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
276 <EXTRA.INC.1/>\r
277 \r
0fd9e137 278 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 279 <EXTRA.ARG.1/>\r
280 \r
3fc9d866 281 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
75d0c5b1 282 </command>\r
283 </cc>\r
284 </sequential>\r
285 </OnDependency>\r
32a47954 286 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
287 <if>\r
288 <equals arg1="@{FILEPATH}" arg2="." />\r
289 <then>\r
290 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
291 </then>\r
292 <else>\r
293 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
294 </else>\r
295 </if>\r
75d0c5b1 296 </sequential>\r
df569f61 297 </macrodef>\r
298\r
299 <!--\r
300 Build GCC assembly code\r
301 -->\r
302 <macrodef name="Build_Gcc_Assembly">\r
303 <attribute name="FILEPATH"/>\r
304 <attribute name="FILENAME"/>\r
305 <attribute name="FILEEXT" default="asm"/>\r
306\r
307 <element name="EXTRA.INC.1" optional="yes"/>\r
308 <element name="EXTRA.ARG.1" optional="yes"/>\r
309\r
310 <sequential>\r
311 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
312 <var name="FILE_PATH" value="@{FILEPATH}" />\r
313 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
314\r
315 <OnDependency>\r
316 <sourcefiles>\r
317 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
318 </sourcefiles>\r
319 <targetfiles>\r
320 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
321 </targetfiles>\r
322\r
323 <sequential>\r
df569f61 324 <cc userdefine="on">\r
325 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
326 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
327 <EXTRA.INC.1/>\r
328 \r
329 <argument value="${ASM_FLAGS}"/>\r
330 <EXTRA.ARG.1/>\r
331 \r
3fc9d866 332 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
df569f61 333 </command>\r
334 </cc>\r
335 </sequential>\r
336 </OnDependency>\r
32a47954 337 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
338 <if>\r
339 <equals arg1="@{FILEPATH}" arg2="." />\r
340 <then>\r
341 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
342 </then>\r
343 <else>\r
344 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
345 </else>\r
346 </if>\r
df569f61 347 </sequential>\r
75d0c5b1 348 </macrodef>\r
349\r
878ddf1f 350 <!--\r
351 IPF Assembly\r
352 -->\r
353 <macrodef name="Build_IPF_Assembly_Code">\r
354 <attribute name="FILEPATH"/>\r
355 <attribute name="FILENAME"/>\r
356 <attribute name="FILEEXT" default="s"/>\r
357\r
5fc17c92 358 <element name="EXTRA.INC.1" optional="yes"/>\r
359 <element name="EXTRA.ARG.1" optional="yes"/>\r
878ddf1f 360\r
361 <sequential>\r
22e0585c 362 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 363\r
364 <if>\r
22e0585c 365 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 366 <then>\r
22e0585c 367 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
368 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
5fc17c92 369 <EXTRA.INC.1/>\r
878ddf1f 370 </makedeps>\r
371 </then>\r
372 </if>\r
373\r
374 <OnDependency>\r
375 <sourcefiles>\r
22e0585c 376 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 377 </sourcefiles>\r
378 <targetfiles>\r
22e0585c 379 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 380 </targetfiles>\r
381\r
382 <sequential>\r
878ddf1f 383 <cc userdefine="on">\r
cfa5a9c5 384 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
5fc17c92 385 <EXTRA.INC.1/>\r
878ddf1f 386 <argument value="${PP_FLAGS}"/>\r
3fc9d866 387 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 388 </command>\r
389 </cc>\r
5fc17c92 390 \r
878ddf1f 391 <cc userdefine="on">\r
5fc17c92 392 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
393 includepathDelimiter="-I" outputDelimiter="-o"\r
394 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
395 <EXTRA.INC.1/>\r
878ddf1f 396 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 397 <EXTRA.ARG.1/>\r
3fc9d866 398 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
878ddf1f 399 </command>\r
400 </cc>\r
401 </sequential>\r
402 </OnDependency>\r
32a47954 403 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
404 <if>\r
405 <equals arg1="@{FILEPATH}" arg2="." />\r
406 <then>\r
407 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
408 </then>\r
409 <else>\r
410 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
411 </else>\r
412 </if>\r
878ddf1f 413 </sequential>\r
414 </macrodef>\r
415\r
416\r
417 <macrodef name="Build_IPF_PP_Code">\r
418 <attribute name="FILEPATH"/>\r
419 <attribute name="FILENAME"/>\r
420 <attribute name="FILEEXT" default="i"/>\r
421\r
422 <element name="EXTRA.INC" optional="yes"/>\r
423 <element name="EXTRA.ARG" optional="yes"/>\r
424\r
425 <sequential>\r
22e0585c 426 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
5fc17c92 427 \r
878ddf1f 428 <cc userdefine="on">\r
429 <command type="ASM" includepathDelimiter="-I">\r
430 <includepath path="${WORKSPACE_DIR}"/>\r
431 <includepath path="${MODULE_DIR}"/>\r
22e0585c 432 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
878ddf1f 433 <EXTRA.INC/>\r
5fc17c92 434 \r
878ddf1f 435 <argument value="${ASM_FLAGS}"/>\r
436 <EXTRA.ARG/>\r
22e0585c 437 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
5fc17c92 438 \r
3fc9d866 439 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 440 </command>\r
441 </cc>\r
878ddf1f 442 </sequential>\r
443 </macrodef>\r
5fc17c92 444 \r
445 \r
446 <!--\r
447 Library private HashMap map = new HashMap();\r
878ddf1f 448 -->\r
5fc17c92 449 <macrodef name="Build_Library">\r
450 <attribute name="FILENAME" />\r
451 <attribute name="FILEEXT" default="obj"/>\r
452 \r
453 <sequential>\r
454 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
455 <var name="FILE_PATH" value="." />\r
456 <mkdir dir="${BIN_DIR}"/>\r
878ddf1f 457\r
5fc17c92 458 <OnDependency>\r
459 <sourcefiles>\r
32a47954 460 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
5fc17c92 461 </sourcefiles>\r
462 <targetfiles>\r
463 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
464 </targetfiles>\r
878ddf1f 465\r
5fc17c92 466 <sequential>\r
467 <cc userdefine="on">\r
468 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
469 outputFile="${BIN_DIR}/@{FILENAME}.lib">\r
470 <argument value="${SLINK_FLAGS}"/>\r
878ddf1f 471\r
32a47954 472 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
5fc17c92 473 </command>\r
474 </cc>\r
475 </sequential>\r
476 </OnDependency>\r
878ddf1f 477 </sequential>\r
478 </macrodef>\r
479\r
480 <!--\r
481 Unicode -> .sdb\r
482 -->\r
5fc17c92 483 <macrodef name="Build_UNI">\r
878ddf1f 484 <attribute name="FILEPATH"/>\r
485 <attribute name="FILENAME"/>\r
486 <attribute name="FILEEXT" default="uni"/>\r
487\r
488 <element name="EXTRA.INC" optional="yes"/>\r
489 <element name="EXTRA.ARG" optional="yes"/>\r
490\r
491 <sequential>\r
22e0585c 492 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 493\r
494 <OnDependency>\r
495 <sourcefiles>\r
22e0585c 496 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 497 </sourcefiles>\r
498 <targetfiles>\r
22e0585c 499 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 500 </targetfiles>\r
501\r
502 <sequential>\r
503 <strgather commandtype="parse" newdatabase="true">\r
22e0585c 504 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 505 <EXTRA.INC/>\r
506 <EXTRA.ARG/>\r
22e0585c 507 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 508 </strgather>\r
509 </sequential>\r
510 </OnDependency>\r
511\r
5fc17c92 512 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 513 </sequential>\r
514 </macrodef>\r
515\r
516 <!--\r
517 .sdb(s) -> .c, .h -> .obj\r
518 -->\r
519 <macrodef name="Build_Unicode_Database">\r
520 <attribute name="FILEPATH"/>\r
521 <attribute name="FILENAME"/>\r
522 <attribute name="FILEEXT" default="sdb"/>\r
523\r
524 <element name="EXTRA.INC" optional="yes"/>\r
525 <element name="EXTRA.ARG" optional="yes"/>\r
526\r
527 <sequential>\r
5fc17c92 528 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
529 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 530 <OnDependency>\r
531 <sourcefiles>\r
532 <file list="${SDB_FILES}"/>\r
533 <file list="${SOURCE_FILES}"/>\r
534 </sourcefiles>\r
535 <targetfiles>\r
22e0585c 536 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 537 </targetfiles>\r
5fc17c92 538 \r
878ddf1f 539 <sequential>\r
22e0585c 540 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
878ddf1f 541 <skipext name=".uni"/>\r
542 <skipext name=".h"/>\r
543 <database list="${SDB_FILES}"/>\r
544 <inputfile name="${SOURCE_FILES}"/>\r
545 </strgather>\r
546 </sequential>\r
547 </OnDependency>\r
548\r
549 <OnDependency>\r
550 <sourcefiles>\r
22e0585c 551 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 552 </sourcefiles>\r
553 <targetfiles>\r
22e0585c 554 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>\r
555 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>\r
556 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 557 </targetfiles>\r
5fc17c92 558 \r
878ddf1f 559 <sequential>\r
560 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
22e0585c 561 outputdefines="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"\r
562 outputhpk="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"\r
563 outputstring="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">\r
564 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 565 </strgather>\r
566 </sequential>\r
567 </OnDependency>\r
568\r
569 <OnDependency>\r
570 <sourcefiles>\r
22e0585c 571 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 572 </sourcefiles>\r
573 <targetfiles>\r
22e0585c 574 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
878ddf1f 575 </targetfiles>\r
5fc17c92 576 \r
878ddf1f 577 <sequential>\r
578 <cc userdefine="on">\r
5fc17c92 579 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
580 includepathDelimiter="-I"\r
581 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
878ddf1f 582 <argument value="${CC_FLAGS}"/>\r
5fc17c92 583 <EXTRA.INC />\r
3fc9d866 584 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 585 </command>\r
586 </cc>\r
587 </sequential>\r
588 </OnDependency>\r
35a95424 589 <!-- The Module contain Unicode file need those flags -->\r
590 <var name="CC_FLAGS" value="${CC_FLAGS} /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/${BASE_NAME}StrDefs.h" />\r
591 \r
32a47954 592 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
593 <if>\r
594 <equals arg1="@{FILEPATH}" arg2="." />\r
595 <then>\r
596 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}Strings.obj" />\r
597 </then>\r
598 <else>\r
599 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}Strings.obj" />\r
600 </else>\r
601 </if>\r
878ddf1f 602 </sequential>\r
603 </macrodef>\r
604\r
605 <!--\r
606 Vfr\r
607 -->\r
5fc17c92 608 <macrodef name="Build_VFR">\r
878ddf1f 609 <attribute name="FILEPATH"/>\r
610 <attribute name="FILENAME"/>\r
611 <attribute name="FILEEXT" default="vfr"/>\r
612\r
613 <element name="EXTRA.INC" optional="yes"/>\r
614 <element name="EXTRA.ARG" optional="yes"/>\r
615\r
616 <sequential>\r
617 <mkdir dir="${DEST_DIR_DEBUG}/@{FILEPATH}"/>\r
618\r
619 <if>\r
22e0585c 620 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 621 <then>\r
22e0585c 622 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
623 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 624 <EXTRA.INC/>\r
625 </makedeps>\r
626 </then>\r
627 </if>\r
628\r
629 <OnDependency>\r
630 <sourcefiles>\r
22e0585c 631 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 632 </sourcefiles>\r
633 <targetfiles>\r
22e0585c 634 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 635 </targetfiles>\r
636\r
637 <sequential>\r
136adffc 638 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
878ddf1f 639 <EXTRA.INC/>\r
640 </vfrcompile>\r
5fc17c92 641 \r
878ddf1f 642 <cc userdefine="on">\r
5fc17c92 643 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
cfa5a9c5 644 includepathDelimiter="-I" family="${CC_FAMILY}"\r
5fc17c92 645 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
878ddf1f 646 <argument value="${CC_FLAGS}"/>\r
5fc17c92 647 <EXTRA.INC/>\r
878ddf1f 648 <EXTRA.ARG/>\r
3fc9d866 649 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
878ddf1f 650 </command>\r
651 </cc>\r
5fc17c92 652 <delete file="${PLATFORM_DIR}/@{FILENAME}.i" />\r
878ddf1f 653 </sequential>\r
654 </OnDependency>\r
32a47954 655 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
656 <if>\r
657 <equals arg1="@{FILEPATH}" arg2="." />\r
658 <then>\r
659 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
660 </then>\r
661 <else>\r
662 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
663 </else>\r
664 </if>\r
878ddf1f 665 </sequential>\r
666 </macrodef>\r
667\r
a99a79e4 668 <!--\r
669 DUMMY\r
670 -->\r
671 <macrodef name="Build_DUMMY">\r
672 <attribute name="FILEPATH"/>\r
673 <attribute name="FILENAME"/>\r
674 <attribute name="FILEEXT"/>\r
675\r
676 <element name="EXTRA.INC" optional="yes"/>\r
677 <element name="EXTRA.ARG" optional="yes"/>\r
678\r
679 <sequential>\r
19689a07 680 <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
a99a79e4 681 </sequential>\r
682 </macrodef>\r
683\r
878ddf1f 684<!--############################################################################\r
685 Build Sections\r
686#############################################################################-->\r
687 <!--\r
688 DLL\r
689 -->\r
690 <macrodef name="GenDll">\r
691 <attribute name="FILEPATH"/>\r
692 <attribute name="FILENAME"/>\r
693 <attribute name="FILEEXT"/>\r
694\r
695 <element name="LIB.ARG" optional="yes"/>\r
696 <element name="LINK.ARG" optional="yes"/>\r
697\r
698 <sequential>\r
5fc17c92 699 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
700 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 701 <OnDependency>\r
702 <sourcefiles>\r
878ddf1f 703 <file list="${LIBS}"/>\r
32a47954 704 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
878ddf1f 705 </sourcefiles>\r
706 <targetfiles>\r
22e0585c 707 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
878ddf1f 708 </targetfiles>\r
709\r
710 <sequential>\r
8b41e66e 711 <cc userdefine="on">\r
5fc17c92 712 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
713 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">\r
714 <argument value="${SLINK_FLAGS}"/>\r
715\r
32a47954 716 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
8b41e66e 717 </command>\r
718 </cc>\r
878ddf1f 719 <cc userdefine="on">\r
5fc17c92 720 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
721 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
722 <argument value="${DLINK_FLAGS}"/>\r
723 <libset libs="${LIBS}"/>\r
724 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
725 <libset libs="${DLINK_SPATH}" />\r
878ddf1f 726 <LINK.ARG/>\r
878ddf1f 727 </command>\r
728 </cc>\r
729 </sequential>\r
730 </OnDependency>\r
731 </sequential>\r
732 </macrodef>\r
733\r
734 <!--\r
735 EFI\r
736 -->\r
737 <macrodef name="GenEfi">\r
738 <attribute name="FILEPATH"/>\r
739 <attribute name="FILENAME"/>\r
740 <attribute name="FILEEXT" default="dll"/>\r
741\r
742 <sequential>\r
743 <OnDependency>\r
744 <sourcefiles>\r
22e0585c 745 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 746 </sourcefiles>\r
747 <targetfiles>\r
22e0585c 748 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 749 </targetfiles>\r
750\r
751 <sequential>\r
5fc17c92 752 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
22e0585c 753 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
878ddf1f 754 </sequential>\r
755 </OnDependency>\r
756 </sequential>\r
757 </macrodef>\r
758\r
759<!--\r
760 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
761 EFI_SECTION_VERSION\r
762 EFI_SECTION_USER_INTERFACE\r
763 EFI_SECTION_DXE_DEPEX\r
764 EFI_SECTION_PEI_DEPEX\r
765 EFI_SECTION_PE32\r
766 EFI_SECTION_PIC\r
767 EFI_SECTION_TE\r
768 EFI_SECTION_RAW\r
769 EFI_SECTION_COMPRESSION\r
770 EFI_SECTION_GUID_DEFINED\r
771 EFI_SECTION_COMPATIBILITY16\r
772 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
773 -->\r
774 <!--\r
775 EFI_SECTION_PE32\r
776 -->\r
46dde08c
LG
777\r
778 <macrodef name="EFI_SECTION_TE">\r
779 <attribute name="FILEPATH"/>\r
780 <attribute name="FILENAME"/>\r
781 <attribute name="FILEEXT" default="" />\r
782\r
783 <element name="PRE.PROCESS" optional="yes"/>\r
784 <element name="POST.PROCESS" optional="yes"/>\r
785\r
786 <sequential>\r
787 <PRE.PROCESS/>\r
788 <if>\r
789 <not>\r
790 <equals arg1="${LIBS}" arg2=""/>\r
791 </not>\r
792\r
793 <then>\r
794 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
795 <LIB.ARG></LIB.ARG>\r
796 <LINK.ARG></LINK.ARG>\r
797 </GenDll>\r
798\r
799 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
800 </then>\r
801 </if>\r
802\r
803 <OnDependency>\r
804 <sourcefiles>\r
805 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
806 </sourcefiles>\r
807 <targetfiles>\r
808 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
809 </targetfiles>\r
810\r
811 <sequential>\r
812 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
813 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
814 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
46dde08c
LG
815 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
816 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
817 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
818 sectiontype="EFI_SECTION_TE"/>\r
819 <POST.PROCESS/>\r
820 </sequential>\r
821 </OnDependency>\r
822 </sequential>\r
823 </macrodef>\r
824\r
878ddf1f 825 <macrodef name="EFI_SECTION_PE32">\r
826 <attribute name="FILEPATH"/>\r
827 <attribute name="FILENAME"/>\r
828 <attribute name="FILEEXT" default="" />\r
829\r
830 <element name="PRE.PROCESS" optional="yes"/>\r
831 <element name="POST.PROCESS" optional="yes"/>\r
832\r
833 <sequential>\r
834 <PRE.PROCESS/>\r
878ddf1f 835 <if>\r
836 <not>\r
5fc17c92 837 <!-- TBD ${OBJECTS} -->\r
838 <equals arg1="${LIBS}" arg2=""/>\r
878ddf1f 839 </not>\r
840\r
841 <then>\r
842 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
843 <LIB.ARG></LIB.ARG>\r
844 <LINK.ARG></LINK.ARG>\r
845 </GenDll>\r
0fd9e137 846\r
878ddf1f 847 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
848 </then>\r
849 </if>\r
5fc17c92 850 \r
878ddf1f 851 <OnDependency>\r
852 <sourcefiles>\r
22e0585c 853 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 854 </sourcefiles>\r
855 <targetfiles>\r
22e0585c 856 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
878ddf1f 857 </targetfiles>\r
858\r
859 <sequential>\r
22e0585c 860 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
5fc17c92 861 \r
862 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
863 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
878ddf1f 864 sectiontype="EFI_SECTION_PE32"/>\r
5fc17c92 865 \r
878ddf1f 866 <POST.PROCESS/>\r
867 </sequential>\r
868 </OnDependency>\r
5fc17c92 869 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
878ddf1f 870 </sequential>\r
871 </macrodef>\r
872\r
873 <!--\r
874 EFI_SECTION_VERSION\r
875 -->\r
876 <macrodef name="EFI_SECTION_VERSION">\r
877 <attribute name="FILEPATH"/>\r
878 <attribute name="FILENAME"/>\r
879 <attribute name="FILEEXT" default="" />\r
880 <attribute name="VERSION" default="0000"/>\r
881\r
882 <element name="PRE.PROCESS" optional="yes"/>\r
883 <element name="POST.PROCESS" optional="yes"/>\r
884\r
885 <sequential>\r
886 <if>\r
887 <not>\r
22e0585c 888 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
878ddf1f 889 </not>\r
890\r
891 <then>\r
892 <PRE.PROCESS/>\r
5fc17c92 893 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
878ddf1f 894 versionnum="@{VERSION}"\r
895 sectiontype="EFI_SECTION_VERSION"/>\r
896 <POST.PROCESS/>\r
897 </then>\r
898 </if>\r
899 </sequential>\r
900 </macrodef>\r
901\r
902 <!--\r
903 EFI_SECTION_USER_INTERFACE\r
904 -->\r
905 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
906 <attribute name="FILEPATH"/>\r
907 <attribute name="FILENAME"/>\r
908 <attribute name="FILEEXT" default="" />\r
909 <attribute name="UI" default="${BASE_NAME}"/>\r
910\r
911 <element name="PRE.PROCESS" optional="yes"/>\r
912 <element name="POST.PROCESS" optional="yes"/>\r
913\r
914 <sequential>\r
915 <if>\r
916 <not>\r
22e0585c 917 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
878ddf1f 918 </not>\r
919\r
920 <then>\r
921 <PRE.PROCESS/>\r
922 <gensection interfacestring="@{UI}"\r
5fc17c92 923 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
878ddf1f 924 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
925 <POST.PROCESS/>\r
926 </then>\r
927 </if>\r
928 </sequential>\r
929 </macrodef>\r
930\r
878ddf1f 931 <!--\r
932 EFI_SECTION_DXE_DEPEX\r
933 -->\r
934 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
935 <attribute name="FILEPATH"/>\r
936 <attribute name="FILENAME"/>\r
937 <attribute name="FILEEXT" default="dxs"/>\r
938\r
939 <element name="PRE.PROCESS" optional="yes"/>\r
940 <element name="POST.PROCESS" optional="yes"/>\r
941\r
942 <sequential>\r
943 <PRE.PROCESS/>\r
944\r
945 <if>\r
5fc17c92 946 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 947 <then>\r
948 <OnDependency>\r
949 <sourcefiles>\r
5fc17c92 950 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 951 </sourcefiles>\r
952 <targetfiles>\r
22e0585c 953 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 954 </targetfiles>\r
955 <sequential>\r
5fc17c92 956 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
957 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 958 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
959 </sequential>\r
960 </OnDependency>\r
961 </then>\r
962 <else>\r
963 <if>\r
964 <not>\r
22e0585c 965 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 966 </not>\r
967 <then>\r
22e0585c 968 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 969 </then>\r
970 </if>\r
971 </else>\r
972 </if>\r
973\r
974 <POST.PROCESS/>\r
975 </sequential>\r
976 </macrodef>\r
977\r
978 <!--\r
979 EFI_SECTION_PEI_DEPEX\r
980 -->\r
981 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
982 <attribute name="FILEPATH"/>\r
983 <attribute name="FILENAME"/>\r
984 <attribute name="FILEEXT" default="dxs"/>\r
985\r
986 <element name="PRE.PROCESS" optional="yes"/>\r
987 <element name="POST.PROCESS" optional="yes"/>\r
988 <sequential>\r
989 <PRE.PROCESS/>\r
990 <if>\r
5fc17c92 991 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 992 <then>\r
993 <OnDependency>\r
994 <sourcefiles>\r
5fc17c92 995 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 996 </sourcefiles>\r
997 <targetfiles>\r
22e0585c 998 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 999 </targetfiles>\r
1000\r
1001 <sequential>\r
5fc17c92 1002 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
1003 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 1004 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
1005 </sequential>\r
1006 </OnDependency>\r
5fc17c92 1007 \r
878ddf1f 1008 </then>\r
1009 <else>\r
1010 <if>\r
1011 <not>\r
22e0585c 1012 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1013 </not>\r
1014 <then>\r
22e0585c 1015 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1016 </then>\r
1017 </if>\r
1018 </else>\r
1019 </if>\r
1020 <POST.PROCESS/>\r
1021 </sequential>\r
1022 </macrodef>\r
1023\r
878ddf1f 1024\r
1025 <!--\r
1026 EFI_SECTION_RAW\r
1027 -->\r
1028 <macrodef name="EFI_SECTION_RAW">\r
1029 <attribute name="FILEPATH"/>\r
1030 <attribute name="FILENAME"/>\r
1031 <attribute name="FILEEXT" default="bin"/>\r
1032\r
1033 <element name="PRE.PROCESS" optional="yes"/>\r
1034 <element name="POST.PROCESS" optional="yes"/>\r
1035\r
1036 <sequential>\r
1037 <OnDependency>\r
1038 <sourcefiles>\r
22e0585c 1039 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1040 </sourcefiles>\r
1041 <targetfiles>\r
22e0585c 1042 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
878ddf1f 1043 </targetfiles>\r
1044\r
1045 <sequential>\r
1046 <PRE.PROCESS/>\r
5fc17c92 1047 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
1048 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
878ddf1f 1049 sectiontype="EFI_SECTION_RAW"/>\r
1050 <POST.PROCESS/>\r
1051 </sequential>\r
1052 </OnDependency>\r
1053 </sequential>\r
1054 </macrodef>\r
1055\r
878ddf1f 1056 <!--\r
1057 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
1058 -->\r
1059 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
1060 <attribute name="FILEPATH"/>\r
1061 <attribute name="FILENAME"/>\r
1062 <attribute name="FILEEXT" default="fv"/>\r
1063\r
1064 <element name="PRE.PROCESS" optional="yes"/>\r
1065 <element name="POST.PROCESS" optional="yes"/>\r
1066\r
1067 <sequential>\r
1068 <OnDependency>\r
1069 <sourcefiles>\r
22e0585c 1070 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1071 </sourcefiles>\r
1072 <targetfiles>\r
22e0585c 1073 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
878ddf1f 1074 </targetfiles>\r
1075\r
1076 <sequential>\r
1077 <PRE.PROCESS/>\r
5fc17c92 1078 \r
1079 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1080 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
878ddf1f 1081 overwrite="true"/>\r
5fc17c92 1082 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1083 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
878ddf1f 1084 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
5fc17c92 1085 \r
878ddf1f 1086 <POST.PROCESS/>\r
1087 </sequential>\r
1088 </OnDependency>\r
1089 </sequential>\r
1090 </macrodef>\r
1091\r
1092 <!--\r
1093 Binary\r
1094 -->\r
1095 <macrodef name="Build_Binary">\r
1096 <attribute name="FILEPATH"/>\r
1097 <attribute name="FILENAME"/>\r
1098 <attribute name="FILEEXT" default="bin"/>\r
1099\r
1100 <element name="EXTRA.INC" optional="yes"/>\r
1101 <element name="EXTRA.ARG" optional="yes"/>\r
1102\r
1103 <sequential>\r
5fc17c92 1104 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1105 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1106 </sequential>\r
1107 </macrodef>\r
1108\r
1109 <!--\r
1110 Graphics (bmp, ...)\r
1111 -->\r
1112 <macrodef name="Build_Graphics">\r
1113 <attribute name="FILEPATH"/>\r
1114 <attribute name="FILENAME"/>\r
1115 <attribute name="FILEEXT" default="bmp"/>\r
1116\r
1117 <element name="EXTRA.INC" optional="yes"/>\r
1118 <element name="EXTRA.ARG" optional="yes"/>\r
1119\r
1120 <sequential>\r
5fc17c92 1121 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1122 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1123 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1124 </sequential>\r
5fc17c92 1125 </macrodef> \r
878ddf1f 1126 <macrodef name="Build_EFI">\r
1127 <attribute name="FILEPATH"/>\r
1128 <attribute name="FILENAME"/>\r
1129 <attribute name="FILEEXT" default="efi"/>\r
1130\r
1131 <element name="EXTRA.INC" optional="yes"/>\r
1132 <element name="EXTRA.ARG" optional="yes"/>\r
1133\r
1134 <sequential>\r
5fc17c92 1135 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1136 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1137 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
878ddf1f 1138 </sequential>\r
1139 </macrodef>\r
1140</project>\r