]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Conf/BuildMacro.xml
Change Fat binary Guid to EnhancedFat
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
... / ...
CommitLineData
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
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
24 <!--\r
25 macro definitions for building files with different types\r
26 -->\r
27 <!--\r
28 C Code\r
29 -->\r
30 <macrodef name="Build_CCode">\r
31 <attribute name="FILEPATH"/>\r
32 <attribute name="FILENAME"/>\r
33 <attribute name="FILEEXT" default="c"/>\r
34 \r
35 <element name="EXTRA.INC" optional="yes"/>\r
36 <element name="EXTRA.ARG" optional="yes"/>\r
37 \r
38 <sequential>\r
39 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
40 <var name="FILE_PATH" value="@{FILEPATH}" />\r
41 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
42\r
43 <if>\r
44 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
45 <then>\r
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
49 <EXTRA.INC/>\r
50 </makedeps>\r
51 </then>\r
52 </if>\r
53\r
54 <OnDependency>\r
55 <sourcefiles>\r
56 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
57 </sourcefiles>\r
58 <targetfiles>\r
59 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
60 </targetfiles>\r
61\r
62 <sequential>\r
63 <cc userdefine="on">\r
64 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
65 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
66 <EXTRA.INC/>\r
67 <argument value="${CC_FLAGS}"/>\r
68 <EXTRA.ARG/>\r
69 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
70 </command>\r
71 </cc>\r
72 </sequential>\r
73 </OnDependency>\r
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
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
97 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
98 <var name="FILE_PATH" value="@{FILEPATH}" />\r
99 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
100\r
101 <if>\r
102 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
103 <then>\r
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
107 <EXTRA.INC/>\r
108 </makedeps>\r
109 </then>\r
110 </if>\r
111\r
112 <OnDependency>\r
113 <sourcefiles>\r
114 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
115 </sourcefiles>\r
116 <targetfiles>\r
117 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
118 </targetfiles>\r
119\r
120 <sequential>\r
121 <cc userdefine="on">\r
122 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
123 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
124 <EXTRA.INC/>\r
125 <argument value="${CC_FLAGS}"/>\r
126 <EXTRA.ARG/>\r
127 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
128 </command>\r
129 </cc>\r
130 </sequential>\r
131 </OnDependency>\r
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
142 </sequential>\r
143 </macrodef>\r
144\r
145 <macrodef name="Build_DPX">\r
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
152 \r
153\r
154 <sequential>\r
155 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
156 <var name="FILE_PATH" value="@{FILEPATH}" />\r
157 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
158\r
159 <OnDependency>\r
160 <sourcefiles>\r
161 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
162 </sourcefiles>\r
163 <targetfiles>\r
164 <file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
165 </targetfiles>\r
166\r
167 <sequential>\r
168 <cc userdefine="on">\r
169 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"\r
170 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
171 <EXTRA.INC/>\r
172 <argument value="${PP_FLAGS}"/>\r
173 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
174 </command>\r
175 </cc>\r
176 \r
177 <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
178 </sequential>\r
179 </OnDependency>\r
180 </sequential>\r
181 </macrodef>\r
182 \r
183 <macrodef name="Build_ASM">\r
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
190 \r
191 <!-- Dispath ASM file, there are three type. \r
192 asm - Build_Assembly\r
193 S - Build_Gcc_Assembly\r
194 s - Build_Ipf_Assembly -->\r
195 <sequential>\r
196 <if>\r
197 <equals arg1="@{FILEEXT}" arg2="asm" />\r
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
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
213 <elseif>\r
214 <equals arg1="@{FILEEXT}" arg2="s" />\r
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
223 </sequential>\r
224 </macrodef>\r
225 \r
226 <!--\r
227 IA32/x64 Assembly\r
228 -->\r
229 <macrodef name="Build_Assembly">\r
230 <attribute name="FILEPATH"/>\r
231 <attribute name="FILENAME"/>\r
232 <attribute name="FILEEXT" default="asm"/>\r
233\r
234 <element name="EXTRA.INC.1" optional="yes"/>\r
235 <element name="EXTRA.ARG.1" optional="yes"/>\r
236\r
237 <sequential>\r
238 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
239 <var name="FILE_PATH" value="@{FILEPATH}" />\r
240 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
241\r
242 <OnDependency>\r
243 <sourcefiles>\r
244 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
245 </sourcefiles>\r
246 <targetfiles>\r
247 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
248 </targetfiles>\r
249\r
250 <sequential>\r
251 <cc userdefine="on">\r
252 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
253 <EXTRA.INC.1/>\r
254 <argument value="${PP_FLAGS}"/>\r
255 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
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
272\r
273 <cc userdefine="on">\r
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
278 <argument value="${ASM_FLAGS}"/>\r
279 <EXTRA.ARG.1/>\r
280 \r
281 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
282 </command>\r
283 </cc>\r
284 </sequential>\r
285 </OnDependency>\r
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
296 </sequential>\r
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
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
332 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
333 </command>\r
334 </cc>\r
335 </sequential>\r
336 </OnDependency>\r
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
347 </sequential>\r
348 </macrodef>\r
349\r
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
358 <element name="EXTRA.INC.1" optional="yes"/>\r
359 <element name="EXTRA.ARG.1" optional="yes"/>\r
360\r
361 <sequential>\r
362 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
363\r
364 <if>\r
365 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
366 <then>\r
367 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
368 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
369 <EXTRA.INC.1/>\r
370 </makedeps>\r
371 </then>\r
372 </if>\r
373\r
374 <OnDependency>\r
375 <sourcefiles>\r
376 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
377 </sourcefiles>\r
378 <targetfiles>\r
379 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
380 </targetfiles>\r
381\r
382 <sequential>\r
383 <cc userdefine="on">\r
384 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
385 <EXTRA.INC.1/>\r
386 <argument value="${PP_FLAGS}"/>\r
387 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
388 </command>\r
389 </cc>\r
390 \r
391 <cc userdefine="on">\r
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
396 <argument value="${ASM_FLAGS}"/>\r
397 <EXTRA.ARG.1/>\r
398 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
399 </command>\r
400 </cc>\r
401 </sequential>\r
402 </OnDependency>\r
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
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
426 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
427 \r
428 <cc userdefine="on">\r
429 <command type="ASM" includepathDelimiter="-I">\r
430 <includepath path="${WORKSPACE_DIR}"/>\r
431 <includepath path="${MODULE_DIR}"/>\r
432 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
433 <EXTRA.INC/>\r
434 \r
435 <argument value="${ASM_FLAGS}"/>\r
436 <EXTRA.ARG/>\r
437 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
438 \r
439 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
440 </command>\r
441 </cc>\r
442 </sequential>\r
443 </macrodef>\r
444 \r
445 \r
446 <!--\r
447 Library private HashMap map = new HashMap();\r
448 -->\r
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
457\r
458 <OnDependency>\r
459 <sourcefiles>\r
460 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
461 </sourcefiles>\r
462 <targetfiles>\r
463 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
464 </targetfiles>\r
465\r
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
471\r
472 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
473 </command>\r
474 </cc>\r
475 </sequential>\r
476 </OnDependency>\r
477 </sequential>\r
478 </macrodef>\r
479\r
480 <!--\r
481 Unicode -> .sdb\r
482 -->\r
483 <macrodef name="Build_UNI">\r
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
492 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
493\r
494 <OnDependency>\r
495 <sourcefiles>\r
496 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
497 </sourcefiles>\r
498 <targetfiles>\r
499 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
500 </targetfiles>\r
501\r
502 <sequential>\r
503 <strgather commandtype="parse" newdatabase="true">\r
504 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
505 <EXTRA.INC/>\r
506 <EXTRA.ARG/>\r
507 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
508 </strgather>\r
509 </sequential>\r
510 </OnDependency>\r
511\r
512 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
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
528 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
529 <var name="FILE_PATH" value="@{FILEPATH}" />\r
530 <OnDependency>\r
531 <sourcefiles>\r
532 <file list="${SDB_FILES}"/>\r
533 <file list="${SOURCE_FILES}"/>\r
534 </sourcefiles>\r
535 <targetfiles>\r
536 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
537 </targetfiles>\r
538 \r
539 <sequential>\r
540 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
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
551 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
552 </sourcefiles>\r
553 <targetfiles>\r
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
557 </targetfiles>\r
558 \r
559 <sequential>\r
560 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
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
565 </strgather>\r
566 </sequential>\r
567 </OnDependency>\r
568\r
569 <OnDependency>\r
570 <sourcefiles>\r
571 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
572 </sourcefiles>\r
573 <targetfiles>\r
574 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
575 </targetfiles>\r
576 \r
577 <sequential>\r
578 <cc userdefine="on">\r
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
582 <argument value="${CC_FLAGS}"/>\r
583 <EXTRA.INC />\r
584 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
585 </command>\r
586 </cc>\r
587 </sequential>\r
588 </OnDependency>\r
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
599 </sequential>\r
600 </macrodef>\r
601\r
602 <!--\r
603 Vfr\r
604 -->\r
605 <macrodef name="Build_VFR">\r
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
617 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
618 <then>\r
619 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
620 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
621 <EXTRA.INC/>\r
622 </makedeps>\r
623 </then>\r
624 </if>\r
625\r
626 <OnDependency>\r
627 <sourcefiles>\r
628 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
629 </sourcefiles>\r
630 <targetfiles>\r
631 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
632 </targetfiles>\r
633\r
634 <sequential>\r
635 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
636 <EXTRA.INC/>\r
637 </vfrcompile>\r
638 \r
639 <cc userdefine="on">\r
640 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
641 includepathDelimiter="-I" family="${CC_FAMILY}"\r
642 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
643 <argument value="${CC_FLAGS}"/>\r
644 <EXTRA.INC/>\r
645 <EXTRA.ARG/>\r
646 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
647 </command>\r
648 </cc>\r
649 <delete file="${PLATFORM_DIR}/@{FILENAME}.i" />\r
650 </sequential>\r
651 </OnDependency>\r
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
662 </sequential>\r
663 </macrodef>\r
664\r
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
677 <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
678 </sequential>\r
679 </macrodef>\r
680\r
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
696 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
697 <var name="FILE_PATH" value="@{FILEPATH}" />\r
698 <OnDependency>\r
699 <sourcefiles>\r
700 <file list="${LIBS}"/>\r
701 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
702 </sourcefiles>\r
703 <targetfiles>\r
704 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
705 </targetfiles>\r
706\r
707 <sequential>\r
708 <cc userdefine="on">\r
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
713 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
714 </command>\r
715 </cc>\r
716 <cc userdefine="on">\r
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
723 <LINK.ARG/>\r
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
742 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
743 </sourcefiles>\r
744 <targetfiles>\r
745 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
746 </targetfiles>\r
747\r
748 <sequential>\r
749 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
750 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
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
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
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
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
832 <if>\r
833 <not>\r
834 <!-- TBD ${OBJECTS} -->\r
835 <equals arg1="${LIBS}" arg2=""/>\r
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
843\r
844 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
845 </then>\r
846 </if>\r
847 \r
848 <OnDependency>\r
849 <sourcefiles>\r
850 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
851 </sourcefiles>\r
852 <targetfiles>\r
853 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
854 </targetfiles>\r
855\r
856 <sequential>\r
857 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
858 \r
859 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
860 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
861 sectiontype="EFI_SECTION_PE32"/>\r
862 \r
863 <POST.PROCESS/>\r
864 </sequential>\r
865 </OnDependency>\r
866 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
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
885 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
886 </not>\r
887\r
888 <then>\r
889 <PRE.PROCESS/>\r
890 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
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
914 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
915 </not>\r
916\r
917 <then>\r
918 <PRE.PROCESS/>\r
919 <gensection interfacestring="@{UI}"\r
920 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
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
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
943 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
944 <then>\r
945 <OnDependency>\r
946 <sourcefiles>\r
947 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
948 </sourcefiles>\r
949 <targetfiles>\r
950 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
951 </targetfiles>\r
952 <sequential>\r
953 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
954 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
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
962 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
963 </not>\r
964 <then>\r
965 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
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
988 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
989 <then>\r
990 <OnDependency>\r
991 <sourcefiles>\r
992 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
993 </sourcefiles>\r
994 <targetfiles>\r
995 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
996 </targetfiles>\r
997\r
998 <sequential>\r
999 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
1000 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
1001 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
1002 </sequential>\r
1003 </OnDependency>\r
1004 \r
1005 </then>\r
1006 <else>\r
1007 <if>\r
1008 <not>\r
1009 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
1010 </not>\r
1011 <then>\r
1012 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
1013 </then>\r
1014 </if>\r
1015 </else>\r
1016 </if>\r
1017 <POST.PROCESS/>\r
1018 </sequential>\r
1019 </macrodef>\r
1020\r
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
1036 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
1037 </sourcefiles>\r
1038 <targetfiles>\r
1039 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
1040 </targetfiles>\r
1041\r
1042 <sequential>\r
1043 <PRE.PROCESS/>\r
1044 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
1045 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
1046 sectiontype="EFI_SECTION_RAW"/>\r
1047 <POST.PROCESS/>\r
1048 </sequential>\r
1049 </OnDependency>\r
1050 </sequential>\r
1051 </macrodef>\r
1052\r
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
1067 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
1068 </sourcefiles>\r
1069 <targetfiles>\r
1070 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
1071 </targetfiles>\r
1072\r
1073 <sequential>\r
1074 <PRE.PROCESS/>\r
1075 \r
1076 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1077 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1078 overwrite="true"/>\r
1079 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1080 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
1081 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
1082 \r
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
1101 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1102 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
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
1118 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1119 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1120 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
1121 </sequential>\r
1122 </macrodef> \r
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
1132 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1133 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1134 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
1135 </sequential>\r
1136 </macrodef>\r
1137</project>\r