# This file was auto-generated by support/scripts/gen-bootlin-toolchains
# Do not edit
from tests.toolchain.test_external import TestExternalToolchain


class TestExternalToolchainBootlinAarch64GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64GlibcStable(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64MuslStable(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64UclibcStable(TestExternalToolchain):
    config = """
        BR2_aarch64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64beGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_aarch64_be=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64_be-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64beGlibcStable(TestExternalToolchain):
    config = """
        BR2_aarch64_be=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64_be-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64beUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_aarch64_be=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64_be-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinAarch64beUclibcStable(TestExternalToolchain):
    config = """
        BR2_aarch64_be=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "aarch64_be-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArcle750dUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_arc750d=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArcle750dUclibcStable(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_arc750d=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArclehs38GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_archs38=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArclehs38GlibcStable(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_archs38=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArclehs38UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_archs38=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArclehs38UclibcStable(TestExternalToolchain):
    config = """
        BR2_arcle=y
        BR2_archs38=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiGlibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiMuslStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv5eabiUclibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm926t=y
        BR2_ARM_EABI=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfGlibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfMuslStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv6eabihfUclibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_arm1176jzf_s=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfGlibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfMuslStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7eabihfUclibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_a8=y
        BR2_ARM_EABIHF=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7mUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_m4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinArmv7mUclibcStable(TestExternalToolchain):
    config = """
        BR2_arm=y
        BR2_cortex_m4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "arm-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinM68k68xxxUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_m68k=y
        BR2_m68k_68040=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "m68k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinM68k68xxxUclibcStable(TestExternalToolchain):
    config = """
        BR2_m68k=y
        BR2_m68k_68040=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "m68k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinM68kcoldfireUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_m68k=y
        BR2_m68k_cf5208=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "m68k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinM68kcoldfireUclibcStable(TestExternalToolchain):
    config = """
        BR2_m68k=y
        BR2_m68k_cf5208=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "m68k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeGlibcStable(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeMuslStable(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazebeUclibcStable(TestExternalToolchain):
    config = """
        BR2_microblazebe=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblaze-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelGlibcStable(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelMuslStable(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMicroblazeelUclibcStable(TestExternalToolchain):
    config = """
        BR2_microblazeel=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "microblazeel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32GlibcStable(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32MuslStable(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32UclibcStable(TestExternalToolchain):
    config = """
        BR2_mips=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elGlibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elMuslStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32elUclibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elGlibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elMuslStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r5elUclibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r5=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elGlibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elMuslStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips32r6elUclibcStable(TestExternalToolchain):
    config = """
        BR2_mipsel=y
        BR2_mips_32r6=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mipsel-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32GlibcStable(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32MuslStable(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64n32UclibcStable(TestExternalToolchain):
    config = """
        BR2_mips64=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32GlibcStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32MuslStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64eln32UclibcStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32GlibcStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32MuslStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinMips64r6eln32UclibcStable(TestExternalToolchain):
    config = """
        BR2_mips64el=y
        BR2_mips_64r6=y
        BR2_MIPS_NABI32=y
        # BR2_MIPS_SOFT_FLOAT is not set
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "mips64el-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinNios2GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_nios2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "nios2-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinNios2GlibcStable(TestExternalToolchain):
    config = """
        BR2_nios2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "nios2-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinOpenriscMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_or1k=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "or1k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinOpenriscMuslStable(TestExternalToolchain):
    config = """
        BR2_or1k=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "or1k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinOpenriscUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_or1k=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "or1k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinOpenriscUclibcStable(TestExternalToolchain):
    config = """
        BR2_or1k=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "or1k-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpGlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpMuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc440fpUclibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_440fp=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3GlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3MuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce300c3UclibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e300c3=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcGlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcMuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcUclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpce500mcUclibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc=y
        BR2_powerpc_e500mc=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e5500GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e5500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e5500GlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e5500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e6500GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e6500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e6500GlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e6500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e6500MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e6500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64e6500MuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_e6500=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64power8GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64power8GlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64power8MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64power8MuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc64=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64lepower8GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64le=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64le-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64lepower8GlibcStable(TestExternalToolchain):
    config = """
        BR2_powerpc64le=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64le-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64lepower8MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_powerpc64le=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64le-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinPowerpc64lepower8MuslStable(TestExternalToolchain):
    config = """
        BR2_powerpc64le=y
        BR2_powerpc_power8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "powerpc64le-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinRiscv32ilp32dGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_riscv=y
        BR2_riscv_g=y
        BR2_RISCV_32=y
        BR2_RISCV_ABI_ILP32D=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "riscv32-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinRiscv64GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_riscv=y
        BR2_riscv_g=y
        BR2_RISCV_64=y
        BR2_RISCV_ABI_LP64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "riscv64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinRiscv64MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_riscv=y
        BR2_riscv_g=y
        BR2_RISCV_64=y
        BR2_RISCV_ABI_LP64=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "riscv64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4GlibcStable(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4MuslStable(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4UclibcStable(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4aebGlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4aeb=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4aeb-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4aebGlibcStable(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4aeb=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4aeb-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4aebMuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4aeb=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4aeb-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinShsh4aebMuslStable(TestExternalToolchain):
    config = """
        BR2_sh=y
        BR2_sh4aeb=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sh4aeb-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinSparc64GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sparc64=y
        BR2_sparc_v9=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sparc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinSparc64GlibcStable(TestExternalToolchain):
    config = """
        BR2_sparc64=y
        BR2_sparc_v9=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sparc64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinSparcv8UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_sparc=y
        BR2_sparc_v8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sparc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinSparcv8UclibcStable(TestExternalToolchain):
    config = """
        BR2_sparc=y
        BR2_sparc_v8=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "sparc-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7GlibcStable(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7MuslStable(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX8664corei7UclibcStable(TestExternalToolchain):
    config = """
        BR2_x86_64=y
        BR2_x86_corei7=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "x86_64-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2GlibcStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2MuslStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86core2UclibcStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_core2=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686GlibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686GlibcStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686MuslBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686MuslStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinX86i686UclibcStable(TestExternalToolchain):
    config = """
        BR2_i386=y
        BR2_x86_i686=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "i686-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinXtensalx60UclibcBleedingEdge(TestExternalToolchain):
    config = """
        BR2_xtensa=y
        BR2_xtensa_fsf=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "xtensa-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)


class TestExternalToolchainBootlinXtensalx60UclibcStable(TestExternalToolchain):
    config = """
        BR2_xtensa=y
        BR2_xtensa_fsf=y
        BR2_TOOLCHAIN_EXTERNAL=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y
        # BR2_TARGET_ROOTFS_TAR is not set
        """
    toolchain_prefix = "xtensa-linux"

    def test_run(self):
        TestExternalToolchain.common_check(self)
