]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/uclibc/lib/contrib/uclibc/extra/scripts/cppcheck.sh
update
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / extra / scripts / cppcheck.sh
1 #! /bin/sh
2
3 # usage:
4 #
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"
10
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.
15
16 : ${REAL_CC:=gcc}
17 ${REAL_CC} $@
18 args=""
19 limits=""
20 next_arg=0
21 next_limit=0
22
23 for i in $@
24 do
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
32   fi
33   if [ $next_limit -eq 1 ] ; then
34         next_limit=0
35     [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i"
36         continue
37   fi
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}