summaryrefslogtreecommitdiff
path: root/make_gcov.sh
diff options
context:
space:
mode:
Diffstat (limited to 'make_gcov.sh')
-rw-r--r--make_gcov.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/make_gcov.sh b/make_gcov.sh
new file mode 100644
index 0000000000..907c1ebd48
--- /dev/null
+++ b/make_gcov.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# gcov capability for udev
+#
+# Provides code coverage analysis for udev.
+#
+# make_gcov.sh assumes the same same default parameters as make, but also
+# accepts the same parameters as make (see README file in udev/ for
+# parameter info). There is one exception, klibc can not be used with
+# gcov as it will not compile cleanly.
+#
+# make_gcov.sh then overrides CFLAGS to strip out optimization in order
+# for gcov to get correct code coverage analysis.
+#
+# Leann Ogasawara <ogasawara@osdl.org>, April 2004
+
+# clean up udev dir
+clean_udev () {
+ find -name "*.da" -exec rm -f "{}" \;
+ find -name "*.bb" -exec rm -f "{}" \;
+ find -name "*.bbg" -exec rm -f "{}" \;
+ find -name "*.gcov" -exec rm -f "{}" \;
+ make clean
+}
+
+PWD=`pwd`
+GCCINCDIR=`gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp"`
+LIBSYSFS="-I$PWD/libsysfs"
+WARNINGS="-Wall -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations"
+GCC="-I$GCCINCDIR"
+USE_LOG="-DLOG"
+DEBUG="-D_GNU_SOURCE"
+GCOV_FLAGS="-pipe -fprofile-arcs -ftest-coverage"
+
+for i in $*; do
+ pre=`echo $i | sed 's/=.*//g'`
+ post=`echo $i | sed 's/.*=//g'`
+ if [ $pre = "USE_KLIBC" ] && [ $post = "true" ]; then
+ echo "cannot use gcov with klibc, will not compile"
+ exit
+ elif [ $pre = "USE_LOG" ] && [ $post = "false" ]; then
+ USE_LOG=""
+ elif [ $pre = "DEBUG" ] && [ $post = "true" ]; then
+ DEBUG="-g -DDEBUG -D_GNU_SOURCE"
+ elif [ $pre = "clean" ]; then
+ clean_udev
+ exit
+ fi
+done
+
+clean_udev
+
+make $* CFLAGS="$WARNINGS $GCOV_FLAGS $USE_LOG $DEBUG $GCC $LIBSYSFS"