]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Conf/BuildMacro.xml
This patch make sure that Pcd Dynamic database generation tool is able to handle...
[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
878ddf1f 652 </sequential>\r
653 </OnDependency>\r
32a47954 654 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
655 <if>\r
656 <equals arg1="@{FILEPATH}" arg2="." />\r
657 <then>\r
658 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
659 </then>\r
660 <else>\r
661 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
662 </else>\r
663 </if>\r
878ddf1f 664 </sequential>\r
665 </macrodef>\r
666\r
a99a79e4 667 <!--\r
668 DUMMY\r
669 -->\r
670 <macrodef name="Build_DUMMY">\r
671 <attribute name="FILEPATH"/>\r
672 <attribute name="FILENAME"/>\r
673 <attribute name="FILEEXT"/>\r
674\r
675 <element name="EXTRA.INC" optional="yes"/>\r
676 <element name="EXTRA.ARG" optional="yes"/>\r
677\r
678 <sequential>\r
19689a07 679 <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
a99a79e4 680 </sequential>\r
681 </macrodef>\r
682\r
878ddf1f 683<!--############################################################################\r
684 Build Sections\r
685#############################################################################-->\r
686 <!--\r
687 DLL\r
688 -->\r
689 <macrodef name="GenDll">\r
690 <attribute name="FILEPATH"/>\r
691 <attribute name="FILENAME"/>\r
692 <attribute name="FILEEXT"/>\r
693\r
694 <element name="LIB.ARG" optional="yes"/>\r
695 <element name="LINK.ARG" optional="yes"/>\r
696\r
697 <sequential>\r
5fc17c92 698 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
699 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 700 <OnDependency>\r
701 <sourcefiles>\r
878ddf1f 702 <file list="${LIBS}"/>\r
32a47954 703 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
878ddf1f 704 </sourcefiles>\r
705 <targetfiles>\r
22e0585c 706 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
878ddf1f 707 </targetfiles>\r
708\r
709 <sequential>\r
8b41e66e 710 <cc userdefine="on">\r
5fc17c92 711 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
712 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">\r
713 <argument value="${SLINK_FLAGS}"/>\r
714\r
32a47954 715 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
8b41e66e 716 </command>\r
717 </cc>\r
878ddf1f 718 <cc userdefine="on">\r
5fc17c92 719 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
720 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
721 <argument value="${DLINK_FLAGS}"/>\r
722 <libset libs="${LIBS}"/>\r
723 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
724 <libset libs="${DLINK_SPATH}" />\r
878ddf1f 725 <LINK.ARG/>\r
878ddf1f 726 </command>\r
727 </cc>\r
728 </sequential>\r
729 </OnDependency>\r
730 </sequential>\r
731 </macrodef>\r
732\r
733 <!--\r
734 EFI\r
735 -->\r
736 <macrodef name="GenEfi">\r
737 <attribute name="FILEPATH"/>\r
738 <attribute name="FILENAME"/>\r
739 <attribute name="FILEEXT" default="dll"/>\r
740\r
741 <sequential>\r
742 <OnDependency>\r
743 <sourcefiles>\r
22e0585c 744 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 745 </sourcefiles>\r
746 <targetfiles>\r
22e0585c 747 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 748 </targetfiles>\r
749\r
750 <sequential>\r
5fc17c92 751 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
22e0585c 752 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
878ddf1f 753 </sequential>\r
754 </OnDependency>\r
755 </sequential>\r
756 </macrodef>\r
757\r
758<!--\r
759 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
760 EFI_SECTION_VERSION\r
761 EFI_SECTION_USER_INTERFACE\r
762 EFI_SECTION_DXE_DEPEX\r
763 EFI_SECTION_PEI_DEPEX\r
764 EFI_SECTION_PE32\r
765 EFI_SECTION_PIC\r
766 EFI_SECTION_TE\r
767 EFI_SECTION_RAW\r
768 EFI_SECTION_COMPRESSION\r
769 EFI_SECTION_GUID_DEFINED\r
770 EFI_SECTION_COMPATIBILITY16\r
771 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
772 -->\r
773 <!--\r
774 EFI_SECTION_PE32\r
775 -->\r
46dde08c
LG
776\r
777 <macrodef name="EFI_SECTION_TE">\r
778 <attribute name="FILEPATH"/>\r
779 <attribute name="FILENAME"/>\r
780 <attribute name="FILEEXT" default="" />\r
781\r
782 <element name="PRE.PROCESS" optional="yes"/>\r
783 <element name="POST.PROCESS" optional="yes"/>\r
784\r
785 <sequential>\r
786 <PRE.PROCESS/>\r
787 <if>\r
788 <not>\r
789 <equals arg1="${LIBS}" arg2=""/>\r
790 </not>\r
791\r
792 <then>\r
793 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
794 <LIB.ARG></LIB.ARG>\r
795 <LINK.ARG></LINK.ARG>\r
796 </GenDll>\r
797\r
798 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
799 </then>\r
800 </if>\r
801\r
802 <OnDependency>\r
803 <sourcefiles>\r
804 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
805 </sourcefiles>\r
806 <targetfiles>\r
807 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
808 </targetfiles>\r
809\r
810 <sequential>\r
811 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
812 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
813 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
46dde08c
LG
814 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
815 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
816 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
817 sectiontype="EFI_SECTION_TE"/>\r
818 <POST.PROCESS/>\r
819 </sequential>\r
820 </OnDependency>\r
821 </sequential>\r
822 </macrodef>\r
823\r
878ddf1f 824 <macrodef name="EFI_SECTION_PE32">\r
825 <attribute name="FILEPATH"/>\r
826 <attribute name="FILENAME"/>\r
827 <attribute name="FILEEXT" default="" />\r
828\r
829 <element name="PRE.PROCESS" optional="yes"/>\r
830 <element name="POST.PROCESS" optional="yes"/>\r
831\r
832 <sequential>\r
833 <PRE.PROCESS/>\r
878ddf1f 834 <if>\r
835 <not>\r
5fc17c92 836 <!-- TBD ${OBJECTS} -->\r
837 <equals arg1="${LIBS}" arg2=""/>\r
878ddf1f 838 </not>\r
839\r
840 <then>\r
841 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
842 <LIB.ARG></LIB.ARG>\r
843 <LINK.ARG></LINK.ARG>\r
844 </GenDll>\r
0fd9e137 845\r
878ddf1f 846 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
847 </then>\r
848 </if>\r
5fc17c92 849 \r
878ddf1f 850 <OnDependency>\r
851 <sourcefiles>\r
22e0585c 852 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 853 </sourcefiles>\r
854 <targetfiles>\r
22e0585c 855 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
878ddf1f 856 </targetfiles>\r
857\r
858 <sequential>\r
22e0585c 859 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
5fc17c92 860 \r
861 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
862 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
878ddf1f 863 sectiontype="EFI_SECTION_PE32"/>\r
5fc17c92 864 \r
878ddf1f 865 <POST.PROCESS/>\r
866 </sequential>\r
867 </OnDependency>\r
5fc17c92 868 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
878ddf1f 869 </sequential>\r
870 </macrodef>\r
871\r
872 <!--\r
873 EFI_SECTION_VERSION\r
874 -->\r
875 <macrodef name="EFI_SECTION_VERSION">\r
876 <attribute name="FILEPATH"/>\r
877 <attribute name="FILENAME"/>\r
878 <attribute name="FILEEXT" default="" />\r
879 <attribute name="VERSION" default="0000"/>\r
880\r
881 <element name="PRE.PROCESS" optional="yes"/>\r
882 <element name="POST.PROCESS" optional="yes"/>\r
883\r
884 <sequential>\r
885 <if>\r
886 <not>\r
22e0585c 887 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
878ddf1f 888 </not>\r
889\r
890 <then>\r
891 <PRE.PROCESS/>\r
5fc17c92 892 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
878ddf1f 893 versionnum="@{VERSION}"\r
894 sectiontype="EFI_SECTION_VERSION"/>\r
895 <POST.PROCESS/>\r
896 </then>\r
897 </if>\r
898 </sequential>\r
899 </macrodef>\r
900\r
901 <!--\r
902 EFI_SECTION_USER_INTERFACE\r
903 -->\r
904 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
905 <attribute name="FILEPATH"/>\r
906 <attribute name="FILENAME"/>\r
907 <attribute name="FILEEXT" default="" />\r
908 <attribute name="UI" default="${BASE_NAME}"/>\r
909\r
910 <element name="PRE.PROCESS" optional="yes"/>\r
911 <element name="POST.PROCESS" optional="yes"/>\r
912\r
913 <sequential>\r
914 <if>\r
915 <not>\r
22e0585c 916 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
878ddf1f 917 </not>\r
918\r
919 <then>\r
920 <PRE.PROCESS/>\r
921 <gensection interfacestring="@{UI}"\r
5fc17c92 922 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
878ddf1f 923 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
924 <POST.PROCESS/>\r
925 </then>\r
926 </if>\r
927 </sequential>\r
928 </macrodef>\r
929\r
878ddf1f 930 <!--\r
931 EFI_SECTION_DXE_DEPEX\r
932 -->\r
933 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
934 <attribute name="FILEPATH"/>\r
935 <attribute name="FILENAME"/>\r
936 <attribute name="FILEEXT" default="dxs"/>\r
937\r
938 <element name="PRE.PROCESS" optional="yes"/>\r
939 <element name="POST.PROCESS" optional="yes"/>\r
940\r
941 <sequential>\r
942 <PRE.PROCESS/>\r
943\r
944 <if>\r
5fc17c92 945 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 946 <then>\r
947 <OnDependency>\r
948 <sourcefiles>\r
5fc17c92 949 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 950 </sourcefiles>\r
951 <targetfiles>\r
22e0585c 952 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 953 </targetfiles>\r
954 <sequential>\r
5fc17c92 955 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
956 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 957 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
958 </sequential>\r
959 </OnDependency>\r
960 </then>\r
961 <else>\r
962 <if>\r
963 <not>\r
22e0585c 964 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 965 </not>\r
966 <then>\r
22e0585c 967 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 968 </then>\r
969 </if>\r
970 </else>\r
971 </if>\r
972\r
973 <POST.PROCESS/>\r
974 </sequential>\r
975 </macrodef>\r
976\r
977 <!--\r
978 EFI_SECTION_PEI_DEPEX\r
979 -->\r
980 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
981 <attribute name="FILEPATH"/>\r
982 <attribute name="FILENAME"/>\r
983 <attribute name="FILEEXT" default="dxs"/>\r
984\r
985 <element name="PRE.PROCESS" optional="yes"/>\r
986 <element name="POST.PROCESS" optional="yes"/>\r
987 <sequential>\r
988 <PRE.PROCESS/>\r
989 <if>\r
5fc17c92 990 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 991 <then>\r
992 <OnDependency>\r
993 <sourcefiles>\r
5fc17c92 994 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 995 </sourcefiles>\r
996 <targetfiles>\r
22e0585c 997 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 998 </targetfiles>\r
999\r
1000 <sequential>\r
5fc17c92 1001 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
1002 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 1003 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
1004 </sequential>\r
1005 </OnDependency>\r
5fc17c92 1006 \r
878ddf1f 1007 </then>\r
1008 <else>\r
1009 <if>\r
1010 <not>\r
22e0585c 1011 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1012 </not>\r
1013 <then>\r
22e0585c 1014 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1015 </then>\r
1016 </if>\r
1017 </else>\r
1018 </if>\r
1019 <POST.PROCESS/>\r
1020 </sequential>\r
1021 </macrodef>\r
1022\r
878ddf1f 1023\r
1024 <!--\r
1025 EFI_SECTION_RAW\r
1026 -->\r
1027 <macrodef name="EFI_SECTION_RAW">\r
1028 <attribute name="FILEPATH"/>\r
1029 <attribute name="FILENAME"/>\r
1030 <attribute name="FILEEXT" default="bin"/>\r
1031\r
1032 <element name="PRE.PROCESS" optional="yes"/>\r
1033 <element name="POST.PROCESS" optional="yes"/>\r
1034\r
1035 <sequential>\r
1036 <OnDependency>\r
1037 <sourcefiles>\r
22e0585c 1038 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1039 </sourcefiles>\r
1040 <targetfiles>\r
22e0585c 1041 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
878ddf1f 1042 </targetfiles>\r
1043\r
1044 <sequential>\r
1045 <PRE.PROCESS/>\r
5fc17c92 1046 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
1047 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
878ddf1f 1048 sectiontype="EFI_SECTION_RAW"/>\r
1049 <POST.PROCESS/>\r
1050 </sequential>\r
1051 </OnDependency>\r
1052 </sequential>\r
1053 </macrodef>\r
1054\r
878ddf1f 1055 <!--\r
1056 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
1057 -->\r
1058 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
1059 <attribute name="FILEPATH"/>\r
1060 <attribute name="FILENAME"/>\r
1061 <attribute name="FILEEXT" default="fv"/>\r
1062\r
1063 <element name="PRE.PROCESS" optional="yes"/>\r
1064 <element name="POST.PROCESS" optional="yes"/>\r
1065\r
1066 <sequential>\r
1067 <OnDependency>\r
1068 <sourcefiles>\r
22e0585c 1069 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1070 </sourcefiles>\r
1071 <targetfiles>\r
22e0585c 1072 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
878ddf1f 1073 </targetfiles>\r
1074\r
1075 <sequential>\r
1076 <PRE.PROCESS/>\r
5fc17c92 1077 \r
1078 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1079 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
878ddf1f 1080 overwrite="true"/>\r
5fc17c92 1081 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1082 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
878ddf1f 1083 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
5fc17c92 1084 \r
878ddf1f 1085 <POST.PROCESS/>\r
1086 </sequential>\r
1087 </OnDependency>\r
1088 </sequential>\r
1089 </macrodef>\r
1090\r
1091 <!--\r
1092 Binary\r
1093 -->\r
1094 <macrodef name="Build_Binary">\r
1095 <attribute name="FILEPATH"/>\r
1096 <attribute name="FILENAME"/>\r
1097 <attribute name="FILEEXT" default="bin"/>\r
1098\r
1099 <element name="EXTRA.INC" optional="yes"/>\r
1100 <element name="EXTRA.ARG" optional="yes"/>\r
1101\r
1102 <sequential>\r
5fc17c92 1103 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1104 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1105 </sequential>\r
1106 </macrodef>\r
1107\r
1108 <!--\r
1109 Graphics (bmp, ...)\r
1110 -->\r
1111 <macrodef name="Build_Graphics">\r
1112 <attribute name="FILEPATH"/>\r
1113 <attribute name="FILENAME"/>\r
1114 <attribute name="FILEEXT" default="bmp"/>\r
1115\r
1116 <element name="EXTRA.INC" optional="yes"/>\r
1117 <element name="EXTRA.ARG" optional="yes"/>\r
1118\r
1119 <sequential>\r
5fc17c92 1120 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1121 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1122 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1123 </sequential>\r
5fc17c92 1124 </macrodef> \r
878ddf1f 1125 <macrodef name="Build_EFI">\r
1126 <attribute name="FILEPATH"/>\r
1127 <attribute name="FILENAME"/>\r
1128 <attribute name="FILEEXT" default="efi"/>\r
1129\r
1130 <element name="EXTRA.INC" optional="yes"/>\r
1131 <element name="EXTRA.ARG" optional="yes"/>\r
1132\r
1133 <sequential>\r
5fc17c92 1134 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1135 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1136 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
878ddf1f 1137 </sequential>\r
1138 </macrodef>\r
1139</project>\r