aboutsummaryrefslogtreecommitdiff
path: root/scripts/checkheaders
blob: cf58ee2cbdb96926049eaaf8c4fe9c1f8cadb3e2 (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
#!/bin/bash

# Copyright (c) 2016, Intel Corporation.

# This script makes sure that all the header files in src/ can be included
# without any missing dependencies.

cd $ZJS_BASE/src

TEMPLATE=/tmp/zjs_template.c

echo                 > $TEMPLATE
echo "int main() {" >> $TEMPLATE
echo "return 0;"    >> $TEMPLATE
echo "}"            >> $TEMPLATE

SOURCE=/tmp/zjs_source.c

PASSCOUNT=0
TOTAL=0

CFLAGS="-o /tmp/zjs_source -m32 -DCONFIG_X86 -DCONFIG_NUM_COOP_PRIORITIES=2 -I. -I../deps/jerryscript/jerry-core -I../deps/zephyr/include -I../deps/iotivity-constrained/include -I../deps/iotivity-constrained"
FAILURES=

# collect list of files with failures on first pass
for i in *.h; do
    echo "#include \"$i\"" > $SOURCE
    cat $TEMPLATE >> $SOURCE
    gcc $CFLAGS $SOURCE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        PASSCOUNT=$(($PASSCOUNT + 1))
    else
        FAILURES="$FAILURES $i"
    fi
    TOTAL=$(($TOTAL + 1))
done

echo Failures detected in $FAILURES
echo Use checkheaders -v to see details

if [ "$1" == "-v" ] && [ $PASSCOUNT -ne $TOTAL ]; then
    # print failure output on second pass
    for i in $FAILURES; do
        STR="Failures in $i"
        LEN=$((${#STR} + 2))
        printf "%${LEN}s\n" | tr ' ' '='
        echo " $STR"
        printf "%${LEN}s\n" | tr ' ' '='
        echo "#include \"$i\"" > $SOURCE
        cat $TEMPLATE >> $SOURCE
        gcc $CFLAGS $SOURCE
    done
fi

echo RESULTS: $PASSCOUNT/$TOTAL passed

if [ $PASSCOUNT -ne $TOTAL ]; then
    exit 1
fi

exit 0