On Mon, Dec 14, 2015 at 05:25:06PM +0100, Ard Biesheuvel wrote:
> This extends the existing CLANG35 toolchain definition with support for
> building for the ARM architecture. In order to be able to reuse the existing
> ARM GCC definitions as much as possible, the following changes have been
> made to the existing ARM GCC support:
> - the -mapcs option has been removed; it is a no-op under Thumb (our default)
>   and we use AAPCS (-mabi=aapcs) anyway
> - the -mword-relocations option has been moved from GCC_ARM_CC_FLAGS to
>   the GCC4x specific option: CLANG does not support it, and uses '-mllvm
>   -marm-use-movt=0' instead.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>

Looks sensible:
Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>

> ---
>  BaseTools/Conf/tools_def.template | 28 +++++++++++++++++---
>  1 file changed, 25 insertions(+), 3 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index fc79bd660142..6e26bbca934b 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -366,7 +366,7 @@ DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program 
> Files/CodeSourcery/Sourcery G
>  #                               Intel(r) ACPI Compiler from
>  #                               https://acpica.org/downloads
>  #   CLANG35     -Linux,Windows-  Requires:
> -#                             Clang v3.5 or later, and GNU binutils 
> targeting aarch64-linux-gnu
> +#                             Clang v3.5 or later, and GNU binutils 
> targeting aarch64-linux-gnu or arm-linux-gnueabi
>  #                        Optional:
>  #                             Required to build platforms or ACPI tables:
>  #                               Intel(r) ACPI Compiler from
> @@ -4322,7 +4322,7 @@ DEFINE GCC_ALL_CC_FLAGS            = -g -Os 
> -fshort-wchar -fno-strict-aliasing -
>  DEFINE GCC_IA32_CC_FLAGS           = DEF(GCC_ALL_CC_FLAGS) -m32 
> -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 
> -mno-stack-arg-probe
>  DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone 
> -Wno-address -mno-stack-arg-probe
>  DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) 
> -minline-int-divide-min-latency
> -DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) 
> -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums 
> -save-temps -fsigned-char -ffunction-sections -fdata-sections 
> -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
> +DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -mabi=aapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections 
> -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
>  DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian 
> -fno-short-enums -save-temps -fverbose-asm -fsigned-char  -ffunction-sections 
> -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address 
> -fno-asynchronous-unwind-tables
>  DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
>  DEFINE GCC_DLINK2_FLAGS_COMMON     = 
> --script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
> @@ -4380,7 +4380,7 @@ DEFINE GCC46_X64_DLINK_FLAGS         = 
> DEF(GCC45_X64_DLINK_FLAGS)
>  DEFINE GCC46_X64_DLINK2_FLAGS        = DEF(GCC45_X64_DLINK2_FLAGS)
>  DEFINE GCC46_ASM_FLAGS               = DEF(GCC45_ASM_FLAGS)
>  DEFINE GCC46_ARM_ASM_FLAGS           = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) 
> DEF(GCC_ASM_FLAGS) -mlittle-endian
> -DEFINE GCC46_ARM_CC_FLAGS            = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
> DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector
> +DEFINE GCC46_ARM_CC_FLAGS            = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) 
> DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector 
> -mword-relocations
>  DEFINE GCC46_ARM_DLINK_FLAGS         = DEF(GCC_ARM_DLINK_FLAGS) 
> --oformat=elf32-littlearm
>  DEFINE GCC46_ARM_DLINK2_FLAGS        = DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x220
>  DEFINE GCC46_ARM_ASLDLINK_FLAGS      = DEF(GCC_ARM_ASLDLINK_FLAGS) 
> --oformat=elf32-littlearm
> @@ -5184,9 +5184,31 @@ RELEASE_GCC49_AARCH64_CC_FLAGS   = 
> DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-s
>  *_CLANG35_*_ASLPP_PATH           = ENV(CLANG35_BIN)clang
>  
>  DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality 
> -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare 
> -Wno-empty-body
> +DEFINE CLANG35_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) -target armv7-a 
> -mstrict-align -mllvm -arm-use-movt=0 DEF(CLANG35_WARNING_OVERRIDES)
>  DEFINE CLANG35_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) -target aarch64 
> -mcmodel=small -mstrict-align DEF(CLANG35_WARNING_OVERRIDES)
>  
>  ##################
> +# CLANG35 ARM definitions
> +##################
> +*_CLANG35_ARM_SLINK_PATH         = ENV(CLANG35_ARM_PREFIX)ar
> +*_CLANG35_ARM_DLINK_PATH         = ENV(CLANG35_ARM_PREFIX)ld
> +*_CLANG35_ARM_ASLDLINK_PATH      = ENV(CLANG35_ARM_PREFIX)ld
> +*_CLANG35_ARM_RC_PATH            = ENV(CLANG35_ARM_PREFIX)objcopy
> +
> +*_CLANG35_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)
> +*_CLANG35_ARM_ASLDLINK_FLAGS     = DEF(GCC_ARM_ASLDLINK_FLAGS)
> +*_CLANG35_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) $(ARCHASM_FLAGS) 
> $(PLATFORM_FLAGS) -target armv7-a -Qunused-arguments
> +*_CLANG35_ARM_DLINK_FLAGS        = DEF(GCC_ARM_DLINK_FLAGS)
> +*_CLANG35_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) 
> --defsym=PECOFF_HEADER_SIZE=0x220
> +*_CLANG35_ARM_PLATFORM_FLAGS     =
> +*_CLANG35_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) $(ARCHCC_FLAGS) 
> $(PLATFORM_FLAGS)
> +*_CLANG35_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)
> +*_CLANG35_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) $(ARCHCC_FLAGS) 
> $(PLATFORM_FLAGS)
> +
> +  DEBUG_CLANG35_ARM_CC_FLAGS     = DEF(CLANG35_ARM_CC_FLAGS) $(ARCHCC_FLAGS) 
> $(PLATFORM_FLAGS) -O0
> +RELEASE_CLANG35_ARM_CC_FLAGS     = DEF(CLANG35_ARM_CC_FLAGS) $(ARCHCC_FLAGS) 
> $(PLATFORM_FLAGS) -Oz
> +
> +##################
>  # CLANG35 AARCH64 definitions
>  ##################
>  *_CLANG35_AARCH64_SLINK_PATH     = ENV(CLANG35_AARCH64_PREFIX)ar
> -- 
> 2.5.0
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to