From c0128c6d67f1519399f32b7066044c9794b349d6 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Thu, 26 Mar 2020 10:45:33 -0700 Subject: Define COMPATIBLE_HOST to prevent mix of Linux and Baremetal recipes The key is using COMPATIBLE_HOST to declare, for each recipe, which OS they are compatible with. This is a regex, so we need to carefully specify the arch/vendor wild cardscomponents so that we match only the OS parts. In the distro configuration, default to the standard Linux HOST_SYS setting. In the various baremetal recipes (or esw class) set the specific compatibility to allow baremetal recipes to build. Signed-off-by: Mark Hatle --- meta-xilinx-standalone/classes/esw.bbclass | 3 +++ meta-xilinx-standalone/conf/distro/xilinx-standalone.inc | 7 +++++++ meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend | 2 ++ meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend | 3 +++ meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend | 2 ++ .../packagegroups/packagegroup-newlib-standalone-sdk-target.bb | 2 ++ meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend | 2 ++ .../recipes-devtools/gcc/gcc-source_9.%.bbappend | 2 ++ meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend | 2 ++ .../recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend | 1 + meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend | 1 + 11 files changed, 27 insertions(+) create mode 100644 meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend create mode 100644 meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend diff --git a/meta-xilinx-standalone/classes/esw.bbclass b/meta-xilinx-standalone/classes/esw.bbclass index 31bbec72..4d33b654 100644 --- a/meta-xilinx-standalone/classes/esw.bbclass +++ b/meta-xilinx-standalone/classes/esw.bbclass @@ -28,6 +28,9 @@ ESW_CFLAGS += "-specs=${SPECFILE_PATH}" inherit ccmake +COMPATIBLE_HOST = ".*-elf" +COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi" + DTBFILE ?= "${RECIPE_SYSROOT}/boot/devicetree/system-top.dtb" def get_xlnx_cmake_machine(fam, d): diff --git a/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc b/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc index 18ce4da6..5c8ae67a 100644 --- a/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc +++ b/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc @@ -24,6 +24,13 @@ INHERIT += "buildhistory" # Cortex R5 requires an additional cflag to be passed for compatibility with the embeddedsw TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr5', ' -DARMR5', '', d)}" +# Make sure all regular recipes are excluded from compatibility +# Avoid using this for native, nativesdk or cross recipes +COMPATOS = "" +# Set the regex for target recipes only, follow TARGET_OS default +COMPATOS_class-target = ".*-linux${LIBCEXTENSION}${ABIEXTENSION}" +COMPATIBLE_HOST ?= "${COMPATOS}" + # Clear defaults DISTRO_FEATURES_BACKFILL_xilinx-standalone = "" VIRTUAL-RUNTIME_init_manager_xilinx-standalone = "" diff --git a/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend b/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend index 0b4812d0..51b70035 100644 --- a/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend +++ b/meta-xilinx-standalone/recipes-core/meta/meta-toolchain.bbappend @@ -1 +1,3 @@ +COMPATIBLE_HOST = "${HOST_SYS}" + TOOLCHAIN_TARGET_TASK_xilinx-standalone = "${@multilib_pkg_extend(d, 'packagegroup-newlib-standalone-sdk-target')}" diff --git a/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend b/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend index c5dda818..b2245022 100644 --- a/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend +++ b/meta-xilinx-standalone/recipes-core/newlib/libgloss_3.1.0.bbappend @@ -1,3 +1,6 @@ +COMPATIBLE_HOST = ".*-elf" +COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi" + # When building multiple, we need to depend on the multilib newlib DEPENDS_append_xilinx-standalone = " ${MLPREFIX}newlib" diff --git a/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend b/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend index d57f97b1..536a23a1 100644 --- a/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend +++ b/meta-xilinx-standalone/recipes-core/newlib/newlib_3.1.0.bbappend @@ -1,3 +1,5 @@ +COMPATIBLE_HOST = ".*-elf" +COMPATIBLE_HOST_arm = "[^-]*-[^-]*-eabi" EXTRA_OECONF_append_xilinx-standalone = " \ --enable-newlib-io-c99-formats \ diff --git a/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb b/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb index d943938b..b64554d3 100644 --- a/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb +++ b/meta-xilinx-standalone/recipes-core/packagegroups/packagegroup-newlib-standalone-sdk-target.bb @@ -1,3 +1,5 @@ +COMPATIBLE_HOST = "${HOST_SYS}" + SUMMARY = "Target packages for the standalone SDK" PACKAGE_ARCH = "${TUNE_PKGARCH}" diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend index 0d25e066..7d177efe 100644 --- a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend +++ b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-runtime_%.bbappend @@ -1,3 +1,5 @@ +COMPATIBLE_HOST = "${HOST_SYS}" + # Copy of gcc-xilinx-standalone.inc, but with _class-target added LINKER_HASH_STYLE_xilinx-standalone_class-target = "" SYMVERS_CONF_xilinx-standalone_class-target = "" diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend index 1a75e000..6a4a8c5a 100644 --- a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend +++ b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend @@ -1,3 +1,5 @@ +COMPATIBLE_HOST = "${HOST_SYS}" + # Add MicroBlaze Patches (only when using MicroBlaze) FILESEXTRAPATHS_append_microblaze_xilinx-standalone := ":${THISDIR}/gcc-9" SRC_URI_append_microblaze_xilinx-standalone = " \ diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend b/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend index e6801c2f..e0f28915 100644 --- a/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend +++ b/meta-xilinx-standalone/recipes-devtools/gcc/libgcc_%.bbappend @@ -1,3 +1,5 @@ +COMPATIBLE_HOST = "${HOST_SYS}" + python do_multilib_install_xilinx-standalone_class-target () { pass } diff --git a/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend b/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend new file mode 100644 index 00000000..0d824324 --- /dev/null +++ b/meta-xilinx-standalone/recipes-devtools/qemu/qemuwrapper-cross_1.0.bbappend @@ -0,0 +1 @@ +COMPATIBLE_HOST = "${HOST_SYS}" diff --git a/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend b/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend new file mode 100644 index 00000000..0d824324 --- /dev/null +++ b/meta-xilinx-standalone/recipes-kernel/linux/linux-dummy.bbappend @@ -0,0 +1 @@ +COMPATIBLE_HOST = "${HOST_SYS}" -- cgit v1.2.3-54-g00ecf