diff options
Diffstat (limited to 'recipes/dietlibc/dietlibc-common.inc')
-rw-r--r-- | recipes/dietlibc/dietlibc-common.inc | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/recipes/dietlibc/dietlibc-common.inc b/recipes/dietlibc/dietlibc-common.inc new file mode 100644 index 0000000000..02aaa02cc8 --- /dev/null +++ b/recipes/dietlibc/dietlibc-common.inc @@ -0,0 +1,81 @@ +DESCRIPTION = "The diet libc is a libc that is optimized for small size. \ +It can be used to create small statically linked binaries" +SECTION = "libs" +LICENSE = "GPLv2" +INC_PR = "r1" +PR = "${INC_PR}.0" + +EXTRA_OEMAKE = "\ + STRIP=: \ + prefix=${pkglibdir} \ + HOME=\"`pwd`\" \ + MYARCH:='${DIETLIBC_BUILD_ARCH}' \ +" + +PACKAGES += "${PN}-headers" +RDEPENDS_${PN}-dev += "${PN}-headers (= ${EXTENDPV})" + +FILES_${PN} = "${bindir}/*" +FILES_${PN}-headers = "${pkglibdir}/include" +FILES_${PN}-dev = "${pkgarchdir}/*" +FILES_${PN}-dbg += "${pkgarchdir}/.debug" + +export DIETLIBC_BUILD_ARCH="${@re.sub('i[0-9]86','i386','${BUILD_ARCH}')}" +export DIETLIBC_TARGET_ARCH="${@re.sub('i[0-9]86','i386','${TARGET_ARCH}')}" + +export QEMU = "${@qemu_target_binary(d)}" + +pkglibdir = "${libdir}/dietlibc" +pkgarchdir = "${pkglibdir}/lib-${DIETLIBC_TARGET_ARCH}" + +do_configure () { + dietlibc_fix_features "${DIETLIBC_BUILD_ARCH}" dietfeatures-build.h + dietlibc_fix_features "${DIETLIBC_TARGET_ARCH}" dietfeatures-target.h + + rm -f dietfeatures.h + + # Initialize infrastructure for our tests + for i in `find test -name 'runtests.sh'`; do + ln -s ${WORKDIR}/runtests-X.sh `dirname $i`/runtests-X.sh + done +} + +dietlibc_fix_features () { + arch=$1 + dst=$2 + + # LARGEFILE_BACKCOMPAT is some linux 2.2 thing + set -- -e '/#define \(WANT_LARGEFILE_BACKCOMPAT\|WANT_VALGRIND_SUPPORT\)/d' + + case $arch in + (x86_64|ppc|ppc64) + ;; + + (*) + set -- \ + -e '/#define WANT_DYN_PAGESIZE/{c\' \ + -e '#define WANT_ELFINFO' \ + -e '}' + esac + + sed "$@" dietfeatures.h > "$dst" +} + +dietlibc_install_dev () { + install -d -m 0755 ${D}${pkgarchdir} + install -d -m 0755 ${D}${pkglibdir}/include + + for i in `find include -name \*.h`; do + install -D -p -m 0644 $i ${D}${pkglibdir}/$i + done + + cd bin-${DIETLIBC_TARGET_ARCH} + install -p -m 0644 \ + start.o libm.a libpthread.a librpc.a liblatin1.a libcompat.a libcrypt.a \ + pstart.o libgmon.a \ + ${D}${pkgarchdir}/ + + # extra step because 'dietlibc.a' must be renamed to 'libc.a' + install -D -p -m 0644 dietlibc.a ${D}${pkgarchdir}/libc.a + cd - +} |