- Fixed PVCS tracker 484 by merging the GenDll and GenEfi macro in BuildMacro.xml...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
index cf523c5f19552acc34da864b94e132cc439e0cbf..18ccd102f7f8cdd37a9f30473bdb0ca801503a6d 100644 (file)
@@ -974,16 +974,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     </sequential>\r
   </macrodef>\r
 \r
-<!--############################################################################\r
-  Build Sections\r
-#############################################################################-->\r
   <!--\r
-    DLL\r
+    Generate efi file\r
     -->\r
-  <macrodef name="GenDll">\r
+  <macrodef name="GenEfi">\r
     <attribute name="FILEPATH"/>\r
     <attribute name="FILENAME"/>\r
-    <attribute name="FILEEXT"/>\r
+    <attribute name="FILEEXT" default="efi"/>\r
 \r
     <element name="LIB.ARG" optional="yes"/>\r
     <element name="LINK.ARG" optional="yes"/>\r
@@ -997,102 +994,152 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
           <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
         </sourcefiles>\r
         <targetfiles>\r
-          <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\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}/@{FILEPATH}/@{FILENAME}Local.lib"\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}/@{FILEPATH}/@{FILENAME}.dll" dpath="${DLINK_DPATH}" \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}/@{FILEPATH}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>\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
         </sequential>\r
       </OnDependency>\r
     </sequential>\r
   </macrodef>\r
 \r
   <!--\r
-    EFI\r
+    Binary\r
     -->\r
-  <macrodef name="GenEfi">\r
+  <macrodef name="Build_Binary">\r
     <attribute name="FILEPATH"/>\r
     <attribute name="FILENAME"/>\r
-    <attribute name="FILEEXT" default="dll"/>\r
+    <attribute name="FILEEXT" default="bin"/>\r
 \r
-    <sequential>\r
-      <OnDependency>\r
-        <sourcefiles>\r
-          <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
-        </sourcefiles>\r
-        <targetfiles>\r
-          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
-        </targetfiles>\r
+    <element name="EXTRA.INC" optional="yes"/>\r
+    <element name="EXTRA.ARG" optional="yes"/>\r
 \r
-        <sequential>\r
-          <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
-                   peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
-        </sequential>\r
-      </OnDependency>\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
-<!--\r
-  EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
-  EFI_SECTION_VERSION\r
-  EFI_SECTION_USER_INTERFACE\r
-  EFI_SECTION_DXE_DEPEX\r
-  EFI_SECTION_PEI_DEPEX\r
-  EFI_SECTION_PE32\r
-  EFI_SECTION_PIC\r
-  EFI_SECTION_TE\r
-  EFI_SECTION_RAW\r
-  EFI_SECTION_COMPRESSION\r
-  EFI_SECTION_GUID_DEFINED\r
-  EFI_SECTION_COMPATIBILITY16\r
-  EFI_SECTION_FIRMWARE_VOLUME_IMAGE\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_PE32\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="" />\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
-      <PRE.PROCESS/>\r
-      <if>\r
-        <not>\r
-          <equals arg1="${LIBS}" arg2=""/>\r
-        </not>\r
-\r
-        <then>\r
-          <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
-            <LIB.ARG></LIB.ARG>\r
-            <LINK.ARG></LINK.ARG>\r
-          </GenDll>\r
-\r
-          <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
-        </then>\r
-      </if>\r
-\r
       <OnDependency>\r
         <sourcefiles>\r
           <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
@@ -1102,44 +1149,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
 \r
         <sequential>\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
+          <PRE.PROCESS/>\r
+\r
           <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
           <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
                       outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
                       sectiontype="EFI_SECTION_TE"/>\r
+\r
           <POST.PROCESS/>\r
         </sequential>\r
       </OnDependency>\r
     </sequential>\r
   </macrodef>\r
 \r
+  <!--\r
+    EFI_SECTION_PE32\r
+    -->\r
   <macrodef name="EFI_SECTION_PE32">\r
     <attribute name="FILEPATH"/>\r
     <attribute name="FILENAME"/>\r
-    <attribute name="FILEEXT" default="/>\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
-      <PRE.PROCESS/>\r
-      <if>\r
-        <not>\r
-          <!-- TBD ${OBJECTS} -->\r
-          <equals arg1="${LIBS}" arg2=""/>\r
-        </not>\r
-\r
-        <then>\r
-          <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
-            <LIB.ARG></LIB.ARG>\r
-            <LINK.ARG></LINK.ARG>\r
-          </GenDll>\r
-\r
-          <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
-        </then>\r
-      </if>\r
-      \r
       <OnDependency>\r
         <sourcefiles>\r
           <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
@@ -1149,8 +1183,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
 \r
         <sequential>\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
+          <PRE.PROCESS/>\r
+\r
           <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
                       outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
                       sectiontype="EFI_SECTION_PE32"/>\r
@@ -1415,95 +1449,4 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     </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
 </project>\r