]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Conf/BuildMacro.xml
Let specify GUID value for GUID-defined FV region, and remove potential dead loop...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
index 621ec609cbf8bd5f2c3fd1cb7f974b367939dbe3..0442b05b9d228d3b62e3e961ec674648df291f16 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
+<?xml version="1.0" encoding="UTF-8"?>\r
 <!--\r
 Copyright (c) 2006, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
@@ -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,41 @@ 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
+          <!-- if "TOOLCHIAN FAMILY" is "GCC", it should point the ouput file for preprocess compiler -->         \r
+          <if>\r
+            <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
+            <then>\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="${VFRPP_FLAGS} -o ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
+                  <!-- Output file of the preprocess -->   \r
+                  <EXTRA.INC/>            \r
+                  <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>              \r
+                </command>\r
+              </cc>\r
+            </then>\r
+          </if>\r
+          \r
+          <if>\r
+            <not>\r
+              <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
+            </not>\r
+            <then>\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="${VFRPP_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
+            </then>\r
+          </if>\r
+          \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
@@ -760,7 +795,111 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
       </concat>\r
     </sequential>\r
   </macrodef>\r
-  \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
@@ -773,7 +912,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
@@ -1130,7 +1269,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
@@ -1138,7 +1277,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
@@ -1264,7 +1403,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
@@ -1287,4 +1425,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