summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--EdkModulePkg/EdkModulePkg-All-Archs.fpd4
-rw-r--r--EdkModulePkg/EdkModulePkg.fpd2
-rw-r--r--MdePkg/Library/BaseLib/BaseLib.msa98
-rw-r--r--MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa11
-rw-r--r--MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa11
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa11
-rw-r--r--MdePkg/MdePkg-All-Archs.fpd2
-rw-r--r--MdePkg/MdePkg.fpd2
-rw-r--r--Tools/Conf/BuildMacro.xml86
-rw-r--r--Tools/Conf/target.template4
-rw-r--r--Tools/Conf/tools_def.template24
11 files changed, 225 insertions, 30 deletions
diff --git a/EdkModulePkg/EdkModulePkg-All-Archs.fpd b/EdkModulePkg/EdkModulePkg-All-Archs.fpd
index ce5569186f..e6d333380f 100644
--- a/EdkModulePkg/EdkModulePkg-All-Archs.fpd
+++ b/EdkModulePkg/EdkModulePkg-All-Archs.fpd
@@ -146,7 +146,7 @@
<TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
<DatumType>UINT32</DatumType>
<MaxDatumSize>4</MaxDatumSize>
- <Value>0x10000</Value>
+ <Value>0x1000Value>
</PcdData>
<PcdData ItemType="FIXED_AT_BUILD">
<C_Name>PcdMaximumUnicodeStringLength</C_Name>
@@ -15103,7 +15103,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
</Option>
<Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="ASMLINK"/>
- <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
+ <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-x assembler-with-cpp", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
<!-- BOB tool chain options definition : IA32 -->
<Option TagName="BOB" SupArchList="IA32" ToolCode="CC">
diff --git a/EdkModulePkg/EdkModulePkg.fpd b/EdkModulePkg/EdkModulePkg.fpd
index 9827482465..6510d4fe64 100644
--- a/EdkModulePkg/EdkModulePkg.fpd
+++ b/EdkModulePkg/EdkModulePkg.fpd
@@ -4136,7 +4136,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
</Option>
<Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="ASMLINK"/>
- <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
+ <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-x assembler-with-cpp", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
</Options>
diff --git a/MdePkg/Library/BaseLib/BaseLib.msa b/MdePkg/Library/BaseLib/BaseLib.msa
index 8d7af00fec..ae3cae71c5 100644
--- a/MdePkg/Library/BaseLib/BaseLib.msa
+++ b/MdePkg/Library/BaseLib/BaseLib.msa
@@ -175,6 +175,104 @@
<Filename SupArchList="IA32">Ia32/CpuBreakpoint.asm</Filename>
<Filename SupArchList="IA32">Ia32/CpuFlushTlb.asm</Filename>
<Filename SupArchList="IA32">Ia32/Thunk16.asm</Filename>
+ <!-- GCC assembly code is with .S extension -->
+ <Filename SupArchList="IA32">Ia32/LShiftU64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/RShiftU64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ARShiftU64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/LRotU64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/RRotU64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/MultU64x32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/MultU64x64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/DivU64x32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ModU64x32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/DivU64x32Remainder.S</Filename>
+ <Filename SupArchList="IA32">Ia32/DivU64x64Remainder.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SwapBytes64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetJump.S</Filename>
+ <Filename SupArchList="IA32">Ia32/LongJump.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuId.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuIdEx.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadEflags.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMsr64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMsr32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMsr64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadCr0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadCr2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadCr3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadCr4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteCr0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteCr2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteCr3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteCr4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr1.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr5.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr6.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDr7.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr1.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr5.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr6.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteDr7.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadCs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadDs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadEs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadFs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadGs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadSs.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadTr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadGdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteGdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadIdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteIdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadLdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteLdtr.S</Filename>
+ <Filename SupArchList="IA32">Ia32/FxSave.S</Filename>
+ <Filename SupArchList="IA32">Ia32/FxRestore.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm1.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm5.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm6.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadMm7.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm0.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm1.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm2.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm3.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm4.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm5.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm6.S</Filename>
+ <Filename SupArchList="IA32">Ia32/WriteMm7.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadTsc.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ReadPmc.S</Filename>
+ <Filename SupArchList="IA32">Ia32/Monitor.S</Filename>
+ <Filename SupArchList="IA32">Ia32/Mwait.S</Filename>
+ <Filename SupArchList="IA32">Ia32/EnablePaging32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/DisablePaging32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/EnablePaging64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/Wbinvd.S</Filename>
+ <Filename SupArchList="IA32">Ia32/Invd.S</Filename>
+ <Filename SupArchList="IA32">Ia32/FlushCacheLine.S</Filename>
+ <Filename SupArchList="IA32">Ia32/InterlockedIncrement.S</Filename>
+ <Filename SupArchList="IA32">Ia32/InterlockedDecrement.S</Filename>
+ <Filename SupArchList="IA32">Ia32/InterlockedCompareExchange32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/InterlockedCompareExchange64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/EnableInterrupts.S</Filename>
+ <Filename SupArchList="IA32">Ia32/DisableInterrupts.S</Filename>
+ <Filename SupArchList="IA32">Ia32/EnableDisableInterrupts.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuSleep.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuPause.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuBreakpoint.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CpuFlushTlb.S</Filename>
+ <Filename SupArchList="IA32">Ia32/Thunk16.S</Filename>
<Filename SupArchList="X64">X86LowLevel.c</Filename>
<Filename SupArchList="X64">X86Thunk.c</Filename>
<Filename SupArchList="X64">Unaligned.c</Filename>
diff --git a/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa b/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
index 1c8c6b06c1..99d6dba269 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
+++ b/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
@@ -56,6 +56,17 @@
<Filename SupArchList="IA32">Ia32/ScanMem16.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem32.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem64.asm</Filename>
+ <Filename SupArchList="IA32">Ia32/CopyMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ZeroMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CompareMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem8.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem64.S</Filename>
<Filename SupArchList="X64">X64/CopyMem.asm</Filename>
<Filename SupArchList="X64">X64/SetMem.asm</Filename>
<Filename SupArchList="X64">X64/SetMem16.asm</Filename>
diff --git a/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa b/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
index 1aad519301..d3fa91d59b 100644
--- a/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
+++ b/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
@@ -56,6 +56,17 @@
<Filename SupArchList="IA32">Ia32/ScanMem16.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem32.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem64.asm</Filename>
+ <Filename SupArchList="IA32">Ia32/CopyMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ZeroMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CompareMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem8.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem64.S</Filename>
<Filename SupArchList="X64">MemLibGuid.c</Filename>
<Filename SupArchList="X64">CopyMemWrapper.c</Filename>
<Filename SupArchList="X64">SetMemWrapper.c</Filename>
diff --git a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa b/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
index 7c8798da7e..bfbfdf869c 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
+++ b/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
@@ -56,6 +56,17 @@
<Filename SupArchList="IA32">Ia32/ScanMem16.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem32.asm</Filename>
<Filename SupArchList="IA32">Ia32/ScanMem64.asm</Filename>
+ <Filename SupArchList="IA32">Ia32/CopyMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/SetMem64.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ZeroMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/CompareMem.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem8.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem16.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem32.S</Filename>
+ <Filename SupArchList="IA32">Ia32/ScanMem64.S</Filename>
<Filename SupArchList="X64">MemLibGuid.c</Filename>
<Filename SupArchList="X64">CopyMemWrapper.c</Filename>
<Filename SupArchList="X64">SetMemWrapper.c</Filename>
diff --git a/MdePkg/MdePkg-All-Archs.fpd b/MdePkg/MdePkg-All-Archs.fpd
index 837771b196..bf2ddb09e6 100644
--- a/MdePkg/MdePkg-All-Archs.fpd
+++ b/MdePkg/MdePkg-All-Archs.fpd
@@ -2616,7 +2616,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
</Option>
<Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="ASMLINK"/>
- <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
+ <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-x assembler-with-cpp", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
<!-- BOB tool chain options definition : IA32 -->
<Option TagName="BOB" SupArchList="IA32" ToolCode="CC">
diff --git a/MdePkg/MdePkg.fpd b/MdePkg/MdePkg.fpd
index 0635b3144d..5147b6cfaa 100644
--- a/MdePkg/MdePkg.fpd
+++ b/MdePkg/MdePkg.fpd
@@ -843,7 +843,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
</Option>
<Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="ASMLINK"/>
- <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
+ <Option ToolChainFamily="GCC" SupArchList="IA32" ToolCode="PP"> "-E", "-x assembler-with-cpp", "-include ${DEST_DIR_DEBUG}/AutoGen.h" </Option>
</Options>
diff --git a/Tools/Conf/BuildMacro.xml b/Tools/Conf/BuildMacro.xml
index 28d6f0cb04..3b315d46fa 100644
--- a/Tools/Conf/BuildMacro.xml
+++ b/Tools/Conf/BuildMacro.xml
@@ -134,16 +134,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
</targetfiles>
<sequential>
-
<cc userdefine="on">
- <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}" family="${PP_FAMILY}">
+ <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"
+ outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">
<EXTRA.INC/>
<argument value="${PP_FLAGS}"/>
<fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
</command>
</cc>
- <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
+ <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>
</sequential>
</OnDependency>
</sequential>
@@ -158,20 +158,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
<element name="EXTRA.ARG" optional="yes"/>
<!-- Dispath ASM file, there are three type.
- asm,s - Build_Assembly
- S - Build_Ipf_Assembly -->
+ asm - Build_Assembly
+ S - Build_Gcc_Assembly
+ s - Build_Ipf_Assembly -->
<sequential>
<if>
- <or>
- <equals arg1="@{FILEEXT}" arg2="asm" />
- <equals arg1="@{FILEEXT}" arg2="S" />
- </or>
+ <equals arg1="@{FILEEXT}" arg2="asm" />
<then>
<Build_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">
<EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>
<EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>
</Build_Assembly>
</then>
+ <elseif>
+ <equals arg1="@{FILEEXT}" arg2="S" />
+ <then>
+ <Build_Gcc_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">
+ <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>
+ <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>
+ </Build_Gcc_Assembly>
+ </then>
+ </elseif>
<elseif>
<equals arg1="@{FILEEXT}" arg2="s" />
<then>
@@ -250,6 +257,67 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
</macrodef>
<!--
+ Build GCC assembly code
+ -->
+ <macrodef name="Build_Gcc_Assembly">
+ <attribute name="FILEPATH"/>
+ <attribute name="FILENAME"/>
+ <attribute name="FILEEXT" default="asm"/>
+
+ <element name="EXTRA.INC.1" optional="yes"/>
+ <element name="EXTRA.ARG.1" optional="yes"/>
+
+ <sequential>
+ <var name="FILE_BASENAME" value="@{FILENAME}" />
+ <var name="FILE_PATH" value="@{FILEPATH}" />
+ <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>
+
+ <OnDependency>
+ <sourcefiles>
+ <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
+ </sourcefiles>
+ <targetfiles>
+ <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>
+ </targetfiles>
+
+ <sequential>
+ <cc userdefine="on">
+ <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}"
+ outputDelimiter="-o"
+ outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">
+ <EXTRA.INC.1/>
+ <argument value="${PP_FLAGS}"/>
+ <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>
+ </command>
+ </cc>
+
+ <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
+ match="^(#[^ ]* +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}&quot;).+\1"
+ replace="#"
+ flags="gs"/>
+ <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"
+ match="^(#[^ ]* .*)$"
+ replace="# \1"
+ byline="true"/>
+
+ <cc userdefine="on">
+ <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"
+ outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">
+ <EXTRA.INC.1/>
+
+ <argument value="${ASM_FLAGS}"/>
+ <EXTRA.ARG.1/>
+
+ <!-- fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/ -->
+ <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>
+ </command>
+ </cc>
+ </sequential>
+ </OnDependency>
+ </sequential>
+ </macrodef>
+
+ <!--
IPF Assembly
-->
<macrodef name="Build_IPF_Assembly_Code">
diff --git a/Tools/Conf/target.template b/Tools/Conf/target.template
index fde5df2d5a..0644b39d7f 100644
--- a/Tools/Conf/target.template
+++ b/Tools/Conf/target.template
@@ -6,6 +6,6 @@ TOOLS_DEFINITION_FILE = Tools/Conf/tools_def.txt
# Separate multiple targets with space, not not use comma
TARGET =
-TARGET_ARCH =
-TAGNAME =
+TARGET_ARCH = IA32
+TAGNAME = MSFT
diff --git a/Tools/Conf/tools_def.template b/Tools/Conf/tools_def.template
index 8026b46007..c4e601f112 100644
--- a/Tools/Conf/tools_def.template
+++ b/Tools/Conf/tools_def.template
@@ -23,7 +23,7 @@
*_MSFT_IA32_ASMLINK_PATH = C:\WINDDK\3790.1830\Bin\Bin16\
*_MSFT_IA32_ASL_PATH = C:\TianoTools\Bin
*_MSFT_IA32_*_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
-#*_MSFT_IA32_ASM_EXT = .asm
+*_MSFT_IA32_ASM_EXT = .asm
# x64 definitions
*_MSFT_X64_*_PATH = C:\WINDDK\3790.1830\bin\win64\x86\amd64
@@ -35,6 +35,7 @@
# IPF definitions
*_MSFT_IPF_*_PATH = C:\WINDDK\3790.1830\bin\win64\x86
*_MSFT_IPF_ASM_NAME = ias.exe
+*_MSFT_IPF_ASM_EXT = .s
# EBC definitions
*_MSFT_EBC_*_FAMILY = INTEL
@@ -45,18 +46,13 @@
*_MSFT_EBC_PP_NAME = iec.exe
# GCC definitions
-#*_GCC_*_*_FAMILY = GCC
-#*_GCC_*_CC_NAME = gcc
-#*_GCC_*_SLINK_NAME = ar
-#*_GCC_*_DLINK_NAME = ld
+*_GCC_IA32_*_FAMILY = GCC
+*_GCC_IA32_CC_NAME = gcc
+*_GCC_IA32_SLINK_NAME = ar
+*_GCC_IA32_DLINK_NAME = ld
+*_GCC_IA32_ASM_NAME = as
+*_GCC_IA32_PP_NAME = gcc
# GCC, IA32
-#*_GCC_IA32_*_PATH = C:\cygwin\opt\tiano\i386-tiano-pe\i386-tiano-pe\bin
-#*_GCC_IA32_ASM_FAMILY = MSFT
-#*_GCC_IA32_ASM_NAME = ml.exe
-#*_GCC_IA32_ASM_PATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
-#*_GCC_IA32_ASM_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
-#*_GCC_IA32_PP_FAMILY = MSFT
-#*_GCC_IA32_PP_NAME = cl.exe
-#*_GCC_IA32_PP_PATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
-#*_GCC_IA32_PP_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
+*_GCC_IA32_*_PATH = C:\cygwin\opt\tiano\i386-tiano-pe\i386-tiano-pe\bin
+*_GCC_IA32_ASM_EXT = .S