+ <element name="LIB.ARG" optional="yes"/>\r
+ <element name="LINK.ARG" optional="yes"/>\r
+\r
+ <sequential>\r
+ <var name="FILE_BASENAME" value="@{FILENAME}" />\r
+ <var name="FILE_PATH" value="@{FILEPATH}" />\r
+ <OnDependency>\r
+ <sourcefiles>\r
+ <file list="${LIBS}"/>\r
+ <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
+ </sourcefiles>\r
+ <targetfiles>\r
+ <file name="${DEST_DIR_DEBUG}/@{FILENAME}.efi"/>\r
+ </targetfiles>\r
+\r
+ <sequential>\r
+ <!-- Generate a temporary lib file for object files -->\r
+ <cc userdefine="on">\r
+ <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}" dpath="${SLINK_DPATH}"\r
+ outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}Local.lib"\r
+ libpath="${SLINKLIBPATH}" include="${SLINK_INCLUDEPATH}">\r
+ <argument value="${SLINK_FLAGS}"/>\r
+\r
+ <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
+ </command>\r
+ </cc>\r
+\r
+ <!-- Link the temporary lib file with dependent libraries -->\r
+ <cc userdefine="on">\r
+ <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
+ outputFile="${DEST_DIR_DEBUG}/@{FILENAME}.dll" dpath="${DLINK_DPATH}"\r
+ libpath="${DLINK_LIBPATH}" include="${DLINK_INCLUDEPATH}">\r
+ <argument value="${DLINK_FLAGS}"/>\r
+ <libset libs="${DEST_DIR_OUTPUT}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>\r
+ <LINK.ARG/>\r
+ </command>\r
+ </cc>\r
+\r
+ <!-- Convert the dll file to efi file -->\r
+ <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"\r
+ peImage="${DEST_DIR_DEBUG}/@{FILENAME}.dll" time="0"/>\r
+\r
+ <!-- Copy the efi file to BIN and OUTPUT directory -->\r
+ <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
+ <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
+ <if>\r
+ <available file="${DEST_DIR_DEBUG}/@{FILENAME}.map" />\r
+ <then>\r
+ <copy file="${DEST_DIR_DEBUG}/@{FILENAME}.map" tofile="${BIN_DIR}/@{FILENAME}.map" />\r
+ </then>\r
+ </if>\r
+ </sequential>\r
+ </OnDependency>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <!--\r
+ Binary\r
+ -->\r
+ <macrodef name="Build_Binary">\r
+ <attribute name="FILEPATH"/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="bin"/>\r
+\r
+ <element name="EXTRA.INC" optional="yes"/>\r
+ <element name="EXTRA.ARG" optional="yes"/>\r
+\r
+ <sequential>\r
+ <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"\r
+ tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <!--\r
+ Microcode\r
+ -->\r
+ <macrodef name="Build_MICROCODE">\r
+ <attribute name="FILEPATH"/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="TXT"/>\r
+\r
+ <element name="EXTRA.INC" optional="yes"/>\r
+ <element name="EXTRA.ARG" optional="yes"/>\r
+\r
+ <sequential>\r
+ <mkdir dir="${TARGET_DIR}/Microcode"/>\r
+ <flashmap MCIFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" MCOFILE="${TARGET_DIR}/Microcode/@{FILENAME}.bin"/>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <!--\r
+ Graphics (bmp, ...)\r
+ -->\r
+ <macrodef name="Build_BMP">\r
+ <attribute name="FILEPATH"/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="bmp"/>\r
+\r
+ <element name="EXTRA.INC" optional="yes"/>\r
+ <element name="EXTRA.ARG" optional="yes"/>\r
+\r
+ <sequential>\r
+ <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"\r
+ tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <!--\r
+ build EFI file\r
+ -->\r
+ <macrodef name="Build_EFI">\r
+ <attribute name="FILEPATH"/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="efi"/>\r
+\r
+ <element name="EXTRA.INC" optional="yes"/>\r
+ <element name="EXTRA.ARG" optional="yes"/>\r
+\r
+ <sequential>\r
+ <mkdir dir="${MODULE_DIR}/@{FILEPATH}" />\r
+ <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"\r
+ tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
+ </sequential>\r
+ </macrodef>\r
+\r
+ <!--\r
+ Build macro for Apriori\r
+ -->\r
+ <macrodef name="Build_Apriori">\r
+ <attribute name="FILEPATH" default="."/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="apr"/>\r
+ <attribute name="GUID"/>\r
+\r
+ <sequential>\r
+ <mkdir dir="${FV_DIR}/Apriori" />\r
+ <gensection inputfile="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"\r
+ outputfile="${FV_DIR}/Apriori/@{FILENAME}.sec"\r
+ sectiontype="EFI_SECTION_RAW"/>\r
+\r
+ <genffsfile BaseName="@{FILENAME}" ffsATTRIBCHECKSUM="TRUE" ffsFILETYPE="EFI_FV_FILETYPE_FREEFORM"\r
+ fileGuid="@{GUID}" moduleType="BASE" outputDir="${FV_DIR}">\r
+ <sectFile fileName="${FV_DIR}/Apriori/@{FILENAME}.sec"/>\r
+ </genffsfile>\r
+\r
+ </sequential>\r
+ </macrodef>\r
+\r
+<!--############################################################################\r
+ Build Sections\r
+#############################################################################-->\r
+ <!--\r
+ EFI_SECTION_TE\r
+ -->\r
+\r
+ <macrodef name="EFI_SECTION_TE">\r
+ <attribute name="FILEPATH"/>\r
+ <attribute name="FILENAME"/>\r
+ <attribute name="FILEEXT" default="efi" />\r
+\r
+ <element name="PRE.PROCESS" optional="yes"/>\r
+ <element name="POST.PROCESS" optional="yes"/>\r
+\r
+ <sequential>\r