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