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