]>
git.proxmox.com Git - mirror_edk2.git/blob - Tools/Conf/BuildMacro.xml
1 <?xml version=
"1.0" encoding=
"UTF-8"?>
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
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.
12 <project name=
"common">
14 Macro for intialize some properties. This Macro build will be called before source file build.
16 <macrodef name=
"Build_Init">
17 <element name=
"EXTRA.INC" optional=
"yes"/>
18 <element name=
"EXTRA.ARG" optional=
"yes"/>
21 <var name=
"OBJECTS" value=
"" />
22 <var name=
"SDB_FILES" value=
"" />
25 <isset property=
"PCH"/>
28 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
30 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.dep">
31 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
39 <file ListFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
42 <file Name=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
46 <!-- Generate pre-compiled header -->
48 <command type=
"CC" cmd=
"${PCH}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
49 outputFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj">
51 <argument value=
"${PCH_FLAGS}"/>
53 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
58 <equals arg1=
"${CC_FAMILY}" arg2=
"GCC"/>
60 <move file=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj" tofile=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch" overwrite=
"true"/>
63 <var name=
"OBJECTS" value=
"${OBJECTS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
75 macro definitions for building files with different types
80 <macrodef name=
"Build_CCode">
81 <attribute name=
"FILEPATH"/>
82 <attribute name=
"FILENAME"/>
83 <attribute name=
"FILEEXT" default=
"c"/>
85 <element name=
"EXTRA.INC" optional=
"yes"/>
86 <element name=
"EXTRA.ARG" optional=
"yes"/>
89 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
90 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
91 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
94 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
96 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
97 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
98 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
106 <file ListFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
109 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
114 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
115 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${CC_DPATH}">
117 <argument value=
"${CC_FLAGS}"/>
119 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
124 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
126 <equals arg1=
"@{FILEPATH}" arg2=
"." />
128 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
131 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
138 <macrodef name=
"Build_AUTOGEN">
139 <attribute name=
"FILEPATH"/>
140 <attribute name=
"FILENAME"/>
141 <attribute name=
"FILEEXT" default=
"c"/>
143 <element name=
"EXTRA.INC" optional=
"yes"/>
144 <element name=
"EXTRA.ARG" optional=
"yes"/>
147 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
148 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
149 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
152 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
154 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
155 <input file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
156 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
164 <file ListFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
167 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
172 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
173 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${CC_DPATH}">
175 <argument value=
"${CC_FLAGS}"/>
177 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
182 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
184 <equals arg1=
"@{FILEPATH}" arg2=
"." />
186 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
189 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
195 <macrodef name=
"Build_DPX">
196 <attribute name=
"FILEPATH"/>
197 <attribute name=
"FILENAME"/>
198 <attribute name=
"FILEEXT" default=
"dxs"/>
200 <element name=
"EXTRA.INC" optional=
"yes"/>
201 <element name=
"EXTRA.ARG" optional=
"yes"/>
205 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
206 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
207 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
211 <file name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
214 <file name=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
219 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${CC_FAMILY}"
220 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" dpath=
"${CC_DPATH}">
222 <argument value=
"${PP_FLAGS}"/>
223 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
227 <gendepex inputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
233 <macrodef name=
"Build_ASM">
234 <attribute name=
"FILEPATH"/>
235 <attribute name=
"FILENAME"/>
236 <attribute name=
"FILEEXT" default=
"asm"/>
238 <element name=
"EXTRA.INC" optional=
"yes"/>
239 <element name=
"EXTRA.ARG" optional=
"yes"/>
241 <!-- Dispath ASM file, there are three type.
243 S - Build_Gcc_Assembly
244 s - Build_Ipf_Assembly -->
247 <equals arg1=
"@{FILEEXT}" arg2=
"asm" />
249 <Build_Assembly FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
250 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
251 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
255 <equals arg1=
"@{FILEEXT}" arg2=
"S" />
257 <Build_Gcc_Assembly FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
258 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
259 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
260 </Build_Gcc_Assembly>
264 <equals arg1=
"@{FILEEXT}" arg2=
"s" />
266 <Build_IPF_Assembly_Code FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
267 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
268 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
269 </Build_IPF_Assembly_Code>
279 <macrodef name=
"Build_Assembly">
280 <attribute name=
"FILEPATH"/>
281 <attribute name=
"FILENAME"/>
282 <attribute name=
"FILEEXT" default=
"asm"/>
284 <element name=
"EXTRA.INC.1" optional=
"yes"/>
285 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
288 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
289 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
290 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
294 <file Name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
297 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
302 <command type=
"PP" cmd=
"${PP}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${PP_FAMILY}" dpath=
"${PP_DPATH}">
304 <argument value=
"${PP_FLAGS}"/>
305 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
309 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
310 match=
"^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}").+\1"
313 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
317 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
318 match=
"([^_a-zA-Z])0x([0-9a-fA-F]+)"
324 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
325 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${ASM_DPATH}">
328 <argument value=
"${ASM_FLAGS}"/>
331 <fileset casesensitive=
"on" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
336 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
338 <equals arg1=
"@{FILEPATH}" arg2=
"." />
340 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
343 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
350 Build GCC assembly code
352 <macrodef name=
"Build_Gcc_Assembly">
353 <attribute name=
"FILEPATH"/>
354 <attribute name=
"FILENAME"/>
355 <attribute name=
"FILEEXT" default=
"asm"/>
357 <element name=
"EXTRA.INC.1" optional=
"yes"/>
358 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
361 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
362 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
363 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
367 <file Name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
370 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
375 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
376 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${ASM_DPATH}">
379 <argument value=
"${ASM_FLAGS}"/>
382 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
387 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
389 <equals arg1=
"@{FILEPATH}" arg2=
"." />
391 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
394 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
403 <macrodef name=
"Build_IPF_Assembly_Code">
404 <attribute name=
"FILEPATH"/>
405 <attribute name=
"FILENAME"/>
406 <attribute name=
"FILEEXT" default=
"s"/>
408 <element name=
"EXTRA.INC.1" optional=
"yes"/>
409 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
412 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
415 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
417 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
418 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
419 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
427 <file listfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
430 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
435 <command type=
"PP" cmd=
"${PP}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${PP_FAMILY}" dpath=
"${PP_DPATH}">
437 <argument value=
"${PP_FLAGS}"/>
438 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
443 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
444 includepathDelimiter=
"-I" outputDelimiter=
"-o" dpath=
"${ASM_DPATH}"
445 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
447 <argument value=
"${ASM_FLAGS}"/>
449 <fileset casesensitive=
"on" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
454 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
456 <equals arg1=
"@{FILEPATH}" arg2=
"." />
458 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
461 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
468 <macrodef name=
"Build_IPF_PP_Code">
469 <attribute name=
"FILEPATH"/>
470 <attribute name=
"FILENAME"/>
471 <attribute name=
"FILEEXT" default=
"i"/>
473 <element name=
"EXTRA.INC" optional=
"yes"/>
474 <element name=
"EXTRA.ARG" optional=
"yes"/>
477 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
480 <command type=
"ASM" includepathDelimiter=
"-I" dpath=
"${ASM_DPATH}">
481 <includepath path=
"${WORKSPACE_DIR}"/>
482 <includepath path=
"${MODULE_DIR}"/>
483 <includepath path=
"${MODULE_DIR}/${ARCH}"/>
486 <argument value=
"${ASM_FLAGS}"/>
488 <OutputFile File=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
490 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
498 Library private HashMap map = new HashMap();
500 <macrodef name=
"Build_Library">
501 <attribute name=
"FILENAME" />
502 <attribute name=
"FILEEXT" default=
"obj"/>
505 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
506 <var name=
"FILE_PATH" value=
"." />
508 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
510 <var name=
"SLINK_FLAGS" value=
"${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
513 <mkdir dir=
"${BIN_DIR}"/>
517 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}" />
520 <file name=
"${BIN_DIR}/@{FILENAME}.lib"/>
525 <command type=
"SLINK" cmd=
"${SLINK}" family=
"${SLINK_FAMILY}"
526 outputFile=
"${BIN_DIR}/@{FILENAME}.lib" dpath=
"${SLINK_DPATH}">
527 <argument value=
"${SLINK_FLAGS}"/>
529 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}"/>
540 <macrodef name=
"Build_UNI">
541 <attribute name=
"FILEPATH"/>
542 <attribute name=
"FILENAME"/>
543 <attribute name=
"FILEEXT" default=
"uni"/>
545 <element name=
"EXTRA.INC" optional=
"yes"/>
546 <element name=
"EXTRA.ARG" optional=
"yes"/>
549 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
553 <file name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
556 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
560 <strgather commandtype=
"parse" newdatabase=
"true">
561 <database name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
564 <inputfile name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
569 <var name=
"SDB_FILES" value=
"${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
574 .sdb(s) -> .c, .h -> .obj
576 <macrodef name=
"Build_Unicode_Database">
577 <attribute name=
"FILEPATH"/>
578 <attribute name=
"FILENAME"/>
579 <attribute name=
"FILEEXT" default=
"sdb"/>
581 <element name=
"EXTRA.INC" optional=
"yes"/>
582 <element name=
"EXTRA.ARG" optional=
"yes"/>
585 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
586 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
589 <file list=
"${SDB_FILES}"/>
590 <file list=
"${SOURCE_FILES}"/>
593 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
597 <strgather commandtype=
"scan" outputdatabase=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose=
"read">
598 <skipext name=
".uni"/>
600 <database list=
"${SDB_FILES}"/>
601 <inputfile name=
"${SOURCE_FILES}"/>
608 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
611 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>
612 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>
613 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
617 <strgather basename=
"@{FILENAME}Strings" commandtype=
"dump"
618 outputdefines=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"
619 outputhpk=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"
620 outputstring=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">
621 <database name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
628 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
631 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>
636 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
637 includepathDelimiter=
"-I" dpath=
"${CC_DPATH}"
638 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">
639 <argument value=
"${CC_FLAGS}"/>
641 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
647 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
649 <equals arg1=
"@{FILEPATH}" arg2=
"." />
651 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}Strings.obj" />
654 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}Strings.obj" />
663 <macrodef name=
"Build_VFR">
664 <attribute name=
"FILEPATH"/>
665 <attribute name=
"FILENAME"/>
666 <attribute name=
"FILEEXT" default=
"vfr"/>
668 <element name=
"EXTRA.INC" optional=
"yes"/>
669 <element name=
"EXTRA.ARG" optional=
"yes"/>
672 <mkdir dir=
"${DEST_DIR_DEBUG}/@{FILEPATH}"/>
675 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
677 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
678 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
679 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
687 <file listfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
690 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
694 <vfrcompile createIfrBinFile=
"on" createListFile=
"on" outPutDir=
"${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">
699 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}"
700 includepathDelimiter=
"-I" family=
"${CC_FAMILY}" dpath=
"${CC_DPATH}"
701 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >
702 <argument value=
"${CC_FLAGS}"/>
705 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>
710 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
712 <equals arg1=
"@{FILEPATH}" arg2=
"." />
714 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
717 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
726 <macrodef name=
"Build_DUMMY">
727 <attribute name=
"FILEPATH"/>
728 <attribute name=
"FILENAME"/>
729 <attribute name=
"FILEEXT"/>
731 <element name=
"EXTRA.INC" optional=
"yes"/>
732 <element name=
"EXTRA.ARG" optional=
"yes"/>
735 <echo message=
"Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level=
"info" />
739 <!--############################################################################
741 #############################################################################-->
745 <macrodef name=
"GenDll">
746 <attribute name=
"FILEPATH"/>
747 <attribute name=
"FILENAME"/>
748 <attribute name=
"FILEEXT"/>
750 <element name=
"LIB.ARG" optional=
"yes"/>
751 <element name=
"LINK.ARG" optional=
"yes"/>
754 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
755 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
757 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
759 <var name=
"SLINK_FLAGS" value=
"${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
764 <file list=
"${LIBS}"/>
765 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}" />
768 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>
773 <command type=
"SLINK" cmd=
"${SLINK}" family=
"${SLINK_FAMILY}" dpath=
"${SLINK_DPATH}"
774 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">
775 <argument value=
"${SLINK_FLAGS}"/>
777 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}"/>
781 <command type=
"DLINK" cmd=
"${DLINK}" family=
"${DLINK_FAMILY}"
782 outputFile=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" dpath=
"${DLINK_DPATH}" >
783 <argument value=
"${DLINK_FLAGS}"/>
784 <libset libs=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>
796 <macrodef name=
"GenEfi">
797 <attribute name=
"FILEPATH"/>
798 <attribute name=
"FILENAME"/>
799 <attribute name=
"FILEEXT" default=
"dll"/>
804 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
807 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
811 <fwimage componentType=
"${MODULE_TYPE}" outImage=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
812 peImage=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time=
"0"/>
819 EFI_SECTION_FREEFORM_SUBTYPE_GUID
821 EFI_SECTION_USER_INTERFACE
822 EFI_SECTION_DXE_DEPEX
823 EFI_SECTION_PEI_DEPEX
828 EFI_SECTION_COMPRESSION
829 EFI_SECTION_GUID_DEFINED
830 EFI_SECTION_COMPATIBILITY16
831 EFI_SECTION_FIRMWARE_VOLUME_IMAGE
837 <macrodef name=
"EFI_SECTION_TE">
838 <attribute name=
"FILEPATH"/>
839 <attribute name=
"FILENAME"/>
840 <attribute name=
"FILEEXT" default=
"" />
842 <element name=
"PRE.PROCESS" optional=
"yes"/>
843 <element name=
"POST.PROCESS" optional=
"yes"/>
849 <equals arg1=
"${LIBS}" arg2=
""/>
853 <GenDll FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"">
855 <LINK.ARG
></LINK.ARG
>
858 <GenEfi FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"dll"/>
864 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
867 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>
871 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${BIN_DIR}/@{FILENAME}.efi" />
872 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${DEST_DIR_DEBUG}/@{FILENAME}.efi" />
873 <genteimage Dump=
"false" Verbose=
"false" OutputDir=
"" OutputFile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
874 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.te"
875 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.tes"
876 sectiontype=
"EFI_SECTION_TE"/>
883 <macrodef name=
"EFI_SECTION_PE32">
884 <attribute name=
"FILEPATH"/>
885 <attribute name=
"FILENAME"/>
886 <attribute name=
"FILEEXT" default=
"" />
888 <element name=
"PRE.PROCESS" optional=
"yes"/>
889 <element name=
"POST.PROCESS" optional=
"yes"/>
895 <!-- TBD ${OBJECTS} -->
896 <equals arg1=
"${LIBS}" arg2=
""/>
900 <GenDll FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"">
902 <LINK.ARG
></LINK.ARG
>
905 <GenEfi FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"dll"/>
911 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
914 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>
918 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${BIN_DIR}/@{FILENAME}.efi" />
919 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${DEST_DIR_DEBUG}/@{FILENAME}.efi" />
920 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
921 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"
922 sectiontype=
"EFI_SECTION_PE32"/>
933 <macrodef name=
"EFI_SECTION_VERSION">
934 <attribute name=
"FILEPATH"/>
935 <attribute name=
"FILENAME"/>
936 <attribute name=
"FILEEXT" default=
"" />
937 <attribute name=
"VERSION" default=
"0000"/>
939 <element name=
"PRE.PROCESS" optional=
"yes"/>
940 <element name=
"POST.PROCESS" optional=
"yes"/>
945 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>
950 <gensection outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"
951 versionnum=
"@{VERSION}"
952 sectiontype=
"EFI_SECTION_VERSION"/>
960 EFI_SECTION_USER_INTERFACE
962 <macrodef name=
"EFI_SECTION_USER_INTERFACE">
963 <attribute name=
"FILEPATH"/>
964 <attribute name=
"FILENAME"/>
965 <attribute name=
"FILEEXT" default=
"" />
966 <attribute name=
"UI" default=
"${BASE_NAME}"/>
968 <element name=
"PRE.PROCESS" optional=
"yes"/>
969 <element name=
"POST.PROCESS" optional=
"yes"/>
974 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>
979 <gensection interfacestring=
"@{UI}"
980 outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"
981 sectiontype=
"EFI_SECTION_USER_INTERFACE"/>
989 EFI_SECTION_DXE_DEPEX
991 <macrodef name=
"EFI_SECTION_DXE_DEPEX">
992 <attribute name=
"FILEPATH"/>
993 <attribute name=
"FILENAME"/>
994 <attribute name=
"FILEEXT" default=
"dxs"/>
996 <element name=
"PRE.PROCESS" optional=
"yes"/>
997 <element name=
"POST.PROCESS" optional=
"yes"/>
1003 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1007 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1010 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1013 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
1014 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
1015 sectiontype=
"EFI_SECTION_DXE_DEPEX"/>
1022 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1025 <touch file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1036 EFI_SECTION_PEI_DEPEX
1038 <macrodef name=
"EFI_SECTION_PEI_DEPEX">
1039 <attribute name=
"FILEPATH"/>
1040 <attribute name=
"FILENAME"/>
1041 <attribute name=
"FILEEXT" default=
"dxs"/>
1043 <element name=
"PRE.PROCESS" optional=
"yes"/>
1044 <element name=
"POST.PROCESS" optional=
"yes"/>
1048 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1052 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1055 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1059 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
1060 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
1061 sectiontype=
"EFI_SECTION_PEI_DEPEX"/>
1069 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1072 <touch file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1085 <macrodef name=
"EFI_SECTION_RAW">
1086 <attribute name=
"FILEPATH"/>
1087 <attribute name=
"FILENAME"/>
1088 <attribute name=
"FILEEXT" default=
"bin"/>
1090 <element name=
"PRE.PROCESS" optional=
"yes"/>
1091 <element name=
"POST.PROCESS" optional=
"yes"/>
1096 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>
1099 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
1104 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"
1105 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.sec"
1106 sectiontype=
"EFI_SECTION_RAW"/>
1114 EFI_SECTION_FIRMWARE_VOLUME_IMAGE
1116 <macrodef name=
"EFI_SECTION_FIRMWARE_VOLUME_IMAGE">
1117 <attribute name=
"FILEPATH"/>
1118 <attribute name=
"FILENAME"/>
1119 <attribute name=
"FILEEXT" default=
"fv"/>
1121 <element name=
"PRE.PROCESS" optional=
"yes"/>
1122 <element name=
"POST.PROCESS" optional=
"yes"/>
1127 <file name=
"${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
1130 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>
1136 <copy file=
"${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1137 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1139 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1140 outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"
1141 sectiontype=
"EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
1152 <macrodef name=
"Build_Binary">
1153 <attribute name=
"FILEPATH"/>
1154 <attribute name=
"FILENAME"/>
1155 <attribute name=
"FILEEXT" default=
"bin"/>
1157 <element name=
"EXTRA.INC" optional=
"yes"/>
1158 <element name=
"EXTRA.ARG" optional=
"yes"/>
1161 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1162 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
1168 <macrodef name=
"Build_MICROCODE">
1169 <attribute name=
"FILEPATH"/>
1170 <attribute name=
"FILENAME"/>
1171 <attribute name=
"FILEEXT" default=
"TXT"/>
1173 <element name=
"EXTRA.INC" optional=
"yes"/>
1174 <element name=
"EXTRA.ARG" optional=
"yes"/>
1177 <mkdir dir=
"${TARGET_DIR}/Microcode"/>
1178 <flashmap MCIFile=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" MCOFILE=
"${TARGET_DIR}/Microcode/@{FILENAME}.bin"/>
1185 <macrodef name=
"Build_Graphics">
1186 <attribute name=
"FILEPATH"/>
1187 <attribute name=
"FILENAME"/>
1188 <attribute name=
"FILEEXT" default=
"bmp"/>
1190 <element name=
"EXTRA.INC" optional=
"yes"/>
1191 <element name=
"EXTRA.ARG" optional=
"yes"/>
1194 <mkdir dir=
"${MODULE_DIR}/@{FILEPATH}" />
1195 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1196 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
1199 <macrodef name=
"Build_EFI">
1200 <attribute name=
"FILEPATH"/>
1201 <attribute name=
"FILENAME"/>
1202 <attribute name=
"FILEEXT" default=
"efi"/>
1204 <element name=
"EXTRA.INC" optional=
"yes"/>
1205 <element name=
"EXTRA.ARG" optional=
"yes"/>
1208 <mkdir dir=
"${MODULE_DIR}/@{FILEPATH}" />
1209 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1210 tofile=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>