mirror of
https://git.yoctoproject.org/poky
synced 2026-02-15 13:13:02 +01:00
Similarly to x86, ensure we have the flags to the linker operating correctly (it defaults to 32 bit). Normally it is driven by gcc so this hasn't shown up but it does lead to hundreds of binutils test failures. (From OE-Core rev: 2cf9013fd8df2bb67f93ffd44ccc23453cedf42a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
154 lines
6.5 KiB
PHP
154 lines
6.5 KiB
PHP
# MIPS Architecture definition
|
|
# 12 defined ABIs, all combinations of:
|
|
# *) Big/Little Endian
|
|
# *) Hardware/Software Floating Point
|
|
# *) o32, n32, n64 ABI
|
|
|
|
DEFAULTTUNE ?= "mips"
|
|
|
|
# Endianess
|
|
TUNEVALID[bigendian] = "Enable big-endian mode"
|
|
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', ' -meb', ' -mel', d)}"
|
|
|
|
# ABI flags
|
|
TUNEVALID[o32] = "MIPS o32 ABI"
|
|
TUNECONFLICTS[o32] = "n32 n64"
|
|
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'o32', ' -mabi=32', '', d)}"
|
|
|
|
TUNEVALID[n32] = "MIPS64 n32 ABI"
|
|
TUNECONFLICTS[n32] = "o32 n64"
|
|
ABIEXTENSION .= "${@bb.utils.filter('TUNE_FEATURES', 'n32', d)}"
|
|
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n32', ' -mabi=n32', '', d)}"
|
|
|
|
# user mode qemu doesn't support mips64 n32: "Invalid ELF image for this architecture"
|
|
MACHINE_FEATURES_BACKFILL_CONSIDERED:append = " ${@bb.utils.contains('TUNE_FEATURES', 'n32', 'qemu-usermode', '', d)}"
|
|
|
|
TUNEVALID[n64] = "MIPS64 n64 ABI"
|
|
TUNECONFLICTS[n64] = "o32 n32"
|
|
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n64', ' -mabi=64', '', d)}"
|
|
LD64ARG = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '-m elf64btsmip', '-m elf64ltsmip', d)}"
|
|
TUNE_LDARGS += "${@bb.utils.contains('TUNE_FEATURES', 'n64', '${LD64ARG}', '', d)}"
|
|
|
|
# Floating point
|
|
TUNEVALID[fpu-hard] = "Use hardware FPU"
|
|
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard', ' -mhard-float', ' -msoft-float', d)}"
|
|
TARGET_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard', '', 'soft', d)}"
|
|
|
|
# MIPS r6 ABI
|
|
TUNEVALID[r6] = "Use r6"
|
|
TUNEVALID[mipsisa64r6] = "Use 64r6"
|
|
TUNEVALID[mipsisa32r6] = "Use 32r6"
|
|
|
|
# Package naming
|
|
MIPSPKGSFX_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el', d)}"
|
|
MIPSPKGSFX_ENDIAN2 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'eb', 'el', d)}"
|
|
MIPSPKGSFX_BYTE = "${@bb.utils.contains('TUNE_FEATURES', 'n64' , '64', '', d)}"
|
|
MIPSPKGSFX_BYTE .= "${@bb.utils.contains('TUNE_FEATURES', 'n32' , '64', '', d)}"
|
|
MIPSPKGSFX_FPU = "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard' , '', '-nf', d)}"
|
|
MIPSPKGSFX_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'n32', '-n32', '', d)}"
|
|
MIPSPKGSFX_R6 = "${@bb.utils.filter('TUNE_FEATURES', 'r6', d)}"
|
|
MIPSPKGSFX_64R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', 'isa', '', d)}"
|
|
MIPSPKGSFX_32R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', 'isa32', '', d)}"
|
|
|
|
TUNE_ARCH = "mips${MIPSPKGSFX_32R6}${MIPSPKGSFX_64R6}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}"
|
|
TUNE_PKGARCH = "${MIPSPKGSFX_VARIANT:tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}"
|
|
|
|
# Various Global Machine Overrides
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64${MIPSPKGSFX_ENDIAN2}:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32${MIPSPKGSFX_ENDIAN2}:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32${MIPSPKGSFX_ENDIAN2}:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'o32', 'mipsarcho32:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n32', 'mipsarchn32:', '', d)}"
|
|
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'r6', 'mipsarchr6:', '', d)}"
|
|
MACHINEOVERRIDES =. "mipsarch${MIPSPKGSFX_ENDIAN2}:"
|
|
MACHINEOVERRIDES =. "mipsarch:"
|
|
|
|
# Base tunes
|
|
AVAILTUNES += "mips mips64-n32 mips64 mipsel mips64el-n32 mips64el mips-nf mips64-nf-n32 mips64-nf mipsel-nf mips64el-nf-n32 mips64el-nf"
|
|
TUNE_FEATURES:tune-mips = "o32 bigendian fpu-hard"
|
|
BASE_LIB:tune-mips = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips = "mips"
|
|
|
|
TUNE_FEATURES:tune-mips64-n32 = "n32 bigendian fpu-hard"
|
|
BASE_LIB:tune-mips64-n32 = "lib32"
|
|
MIPSPKGSFX_VARIANT:tune-mips64-n32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64-n32 = "mips64-n32"
|
|
|
|
TUNE_FEATURES:tune-mips64 = "n64 bigendian fpu-hard"
|
|
BASE_LIB:tune-mips64 = "lib64"
|
|
MIPSPKGSFX_VARIANT:tune-mips64 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64 = "mips64"
|
|
|
|
TUNE_FEATURES:tune-mipsel = "o32 fpu-hard"
|
|
BASE_LIB:tune-mipsel = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mipsel = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mipsel = "mipsel"
|
|
|
|
TUNE_FEATURES:tune-mips64el-n32 = "n32 fpu-hard"
|
|
BASE_LIB:tune-mips64el-n32 = "lib32"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el-n32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el-n32 = "mips64el-n32"
|
|
|
|
TUNE_FEATURES:tune-mips64el = "n64 fpu-hard"
|
|
BASE_LIB:tune-mips64el = "lib64"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el = "mips64el"
|
|
|
|
TUNE_FEATURES:tune-mips-nf = "o32 bigendian"
|
|
BASE_LIB:tune-mips-nf = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips-nf = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips-nf = "mips-nf"
|
|
|
|
TUNE_FEATURES:tune-mips64-nf-n32 = "n32 bigendian"
|
|
BASE_LIB:tune-mips64-nf-n32 = "lib32"
|
|
MIPSPKGSFX_VARIANT:tune-mips64-nf-n32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64-nf-n32 = "mips64-nf-n32"
|
|
|
|
TUNE_FEATURES:tune-mips64-nf = "n64 bigendian"
|
|
BASE_LIB:tune-mips64-nf = "lib64"
|
|
MIPSPKGSFX_VARIANT:tune-mips64-nf = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64-nf = "mips64-nf"
|
|
|
|
TUNE_FEATURES:tune-mipsel-nf = "o32"
|
|
BASE_LIB:tune-mipsel-nf = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mipsel-nf = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mipsel-nf = "mipsel-nf"
|
|
|
|
TUNE_FEATURES:tune-mips64el-nf-n32 = "n32"
|
|
BASE_LIB:tune-mips64el-nf-n32 = "lib32"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el-nf-n32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el-nf-n32 = "mips64el-nf-n32"
|
|
|
|
TUNE_FEATURES:tune-mips64el-nf = "n64"
|
|
BASE_LIB:tune-mips64el-nf = "lib64"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el-nf = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el-nf = "mips64el-nf"
|
|
|
|
# MIPS 64 + o32
|
|
AVAILTUNES += "mips64-o32 mips64el-o32"
|
|
|
|
TUNE_FEATURES:tune-mips64-o32 = "o32 bigendian fpu-hard"
|
|
BASE_LIB:tune-mips64-o32 = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips64-o32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64-o32 = "mips mips64-o32"
|
|
|
|
TUNE_FEATURES:tune-mips64el-o32 = "o32 fpu-hard"
|
|
BASE_LIB:tune-mips64el-o32 = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el-o32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el-o32 = "mipsel mips64el-o32"
|
|
|
|
# MIPS 64 o32 and Soft Float
|
|
AVAILTUNES += "mips64-nf-o32 mips64el-nf-o32"
|
|
|
|
TUNE_FEATURES:tune-mips64-nf-o32 = "o32 bigendian"
|
|
BASE_LIB:tune-mips64-nf-o32 = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips64-nf-o32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64-nf-o32 = "mips-nf mips64-nf-o32"
|
|
|
|
TUNE_FEATURES:tune-mips64el-nf-o32 = "o32"
|
|
BASE_LIB:tune-mips64el-nf-o32 = "lib"
|
|
MIPSPKGSFX_VARIANT:tune-mips64el-nf-o32 = "${TUNE_ARCH}"
|
|
PACKAGE_EXTRA_ARCHS:tune-mips64el-nf-o32 = "mipsel-nf mips64el-nf-o32"
|