aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dietlibc/dietlibc.inc
blob: b1e3daf00c195738a996606341833408d1ca311c (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
require dietlibc-common.inc

INHIBIT_DEFAULT_DEPS = "1"
DEPENDS += "gcc-native virtual/${TARGET_PREFIX}gcc \
            virtual/${TARGET_PREFIX}binutils"

CFLAGS += "-fno-exceptions -std=gnu99 -Os -Wall -Wmissing-prototypes"
_target_test_cflags = "${CFLAGS} -L ${S}/bin-${DIETLIBC_TARGET_ARCH} \
    -fno-builtin"

do_compile () {
    ln -sf dietfeatures-build.h dietfeatures.h
    oe_runmake all ARCH="${DIETLIBC_BUILD_ARCH}"  \
        CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" LDFLAGS="${BUILD_LDFLAGS}" \
        WHAT='$(OBJDIR)/diet'

    ln -sf dietfeatures-target.h dietfeatures.h
    oe_runmake all profiling ARCH="${DIETLIBC_TARGET_ARCH}" \
        CC="${CC}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
}

do_install () {
    dietlibc_install_dev
    install -D -p -m 0755 bin-${DIETLIBC_TARGET_ARCH}/diet-i ${D}${bindir}/diet
}

dietlibc_build_tests () {
    rc=0
    # Allow to build as much as possible and return an error code when
    # something went wrong
    ( oe_runmake -C test all test DIET=${S}/bin-${DIETLIBC_BUILD_ARCH}/diet \
        CC="${CC}" CFLAGS="${_target_test_cflags}" LDFLAGS="${LDFLAGS}" \
        "$@" ) || rc=$?

    ( oe_runmake -C test/inet all DIET=${S}/bin-${DIETLIBC_BUILD_ARCH}/diet \
        CC="${CC}" CFLAGS="${_target_test_cflags}" LDFLAGS="${LDFLAGS}" \
        "$@" ) || rc=$?

    return $rc
}

dietlibc_do_full_test () {
    ## Check for references to __NR_ symbols which indicates missing
    ## syscall implementations
    if ${TARGET_PREFIX}nm bin-${DIETLIBC_TARGET_ARCH}/*.a | grep 'U __NR_' >&2; then
        echo "ERROR: unimplemented syscalls found" >&2
        exit 1
    fi


    ## Build and run the testsuite (when emulator is available)
    dietlibc_build_tests

    if type -p "$QEMU" && test x"$QEMU" != x"false"; then
       cd test
       env EMULATOR="${QEMU} ${QEMU_OPTIONS}" bash ${WORKDIR}/runtests-X.sh
       cd -
    fi
}