* [PATCH 0/5] Support for "baremetal" toolchains
@ 2015-08-22 16:55 Juro Bystricky
2015-08-22 16:55 ` [PATCH 1/5] tclibc-baremetal.inc: baremetal specific distro policy file Juro Bystricky
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
These patches allow building "baremetal" images, in particular
"baremetal" cross-compilers. The cross-compilers make no assumtions about
target OS and come with no "C" libraries.
I tested the patches with the following in local.conf:
PACKAGE_CLASSES="package_ipk"
SDKMACHINE="i686"
TCLIBC="baremetal"
MACHINE="qemuarm"
MACHINE="qemux86"
GCCVERSION="5.2.0"
GCCVERSION="4.9.3"
The patches are based on the original work by Richard Purdie.
Juro Bystricky (5):
tclibc-baremetal.inc: baremetal specific distro policy file
gcc-cross-canadian.inc: overrides for libc-baremetal
gcc-cross.inc: overrides for libc-baremetal
libgcc-common.inc: overrides for libc-baremetal
cross-canadian.bbclass: support for TCLIBC="baremetal"
meta/classes/cross-canadian.bbclass | 3 +++
meta/conf/distro/include/tclibc-baremetal.inc | 32 ++++++++++++++++++++++++
meta/recipes-devtools/gcc/gcc-cross-canadian.inc | 4 +++
meta/recipes-devtools/gcc/gcc-cross.inc | 4 +++
meta/recipes-devtools/gcc/libgcc-common.inc | 6 +++++
5 files changed, 49 insertions(+)
create mode 100644 meta/conf/distro/include/tclibc-baremetal.inc
--
1.9.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/5] tclibc-baremetal.inc: baremetal specific distro policy file
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
@ 2015-08-22 16:55 ` Juro Bystricky
2015-08-22 16:55 ` [PATCH 2/5] gcc-cross-canadian.inc: overrides for libc-baremetal Juro Bystricky
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
Support for TCLIBC="baremetal".
Allows building "baremetal" toolchains.
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
meta/conf/distro/include/tclibc-baremetal.inc | 32 +++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 meta/conf/distro/include/tclibc-baremetal.inc
diff --git a/meta/conf/distro/include/tclibc-baremetal.inc b/meta/conf/distro/include/tclibc-baremetal.inc
new file mode 100644
index 0000000..a8ce6d3
--- /dev/null
+++ b/meta/conf/distro/include/tclibc-baremetal.inc
@@ -0,0 +1,32 @@
+#
+# baremetal configuration
+#
+
+LIBCEXTENSION = ""
+
+# Add baremetal libc overrides to the overrides.
+LIBCOVERRIDE = ":libc-baremetal"
+OVERRIDES .= "${LIBCOVERRIDE}"
+
+ASSUME_PROVIDED += "virtual/libc virtual/libiconv"
+
+PREFERRED_PROVIDER_virtual/libc ?= "musl"
+PREFERRED_PROVIDER_virtual/libiconv ?= "musl"
+PREFERRED_PROVIDER_virtual/libintl ?= "gettext"
+PREFERRED_PROVIDER_virtual/nativesdk-libintl ?= "nativesdk-glibc"
+PREFERRED_PROVIDER_virtual/nativesdk-libiconv ?= "nativesdk-glibc"
+
+USE_NLS ?= "no"
+IMAGE_LINGUAS = ""
+LIBC_DEPENDENCIES = ""
+
+EXTRA_OECONF_pn-gcc-cross-${TARGET_ARCH}_append = " --without-headers"
+DEPENDS_remove_pn-meta-toolchain = "virtual/libc virtual/${TARGET_PREFIX}compilerlibs"
+
+TARGET_OS = "elf"
+TARGET_OS_arm = "eabi"
+
+TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE}"
+TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
+TOOLCHAIN_TARGET_TASK ?= "libgcc-dev"
+TOOLCHAIN_NEED_CONFIGSITE_CACHE_remove = "virtual/${MLPREFIX}libc zlib ncurses"
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/5] gcc-cross-canadian.inc: overrides for libc-baremetal
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
2015-08-22 16:55 ` [PATCH 1/5] tclibc-baremetal.inc: baremetal specific distro policy file Juro Bystricky
@ 2015-08-22 16:55 ` Juro Bystricky
2015-08-22 16:55 ` [PATCH 3/5] gcc-cross.inc: " Juro Bystricky
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
Modify configure arguments (EXTRA_OECONF) to support build for
TCLIBC="baremetal"
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
meta/recipes-devtools/gcc/gcc-cross-canadian.inc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
index 07ecfee..54e4881 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
@@ -169,5 +169,9 @@ EXTRA_OECONF += "\
--with-mpc=${STAGING_DIR_HOST}${layout_exec_prefix} \
"
+EXTRA_OECONF_append_libc-baremetal = " --without-headers"
+EXTRA_OECONF_remove_libc-baremetal = "--with-sysroot=/not/exist"
+EXTRA_OECONF_remove_libc-baremetal = "--with-build-sysroot=${STAGING_DIR_TARGET}"
+
# gcc 4.7 needs -isystem
export ARCH_FLAGS_FOR_TARGET = "--sysroot=${STAGING_DIR_TARGET} -isystem=${target_includedir}"
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] gcc-cross.inc: overrides for libc-baremetal
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
2015-08-22 16:55 ` [PATCH 1/5] tclibc-baremetal.inc: baremetal specific distro policy file Juro Bystricky
2015-08-22 16:55 ` [PATCH 2/5] gcc-cross-canadian.inc: overrides for libc-baremetal Juro Bystricky
@ 2015-08-22 16:55 ` Juro Bystricky
2015-08-22 16:55 ` [PATCH 4/5] libgcc-common.inc: " Juro Bystricky
2015-08-22 16:55 ` [PATCH 5/5] cross-canadian.bbclass: support for TCLIBC="baremetal" Juro Bystricky
4 siblings, 0 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
Modifications to to support build for TCLIBC="baremetal"
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
meta/recipes-devtools/gcc/gcc-cross.inc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc
index 9792950..aa10633 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -24,6 +24,10 @@ EXTRA_OECONF += "\
--with-system-zlib \
"
+DEPENDS_remove_libc-baremetal := "virtual/${TARGET_PREFIX}libc-for-gcc"
+EXTRA_OECONF_append_libc-baremetal = " --without-headers"
+EXTRA_OECONF_remove_libc-baremetal = "--enable-threads=posix"
+
EXTRA_OECONF_PATHS = "\
--with-gxx-include-dir=/not/exist${target_includedir}/c++/${BINV} \
--with-sysroot=/not/exist \
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/5] libgcc-common.inc: overrides for libc-baremetal
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
` (2 preceding siblings ...)
2015-08-22 16:55 ` [PATCH 3/5] gcc-cross.inc: " Juro Bystricky
@ 2015-08-22 16:55 ` Juro Bystricky
2015-08-22 16:55 ` [PATCH 5/5] cross-canadian.bbclass: support for TCLIBC="baremetal" Juro Bystricky
4 siblings, 0 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
Added TCLIBC="baremetal" specific overrides.
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
meta/recipes-devtools/gcc/libgcc-common.inc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index 22da03b..b09ea65 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -45,6 +45,12 @@ do_install () {
rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include
}
+do_install_append_libc-baremetal () {
+ rmdir ${D}${base_libdir}
+}
+
+RDEPENDS_${PN}-dev_libc-baremetal = ""
+
BBCLASSEXTEND = "nativesdk"
addtask multilib_install after do_install before do_package do_populate_sysroot
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] cross-canadian.bbclass: support for TCLIBC="baremetal"
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
` (3 preceding siblings ...)
2015-08-22 16:55 ` [PATCH 4/5] libgcc-common.inc: " Juro Bystricky
@ 2015-08-22 16:55 ` Juro Bystricky
4 siblings, 0 replies; 6+ messages in thread
From: Juro Bystricky @ 2015-08-22 16:55 UTC (permalink / raw)
To: openembedded-core, jurobystricky
Allow "baremetal" builds.
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
---
meta/classes/cross-canadian.bbclass | 3 +++
1 file changed, 3 insertions(+)
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index 80fb472..65ba457 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -29,6 +29,9 @@ python () {
if d.getVar("MODIFYTOS", True) != "1":
return
+ if d.getVar("TCLIBC", True) == "baremetal":
+ return
+
tos = d.getVar("TARGET_OS", True)
whitelist = []
for variant in ["", "spe", "x32", "eabi", "n32"]:
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-08-22 17:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-22 16:55 [PATCH 0/5] Support for "baremetal" toolchains Juro Bystricky
2015-08-22 16:55 ` [PATCH 1/5] tclibc-baremetal.inc: baremetal specific distro policy file Juro Bystricky
2015-08-22 16:55 ` [PATCH 2/5] gcc-cross-canadian.inc: overrides for libc-baremetal Juro Bystricky
2015-08-22 16:55 ` [PATCH 3/5] gcc-cross.inc: " Juro Bystricky
2015-08-22 16:55 ` [PATCH 4/5] libgcc-common.inc: " Juro Bystricky
2015-08-22 16:55 ` [PATCH 5/5] cross-canadian.bbclass: support for TCLIBC="baremetal" Juro Bystricky
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.