diff options
Diffstat (limited to 'packages/klibc')
-rw-r--r-- | packages/klibc/files/klibc-config-eabi.patch | 9 | ||||
-rw-r--r-- | packages/klibc/klibc-common.inc | 62 | ||||
-rw-r--r-- | packages/klibc/klibc-utils-static_1.5.bb | 75 | ||||
-rw-r--r-- | packages/klibc/klibc.inc | 83 |
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}' } |