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