bump version for 1.0.49 release
[uclibc-ng.git] / extra / scripts / cppcheck.sh
blob127c5096d1f838f14cd5cc6e751def39a4136b5e
1 #! /bin/sh
3 # usage:
5 # make \
6 # REAL_CC=gcc-mine \
7 # CC=extra/scripts/cppcheck.sh \
8 # CPPCHECK_FLAGS="--enable=style,performance,portability,information,missingInclude --max-configs=256 -j $(($(getconf _NPROCESSORS_ONLN)-1))" \
9 # CPPCHECK_LIMIT="yes"
11 # CPPCHECK_FLAGS are optional and are not set per default.
12 # CPPCHECK_LIMIT limits cppcheck to the -D and -U that would be passed to CC.
13 # Setting CPPCHECK_LIMIT greatly improves the check-time but obviously
14 # just checks a small subset of the defines found in a file.
16 : ${REAL_CC:=gcc}
17 ${REAL_CC} $@
18 args=""
19 limits=""
20 next_arg=0
21 next_limit=0
23 for i in $@
25 if [ $next_arg -eq 1 ] ; then
26 next_arg=0
27 case "/$i" in
28 /-*) exit 0 ;;
29 esac
30 [ "x$args" = "x" ] && args="$i" || args="$args $i"
31 continue
33 if [ $next_limit -eq 1 ] ; then
34 next_limit=0
35 [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i"
36 continue
38 case "/$i" in
39 /-c) next_arg=1 ;;
40 /-isystem)
41 next_arg=1;
42 [ "x$args" = "x" ] && args="-I" || args="$args -I" ;;
43 /-I)
44 next_arg=1;
45 [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
46 /-I*) [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
47 /-D|/-U)
48 next_limit=1;
49 [ "x$limit" = "x" ] && limit="$i" || limit="$limit $i" ;;
50 /-D*) [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i" ;;
51 /-s|/-S|/-dump*|/--print*|/-print*) exit 0 ;;
52 *) ;;
53 esac
54 done
55 [ -z "${CPPCHECK_LIMIT}" ] && limits=""
56 [ -z "${args}" ] || exec cppcheck ${CPPCHECK_FLAGS} ${args} ${limits}