Skip to contentSkip to conversation

Add spare checker support to the build system

PATCH Applied Gerd Hoffmann 3 participants 6 messages Oct 7, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add spare checker support to the build system

Hi,

This adds support for running the sparse checker during the build process. Left it off by default for now, build becomes very noisy with sparse checking turned on as it has to complain alot (partly even in the system headers!). The qemu code base needs quite some cleanups before we should consider turning it on by default.

please apply,
Gerd

Quoted 1 line

From aa926354ee308d46fdbb92667b6ed6f6f9b11ce7 Mon Sep 17 00:00:00 2001

From: Gerd Hoffmann <[email protected]>
Date: Tue, 7 Oct 2008 11:22:11 +0200
Subject: [PATCH] build system: sparse checker support.

---
 configure |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)
configure +16 -0
index 9c8ed81..5b23b33 100755
@@ -85,6 +85,7 @@ case "$cpu" in
   ;;
 esac
 gprof="no"
+sparse="no"
 bigendian="no"
 mingw32="no"
 EXESUF=""
@@ -286,6 +287,10 @@ for opt do
   ;;
   --audio-drv-list=*) audio_drv_list="$optarg"
   ;;
+  --enable-sparse) sparse="yes"
+  ;;
+  --disable-sparse) sparse="no"
+  ;;
   --disable-vnc-tls) vnc_tls="no"
   ;;
   --disable-slirp) slirp="no"
@@ -425,6 +430,7 @@ echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
 echo "  --make=MAKE              use specified make [$make]"
 echo "  --install=INSTALL        use specified install [$install]"
 echo "  --static                 enable static build [$static]"
+echo "  --disable-sparse         disable sparse checker"
 echo "  --disable-werror         disable compilation abort on warning"
 echo "  --disable-sdl            disable SDL"
 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
@@ -536,6 +542,10 @@ EOF
     fi
 fi
 
+if test ! -x "$(which cgcc 2>/dev/null)"; then
+    sparse="no"
+fi
+
 #
 # Solaris specific configure tool chain decisions
 #
@@ -1007,6 +1017,7 @@ echo "host CPU          $cpu"
 echo "host big endian   $bigendian"
 echo "target list       $target_list"
 echo "gprof enabled     $gprof"
+echo "sparse enabled    $sparse"
 echo "profiler          $profiler"
 echo "static build      $static"
 echo "-Werror enabled   $werror"
@@ -1156,6 +1167,11 @@ case "$cpu" in
     exit 1
   ;;
 esac
+if test "$sparse" = "yes" ; then
+  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
+  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
+  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
+fi
 if test "$bigendian" = "yes" ; then
   echo "WORDS_BIGENDIAN=yes" >> $config_mak
   echo "#define WORDS_BIGENDIAN 1" >> $config_h
Signature · 1 line
1.5.5.1
#1 lore raw
Quoted 8 lines · Gerd Hoffmann

Hi,

This adds support for running the sparse checker during the build process. Left it off by default for now, build becomes very noisy with sparse checking turned on as it has to complain alot (partly even in the system headers!). The qemu code base needs quite some cleanups before we should consider turning it on by default.

Applied. Thanks.

You're missing a help description for --enable-sparse. Could you please send a new patch adding that?

Regards,

Anthony Liguori

Quoted 3 lines

please apply,
Gerd

#2 lore raw
In reply to Gerd Hoffmann
Quoted 7 lines · Gerd Hoffmann

Hi,

This adds support for running the sparse checker during the build process. Left it off by default for now, build becomes very noisy with sparse checking turned on as it has to complain alot (partly even in the system headers!). The qemu code base needs quite some cleanups before we should consider turning it on by default.

Cool, with sparse, I found and fixed one real bug and found one missing 'static' just in target-sparc.

The cgcc test should try compiling a program like the C compiler test. Maybe those tests could be merged?

#3 lore raw
Quoted 11 lines · Blue Swirl
Quoted 8 lines · Gerd Hoffmann

Hi,

This adds support for running the sparse checker during the build process. Left it off by default for now, build becomes very noisy with sparse checking turned on as it has to complain alot (partly even in the system headers!). The qemu code base needs quite some cleanups before we should consider turning it on by default.

Quoted 6 lines

Cool, with sparse, I found and fixed one real bug and found one missing 'static' just in target-sparc.

The cgcc test should try compiling a program like the C compiler test. Maybe those tests could be merged?

It should if we're enabling it by default. Since we don't enable it by default, presumably the user has a working version of sparse.

Also, to enable it by default, we need to think about how it interacts with cross compilers and other versions of GCC other than the default gcc.

Regards,

Anthony Liguori

#4 lore raw

Hi,

Quoted 2 lines

Also, to enable it by default, we need to think about how it interacts with cross compilers and other versions of GCC other than the default gcc.

Oh, cross builds are supposed to work just fine with sparse enabled.

cheers,
Gerd

#5 lore raw
In reply to Blue Swirl
Quoted 2 lines · Blue Swirl

Cool, with sparse, I found and fixed one real bug and found one missing 'static' just in target-sparc.

Great it proved being useful that quickly ;)

Quoted 2 lines

The cgcc test should try compiling a program like the C compiler test. Maybe those tests could be merged?

cgcc isn't a compiler, it's a wrapper which runs both the real compiler and the sparse checker, roughly comparable to distcc and ccache. So if $CC works, cgcc should too.

cheers,
Gerd