]>
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">
18 <var name=
"OBJECTS" value=
"" />
19 <var name=
"SDB_FILES" value=
"" />
25 macro definitions for building files with different types
30 <macrodef name=
"Build_CCode">
31 <attribute name=
"FILEPATH"/>
32 <attribute name=
"FILENAME"/>
33 <attribute name=
"FILEEXT" default=
"c"/>
35 <element name=
"EXTRA.INC" optional=
"yes"/>
36 <element name=
"EXTRA.ARG" optional=
"yes"/>
39 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
40 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
41 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
44 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
46 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
47 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
48 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
56 <file ListFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
59 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
63 <!-- Use pre-compiled header if available -->
66 <equals arg1=
"${CC_FAMILY}" arg2=
"MSFT" casesensitive=
"false"/>
67 <available file=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
70 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
73 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS}"/>
78 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
79 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${CC_DPATH}">
81 <argument value=
"${LOCAL_CC_FLAGS}"/>
83 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
88 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
90 <equals arg1=
"@{FILEPATH}" arg2=
"." />
92 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
95 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
102 <macrodef name=
"Build_AUTOGEN">
103 <attribute name=
"FILEPATH"/>
104 <attribute name=
"FILENAME"/>
105 <attribute name=
"FILEEXT" default=
"c"/>
107 <element name=
"EXTRA.INC" optional=
"yes"/>
108 <element name=
"EXTRA.ARG" optional=
"yes"/>
111 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
112 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
113 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
116 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
118 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.dep">
119 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
127 <file ListFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>
130 <file Name=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
134 <!-- Generate pre-compiled header -->
136 <equals arg1=
"${CC_FAMILY}" arg2=
"MSFT" casesensitive=
"false"/>
138 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS} /TC /Yc /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
140 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
141 outputFile=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj" dpath=
"${CC_DPATH}">
143 <argument value=
"${LOCAL_CC_FLAGS}"/>
145 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
154 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
156 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
157 <input file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
158 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
166 <file ListFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
169 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
173 <!-- Generate pre-compiled header -->
175 <equals arg1=
"${CC_FAMILY}" arg2=
"MSFT" casesensitive=
"false"/>
177 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
180 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS}"/>
185 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
186 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${CC_DPATH}">
188 <argument value=
"${LOCAL_CC_FLAGS}"/>
190 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
195 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
197 <equals arg1=
"@{FILEPATH}" arg2=
"." />
199 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
202 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
208 <macrodef name=
"Build_DPX">
209 <attribute name=
"FILEPATH"/>
210 <attribute name=
"FILENAME"/>
211 <attribute name=
"FILEEXT" default=
"dxs"/>
213 <element name=
"EXTRA.INC" optional=
"yes"/>
214 <element name=
"EXTRA.ARG" optional=
"yes"/>
218 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
219 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
220 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
224 <file name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
227 <file name=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
232 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${CC_FAMILY}"
233 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" dpath=
"${CC_DPATH}">
235 <argument value=
"${PP_FLAGS}"/>
236 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
240 <gendepex inputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
246 <macrodef name=
"Build_ASM">
247 <attribute name=
"FILEPATH"/>
248 <attribute name=
"FILENAME"/>
249 <attribute name=
"FILEEXT" default=
"asm"/>
251 <element name=
"EXTRA.INC" optional=
"yes"/>
252 <element name=
"EXTRA.ARG" optional=
"yes"/>
254 <!-- Dispath ASM file, there are three type.
256 S - Build_Gcc_Assembly
257 s - Build_Ipf_Assembly -->
260 <equals arg1=
"@{FILEEXT}" arg2=
"asm" />
262 <Build_Assembly FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
263 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
264 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
268 <equals arg1=
"@{FILEEXT}" arg2=
"S" />
270 <Build_Gcc_Assembly FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
271 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
272 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
273 </Build_Gcc_Assembly>
277 <equals arg1=
"@{FILEEXT}" arg2=
"s" />
279 <Build_IPF_Assembly_Code FILEPATH=
"@{FILEPATH}" FILENAME=
"@{FILENAME}" FILEEXT=
"@{FILEEXT}">
280 <EXTRA.INC
.1><EXTRA.INC
/></EXTRA.INC
.1>
281 <EXTRA.ARG
.1><EXTRA.ARG
/></EXTRA.ARG
.1>
282 </Build_IPF_Assembly_Code>
292 <macrodef name=
"Build_Assembly">
293 <attribute name=
"FILEPATH"/>
294 <attribute name=
"FILENAME"/>
295 <attribute name=
"FILEEXT" default=
"asm"/>
297 <element name=
"EXTRA.INC.1" optional=
"yes"/>
298 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
301 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
302 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
303 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
307 <file Name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
310 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
315 <command type=
"PP" cmd=
"${PP}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${PP_FAMILY}" dpath=
"${PP_DPATH}">
317 <argument value=
"${PP_FLAGS}"/>
318 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
322 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
323 match=
"^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}").+\1"
326 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
330 <replaceregexp file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
331 match=
"([^_a-zA-Z])0x([0-9a-fA-F]+)"
337 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
338 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${ASM_DPATH}">
341 <argument value=
"${ASM_FLAGS}"/>
344 <fileset casesensitive=
"on" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
349 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
351 <equals arg1=
"@{FILEPATH}" arg2=
"." />
353 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
356 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
363 Build GCC assembly code
365 <macrodef name=
"Build_Gcc_Assembly">
366 <attribute name=
"FILEPATH"/>
367 <attribute name=
"FILENAME"/>
368 <attribute name=
"FILEEXT" default=
"asm"/>
370 <element name=
"EXTRA.INC.1" optional=
"yes"/>
371 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
374 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
375 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
376 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
380 <file Name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
383 <file Name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
388 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
389 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath=
"${ASM_DPATH}">
392 <argument value=
"${ASM_FLAGS}"/>
395 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
400 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
402 <equals arg1=
"@{FILEPATH}" arg2=
"." />
404 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
407 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
416 <macrodef name=
"Build_IPF_Assembly_Code">
417 <attribute name=
"FILEPATH"/>
418 <attribute name=
"FILENAME"/>
419 <attribute name=
"FILEEXT" default=
"s"/>
421 <element name=
"EXTRA.INC.1" optional=
"yes"/>
422 <element name=
"EXTRA.ARG.1" optional=
"yes"/>
425 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
428 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
430 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
431 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
432 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
440 <file listfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
443 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
448 <command type=
"PP" cmd=
"${PP}" workdir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}" family=
"${PP_FAMILY}" dpath=
"${PP_DPATH}">
450 <argument value=
"${PP_FLAGS}"/>
451 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
456 <command type=
"ASM" cmd=
"${ASM}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${ASM_FAMILY}"
457 includepathDelimiter=
"-I" outputDelimiter=
"-o" dpath=
"${ASM_DPATH}"
458 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
460 <argument value=
"${ASM_FLAGS}"/>
462 <fileset casesensitive=
"on" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
467 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
469 <equals arg1=
"@{FILEPATH}" arg2=
"." />
471 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
474 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
481 <macrodef name=
"Build_IPF_PP_Code">
482 <attribute name=
"FILEPATH"/>
483 <attribute name=
"FILENAME"/>
484 <attribute name=
"FILEEXT" default=
"i"/>
486 <element name=
"EXTRA.INC" optional=
"yes"/>
487 <element name=
"EXTRA.ARG" optional=
"yes"/>
490 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
493 <command type=
"ASM" includepathDelimiter=
"-I" dpath=
"${ASM_DPATH}">
494 <includepath path=
"${WORKSPACE_DIR}"/>
495 <includepath path=
"${MODULE_DIR}"/>
496 <includepath path=
"${MODULE_DIR}/${ARCH}"/>
499 <argument value=
"${ASM_FLAGS}"/>
501 <OutputFile File=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
503 <fileset casesensitive=
"on" file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
511 Library private HashMap map = new HashMap();
513 <macrodef name=
"Build_Library">
514 <attribute name=
"FILENAME" />
515 <attribute name=
"FILEEXT" default=
"obj"/>
518 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
519 <var name=
"FILE_PATH" value=
"." />
521 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
523 <var name=
"SLINK_FLAGS" value=
"${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
526 <mkdir dir=
"${BIN_DIR}"/>
530 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}" />
533 <file name=
"${BIN_DIR}/@{FILENAME}.lib"/>
538 <command type=
"SLINK" cmd=
"${SLINK}" family=
"${SLINK_FAMILY}"
539 outputFile=
"${BIN_DIR}/@{FILENAME}.lib" dpath=
"${SLINK_DPATH}">
540 <argument value=
"${SLINK_FLAGS}"/>
542 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}"/>
553 <macrodef name=
"Build_UNI">
554 <attribute name=
"FILEPATH"/>
555 <attribute name=
"FILENAME"/>
556 <attribute name=
"FILEEXT" default=
"uni"/>
558 <element name=
"EXTRA.INC" optional=
"yes"/>
559 <element name=
"EXTRA.ARG" optional=
"yes"/>
562 <mkdir dir=
"${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
566 <file name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
569 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
573 <strgather commandtype=
"parse" newdatabase=
"true">
574 <database name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
577 <inputfile name=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
582 <var name=
"SDB_FILES" value=
"${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
587 .sdb(s) -> .c, .h -> .obj
589 <macrodef name=
"Build_Unicode_Database">
590 <attribute name=
"FILEPATH"/>
591 <attribute name=
"FILENAME"/>
592 <attribute name=
"FILEEXT" default=
"sdb"/>
594 <element name=
"EXTRA.INC" optional=
"yes"/>
595 <element name=
"EXTRA.ARG" optional=
"yes"/>
598 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
599 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
602 <file list=
"${SDB_FILES}"/>
603 <file list=
"${SOURCE_FILES}"/>
606 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
610 <strgather commandtype=
"scan" outputdatabase=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose=
"read">
611 <skipext name=
".uni"/>
613 <database list=
"${SDB_FILES}"/>
614 <inputfile name=
"${SOURCE_FILES}"/>
621 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
624 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>
625 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>
626 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
630 <strgather basename=
"@{FILENAME}Strings" commandtype=
"dump"
631 outputdefines=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"
632 outputhpk=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"
633 outputstring=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">
634 <database name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>
641 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
644 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>
648 <!-- Use pre-compiled header if available -->
651 <equals arg1=
"${CC_FAMILY}" arg2=
"MSFT" casesensitive=
"false"/>
652 <available file=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
655 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS} /Yc${DEST_DIR_DEBUG}/AutoGen.h /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
658 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS}"/>
663 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}" family=
"${CC_FAMILY}"
664 includepathDelimiter=
"-I" dpath=
"${CC_DPATH}"
665 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">
666 <argument value=
"${LOCAL_CC_FLAGS}"/>
668 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>
674 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
676 <equals arg1=
"@{FILEPATH}" arg2=
"." />
678 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}Strings.obj" />
681 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}Strings.obj" />
690 <macrodef name=
"Build_VFR">
691 <attribute name=
"FILEPATH"/>
692 <attribute name=
"FILENAME"/>
693 <attribute name=
"FILEEXT" default=
"vfr"/>
695 <element name=
"EXTRA.INC" optional=
"yes"/>
696 <element name=
"EXTRA.ARG" optional=
"yes"/>
699 <mkdir dir=
"${DEST_DIR_DEBUG}/@{FILEPATH}"/>
702 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
704 <makedeps DepsFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">
705 <input file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
706 <input file=
"${DEST_DIR_DEBUG}/AutoGen.h"/>
714 <file listfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>
717 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
721 <vfrcompile createIfrBinFile=
"on" createListFile=
"on" outPutDir=
"${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">
725 <!-- Use pre-compiled header if available -->
728 <equals arg1=
"${CC_FAMILY}" arg2=
"MSFT" casesensitive=
"false"/>
729 <available file=
"${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
732 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>
735 <var name=
"LOCAL_CC_FLAGS" value=
"${CC_FLAGS}"/>
740 <command type=
"CC" cmd=
"${CC}" workdir=
"${DEST_DIR_OUTPUT}"
741 includepathDelimiter=
"-I" family=
"${CC_FAMILY}" dpath=
"${CC_DPATH}"
742 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >
743 <argument value=
"${LOCAL_CC_FLAGS}"/>
746 <fileset casesensitive=
"on" file=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>
751 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->
753 <equals arg1=
"@{FILEPATH}" arg2=
"." />
755 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILENAME}.obj" />
758 <var name=
"OBJECTS" value=
"${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />
767 <macrodef name=
"Build_DUMMY">
768 <attribute name=
"FILEPATH"/>
769 <attribute name=
"FILENAME"/>
770 <attribute name=
"FILEEXT"/>
772 <element name=
"EXTRA.INC" optional=
"yes"/>
773 <element name=
"EXTRA.ARG" optional=
"yes"/>
776 <echo message=
"Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level=
"info" />
780 <!--############################################################################
782 #############################################################################-->
786 <macrodef name=
"GenDll">
787 <attribute name=
"FILEPATH"/>
788 <attribute name=
"FILENAME"/>
789 <attribute name=
"FILEEXT"/>
791 <element name=
"LIB.ARG" optional=
"yes"/>
792 <element name=
"LINK.ARG" optional=
"yes"/>
795 <var name=
"FILE_BASENAME" value=
"@{FILENAME}" />
796 <var name=
"FILE_PATH" value=
"@{FILEPATH}" />
798 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
800 <var name=
"SLINK_FLAGS" value=
"${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
805 <file list=
"${LIBS}"/>
806 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}" />
809 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>
814 <command type=
"SLINK" cmd=
"${SLINK}" family=
"${SLINK_FAMILY}" dpath=
"${SLINK_DPATH}"
815 outputFile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">
816 <argument value=
"${SLINK_FLAGS}"/>
818 <fileset dir=
"${DEST_DIR_OUTPUT}" includes=
"${OBJECTS}"/>
822 <command type=
"DLINK" cmd=
"${DLINK}" family=
"${DLINK_FAMILY}"
823 outputFile=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" dpath=
"${DLINK_DPATH}" >
824 <argument value=
"${DLINK_FLAGS}"/>
825 <libset libs=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>
837 <macrodef name=
"GenEfi">
838 <attribute name=
"FILEPATH"/>
839 <attribute name=
"FILENAME"/>
840 <attribute name=
"FILEEXT" default=
"dll"/>
845 <file name=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
848 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
852 <fwimage componentType=
"${MODULE_TYPE}" outImage=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
853 peImage=
"${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time=
"0"/>
860 EFI_SECTION_FREEFORM_SUBTYPE_GUID
862 EFI_SECTION_USER_INTERFACE
863 EFI_SECTION_DXE_DEPEX
864 EFI_SECTION_PEI_DEPEX
869 EFI_SECTION_COMPRESSION
870 EFI_SECTION_GUID_DEFINED
871 EFI_SECTION_COMPATIBILITY16
872 EFI_SECTION_FIRMWARE_VOLUME_IMAGE
878 <macrodef name=
"EFI_SECTION_TE">
879 <attribute name=
"FILEPATH"/>
880 <attribute name=
"FILENAME"/>
881 <attribute name=
"FILEEXT" default=
"" />
883 <element name=
"PRE.PROCESS" optional=
"yes"/>
884 <element name=
"POST.PROCESS" optional=
"yes"/>
890 <equals arg1=
"${LIBS}" arg2=
""/>
894 <GenDll FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"">
896 <LINK.ARG
></LINK.ARG
>
899 <GenEfi FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"dll"/>
905 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
908 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>
912 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${BIN_DIR}/@{FILENAME}.efi" />
913 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${DEST_DIR_DEBUG}/@{FILENAME}.efi" />
914 <genteimage Dump=
"false" Verbose=
"false" OutputDir=
"" OutputFile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
915 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.te"
916 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.tes"
917 sectiontype=
"EFI_SECTION_TE"/>
924 <macrodef name=
"EFI_SECTION_PE32">
925 <attribute name=
"FILEPATH"/>
926 <attribute name=
"FILENAME"/>
927 <attribute name=
"FILEEXT" default=
"" />
929 <element name=
"PRE.PROCESS" optional=
"yes"/>
930 <element name=
"POST.PROCESS" optional=
"yes"/>
936 <!-- TBD ${OBJECTS} -->
937 <equals arg1=
"${LIBS}" arg2=
""/>
941 <GenDll FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"">
943 <LINK.ARG
></LINK.ARG
>
946 <GenEfi FILEPATH=
"." FILENAME=
"@{FILENAME}" FILEEXT=
"dll"/>
952 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>
955 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>
959 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${BIN_DIR}/@{FILENAME}.efi" />
960 <copy file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile=
"${DEST_DIR_DEBUG}/@{FILENAME}.efi" />
961 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.efi"
962 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"
963 sectiontype=
"EFI_SECTION_PE32"/>
974 <macrodef name=
"EFI_SECTION_VERSION">
975 <attribute name=
"FILEPATH"/>
976 <attribute name=
"FILENAME"/>
977 <attribute name=
"FILEEXT" default=
"" />
978 <attribute name=
"VERSION" default=
"0000"/>
980 <element name=
"PRE.PROCESS" optional=
"yes"/>
981 <element name=
"POST.PROCESS" optional=
"yes"/>
986 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>
991 <gensection outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"
992 versionnum=
"@{VERSION}"
993 sectiontype=
"EFI_SECTION_VERSION"/>
1001 EFI_SECTION_USER_INTERFACE
1003 <macrodef name=
"EFI_SECTION_USER_INTERFACE">
1004 <attribute name=
"FILEPATH"/>
1005 <attribute name=
"FILENAME"/>
1006 <attribute name=
"FILEEXT" default=
"" />
1007 <attribute name=
"UI" default=
"${BASE_NAME}"/>
1009 <element name=
"PRE.PROCESS" optional=
"yes"/>
1010 <element name=
"POST.PROCESS" optional=
"yes"/>
1015 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>
1020 <gensection interfacestring=
"@{UI}"
1021 outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"
1022 sectiontype=
"EFI_SECTION_USER_INTERFACE"/>
1030 EFI_SECTION_DXE_DEPEX
1032 <macrodef name=
"EFI_SECTION_DXE_DEPEX">
1033 <attribute name=
"FILEPATH"/>
1034 <attribute name=
"FILENAME"/>
1035 <attribute name=
"FILEEXT" default=
"dxs"/>
1037 <element name=
"PRE.PROCESS" optional=
"yes"/>
1038 <element name=
"POST.PROCESS" optional=
"yes"/>
1044 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1048 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1051 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1054 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
1055 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
1056 sectiontype=
"EFI_SECTION_DXE_DEPEX"/>
1063 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1066 <touch file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1077 EFI_SECTION_PEI_DEPEX
1079 <macrodef name=
"EFI_SECTION_PEI_DEPEX">
1080 <attribute name=
"FILEPATH"/>
1081 <attribute name=
"FILENAME"/>
1082 <attribute name=
"FILEEXT" default=
"dxs"/>
1084 <element name=
"PRE.PROCESS" optional=
"yes"/>
1085 <element name=
"POST.PROCESS" optional=
"yes"/>
1089 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1093 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>
1096 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1100 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.depex"
1101 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"
1102 sectiontype=
"EFI_SECTION_PEI_DEPEX"/>
1110 <available type=
"file" file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1113 <touch file=
"${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>
1126 <macrodef name=
"EFI_SECTION_RAW">
1127 <attribute name=
"FILEPATH"/>
1128 <attribute name=
"FILENAME"/>
1129 <attribute name=
"FILEEXT" default=
"bin"/>
1131 <element name=
"PRE.PROCESS" optional=
"yes"/>
1132 <element name=
"POST.PROCESS" optional=
"yes"/>
1137 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>
1140 <file name=
"${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>
1145 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"
1146 outputfile=
"${DEST_DIR_OUTPUT}/@{FILENAME}.sec"
1147 sectiontype=
"EFI_SECTION_RAW"/>
1155 EFI_SECTION_FIRMWARE_VOLUME_IMAGE
1157 <macrodef name=
"EFI_SECTION_FIRMWARE_VOLUME_IMAGE">
1158 <attribute name=
"FILEPATH"/>
1159 <attribute name=
"FILENAME"/>
1160 <attribute name=
"FILEEXT" default=
"fv"/>
1162 <element name=
"PRE.PROCESS" optional=
"yes"/>
1163 <element name=
"POST.PROCESS" optional=
"yes"/>
1168 <file name=
"${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
1171 <file name=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>
1177 <copy file=
"${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1178 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1180 <gensection inputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1181 outputfile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"
1182 sectiontype=
"EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
1193 <macrodef name=
"Build_Binary">
1194 <attribute name=
"FILEPATH"/>
1195 <attribute name=
"FILENAME"/>
1196 <attribute name=
"FILEEXT" default=
"bin"/>
1198 <element name=
"EXTRA.INC" optional=
"yes"/>
1199 <element name=
"EXTRA.ARG" optional=
"yes"/>
1202 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1203 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
1209 <macrodef name=
"Build_MICROCODE">
1210 <attribute name=
"FILEPATH"/>
1211 <attribute name=
"FILENAME"/>
1212 <attribute name=
"FILEEXT" default=
"TXT"/>
1214 <element name=
"EXTRA.INC" optional=
"yes"/>
1215 <element name=
"EXTRA.ARG" optional=
"yes"/>
1218 <mkdir dir=
"${TARGET_DIR}/Microcode"/>
1219 <flashmap MCIFile=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" MCOFILE=
"${TARGET_DIR}/Microcode/@{FILENAME}.bin"/>
1226 <macrodef name=
"Build_Graphics">
1227 <attribute name=
"FILEPATH"/>
1228 <attribute name=
"FILENAME"/>
1229 <attribute name=
"FILEEXT" default=
"bmp"/>
1231 <element name=
"EXTRA.INC" optional=
"yes"/>
1232 <element name=
"EXTRA.ARG" optional=
"yes"/>
1235 <mkdir dir=
"${MODULE_DIR}/@{FILEPATH}" />
1236 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1237 tofile=
"${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>
1240 <macrodef name=
"Build_EFI">
1241 <attribute name=
"FILEPATH"/>
1242 <attribute name=
"FILENAME"/>
1243 <attribute name=
"FILEEXT" default=
"efi"/>
1245 <element name=
"EXTRA.INC" optional=
"yes"/>
1246 <element name=
"EXTRA.ARG" optional=
"yes"/>
1249 <mkdir dir=
"${MODULE_DIR}/@{FILEPATH}" />
1250 <copy file=
"${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"
1251 tofile=
"${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>