summaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-07-06 10:31:48 +0000
committerjwang36 <jwang36@6f19259b-4bc3-4df7-8a09-765794883524>2006-07-06 10:31:48 +0000
commitdf569f61e3806ec8dbeef9c89123f5b223720c07 (patch)
tree8326d44f8537eea13b6f2657bed9ef84201440fe /Tools
parent450d3b106f1c89f986336cdcf1ef33ef0f4a46aa (diff)
downloadedk2-platforms-df569f61e3806ec8dbeef9c89123f5b223720c07.tar.xz
Fixed the GCC assembler issue. Now we can use full GCC tools to build our package.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@795 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools')
-rw-r--r--Tools/Conf/BuildMacro.xml86
-rw-r--r--Tools/Conf/target.template4
-rw-r--r--Tools/Conf/tools_def.template24
3 files changed, 89 insertions, 25 deletions
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