The LLVM toolchain shall now be selected by setting the TOOLCHAIN variable within the recipe or globally in .conf file. The idea is that one will be able to toggle between GCC/LLVM in the future. There is no detailed spec on how this will exactly work at this point in time.
Signed-off-by: Pawel Zalewski pzalewski@thegoodpenguin.co.uk --- .../classes/gcc-morello.bbclass | 1 + .../classes/llvm-morello-native.bbclass | 47 ------------------- .../classes/llvm-morello.bbclass | 43 +++++++++++++++++ .../conf/compiler/gcc-morello.conf | 1 + .../conf/compiler/llvm-morello.conf | 1 + meta-morello-toolchain/conf/layer.conf | 20 +++++--- meta-morello/conf/layer.conf | 5 +- meta-morello/conf/machine/morello-fvp.conf | 1 + meta-morello/conf/machine/morello-soc.conf | 1 + 9 files changed, 64 insertions(+), 56 deletions(-) create mode 100644 meta-morello-toolchain/classes/gcc-morello.bbclass delete mode 100644 meta-morello-toolchain/classes/llvm-morello-native.bbclass create mode 100644 meta-morello-toolchain/classes/llvm-morello.bbclass create mode 100644 meta-morello-toolchain/conf/compiler/gcc-morello.conf create mode 100644 meta-morello-toolchain/conf/compiler/llvm-morello.conf
diff --git a/meta-morello-toolchain/classes/gcc-morello.bbclass b/meta-morello-toolchain/classes/gcc-morello.bbclass new file mode 100644 index 0000000..c66ac6a --- /dev/null +++ b/meta-morello-toolchain/classes/gcc-morello.bbclass @@ -0,0 +1 @@ +# tbc \ No newline at end of file diff --git a/meta-morello-toolchain/classes/llvm-morello-native.bbclass b/meta-morello-toolchain/classes/llvm-morello-native.bbclass deleted file mode 100644 index 3c1b9d3..0000000 --- a/meta-morello-toolchain/classes/llvm-morello-native.bbclass +++ /dev/null @@ -1,47 +0,0 @@ -MORELLO_COMPILER = "llvm-morello-native" - -LLVM_VERSION = "13.0.0" - -LLVM_PATH = "${STAGING_DIR_NATIVE}/usr/bin" - -INHIBIT_DEFAULT_DEPS = "1" - -DEPENDS += "virtual/llvm-morello-native" -DEPENDS:append:morello-fvp:class-target = " virtual/musl-morello-libs-native" -DEPENDS:append:morello-soc:class-target = " virtual/musl-morello-libs-native" - -# rough hack to deal with llvm-morello not being a proper toolchain in its own meta yet -DEPENDS:remove = "libgcc" - -do_configure[depends] += " ${@get_depends(d)}" - -LIBCPLUSPLUS = "-stdlib-libc++" - -export CC = "${LLVM_PATH}/clang" -export CXX = "${LLVM_PATH}/clang++" -export CPP = "${LLVM_PATH}/clang -E" -export CCLD = "${LLVM_PATH}/clang" -export RANLIB = "${LLVM_PATH}/llvm-ranlib" -export AR = "${LLVM_PATH}/llvm-ar" -export AS = "${LLVM_PATH}/llvm-as" -export NM = "${LLVM_PATH}/llvm-nm" -export OBJDUMP = "${LLVM_PATH}/llvm-objdump" -export OBJCOPY = "${LLVM_PATH}/llvm-objcopy" -export STRIP = "${LLVM_PATH}/llvm-strip" -export STRINGS = "${LLVM_PATH}/llvm-strings" -export READELF = "${LLVM_PATH}/llvm-readelf" -export LD = "${LLVM_PATH}/ld.lld" -export LTO = "-fuse-ld=lld" -export HOSTCC = "${LLVM_PATH}/clang" -export LLVM_CONFIG = "${LLVM_PATH}/llvm-config" - -def get_depends(d): - if d.getVar('DEPENDENCIES'): - return "llvm-morello-native:do_populate_sysroot" - else: - return "llvm-morello-native:do_populate_sysroot virtual/musl-morello:do_populate_sysroot" - -DEPENDENCIES:kernel = "1" -DEPENDENCIES:musl = "1" -DEPENDENCIES:musl-morello-native = "1" -DEPENDENCIES ?= "0" \ No newline at end of file diff --git a/meta-morello-toolchain/classes/llvm-morello.bbclass b/meta-morello-toolchain/classes/llvm-morello.bbclass new file mode 100644 index 0000000..7f69763 --- /dev/null +++ b/meta-morello-toolchain/classes/llvm-morello.bbclass @@ -0,0 +1,43 @@ +OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}" +OVERRIDES[vardepsexclude] += "TOOLCHAIN" + +# var default init +LLVM_PATH ??= "" +LLVM_VERSION ??= "" +LLVM_CONFIG ??= "" +LIBCPLUSPLUS ??= "" +TC_DEPENDS ??= "" + +LLVM_VERSION:toolchain-llvm-morello = "13.0.0" +LLVM_PATH:toolchain-llvm-morello = "${STAGING_DIR_NATIVE}/usr/bin" + +INHIBIT_DEFAULT_DEPS:toolchain-llvm-morello = "1" + +TC_DEPENDS:append:toolchain-llvm-morello = " virtual/llvm-morello-native" +TC_DEPENDS:append:toolchain-llvm-morello:class-target = " virtual/llvm-morello-runtime-native virtual/musl-morello" + +DEPENDS:append:toolchain-llvm-morello = "${TC_DEPENDS}" + +# leaving out ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} for now; +# -target is set kind off backwards inside the recipes until further notice +CC:toolchain-llvm-morello = "${LLVM_PATH}/clang" +CXX:toolchain-llvm-morello = "${LLVM_PATH}/clang++" +CPP:toolchain-llvm-morello = "${LLVM_PATH}/clang -E" +CCLD:toolchain-llvm-morello = "${LLVM_PATH}/clang" +HOSTCC:toolchain-llvm-morello = "${LLVM_PATH}/clang" +RANLIB:toolchain-llvm-morello = "${LLVM_PATH}/llvm-ranlib" +AR:toolchain-llvm-morello = "${LLVM_PATH}/llvm-ar" +AS:toolchain-llvm-morello = "${LLVM_PATH}/llvm-as" +NM:toolchain-llvm-morello = "${LLVM_PATH}/llvm-nm" +OBJDUMP:toolchain-llvm-morello = "${LLVM_PATH}/llvm-objdump" +OBJCOPY:toolchain-llvm-morello = "${LLVM_PATH}/llvm-objcopy" +STRIP:toolchain-llvm-morello = "${LLVM_PATH}/llvm-strip" +STRINGS:toolchain-llvm-morello = "${LLVM_PATH}/llvm-strings" +READELF:toolchain-llvm-morello = "${LLVM_PATH}/llvm-readelf" +LD:toolchain-llvm-morello = "${LLVM_PATH}/ld.lld" +LTO:toolchain-llvm-morello = "-fuse-ld=lld" +LLVM_CONFIG:toolchain-llvm-morello = "${LLVM_PATH}/llvm-config" + +export ${LLVM_CONFIG} + +DEPENDS:remove:toolchain-llvm-morello = "libgcc" diff --git a/meta-morello-toolchain/conf/compiler/gcc-morello.conf b/meta-morello-toolchain/conf/compiler/gcc-morello.conf new file mode 100644 index 0000000..b4396de --- /dev/null +++ b/meta-morello-toolchain/conf/compiler/gcc-morello.conf @@ -0,0 +1 @@ +INHERIT += "gcc-morello" \ No newline at end of file diff --git a/meta-morello-toolchain/conf/compiler/llvm-morello.conf b/meta-morello-toolchain/conf/compiler/llvm-morello.conf new file mode 100644 index 0000000..cd960c6 --- /dev/null +++ b/meta-morello-toolchain/conf/compiler/llvm-morello.conf @@ -0,0 +1 @@ +INHERIT += "llvm-morello" \ No newline at end of file diff --git a/meta-morello-toolchain/conf/layer.conf b/meta-morello-toolchain/conf/layer.conf index 9e2d46e..e40e76d 100644 --- a/meta-morello-toolchain/conf/layer.conf +++ b/meta-morello-toolchain/conf/layer.conf @@ -1,14 +1,22 @@ -BBPATH := "${BBPATH}:${LAYERDIR}" +BBPATH .= ":${LAYERDIR}"
-BBFILES := "${BBFILES} \ - ${LAYERDIR}/recipes-*/*/*.bb \ +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend"
-BBFILE_COLLECTIONS += "meta-morello-toolchain" -BBFILE_PATTERN_meta-morello-toolchain := "^${LAYERDIR}/" -BBFILE_PRIORITY_meta-morello-toolchain = "5" +BBFILE_COLLECTIONS += "meta-morello-toolchain" +BBFILE_PATTERN_meta-morello-toolchain := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-morello-toolchain = "5"
LAYERDEPENDS_meta-morello-toolchain = " \ core \ " LAYERSERIES_COMPAT_meta-morello-toolchain = "kirkstone" + +MORELLO_ARCH ??= "c64" +TOOLCHAIN ??= "gnu" +MORELLO_TOOLCHAIN ??= "gcc-morello" + +LLVM_SHARED_SOURCE ??= "${TMPDIR}/work-shared/${MACHINE}/llvm-morello-source" + +require conf/compiler/gcc-morello.conf +require conf/compiler/llvm-morello.conf \ No newline at end of file diff --git a/meta-morello/conf/layer.conf b/meta-morello/conf/layer.conf index 7abd8d5..7ea9a43 100644 --- a/meta-morello/conf/layer.conf +++ b/meta-morello/conf/layer.conf @@ -1,7 +1,6 @@ -BBPATH := "${BBPATH}:${LAYERDIR}" +BBPATH .= ":${LAYERDIR}"
-BBFILES := "${BBFILES} \ - ${LAYERDIR}/recipes-*/*/*.bb \ +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "meta-morello" diff --git a/meta-morello/conf/machine/morello-fvp.conf b/meta-morello/conf/machine/morello-fvp.conf index 2ec03d3..f9ead8d 100644 --- a/meta-morello/conf/machine/morello-fvp.conf +++ b/meta-morello/conf/machine/morello-fvp.conf @@ -13,6 +13,7 @@ BSP_DTB_DIR ?= "${TMPDIR}/deploy/images/morello-fvp"
TMPDIR = "${TOPDIR}/tmp-fvp"
+MORELLO_TOOLCHAIN = "llvm-morello" MUSL_INSTALL_DIR ?= "${libdir}/${GLOBAL_ARCH_TRIPLE}"
IMAGE_BASENAME = "rootfs" diff --git a/meta-morello/conf/machine/morello-soc.conf b/meta-morello/conf/machine/morello-soc.conf index cc8e6de..cafdcc9 100644 --- a/meta-morello/conf/machine/morello-soc.conf +++ b/meta-morello/conf/machine/morello-soc.conf @@ -13,6 +13,7 @@ BSP_DTB_DIR ?= "${TMPDIR}/deploy/images/morello-soc"
TMPDIR = "${TOPDIR}/tmp-soc"
+MORELLO_TOOLCHAIN = "llvm-morello" MUSL_INSTALL_DIR ?= "${libdir}/${GLOBAL_ARCH_TRIPLE}"
IMAGE_BASENAME = "rootfs"