summaryrefslogtreecommitdiff
path: root/packages/klibc
diff options
context:
space:
mode:
Diffstat (limited to 'packages/klibc')
-rw-r--r--packages/klibc/files/klibc-config-eabi.patch9
-rw-r--r--packages/klibc/klibc-common.inc62
-rw-r--r--packages/klibc/klibc-utils-static_1.5.bb75
-rw-r--r--packages/klibc/klibc.inc83
4 files changed, 157 insertions, 72 deletions
diff --git a/packages/klibc/files/klibc-config-eabi.patch b/packages/klibc/files/klibc-config-eabi.patch
new file mode 100644
index 0000000000..86517f0594
--- /dev/null
+++ b/packages/klibc/files/klibc-config-eabi.patch
@@ -0,0 +1,9 @@
+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
diff --git a/packages/klibc/klibc-common.inc b/packages/klibc/klibc-common.inc
new file mode 100644
index 0000000000..146968eaf0
--- /dev/null
+++ b/packages/klibc/klibc-common.inc
@@ -0,0 +1,62 @@
+DEPENDS = "virtual/kernel perl-native"
+SECTION = "libs"
+DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
+use with initramfs. It is deliberately written for small size, \
+minimal entaglement, and portability, not speed."
+LICENSE = "BSD-ADV"
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
+SRC_URI += "file://install.patch;patch=1"
+S = "${WORKDIR}/klibc-${PV}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# for the correct kernel staging path
+# inherit module-base
+
+EXTRA_OEMAKE = "'ARCH=${KLIBC_ARCH}' \
+ 'CROSS=${TARGET_PREFIX}' \
+ 'CC=${HOST_PREFIX}gcc' \
+ 'LD=${HOST_PREFIX}ld' \
+ 'AR=${AR}' \
+ 'RANLIB=${RANLIB}' \
+ 'NM=${TARGET_PREFIX}nm' \
+ 'STRIP=echo' \
+ 'SHLIBDIR=/lib' \
+ 'HOST_CC=${BUILD_CC}' \
+ 'HOST_CFLAGS=${BUILD_CFLAGS}' \
+ 'HOST_LDFLAGS=${BUILD_LDFLAGS}' \
+ 'HOST_LIBS=' \
+ 'LDFLAGS=' \
+ 'ARCHREQFLAGS=${HOST_CC_ARCH}' \
+ 'OPTFLAGS=${TARGET_CFLAGS}' \
+ 'mandir=${mandir}'"
+
+KLIBC_ARCH = '${TARGET_ARCH}'
+KLIBC_ARCH_armeb = 'arm'
+KLIBC_ARCH_mipsel = 'mips'
+
+# the klibc code contains ARM instructions (for ARM), this
+# could be fixed, but for the moment:
+ARM_INSTRUCTION_SET = "arm"
+
+TARGET_CFLAGS := "${@oe_filter_out('-I\S+', '${TARGET_CFLAGS}', d)} -I${STAGING_KERNEL_DIR}/include"
+
+INSTALLDIR = "/usr/lib/klibc"
+INSTALLPREFIX = "${INSTALLDIR}/${TARGET_PREFIX}"
+INSTALLBINDIR = "${INSTALLPREFIX}bin"
+INSTALLLIBDIR = "${INSTALLPREFIX}lib"
+INSTALLINCDIR = "${INSTALLPREFIX}include"
+
+PACKAGES = "${PN}-dbg ${PN} ${PN}-dev ${PN}-doc"
+
+FILES_${PN} = "/lib/*.so* ${INSTALLBINDIR}"
+FILES_${PN}-dev = "/usr/bin ${INSTALLINCDIR} ${INSTALLLIBDIR}"
+
+do_configure () {
+ ln -sf ${STAGING_KERNEL_DIR} linux
+}
+
+do_install() {
+ # The installed -dev won't work because it has the cross compiler
+ # path compiled in.
+ oe_runmake 'INSTALLROOT=${D}' install
+}
diff --git a/packages/klibc/klibc-utils-static_1.5.bb b/packages/klibc/klibc-utils-static_1.5.bb
new file mode 100644
index 0000000000..bbb3248158
--- /dev/null
+++ b/packages/klibc/klibc-utils-static_1.5.bb
@@ -0,0 +1,75 @@
+require klibc-common.inc
+
+PR = "r3"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
+
+SRC_URI_append_linux-gnueabi = "\
+ file://klibc-config-eabi.patch;patch=1"
+
+EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
+ 'CROSS_COMPILE=${TARGET_PREFIX}' \
+ "
+
+do_install() {
+ install -d ${D}${base_bindir}
+ install -m 755 usr/dash/sh ${D}${base_bindir}
+ install -m 755 usr/gzip/gzip ${D}${base_bindir}
+ ln -s ${D}${base_bindir}/gzip ${D}${base_bindir}/gunzip
+ ln -s ${D}${base_bindir}/gzip ${D}${base_bindir}/zcat
+ install -m 755 usr/utils/static/cat ${D}${base_bindir}
+ install -m 755 usr/utils/static/chroot ${D}${base_bindir}
+ install -m 755 usr/utils/static/cpio ${D}${base_bindir}
+ install -m 755 usr/utils/static/dd ${D}${base_bindir}
+ install -m 755 usr/utils/static/false ${D}${base_bindir}
+ install -m 755 usr/utils/static/halt ${D}${base_bindir}
+ install -m 755 usr/utils/static/insmod ${D}${base_bindir}
+ install -m 755 usr/utils/static/kill ${D}${base_bindir}
+ install -m 755 usr/utils/static/ln ${D}${base_bindir}
+ install -m 755 usr/utils/static/minips ${D}${base_bindir}
+ install -m 755 usr/utils/static/mkdir ${D}${base_bindir}
+ install -m 755 usr/utils/static/mknod ${D}${base_bindir}
+ install -m 755 usr/utils/static/mount ${D}${base_bindir}
+ install -m 755 usr/utils/static/nuke ${D}${base_bindir}
+ install -m 755 usr/utils/static/pivot_root ${D}${base_bindir}
+ install -m 755 usr/utils/static/readlink ${D}${base_bindir}
+ install -m 755 usr/utils/static/sleep ${D}${base_bindir}
+ install -m 755 usr/utils/static/true ${D}${base_bindir}
+ install -m 755 usr/utils/static/umount ${D}${base_bindir}
+ install -m 755 usr/utils/static/uname ${D}${base_bindir}
+}
+
+PACKAGES = "klibc-utils-static-sh klibc-utils-static-gzip \
+ klibc-utils-static-cat klibc-utils-static-chroot \
+ klibc-utils-static-cpio klibc-utils-static-dd \
+ klibc-utils-static-false klibc-utils-static-halt \
+ klibc-utils-static-insmod klibc-utils-static-kill \
+ klibc-utils-static-ln klibc-utils-static-minips \
+ klibc-utils-static-mkdir klibc-utils-static-mknod \
+ klibc-utils-static-mount klibc-utils-static-nuke \
+ klibc-utils-static-pivot-root klibc-utils-static-readlink \
+ klibc-utils-static-sleep klibc-utils-static-true \
+ klibc-utils-static-umount klibc-utils-static-uname "
+
+FILES_klibc-utils-static-sh = "${base_bindir}/sh"
+FILES_klibc-utils-static-gzip = "${base_bindir}/gzip ${base_bindir}/gunzip ${base_bindir}/zcat"
+FILES_klibc-utils-static-cat = "${base_bindir}/cat"
+FILES_klibc-utils-static-chroot = "${base_bindir}/chroot"
+FILES_klibc-utils-static-cpio = "${base_bindir}/cpio"
+FILES_klibc-utils-static-dd = "${base_bindir}/dd"
+FILES_klibc-utils-static-false = "${base_bindir}/false"
+FILES_klibc-utils-static-halt = "${base_bindir}/halt"
+FILES_klibc-utils-static-insmod = "${base_bindir}/insmod"
+FILES_klibc-utils-static-kill = "${base_bindir}/kill"
+FILES_klibc-utils-static-ln = "${base_bindir}/ln"
+FILES_klibc-utils-static-minips = "${base_bindir}/minips"
+FILES_klibc-utils-static-mkdir = "${base_bindir}/mkdir"
+FILES_klibc-utils-static-mknod = "${base_bindir}/mknod"
+FILES_klibc-utils-static-mount = "${base_bindir}/mount"
+FILES_klibc-utils-static-nuke = "${base_bindir}/nuke"
+FILES_klibc-utils-static-pivot-root = "${base_bindir}/pivot_root"
+FILES_klibc-utils-static-readlink = "${base_bindir}/readlink"
+FILES_klibc-utils-static-sleep = "${base_bindir}/sleep"
+FILES_klibc-utils-static-true = "${base_bindir}/true"
+FILES_klibc-utils-static-umount = "${base_bindir}/umount"
+FILES_klibc-utils-static-uname = "${base_bindir}/uname"
diff --git a/packages/klibc/klibc.inc b/packages/klibc/klibc.inc
index 539e2fbf84..efaf298e36 100644
--- a/packages/klibc/klibc.inc
+++ b/packages/klibc/klibc.inc
@@ -1,78 +1,17 @@
-DEPENDS = "virtual/kernel perl-native"
-SECTION = "libs"
-DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
-use with initramfs. It is deliberately written for small size, \
-minimal entaglement, and portability, not speed."
-LICENSE = "BSD-ADV"
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
-SRC_URI += "file://install.patch;patch=1"
-S = "${WORKDIR}/klibc-${PV}"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-# for the correct kernel staging path
-# inherit module-base
-
-EXTRA_OEMAKE = "'ARCH=${KLIBC_ARCH}' \
- 'CROSS=${TARGET_PREFIX}' \
- 'CC=${HOST_PREFIX}gcc' \
- 'LD=${HOST_PREFIX}ld' \
- 'AR=${AR}' \
- 'RANLIB=${RANLIB}' \
- 'NM=${TARGET_PREFIX}nm' \
- 'STRIP=echo' \
- 'SHLIBDIR=/lib' \
- 'HOST_CC=${BUILD_CC}' \
- 'HOST_CFLAGS=${BUILD_CFLAGS}' \
- 'HOST_LDFLAGS=${BUILD_LDFLAGS}' \
- 'HOST_LIBS=' \
- 'LDFLAGS=' \
- 'ARCHREQFLAGS=${HOST_CC_ARCH}' \
- 'OPTFLAGS=${TARGET_CFLAGS}' \
- 'mandir=${mandir}'"
-
-KLIBC_ARCH = '${TARGET_ARCH}'
-KLIBC_ARCH_armeb = 'arm'
-KLIBC_ARCH_mipsel = 'mips'
-
-# the klibc code contains ARM instructions (for ARM), this
-# could be fixed, but for the moment:
-ARM_INSTRUCTION_SET = "arm"
-
-TARGET_CFLAGS := "${@oe_filter_out('-I\S+', '${TARGET_CFLAGS}', d)} -I${STAGING_KERNEL_DIR}/include"
-
-INSTALLDIR = "/usr/lib/klibc"
-INSTALLPREFIX = "${INSTALLDIR}/${TARGET_PREFIX}"
-INSTALLBINDIR = "${INSTALLPREFIX}bin"
-INSTALLLIBDIR = "${INSTALLPREFIX}lib"
-INSTALLINCDIR = "${INSTALLPREFIX}include"
-
-PACKAGES = "${PN}-dbg ${PN} ${PN}-dev ${PN}-doc"
-
-FILES_${PN} = "/lib/*.so* ${INSTALLBINDIR}"
-FILES_${PN}-dev = "/usr/bin ${INSTALLINCDIR} ${INSTALLLIBDIR}"
-
-do_configure () {
- ln -sf ${STAGING_KERNEL_DIR} linux
-}
+require klibc-common.inc
STAGING_KLIBC_DIR = "${STAGING_DIR_HOST}/klibc"
do_stage() {
- rm -rf "${STAGING_KLIBC_DIR}"
- oe_runmake 'prefix=${STAGING_KLIBC_DIR}' \
- 'bindir=${STAGING_BINDIR}' \
- 'mandir=${STAGING_DIR_HOST}${layout_mandir}' \
- install
- # The following is sufficient, at least in klibc 1.1.1 to make klcc
- # use the staged libraries and include files.
- sed -i -e 's@^\$prefix = .*$@\$prefix = "${STAGING_KLIBC_DIR}/lib/klibc";@' \
- '${STAGING_BINDIR}/${TARGET_PREFIX}klcc'
+ rm -rf "${STAGING_KLIBC_DIR}"
+ oe_runmake 'prefix=${STAGING_KLIBC_DIR}' \
+ 'bindir=${STAGING_BINDIR}' \
+ 'mandir=${STAGING_DIR_HOST}${layout_mandir}' \
+ install
+ # The following is sufficient, at least in klibc 1.1.1 to make klcc
+ # use the staged libraries and include files.
+ sed -i -e 's@^\$prefix = .*$@\$prefix = "${STAGING_KLIBC_DIR}/lib/klibc";@' \
+ '${STAGING_BINDIR}/${TARGET_PREFIX}klcc'
# Perhaps other binaries need to be moved to cross?
- mv '${STAGING_BINDIR}/${TARGET_PREFIX}klcc' '${STAGING_BINDIR_CROSS}'
-}
-
-do_install() {
- # The installed -dev won't work because it has the cross compiler
- # path compiled in.
- oe_runmake 'INSTALLROOT=${D}' install
+ mv '${STAGING_BINDIR}/${TARGET_PREFIX}klcc' '${STAGING_BINDIR_CROSS}'
}