This adds preliminary support for building for the IA32 and X64
architectures using the CLANG35 toolchain.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
---
 BaseTools/Conf/tools_def.template | 53 ++++++++++++++++++++
 BaseTools/Scripts/GccBase.lds     |  3 ++
 2 files changed, 56 insertions(+)

diff --git a/BaseTools/Conf/tools_def.template 
b/BaseTools/Conf/tools_def.template
index 0cc85a6f359d..864c9ddd382e 100644
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -5181,14 +5181,67 @@ RELEASE_GCC49_AARCH64_CC_FLAGS   = 
DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-s
 *_CLANG35_*_ASLCC_PATH           = ENV(CLANG35_BIN)clang
 *_CLANG35_*_ASLPP_PATH           = ENV(CLANG35_BIN)clang
 
+DEFINE CLANG35_IA32_TARGET       = -target i686-none-linux-gnu
+DEFINE CLANG35_X64_TARGET        = -target x86_64-none-linux-gnu
 DEFINE CLANG35_ARM_TARGET        = -target armv7-none-linux-gnueabi
 DEFINE CLANG35_AARCH64_TARGET    = -target aarch64-none-linux-gnu
 
 DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality 
-Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare 
-Wno-empty-body
+DEFINE CLANG35_IA32_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) 
DEF(CLANG35_WARNING_OVERRIDES) -ffunction-sections -fdata-sections
+DEFINE CLANG35_IA32_CC_FLAGS     = DEF(CLANG35_IA32_X64_CC_FLAGS) 
DEF(CLANG35_IA32_TARGET)
+DEFINE CLANG35_X64_CC_FLAGS      = DEF(CLANG35_IA32_X64_CC_FLAGS) 
DEF(CLANG35_X64_TARGET)
 DEFINE CLANG35_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) 
DEF(CLANG35_ARM_TARGET) -mstrict-align -mllvm -arm-use-movt=0 
DEF(CLANG35_WARNING_OVERRIDES)
 DEFINE CLANG35_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) 
DEF(CLANG35_AARCH64_TARGET) -mcmodel=small -mstrict-align 
DEF(CLANG35_WARNING_OVERRIDES)
 
 ##################
+# CLANG35 IA32 definitions
+##################
+*_CLANG35_IA32_SLINK_PATH        = ENV(CLANG35_IA32_PREFIX)ar
+*_CLANG35_IA32_DLINK_PATH        = ENV(CLANG35_IA32_PREFIX)ld
+*_CLANG35_IA32_ASLDLINK_PATH     = ENV(CLANG35_IA32_PREFIX)ld
+*_CLANG35_IA32_RC_PATH           = ENV(CLANG35_IA32_PREFIX)objcopy
+
+*_CLANG35_IA32_ASLCC_FLAGS       = DEF(GCC_ASLCC_FLAGS) -m32
+*_CLANG35_IA32_ASLDLINK_FLAGS    = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m 
elf_i386
+*_CLANG35_IA32_ASM_FLAGS         = DEF(GCC49_ASM_FLAGS) 
DEF(CLANG35_IA32_TARGET) -Qunused-arguments
+*_CLANG35_IA32_DLINK_FLAGS       = DEF(GCC49_IA32_X64_DLINK_FLAGS) -m elf_i386 
--oformat=elf32-i386
+*_CLANG35_IA32_DLINK2_FLAGS      = DEF(GCC49_IA32_DLINK2_FLAGS)
+*_CLANG35_IA32_PLATFORM_FLAGS    =
+*_CLANG35_IA32_PP_FLAGS          = DEF(GCC_PP_FLAGS) DEF(CLANG35_IA32_TARGET)
+*_CLANG35_IA32_VFRPP_FLAGS       = DEF(GCC_VFRPP_FLAGS) 
DEF(CLANG35_IA32_TARGET)
+*_CLANG35_IA32_ASLPP_FLAGS       = DEF(GCC_ASLPP_FLAGS) 
DEF(CLANG35_IA32_TARGET)
+*_CLANG35_IA32_RC_FLAGS          = DEF(GCC_IA32_RC_FLAGS)
+*_CLANG35_IA32_OBJCOPY_FLAGS     =
+*_CLANG35_IA32_NASM_FLAGS        = -f elf32
+
+  DEBUG_CLANG35_IA32_CC_FLAGS    = DEF(CLANG35_IA32_CC_FLAGS) -O0
+RELEASE_CLANG35_IA32_CC_FLAGS    = DEF(CLANG35_IA32_CC_FLAGS) -Oz
+
+##################
+# CLANG35 X64 definitions
+##################
+*_CLANG35_X64_SLINK_PATH         = ENV(CLANG35_X64_PREFIX)ar
+*_CLANG35_X64_DLINK_PATH         = ENV(CLANG35_X64_PREFIX)ld
+*_CLANG35_X64_ASLDLINK_PATH      = ENV(CLANG35_X64_PREFIX)ld
+*_CLANG35_X64_RC_PATH            = ENV(CLANG35_X64_PREFIX)objcopy
+
+*_CLANG35_X64_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -m64
+*_CLANG35_X64_ASLDLINK_FLAGS     = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m 
elf_x86_64
+*_CLANG35_X64_ASM_FLAGS          = DEF(GCC49_ASM_FLAGS) 
DEF(CLANG35_X64_TARGET) -Qunused-arguments
+*_CLANG35_X64_DLINK_FLAGS        = DEF(GCC49_IA32_X64_DLINK_FLAGS) -m 
elf_x86_64
+*_CLANG35_X64_DLINK2_FLAGS       = DEF(GCC49_X64_DLINK2_FLAGS)
+*_CLANG35_X64_PLATFORM_FLAGS     =
+*_CLANG35_X64_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANG35_X64_TARGET)
+*_CLANG35_X64_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_X64_TARGET)
+*_CLANG35_X64_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_X64_TARGET)
+*_CLANG35_X64_RC_FLAGS           = DEF(GCC_X64_RC_FLAGS)
+*_CLANG35_X64_OBJCOPY_FLAGS      =
+*_CLANG35_X64_NASM_FLAGS         = -f elf64
+
+  DEBUG_CLANG35_X64_CC_FLAGS     = DEF(CLANG35_X64_CC_FLAGS) -O0
+RELEASE_CLANG35_X64_CC_FLAGS     = DEF(CLANG35_X64_CC_FLAGS) -Oz
+
+##################
 # CLANG35 ARM definitions
 ##################
 *_CLANG35_ARM_SLINK_PATH         = ENV(CLANG35_ARM_PREFIX)ar
diff --git a/BaseTools/Scripts/GccBase.lds b/BaseTools/Scripts/GccBase.lds
index 32310bc75dcc..d2a20f888779 100644
--- a/BaseTools/Scripts/GccBase.lds
+++ b/BaseTools/Scripts/GccBase.lds
@@ -15,6 +15,9 @@
 
 **/
 
+PROVIDE (memcpy = CopyMem);
+PROVIDE (memset = SetMem);
+
 SECTIONS {
 
   /*
-- 
2.5.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to