On 2015-08-07 07:59:24, Ard Biesheuvel wrote: > On 7 August 2015 at 16:51, Jordan Justen <jordan.l.jus...@intel.com> wrote: > > I think the subject should say 'Add CLANG toolchain with AARCH64 > > support' to highlight that a new toolchain name is being defined. > > > > OK. I can fix that up before applying. > > > Should we consider adding the version to the toolchain name, like > > CLANG37? Then we can change parameters between major releases. At > > least for GCC it has proved useful. > > > > Actually, I was going to suggest folding everything except GCC-4.4 > into GCC4X since the differences are so minor.
Minor, but there are differences. Would you propose forcing people to have to cusomize tools_def if they don't use the GCC-4.X that tools_def currently supports? How would that work? > (and GCC-4.4 may be on its way out due to its poor support of > ms_abi). Arg. Not that tired old argument about how difficult it is to use EFIAPI properly? :) By the way, we have never deprecated a toolchain in EDK II. Personally I think we should move some older toolchains to BaseTools/Conf/tools_def.deprecated. > With GCC 5.0 and 5.1 around the corner, it is becoming a bit > unwieldy by my taste. There would be a GCC5 and GCC6. Not GCC50 and GCC51. (GCC moved releases to bumping the first version number.) https://gcc.gnu.org/develop.html#num_scheme This method does add 1~2 toolchains per year, but it doesn't seem too bad. CLANG seems to have releases about 1~2 per year as well, and it would be good to plan for some minor parameter tweaks between releases. That's why I'd suggest CLANG37, to match up with CLANG/LLVM release numbering. -Jordan > For clang, there is no reason right now afaict. So perhaps we could > use CLANG3X instead? That way, we can still keep the current support > as newer CLANG versions become available, but are not forced to > declare 2 or 3 discrete but identical versions right from the start. > > -- > Ard. > > > On 2015-08-07 07:23:23, Ard Biesheuvel wrote: > >> This adds support for building the AARCH64 platforms using the > >> Clang compiler and assembler combined with the GNU (cross-)linker. > >> > >> Contributed-under: TianoCore Contribution Agreement 1.0 > >> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > >> Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org> > >> Tested-by: Leif Lindholm <leif.lindh...@linaro.org> > >> --- > >> BaseTools/Conf/tools_def.template | 51 ++++++++++++++++++++ > >> 1 file changed, 51 insertions(+) > >> > >> diff --git a/BaseTools/Conf/tools_def.template > >> b/BaseTools/Conf/tools_def.template > >> index eeb488fb3597..974c9805435b 100644 > >> --- a/BaseTools/Conf/tools_def.template > >> +++ b/BaseTools/Conf/tools_def.template > >> @@ -4644,6 +4644,57 @@ RELEASE_GCC49_AARCH64_CC_FLAGS = > >> DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-s > >> > >> > >> #################################################################################### > >> # > >> +# CLANG - This configuration is used to compile under Linux to produce > >> +# PE/COFF binaries using the clang compiler and assembler and > >> GNU linker > >> +# > >> +#################################################################################### > >> +*_CLANG_*_*_FAMILY = GCC > >> + > >> +*_CLANG_*_MAKE_PATH = make > >> +*_CLANG_*_*_DLL = ENV(CLANG_DLL) > >> +*_CLANG_*_ASL_PATH = DEF(UNIX_IASL_BIN) > >> + > >> +*_CLANG_*_PP_FLAGS = DEF(GCC_PP_FLAGS) > >> +*_CLANG_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) > >> +*_CLANG_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) > >> +*_CLANG_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) > >> +*_CLANG_*_APP_FLAGS = > >> +*_CLANG_*_ASL_FLAGS = DEF(IASL_FLAGS) > >> +*_CLANG_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) > >> + > >> +*_CLANG_*_CC_PATH = ENV(CLANG_BIN)clang > >> +*_CLANG_*_ASM_PATH = ENV(CLANG_BIN)clang > >> +*_CLANG_*_PP_PATH = ENV(CLANG_BIN)clang > >> +*_CLANG_*_VFRPP_PATH = ENV(CLANG_BIN)clang > >> +*_CLANG_*_ASLCC_PATH = ENV(CLANG_BIN)clang > >> +*_CLANG_*_ASLPP_PATH = ENV(CLANG_BIN)clang > >> + > >> +DEFINE CLANG_WARNING_OVERRIDES = -Wno-parentheses-equality > >> -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare > >> -Wno-empty-body > >> +DEFINE CLANG_AARCH64_CC_FLAGS = DEF(GCC_AARCH64_CC_FLAGS) -target > >> aarch64 -mcmodel=small -mstrict-align DEF(CLANG_WARNING_OVERRIDES) > >> + > >> +################## > >> +# CLANG AARCH64 definitions > >> +################## > >> +*_CLANG_AARCH64_SLINK_PATH = ENV(CLANG_AARCH64_PREFIX)ar > >> +*_CLANG_AARCH64_DLINK_PATH = ENV(CLANG_AARCH64_PREFIX)ld > >> +*_CLANG_AARCH64_ASLDLINK_PATH = ENV(CLANG_AARCH64_PREFIX)ld > >> +*_CLANG_AARCH64_RC_PATH = ENV(CLANG_AARCH64_PREFIX)objcopy > >> + > >> +*_CLANG_AARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) > >> +*_CLANG_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_ASLDLINK_FLAGS) > >> +*_CLANG_AARCH64_ASM_FLAGS = DEF(GCC_ASM_FLAGS) $(ARCHASM_FLAGS) > >> $(PLATFORM_FLAGS) -target aarch64 -Qunused-arguments > >> +*_CLANG_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -z > >> common-page-size=0x1000 > >> +*_CLANG_AARCH64_DLINK2_FLAGS = DEF(GCC_DLINK2_FLAGS_COMMON) > >> --defsym=PECOFF_HEADER_SIZE=0x228 > >> +*_CLANG_AARCH64_PLATFORM_FLAGS = > >> +*_CLANG_AARCH64_PP_FLAGS = DEF(GCC_PP_FLAGS) $(ARCHCC_FLAGS) > >> $(PLATFORM_FLAGS) > >> +*_CLANG_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS) > >> +*_CLANG_AARCH64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) $(ARCHCC_FLAGS) > >> $(PLATFORM_FLAGS) > >> + > >> + DEBUG_CLANG_AARCH64_CC_FLAGS = DEF(CLANG_AARCH64_CC_FLAGS) > >> $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -O0 > >> +RELEASE_CLANG_AARCH64_CC_FLAGS = DEF(CLANG_AARCH64_CC_FLAGS) > >> $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -Oz > >> + > >> +#################################################################################### > >> +# > >> # Cygwin GCC And Intel ACPI Compiler > >> # > >> > >> #################################################################################### > >> -- > >> 1.9.1 > >> > >> _______________________________________________ > >> edk2-devel mailing list > >> edk2-devel@lists.01.org > >> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel