]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Conf/BuildMacro.xml
Fixed EDKT381
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
index b149cd69644331086e5cf808e76d23c859e585b1..71814450e532cb9b266fa9857052cef43fef195a 100644 (file)
@@ -14,9 +14,70 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     Macro for intialize some properties. This Macro build will be called before source file build.  \r
     -->\r
   <macrodef name="Build_Init">\r
+    <element name="EXTRA.INC" optional="yes"/>\r
+    <element name="EXTRA.ARG" optional="yes"/>\r
+    \r
     <sequential>\r
       <var name="OBJECTS" value="" />\r
       <var name="SDB_FILES" value="" />\r
+\r
+      <if>\r
+        <and>\r
+          <isset property="PCH"/>\r
+          <not>\r
+            <equals arg1="${PCH}" arg2=""/>\r
+          </not>\r
+        </and>\r
+        <then>\r
+          <if>\r
+            <available type="file" file="${DEST_DIR_OUTPUT}/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_OUTPUT}/AutoGen.h.gch"/>\r
+            </targetfiles>\r
+    \r
+            <sequential>\r
+              <!-- Generate pre-compiled header -->\r
+              <cc userdefine="on">\r
+                <command type="CC" cmd="${PCH}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
+                  outputFile="${DEST_DIR_OUTPUT}/AutoGen.h.obj">\r
+                  <EXTRA.INC/>\r
+                  <argument value="${PCH_FLAGS}"/>\r
+                  <EXTRA.ARG/>\r
+                  <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
+                </command>\r
+              </cc>\r
+\r
+              <if>\r
+                <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
+                <then>\r
+                  <move file="${DEST_DIR_OUTPUT}/AutoGen.h.obj" tofile="${DEST_DIR_DEBUG}/AutoGen.h.gch" overwrite="true"/>\r
+                </then>\r
+              </if>\r
+            </sequential>\r
+          </OnDependency>\r
+\r
+          <if>\r
+            <not>\r
+              <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
+            </not>\r
+            <then>\r
+              <var name="OBJECTS" value="${OBJECTS} AutoGen.h.obj"/>\r
+            </then>\r
+          </if>\r
+        </then>\r
+      </if>\r
     </sequential>\r
   </macrodef>\r
 \r
@@ -60,25 +121,11 @@ 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_OUTPUT}/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_OUTPUT}/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" dpath="${CC_DPATH}">\r
               <EXTRA.INC/>\r
-              <argument value="${LOCAL_CC_FLAGS}"/>\r
+              <argument value="${CC_FLAGS}"/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
             </command>\r
@@ -112,44 +159,6 @@ 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_OUTPUT}/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_OUTPUT}/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_OUTPUT}/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" dpath="${CC_DPATH}">\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
@@ -170,22 +179,11 @@ 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_OUTPUT}/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" dpath="${CC_DPATH}">\r
               <EXTRA.INC/>\r
-              <argument value="${LOCAL_CC_FLAGS}"/>\r
+              <argument value="${CC_FLAGS}"/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
             </command>\r
@@ -517,12 +515,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     <sequential>\r
       <var name="FILE_BASENAME" value="@{FILENAME}" />\r
       <var name="FILE_PATH" value="." />\r
-      <if>\r
-        <available type="file" file="${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>\r
-        <then>\r
-          <var name="SLINK_FLAGS" value="${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>\r
-        </then>\r
-      </if>\r
       <mkdir dir="${BIN_DIR}"/>\r
 \r
       <OnDependency>\r
@@ -645,25 +637,11 @@ 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_OUTPUT}/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_OUTPUT}/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" dpath="${CC_DPATH}"\r
                      outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
-              <argument value="${LOCAL_CC_FLAGS}"/>\r
+              <argument value="${CC_FLAGS}"/>\r
               <EXTRA.INC />\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
             </command>\r
@@ -722,25 +700,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
             <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_OUTPUT}/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_OUTPUT}/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}" dpath="${CC_DPATH}"\r
                      outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
-              <argument value="${LOCAL_CC_FLAGS}"/>\r
+              <argument value="${CC_FLAGS}"/>\r
               <EXTRA.INC/>\r
               <EXTRA.ARG/>\r
               <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
@@ -794,12 +758,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     <sequential>\r
       <var name="FILE_BASENAME" value="@{FILENAME}" />\r
       <var name="FILE_PATH" value="@{FILEPATH}" />\r
-      <if>\r
-        <available type="file" file="${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>\r
-        <then>\r
-          <var name="SLINK_FLAGS" value="${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>\r
-        </then>\r
-      </if>\r
       <OnDependency>\r
         <sourcefiles>\r
           <file list="${LIBS}"/>\r