]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Conf/BuildMacro.xml
Added DllPath for VfrCompile
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
index e19540891822c0ca19e1e23bdb3c87f7e66fd988..5b0d2a491848af762ec7091178c65e6f8d4f3ab9 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
@@ -60,11 +60,25 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
 \r
         <sequential>\r
+          <!-- Use pre-compiled header if available -->\r
+          <if>\r
+            <and>\r
+              <equals arg1="${CC_FAMILY}" arg2="MSFT" casesensitive="false"/>\r
+              <available file="${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </and>\r
+            <then>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </then>\r
+            <else>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS}"/>\r
+            </else>\r
+          </if>\r
+\r
           <cc userdefine="on">\r
             <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
               outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
               <EXTRA.INC/>\r
-              <argument value="${CC_FLAGS}"/>\r
+              <argument value="${LOCAL_CC_FLAGS}"/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
             </command>\r
@@ -98,6 +112,44 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
       <var name="FILE_PATH" value="@{FILEPATH}" />\r
       <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
 \r
+      <if>\r
+        <available type="file" file="${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+        <then>\r
+          <makedeps DepsFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep">\r
+            <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
+            <EXTRA.INC/>\r
+          </makedeps>\r
+        </then>\r
+      </if>\r
+\r
+      <OnDependency>\r
+        <sourcefiles>\r
+          <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
+        </sourcefiles>\r
+        <targetfiles>\r
+          <file Name="${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+        </targetfiles>\r
+\r
+        <sequential>\r
+          <!-- Generate pre-compiled header -->\r
+          <if>\r
+            <equals arg1="${CC_FAMILY}" arg2="MSFT" casesensitive="false"/>\r
+            <then>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS} /TC /Yc /Fp${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+              <cc userdefine="on">\r
+                <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
+                    outputFile="${DEST_DIR_OUTPUT}/AutoGen.h.obj">\r
+                  <EXTRA.INC/>\r
+                  <argument value="${LOCAL_CC_FLAGS}"/>\r
+                  <EXTRA.ARG/>\r
+                  <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
+                </command>\r
+              </cc>\r
+            </then>\r
+          </if>\r
+        </sequential>\r
+      </OnDependency>\r
+\r
       <if>\r
         <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
         <then>\r
@@ -118,11 +170,22 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
 \r
         <sequential>\r
+          <!-- Generate pre-compiled header -->\r
+          <if>\r
+            <equals arg1="${CC_FAMILY}" arg2="MSFT" casesensitive="false"/>\r
+            <then>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </then>\r
+            <else>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS}"/>\r
+            </else>\r
+          </if>\r
+\r
           <cc userdefine="on">\r
             <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
                 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
               <EXTRA.INC/>\r
-              <argument value="${CC_FLAGS}"/>\r
+              <argument value="${LOCAL_CC_FLAGS}"/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
             </command>\r
@@ -366,6 +429,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         <then>\r
           <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
             <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+            <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
             <EXTRA.INC.1/>\r
           </makedeps>\r
         </then>\r
@@ -575,11 +639,25 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         </targetfiles>\r
         \r
         <sequential>\r
+          <!-- Use pre-compiled header if available -->\r
+          <if>\r
+            <and>\r
+              <equals arg1="${CC_FAMILY}" arg2="MSFT" casesensitive="false"/>\r
+              <available file="${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </and>\r
+            <then>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS} /Yc${DEST_DIR_DEBUG}/AutoGen.h /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </then>\r
+            <else>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS}"/>\r
+            </else>\r
+          </if>\r
+\r
           <cc userdefine="on">\r
             <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
                      includepathDelimiter="-I"\r
                      outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
-              <argument value="${CC_FLAGS}"/>\r
+              <argument value="${LOCAL_CC_FLAGS}"/>\r
               <EXTRA.INC />\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
             </command>\r
@@ -619,6 +697,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         <then>\r
           <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
             <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
+            <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
             <EXTRA.INC/>\r
           </makedeps>\r
         </then>\r
@@ -633,15 +712,29 @@ 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
+          <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" DllPath="${DPATH}">\r
             <EXTRA.INC/>\r
           </vfrcompile>\r
     \r
+          <!-- Use pre-compiled header if available -->\r
+          <if>\r
+            <and>\r
+              <equals arg1="${CC_FAMILY}" arg2="MSFT" casesensitive="false"/>\r
+              <available file="${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </and>\r
+            <then>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS} /Yu${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_DEBUG}/AutoGen.h.gch"/>\r
+            </then>\r
+            <else>\r
+              <var name="LOCAL_CC_FLAGS" value="${CC_FLAGS}"/>\r
+            </else>\r
+          </if>\r
+\r
           <cc userdefine="on">\r
             <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
                      includepathDelimiter="-I" family="${CC_FAMILY}"\r
                      outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
-              <argument value="${CC_FLAGS}"/>\r
+              <argument value="${LOCAL_CC_FLAGS}"/>\r
               <EXTRA.INC/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
@@ -674,7 +767,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}"/>\r
+      <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level="info" />\r
     </sequential>\r
   </macrodef>\r
 \r
@@ -717,9 +810,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
             <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
                      outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
               <argument value="${DLINK_FLAGS}"/>\r
-              <libset libs="${LIBS}"/>\r
-              <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
-              <libset libs="${DLINK_SPATH}" />\r
+              <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>\r
               <LINK.ARG/>\r
             </command>\r
           </cc>\r
@@ -809,7 +900,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
           <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
           <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
-          <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
           <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
                       outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
                       sectiontype="EFI_SECTION_TE"/>\r
@@ -855,7 +945,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
         <sequential>\r
           <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
-          \r
+          <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
           <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
                       outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
                       sectiontype="EFI_SECTION_PE32"/>\r
@@ -863,7 +953,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
           <POST.PROCESS/>\r
         </sequential>\r
       </OnDependency>\r
-      <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
     </sequential>\r
   </macrodef>\r
 \r
@@ -1102,13 +1191,29 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
             tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
     </sequential>\r
   </macrodef>\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_Graphics">\r
     <attribute name="FILEPATH"/>\r
-    <attribute name="FILENAME"/>\r
+    <attribute name="FILENAME"/> \r
     <attribute name="FILEEXT" default="bmp"/>\r
 \r
     <element name="EXTRA.INC" optional="yes"/>\r