aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dietlibc/dietlibc-common.inc
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/dietlibc/dietlibc-common.inc')
-rw-r--r--recipes/dietlibc/dietlibc-common.inc81
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 -
+}