add klibc infrastructure for crosscompiling
cover add klibc infrastructure for crosscompiling
* We don't consider the case of an SDK yet.
*
* from org.openembedded.dev
* reworked in meta-smartphones/meta-zaurus
*
* Klibc builds against kernel headers thuus is machine-specific.
* The crosscompiler, though, is just a perl wrapper around gcc-cross
* so can have the very same arch.
*
* Initial commit for meta-oe
* Some minor packaging issues (klibc-static-utils-dev.ipk and
* klibc-static-utils-dbg.ipk are empty and should not be packaged)
Andrea Adami (2):
klibc: initial commit
klibc.bbclass: shared include for building against klibc
meta-oe/classes/klibc.bbclass | 9 + .../recipes-devtools/klibc/klcc-cross_1.5.24.bb | 33 + .../klibc/klibc-1.5.24/dash_readopt.patch | 111 ++ .../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 + .../klibc/klibc-1.5.24/klcc_prefix.patch | 24 + .../klibc/klibc-1.5.24/klibc-config-eabi.patch | 14 + .../klibc/klibc-1.5.24/modprobe.patch | 1984 ++++++++++++++++++++ .../klibc/klibc-1.5.24/no_strip.patch | 36 + .../klibc/klibc-1.5.24/socket.h.patch | 31 + .../klibc/klibc-1.5.24/staging.patch | 153 ++ .../klibc/klibc-1.5.24/use-env-for-perl.patch | 25 + .../recipes-devtools/klibc/klibc-1.5.24/wc.patch | 245 +++ .../klibc/klibc-checksums_1.5.24.inc | 2 + .../klibc/klibc-static-utils_1.5.24.bb | 17 + meta-oe/recipes-devtools/klibc/klibc-utils.inc | 64 + meta-oe/recipes-devtools/klibc/klibc.inc | 50 + meta-oe/recipes-devtools/klibc/klibc_1.5.24.bb | 40 + 17 files changed, 2912 insertions(+), 0 deletions(-) create mode 100644 meta-oe/classes/klibc.bbclass create mode 100644 meta-oe/recipes-devtools/klibc/klcc-cross_1.5.24.bb create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/dash_readopt.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/fstype-sane-vfat-and-jffs2-for-1.5.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/klcc_prefix.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/klibc-config-eabi.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/modprobe.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/no_strip.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/socket.h.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/staging.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/use-env-for-perl.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/wc.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.24.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.24.bb create mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc_1.5.24.bb
Signature · 1 line
1.7.3.4
PATCH 1/2 klibc: initial commit of version 1.5.24
* from org.openembedded.dev
* reworked in meta-smartphones/meta-zaurus
--- .../recipes-devtools/klibc/klcc-cross_1.5.24.bb | 33 + .../klibc/klibc-1.5.24/dash_readopt.patch | 111 ++ .../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 + .../klibc/klibc-1.5.24/klcc_prefix.patch | 24 + .../klibc/klibc-1.5.24/klibc-config-eabi.patch | 14 + .../klibc/klibc-1.5.24/modprobe.patch | 1984 ++++++++++++++++++++ .../klibc/klibc-1.5.24/no_strip.patch | 36 + .../klibc/klibc-1.5.24/socket.h.patch | 31 + .../klibc/klibc-1.5.24/staging.patch | 153 ++ .../klibc/klibc-1.5.24/use-env-for-perl.patch | 25 + .../recipes-devtools/klibc/klibc-1.5.24/wc.patch | 245 +++ .../klibc/klibc-checksums_1.5.24.inc | 2 + .../klibc/klibc-static-utils_1.5.24.bb | 17 + meta-oe/recipes-devtools/klibc/klibc-utils.inc | 64 + meta-oe/recipes-devtools/klibc/klibc.inc | 50 + meta-oe/recipes-devtools/klibc/klibc_1.5.24.bb | 40 + 16 files changed, 2903 insertions(+), 0 deletions(-) create mode 100644 meta-oe/recipes-devtools/klibc/klcc-cross_1.5.24.bb create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/dash_readopt.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/fstype-sane-vfat-and-jffs2-for-1.5.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/klcc_prefix.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/klibc-config-eabi.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/modprobe.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/no_strip.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/socket.h.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/staging.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/use-env-for-perl.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.24/wc.patch create mode 100644 meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.24.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.24.bb create mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc.inc create mode 100644 meta-oe/recipes-devtools/klibc/klibc_1.5.24.bb
meta-oe/recipes-devtools/klibc/klcc-cross_1.5.24.bb new file +33 -0
@@ -0,0 +1,33 @@ +PR = "${INC_PR}.0" + +require klibc.inc +require klibc-checksums_${PV}.inc + +export KLCC_INST = "${STAGING_DIR_TARGET}/lib/klibc" + +SRC_URI += "file://klcc_prefix.patch \ + file://use-env-for-perl.patch" + +DEPENDS = "klibc" + +FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" + +# ${TARGET_PREFIX}klcc is just a +# perl wrapper around gcc-cross +# so give it the same arch and path +PACKAGE_ARCH = "${TUNE_PKGARCH}" + +inherit cross + +do_configure () { + : +} + +do_compile() { + oe_runmake klcc +} + +do_install() { + install -d ${D}${base_bindir} + install -m 0755 klcc/klcc ${D}${base_bindir}/${TARGET_PREFIX}klcc +}
meta-oe/recipes-devtools/klibc/klibc-1.5.24/dash_readopt.patch new file +111 -0
111 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc-1.5.24/fstype-sane-vfat-and-jffs2-for-1.5.patch new file +74 -0
74 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc-1.5.24/klcc_prefix.patch new file +24 -0
@@ -0,0 +1,24 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id a29bf15b9c9c0d15f96c254b2ed830e104ae3436 +Signed-off-by: Andrea Adami <[email protected]> + +Index: klibc-1.5.19/klcc/Kbuild +=================================================================== +--- --- klibc-1.5.19.orig/klcc/Kbuild 2010-07-07 14:07:48.000000000 +0200 ++++ --- klibc-1.5.19./klcc/Kbuild 2010-08-18 23:39:23.000000000 +0200 +@@ -22,10 +22,10 @@ + $(Q)echo 'EMAIN=$(KLIBCEMAIN)' >> $@ + $(Q)echo 'BITSIZE=$(KLIBCBITSIZE)' >> $@ + $(Q)echo 'VERSION=$(shell cat $(srctree)/usr/klibc/version)' >> $@ +- $(Q)echo 'prefix=$(INSTALLDIR)' >> $@ +- $(Q)echo 'bindir=$(INSTALLDIR)/$(KCROSS)bin' >> $@ +- $(Q)echo 'libdir=$(INSTALLDIR)/$(KCROSS)lib' >> $@ +- $(Q)echo 'includedir=$(INSTALLDIR)/$(KCROSS)include' >> $@ ++ $(Q)echo 'prefix=$(KLCC_INST)' >> $@ ++ $(Q)echo 'bindir=$(KLCC_INST)/$(KCROSS)bin' >> $@ ++ $(Q)echo 'libdir=$(KLCC_INST)/$(KCROSS)lib' >> $@ ++ $(Q)echo 'includedir=$(KLCC_INST)/$(KCROSS)include' >> $@ + + + # Generate klcc
meta-oe/recipes-devtools/klibc/klibc-1.5.24/klibc-config-eabi.patch new file +14 -0
@@ -0,0 +1,14 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id b6764cf32ec93547531130dca364fb95e1c495f4 +Signed-off-by: Thomas Kunze <[email protected]> + +diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig +--- klibc-1.5/defconfig 2007-03-04 02:52:10.000000000 +0100 ++++ klibc-1.5p/defconfig 2008-02-08 19:24:22.337127756 +0100 +@@ -5,4 +5,4 @@ + CONFIG_REGPARM=y + # ARM options + # CONFIG_KLIBC_THUMB is not set +-# CONFIG_AEABI is not set ++CONFIG_AEABI=y
meta-oe/recipes-devtools/klibc/klibc-1.5.24/modprobe.patch new file +1984 -0
1,984 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc-1.5.24/no_strip.patch new file +36 -0
@@ -0,0 +1,36 @@ +Do not strip binaries too early. Strip is done before packaging. +Signed-off-by: Andrea Adami <[email protected]> + +--- a/scripts/Kbuild.klibc 2011-06-14 17:11:17.000000000 +0200 ++++ b/scripts/Kbuild.klibc 2011-07-15 01:18:58.000000000 +0200 +@@ -332,8 +332,7 @@ + $(KLIBCLIBC) \ + $(KLIBCLIBGCC) \ + --end-group ; \ +- cp -f $@ [email protected] ; \ +- $(KLIBCSTRIP) $(KLIBCSTRIPFLAGS) $@ ++ cp -f $@ [email protected] + + + $(static-y): $(kprog-objs) $(lib-target) $(KLIBCCRT0) $(KLIBCLIBC) FORCE +@@ -348,8 +347,7 @@ + -R $(KLIBCLIBCSHARED) \ + $(KLIBCLIBGCC) \ + --end-group ; \ +- cp -f $@ [email protected] ; \ +- $(KLIBCSTRIP) $(KLIBCSTRIPFLAGS) $@ ++ cp -f $@ [email protected] + + + $(shared-y): $(kprog-objs) $(lib-target) $(KLIBCCRTSHARED) \ + +--- a/usr/klibc/Kbuild 2011-07-15 01:46:32.000000000 +0200 ++++ b/usr/klibc/Kbuild 2011-07-15 01:47:17.000000000 +0200 +@@ -147,7 +147,6 @@ + + quiet_cmd_sohash = GEN $@ + cmd_sohash = cat $< > $@; \ +- $(KLIBCSTRIP) $(KLIBCSTRIPFLAGS) $@; \ + chmod a+x $@; \ + rm -f $(obj)/klibc-???????????????????????????.so; \ + ln -f $@ $(obj)/klibc-$(SOLIBHASH).so
meta-oe/recipes-devtools/klibc/klibc-1.5.24/socket.h.patch new file +31 -0
@@ -0,0 +1,31 @@ +Subject: Add relevant socket.h definitions + +* Discussed upstream: +* http://www.zytor.com/pipermail/klibc/2010-February/002487.html +* http://www.zytor.com/pipermail/klibc/2010-February/002488.html +* +* Was: Add guards for pre 2.6.33 compatibility. +* +* Changes for 1.5.24 +* Only include linux/sockios.h for SIOCGIFCONF and SIOCSIFFLAGS +* requested by kexec-tools when building statically against klibc. + +Signed-off-by: Andrea Adami <[email protected]> + +Index: klibc-1.5.24/usr/include/sys/socket.h +=================================================================== +--- a/usr/include/sys/socket.h 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/include/sys/socket.h 2010-05-31 00:44:16.000000000 +0200 +@@ -10,6 +10,12 @@ + #include <klibc/compiler.h> + #include <klibc/sysconfig.h> + #include <linux/socket.h> ++ ++#include <linux/version.h> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33) ++#include <linux/sockios.h> /* the SIOCxxx I/O controls */ ++#endif ++ + #include <linux/uio.h> + #include <asm/socket.h> + #if _KLIBC_HAS_ARCHSOCKET_H
meta-oe/recipes-devtools/klibc/klibc-1.5.24/staging.patch new file +153 -0
153 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc-1.5.24/use-env-for-perl.patch new file +25 -0
@@ -0,0 +1,25 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee + +klcc-cross: Add patch to use /usr/bin/env perl +Certain configurations (such as autobuilders) may build in very +deep paths (that are longer than the #! mechanism allows) which +makes it unsafe to use the direct path for perl. In our case we know +that /usr/bin/env perl will always return ours (if it has been built). + +Signed-off-by: Tom Rini <[email protected]> + +Index: klibc-1.5.20/klcc/makeklcc.pl +=================================================================== +--- a/klcc/makeklcc.pl ++++ b/klcc/makeklcc.pl +@@ -26,7 +26,7 @@ sub pathsearch($) { + return undef; + } + +-print "#!${perlpath}\n"; ++print "#!/usr/bin/env perl\n"; + + open(KLIBCCONF, "< $klibcconf\0") + or die "$0: cannot open $klibcconf: $!\n";
meta-oe/recipes-devtools/klibc/klibc-1.5.24/wc.patch new file +245 -0
245 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.24.inc new file +2 -0
@@ -0,0 +1,2 @@ +SRC_URI[md5sum] = "4df9b0d3d7f9f366c4b5c171cac3c6c3" +SRC_URI[sha256sum] = "71fac12937ead3f104aad8ac40567ecdcac1ea27474cce939f6226499b1895a2"
meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.24.bb new file +17 -0
@@ -0,0 +1,17 @@ +PR = "${INC_PR}.0" + +KLIBC_UTILS_VARIANT = "static" +KLIBC_UTILS_PKGNAME = "klibc-static-utils" + +FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" + +do_install() { + : +} + +PACKAGES_${PN} = "${PN}" +FILES_${PN} = "" + +require klibc-utils.inc +require klibc.inc +require klibc-checksums_${PV}.inc
meta-oe/recipes-devtools/klibc/klibc-utils.inc new file +64 -0
64 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc.inc new file +50 -0
50 lines not on this page · raw message
meta-oe/recipes-devtools/klibc/klibc_1.5.24.bb new file +40 -0
@@ -0,0 +1,40 @@ +PR = "${INC_PR}.0" + +export INST = "${D}" + +do_install() { + + oe_runmake install + + # the crosscompiler is packaged by klcc-cross + # remove klcc + # remove also from FILES_libklibc-dev + rm ${D}${base_bindir}/klcc + + # remove Linux headers .install and ..install.cmd files + find ${D}${base_libdir}/klibc/include -name '.install' -delete + find ${D}${base_libdir}/klibc/include -name '..install.cmd' -delete + + # only for sh.shared and kinit.shared + install -d ${D}${base_bindir} + install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh.shared + install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit.shared + + install -d ${D}${base_libdir} + install -m 755 usr/klibc/klibc-*.so ${D}${base_libdir} + (cd ${D}${base_libdir}; ln -s klibc-*.so klibc.so) + +} + +PACKAGES = "libklibc libklibc-dev" +FILES_libklibc = "${base_libdir}/klibc-*.so" +FILES_libklibc-dev = "${base_libdir}/klibc.so \ + ${base_libdir}/klibc/lib/* \ + ${base_libdir}/klibc/include/* \ +# see above +# do not package it in -dev +# ${base_bindir}/klcc \ + " +require klibc-utils.inc +require klibc.inc +require klibc-checksums_${PV}.inc
Signature · 1 line
1.7.3.4
PATCH 2/2 klibc.bbclass: shared include for building against klibc
In reply to Andrea Adami* from meta-zaurus
* reworked in meta-smartphones/meta-zaurus
--- meta-oe/classes/klibc.bbclass | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) create mode 100644 meta-oe/classes/klibc.bbclass
meta-oe/classes/klibc.bbclass new file +9 -0
@@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC=${TARGET_PREFIX}klcc + +# reset inherited OE flags to avoid e.g. ggdb3 and keep size small +export CFLAGS="" +export CPPFLAGS="" +export LDFLAGS=""
Signature · 1 line
1.7.3.4
Re: [PATCH 2/2] klibc.bbclass: shared include for building against klibc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Op 05-08-11 23:30, Andrea Adami schreef:
meta-oe/classes/klibc.bbclass new file mode 100644 index 0000000..d684367 --- /dev/null +++ b/meta-oe/classes/klibc.bbclass @@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC=${TARGET_PREFIX}klcc
Quoted 5 lines
* from meta-zaurus * reworked in meta-smartphones/meta-zaurus
meta-oe/classes/klibc.bbclass new file mode 100644 index 0000000..d684367 --- /dev/null +++ b/meta-oe/classes/klibc.bbclass @@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC=${TARGET_PREFIX}klcc renamed from meta-oe/classes/klibc.bbclass +0
-0
please put quotes around that
Quoted 1 line
+# reset inherited OE flags to avoid e.g. ggdb3 and keep size small +export CFLAGS="" +export CPPFLAGS="" +export LDFLAGS=""
Stripping takes care of ggdb3, so remove those
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
iD8DBQFOPP06MkyGM64RGpERAiAKAJ4xqRH+AmjUGfb9z8DE3Q89+WGy7wCcD6HQ cQKfreqlgsk+dRuwvyZSn1g=
=irwZ
-----END PGP SIGNATURE-----
Re: [PATCH 2/2] klibc.bbclass: shared include for building against klibc
Quoted 11 lines · Koen Kooi
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1Op 05-08-11 23:30, Andrea Adami schreef:
meta-oe/classes/klibc.bbclass new file mode 100644 index 0000000..d684367 --- /dev/null +++ b/meta-oe/classes/klibc.bbclass @@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC=${TARGET_PREFIX}klcc
Quoted 5 lines
* from meta-zaurus * reworked in meta-smartphones/meta-zaurus
meta-oe/classes/klibc.bbclass new file mode 100644 index 0000000..d684367 --- /dev/null +++ b/meta-oe/classes/klibc.bbclass @@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC=${TARGET_PREFIX}klcc renamed from meta-oe/classes/klibc.bbclass +0
-0please put quotes around that
sure, was somehow overlooked
Quoted 4 lines
Quoted 2 lines
+# reset inherited OE flags to avoid e.g. ggdb3 and keep size small +export CFLAGS="" +export CPPFLAGS="" +export LDFLAGS=""
Stripping takes care of ggdb3, so remove those
The comment is misleading: see klcc.1 and klcc.in
http://git.kernel.org/?p=libs/klibc/klibc.git;a=tree;f=klcc
Anyhow, if you dare to comment out those lines today, then some recipes break (one atm).
kexec-tools-klibc:
...klibc/include/stddef.h:9:3: error: #error "__KLIBC__ not defined, compiler invocation error!"
Quoted 10 lines
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)iD8DBQFOPP06MkyGM64RGpERAiAKAJ4xqRH+AmjUGfb9z8DE3Q89+WGy7wCcD6HQ cQKfreqlgsk+dRuwvyZSn1g=
=irwZ
-----END PGP SIGNATURE-----
Quoted 5 lines
_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Regards
Andrea
PATCH v2 1/1 klibc.bbclass: shared include for building against klibc
In reply to Andrea Adami* from org.openembedded.dev
* reworked in meta-zaurus
* added missing quotes
* explain more clearly why the compiler/linker flags are reset
--- meta-oe/classes/klibc.bbclass | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) create mode 100644 meta-oe/classes/klibc.bbclass
meta-oe/classes/klibc.bbclass new file +9 -0
@@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC = "${TARGET_PREFIX}klcc" + +# klcc uses own optimizations by default. See klcc(1) man file. +export CFLAGS="" +export CPPFLAGS="" +export LDFLAGS=""
Signature · 1 line
1.7.3.4