summaryrefslogtreecommitdiff
path: root/packages/klibc/klibc.inc
diff options
context:
space:
mode:
Diffstat (limited to 'packages/klibc/klibc.inc')
-rw-r--r--packages/klibc/klibc.inc50
1 files changed, 43 insertions, 7 deletions
diff --git a/packages/klibc/klibc.inc b/packages/klibc/klibc.inc
index ef5b57d8bc..7f1b503f12 100644
--- a/packages/klibc/klibc.inc
+++ b/packages/klibc/klibc.inc
@@ -1,4 +1,4 @@
-DEPENDS = "virtual/kernel"
+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, \
@@ -6,6 +6,7 @@ minimal entaglement, and portability, not speed."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
LICENSE = "BSD-ADV"
SRC_URI = "http://www.kernel.org/pub/linux/libs/klibc/Stable/klibc-${PV}.tar.bz2"
+SRC_URI += "file://install.patch;patch=1"
S = "${WORKDIR}/klibc-${PV}"
# for the correct kernel staging path
@@ -13,8 +14,8 @@ S = "${WORKDIR}/klibc-${PV}"
EXTRA_OEMAKE = "'ARCH=${KLIBC_ARCH}' \
'CROSS=${TARGET_PREFIX}' \
- 'CC=${CC}' \
- 'LD=${LD}' \
+ 'CC=${HOST_PREFIX}gcc' \
+ 'LD=${HOST_PREFIX}ld' \
'AR=${AR}' \
'RANLIB=${RANLIB}' \
'NM=${TARGET_PREFIX}nm' \
@@ -25,16 +26,51 @@ EXTRA_OEMAKE = "'ARCH=${KLIBC_ARCH}' \
'HOST_LDFLAGS=${BUILD_LDFLAGS}' \
'HOST_LIBS=' \
'LDFLAGS=' \
- 'WARNFLAGS=${CFLAGS}' \
- 'OPTFLAGS='"
+ 'ARCHREQFLAGS=${HOST_CC_ARCH}' \
+ 'OPTFLAGS=${TARGET_CFLAGS}' \
+ 'mandir=${mandir}'"
KLIBC_ARCH = '${TARGET_ARCH}'
KLIBC_ARCH_armeb = 'arm'
KLIBC_ARCH_mipsel = 'mips'
-CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)} -I${STAGING_KERNEL_DIR}/include"
-# CFLAGS := "${@oe_filter_out('-I\S+', '${CFLAGS}', d)}"
+# 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} ${PN}-dev ${PN}-doc"
+
+FILES_${PN} = "/lib/*.so* ${INSTALLBINDIR}"
+FILES_${PN}-dev = "/usr/bin ${INSTALLINCDIR} ${INSTALLLIBDIR}"
do_configure () {
ln -sf ${STAGING_KERNEL_DIR} linux
}
+
+STAGING_KLIBC_DIR = "${STAGING_DIR}/${HOST_SYS}/klibc"
+
+do_stage() {
+ rm -rf "${STAGING_KLIBC_DIR}"
+ oe_runmake 'prefix=${STAGING_KLIBC_DIR}' \
+ 'bindir=${STAGING_BINDIR}' \
+ 'mandir=${STAGING_DIR}/${BUILD_SYS}/share/man' \
+ 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'
+}
+
+do_install() {
+ # The installed -dev won't work because it has the cross compiler
+ # path compiled in.
+ oe_runmake 'INSTALLROOT=${D}' install
+}