]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Conf/BuildMacro.xml
Enhance peirebase tool to get base address from the corresponding fv.inf file, which...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
index 8e7ef7802521c00340b03af15f6db4616918a52e..29edaaf540f0c608ae91fe05e627ec78b7f462a0 100644 (file)
@@ -642,6 +642,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
       <OnDependency>\r
         <sourcefiles>\r
           <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
+          <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
         </sourcefiles>\r
         <targetfiles>\r
           <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
@@ -708,7 +709,17 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
 \r
         <sequential>\r
-          <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
+          <cc userdefine="on">\r
+            <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}" \r
+                dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
+              <argument value="${VFR_FLAGS} ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+              <!-- Output file of the preprocess -->           \r
+              <EXTRA.INC/>\r
+              <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+            </command>\r
+          </cc>\r
+          \r
+          <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
             <EXTRA.INC/>\r
           </vfrcompile>\r
     \r
@@ -738,6 +749,133 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     </sequential>\r
   </macrodef>\r
 \r
+  <!--\r
+      Build the real mode ASM file\r
+    -->\r
+  <macrodef name="Build_RealAsm">\r
+    <attribute name="FILEPATH"/>\r
+    <attribute name="FILENAME"/>\r
+    <attribute name="FILEEXT" default="asm"/>\r
+\r
+    <element name="EXTRA.INC" optional="yes"/>\r
+    <element name="EXTRA.ARG" optional="yes"/>\r
+    \r
+    <sequential>\r
+      <!-- Lack Dependency Check -->\r
+      <exec dir="${DEST_DIR_OUTPUT}" executable="${ASM}" failonerror="true">\r
+        <arg line="/nologo /omf ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT} /Bl${ASMLINK} ${ASMLINK_FLAGS}"/>\r
+      </exec>\r
+      <concat destfile="${DEST_DIR_OUTPUT}/@{FILENAME}.cat" binary="yes">\r
+        <filelist dir="${MODULE_DIR}" files="Blank2.pad"/>\r
+        <filelist dir="${DEST_DIR_OUTPUT}" files="@{FILENAME}.com"/>\r
+      </concat>\r
+    </sequential>\r
+  </macrodef>\r
+\r
+  <!--\r
+      Build Asl table file\r
+    -->\r
+  <macrodef name="Build_ASL">\r
+    <attribute name="FILEPATH"/>\r
+    <attribute name="FILENAME"/>\r
+    <attribute name="FILEEXT" default="asl"/>\r
+\r
+    <element name="EXTRA.INC" optional="yes"/>\r
+    <element name="EXTRA.ARG" optional="yes"/>\r
+    \r
+    <sequential>\r
+      <mkdir dir="${DEST_DIR_OUTPUT}"/>\r
+\r
+      <OnDependency>\r
+        <sourcefiles>\r
+          <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+        </sourcefiles>\r
+        <targetfiles>\r
+          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
+        </targetfiles>\r
+\r
+        <sequential>\r
+          <cc userdefine="on">\r
+            <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}" family="${PP_FAMILY}" \r
+                dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
+              <argument value="${APP_FLAGS}"/>\r
+              <EXTRA.INC/>              \r
+              <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+            </command>\r
+          </cc>\r
+\r
+          <exec dir="${DEST_DIR_OUTPUT}" executable="${ASL}" failonerror="true" outputproperty="ASL_OUTPUT">\r
+            <arg line="${DEST_DIR_OUTPUT}/@{FILENAME}.i"/>\r
+          </exec>\r
+\r
+          <if>\r
+            <or>\r
+              <contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 2.0"/>\r
+              <contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 1.0"/>\r
+            </or>\r
+            <then>\r
+              <fail message="Current Asl tool not support Acpi Spec 3.0. Pls update your Asl compiler."/>\r
+            </then>\r
+          </if>\r
+\r
+          <EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="aml"/>\r
+          \r
+        </sequential>\r
+      </OnDependency>\r
+    </sequential>\r
+  </macrodef>  \r
+\r
+  <!--\r
+      Build Asl table c file\r
+    -->\r
+  <macrodef name="Build_CCASL">\r
+    <attribute name="FILEPATH"/>\r
+    <attribute name="FILENAME"/>\r
+    <attribute name="FILEEXT" default="c"/>\r
+\r
+    <element name="EXTRA.INC" optional="yes"/>\r
+    <element name="EXTRA.ARG" optional="yes"/>\r
+    \r
+    <sequential>\r
+      <mkdir dir="${DEST_DIR_OUTPUT}"/>\r
+\r
+      <OnDependency>\r
+        <sourcefiles>\r
+          <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+        </sourcefiles>\r
+        <targetfiles>\r
+          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
+        </targetfiles>\r
+\r
+        <sequential>\r
+\r
+          <cc userdefine="on">\r
+            <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
+                outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.obj" dpath="${CC_DPATH}" \r
+                libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">\r
+              <EXTRA.INC/>\r
+              <argument value="${CC_FLAGS}"/>\r
+              <EXTRA.ARG/>\r
+              <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+            </command>\r
+          </cc>\r
+\r
+          <cc userdefine="on">\r
+            <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}" \r
+                     outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" dpath="${DLINK_DPATH}" >\r
+              <argument value="${SLINK_FLAGS}"/>\r
+              <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILENAME}.obj"/>\r
+            </command>\r
+          </cc>\r
+          \r
+          <genacpitable inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.acpi" />     \r
+     \r
+          <EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="acpi"/>\r
+        </sequential>\r
+      </OnDependency>\r
+    </sequential>\r
+  </macrodef> \r
+\r
   <!--\r
     DUMMY\r
     -->\r
@@ -750,7 +888,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     <element name="EXTRA.ARG" optional="yes"/>\r
 \r
     <sequential>\r
-      <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level="info" />\r
+      <!--echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level="info" /-->\r
     </sequential>\r
   </macrodef>\r
 \r
@@ -1107,7 +1245,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     <sequential>\r
       <OnDependency>\r
         <sourcefiles>\r
-          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
+          <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
         </sourcefiles>\r
         <targetfiles>\r
           <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
@@ -1115,7 +1253,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
         <sequential>\r
           <PRE.PROCESS/>\r
-          <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
+          <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
                       outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
                       sectiontype="EFI_SECTION_RAW"/>\r
           <POST.PROCESS/>\r
@@ -1124,6 +1262,41 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     </sequential>\r
   </macrodef>\r
 \r
+  <!--\r
+    EFI_SECTION_RAW_SEC\r
+    -->\r
+  <macrodef name="EFI_SECTION_RAW_SEC">\r
+    <attribute name="FILEPATH"/>\r
+    <attribute name="FILENAME"/>\r
+    <attribute name="FILEEXT" default="cat"/>\r
+\r
+    <element name="PRE.PROCESS" optional="yes"/>\r
+    <element name="POST.PROCESS" optional="yes"/>\r
+\r
+    <sequential>\r
+      <OnDependency>\r
+        <sourcefiles>\r
+          <file name="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"/>\r
+          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.te"/>\r
+        </sourcefiles>\r
+        <targetfiles>\r
+          <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
+        </targetfiles>\r
+\r
+        <sequential>\r
+          <PRE.PROCESS/>\r
+          <secfixup secexefile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" resetvectorDatafile="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"\r
+                   outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin"/>\r
+                   \r
+          <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin" \r
+                      outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
+                      sectiontype="EFI_SECTION_RAW"/>\r
+          <POST.PROCESS/>\r
+        </sequential>\r
+      </OnDependency>\r
+    </sequential>\r
+  </macrodef>\r
+  \r
   <!--\r
     EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
     -->\r
@@ -1206,7 +1379,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     <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}/@{FILEPATH}/@{FILENAME}.bin"/>\r
     </sequential>\r
@@ -1229,4 +1401,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         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