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