[YOCTO #7143] When the system is configured for a multilib SDK, such as: require conf/multilib.conf MULTILIBS = "multilib:lib32 multilib:lib64" DEFAULTTUNE = "mips32r2" DEFAULTTUNE_virtclass-multilib-lib32 = "mips64-n32" DEFAULTTUNE_virtclass-multilib-lib64 = "mips64" Only one of the mips64-n32 or mips64 toolchains is built. Causing the other to be unavailable. This is due to both recipes ending up with the same PN. The toolchain uses the TRANSLATED_TARGET_ARCH in it's name, however the target for mips64 and mips64 n32 were the same, causing the conflict. Avoid this conflict by adding the ABIEXTENSION to the name. (From OE-Core rev: 0bcc01121e928d0be7a0550e500425852c63cf98) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012/03/30 - Mark Hatle mark.hatle@windriver.com
- Initial Version
MIPS currently defines 12 ABIs. Combinations of: *) Big/Little Endian *) Hardware/Software Floating Point *) o32, n32, n64 ABI
TUNE_ARCH, the GNU canonical arch, is defined as:
mips${MIPSPKGSFX_BYTE}${MIPSPKGSFX_ENDIAN}
The package arch is defined in such a way to generated a standard naming scheme. The scheme is: [-nf][-n32]
TUNE_PKGARCH is defined as:
${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}
The following is a list of MIPS specific variables:
MIPSPKGSFX_BYTE - This is defined as either blank and "64" for MIPS64 CPUs.
MIPSPKGSFX_ENDIAN - For bigendian hardware this is blank, otherwise it's defined as "el".
MIPSPKGSFX_VARIANT_tune- - In the default tunings it is set to the same value as TUNE_ARCH. In custom, optimized tunings, the value should be modified to more precisely describe the tuning.
MIPSPKGSFX_FPU - The value is set to "" or "-nf", where "-nf" indicates that the tune is using a non-floating point ABI.
MIPSPKGSFX_ABI - This is used to specify an alternative ABI when the previous values are not enough to distringuish the package. "-n32" is added when building for N32 ABI.