aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dietlibc/dietlibc-common.inc
blob: 02aaa02cc8fb83db754b9181cfcd4cf3bc346718 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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 -
}