On Wed, May 29, 2013 at 3:23 AM, Olivier Martin <olivier.mar...@arm.com> wrote: > I do not see any issue to add this support to GCC4* except I do not really > like the hardcoded path in the compiler name (eg: GCC44_IA32_PREFIX, > GCC44_X64_PREFIX). I understand removing the architecture from the > CROSS_COMPILE/TOOLS_PFX variable name would prevent to use `build -a ARM -a > IA32 -a X64 -p MdePkg/MdePkg.dsc -t GCC`; but I am not sure many people > build for all the architectures at the same time. Again, this cross compiler > is mainly to ease the use of EDK2 build system. > If people still want to build for many architectures they can call the > 'build' command line for each of those architecture. > > Instead of that: > *_GCC44_IA32_OBJCOPY_PATH = DEF(GCC44_IA32_PREFIX)objcopy > *_GCC44_IA32_CC_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_SLINK_PATH = DEF(GCC44_IA32_PREFIX)ar > *_GCC44_IA32_DLINK_PATH = DEF(GCC44_IA32_PREFIX)ld > *_GCC44_IA32_ASLDLINK_PATH = DEF(GCC44_IA32_PREFIX)ld > *_GCC44_IA32_ASM_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_PP_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_VFRPP_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_ASLCC_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_ASLPP_PATH = DEF(GCC44_IA32_PREFIX)gcc > *_GCC44_IA32_RC_PATH = DEF(GCC44_IA32_PREFIX)objcopy > > I would prefer to have something like that: > *_GCC44_*_OBJCOPY_PATH = ENV(CROSS_COMPILE)objcopy > *_GCC44_*_CC_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_SLINK_PATH = ENV(CROSS_COMPILE)ar > *_GCC44_*_DLINK_PATH = ENV(CROSS_COMPILE)ld > *_GCC44_*_ASLDLINK_PATH = ENV(CROSS_COMPILE)ld > *_GCC44_*_ASM_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_PP_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_VFRPP_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_ASLCC_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_ASLPP_PATH = ENV(CROSS_COMPILE)gcc > *_GCC44_*_RC_PATH = ENV(CROSS_COMPILE)objcopy
Why not define? DEFINE GCC44_IA32_PREFIX = ENV(TOOLS_PFX) > The reason of CROSS_COMPILE instead of TOOLS_PFX is the variable > CROSS_COMPILE is quite common when building packages with cross toolchain. I don't agree that CROSS_COMPILE is the right terminology here. For IA32/X64 is likely will not be a cross-compiler, and it is really just a prefix to the tools. Some distros will suffix their tools as well. (gcc-4.5) So, TOOLS_SFX seems like it could be useful too. > That would reduce the learning curve for new comers. > I personally do not know which version of GCC I am using. I would prefer to > drop it from the name. What about compiler flags between versions? build.sh in OvmfPkg and EmulatorPkg has seemed to work pretty well for auto-selecting the right toolchain. > I also hate to edit one line into a 5000 files; so I would definitely prefer > to move from DEF() to ENV() to define the cross-compiler. I agree that this could be useful. At one point using ENV with an undefined variable would cause a build error, but that is long since past. -Jordan > Here are some figures: > - tools_def.txt: around 5000 lines > - 7 toolchains for GCC on Linux: UNIXGCC, GCC44, GCC45, GCC46, ELFGCC, > ARMGCC, ARMLINUXGCC (around 700 lines) > - 14 toolchains for Visual Studio on Windows: VS2003, VS2003xASL, VS2005, > VS2005xASL, VS2005x86, VS2005x86xASL, VS2008, VS2008x86, VS2008xASL, > VS2008x86xASL, VS2010, VS2010x86, VS2010xASL, VS2010x86xASL (around 1860 > lines) >> -----Original Message----- >> From: Jordan Justen [mailto:jljus...@gmail.com] >> Sent: 28 May 2013 22:32 >> To: Andrew Fish >> Cc: Olivier Martin; edk2-devel@lists.sourceforge.net; edk2-buildtools- >> de...@lists.sourceforge.net >> Subject: Re: [edk2-buildtools] [PATCH] BaseTools: Add support for a >> CROSS_COMPILE ELFGCC >> >> On Tue, May 28, 2013 at 12:26 PM, Andrew Fish <af...@apple.com> wrote: >> > On May 28, 2013, at 12:10 PM, Jordan Justen <jljus...@gmail.com> >> wrote: >> >>> Anyway, I am not sure GCC for ARM architectures supports PE/COFF (I >> guess >> >>> that would 'only' required to add the PE/COFF relocation symbols). >> But if >> >>> ELFGCC is deprecated for IA32/X64 usage and ARM GCC only supports >> ELF >> >>> output, do you see any issue to re-use ELFGCC as a cross-toolchain >> ? >> >> >> >> I don't think UEFI supports ELF images for any architecture. For >> that >> >> reason, I don't think a toolchain named "*ELF*" is a good idea. >> > >> > Well the ELF bit is important as it has to do with which debugger you >> can use. It is the reason we compile to ELF and convert, so we can use >> debuggers that know about ELF images. >> > >> >> Maybe GCCCROSS is a better name? >> > >> > The problem is a gcc cross compiler could also directly produce a >> PE/COFF image, so which tool chain are you talking about? >> > >> > I vote to leave ELF in the name as it is the debug format being used. >> Well I guess we could call it DWARF to be pedantic, but Mach-O uses >> DWARF too, so ELF better maps what the debugger knows how to deal with. >> > >> >> If the debugging format is the critical element, then maybe DWARFGCC >> is the right answer. I don't agree with this though. It doesn't seem >> to follow the model of VS*/GCC*. >> >> ELFGCC seems additionally problematic given its baggage as a 'hack' >> toolchain for UnixPkg. I'd been hoping to deprecate it after >> deprecating UnixPkg. (Hmm, probably time to follow through with that.) >> >> Why this support can't be merged into the actively maintained GCC4* >> toolchains? Or, will this introduce too much confusion on these >> toolchains? >> >> I like the CROSS_COMPILE idea, but maybe instead it should be >> TOOLS_PFX? >> >> Although, doesn't CROSS_COMPILE/TOOLS_PFX gloss over the fact that >> changing the GCC version like this may mean changes are required to >> the tool arguments? >> >> -Jordan > > > > ------------------------------------------------------------------------------ Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET Get 100% visibility into your production application - at no cost. Code-level diagnostics for performance bottlenecks with <2% overhead Download for free and get started troubleshooting in minutes. http://p.sf.net/sfu/appdyn_d2d_ap1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel