All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.