|
Message-ID: <520AE098.4010106@gentoo.org> Date: Wed, 14 Aug 2013 03:42:48 +0200 From: Luca Barbato <lu_zero@...too.org> To: musl@...ts.openwall.com Subject: Re: Build system adjustments for subarchs On 14/08/13 03:06, Rich Felker wrote: > Hi, > > I'm looking for some ideas on a problem in the build system: how to > cleanly share asm between subarchs. The problem is this: ARM, and > possibly other archs in the future, has multiple dimensions of > subarch: little-endian(default) vs big-endian, and > fpu-agnostic(default) vs hardfloat. The asm requirements are: > > - MOST asm is shared by all subarchs. > > - A small amount of asm (for now, just memcpy) is endian-specific but > has nothing to do with floating point ABI. > > - A fairly significant amount of asm in the future will be hard-float > specific (optimized math functions and floating point environment) > but has nothing to do with endianness. > > Until commit 90d77722511ad5e9b748f69f42c5b2a8467fa049, asm was shared > by all subarchs; there was no ability to have subarch-specific > overrides. At least one person (I can't remember who right off) > suggested that instead of more build system logic, we should switch to > preprocessed asm files (.S) so that a single asm file could include > the logic to support all subarchs, but that was not a viable solution, > because what I needed was a way to write asm for one subarch that > doesn't interfere with the fallback C source file getting used for > other subarchs. > > The current system searches for arch-specific asm in this order: > > 1. $(ARCH)$(ASMSUBARCH)/%.s, where ASMSUBARCH for the default subarch > is not blank but rather a unique suffix (for plain arm, it's "el"). > This allows having asm that applies only to the default subarch but > not others. > > 2. $(ARCH)/%.s, for shared asm used by all subarchs. > > 3. %.c, the C fallback (which is empty for code that cannot be > implemented at all in C). > - armel/%.s and armhf/%.s as duplicate files or symlinked > - armhf/%.s and armebhf/%.s as duplicate files or symlinked I'd just explicitly group files by the most selective so ARMEL+=${list of objects that work on el doesn't matter what} ARMHF+=${list of objects that work on hf doesn't matter what} ARMEB+=${list of objects that work on eb doesn't matter what} ARMHFEL+=$(ARMEL) $(ARMHF) ${other stuff} ARMHFEB+=$(ARMEB) $(ARMHF) ${different stuff} OBJS+=$($(targetarch)) And give up on having automagic fallbacks. lu
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.