diff mbox

[1/9] Move all compiler warning/optimization flags to the same place

Message ID 1333363816-1691-2-git-send-email-berrange@redhat.com
State New
Headers show

Commit Message

Daniel P. Berrangé April 2, 2012, 10:50 a.m. UTC
From: "Daniel P. Berrange" <berrange@redhat.com>

The list of warning/optimization flags set in QEMU_CFLAGS is
in two places in configure. Only one of the places checks
for GCC support. Merge the two separate lists into one and
ensure they are all tested. Set one flag per line to make
it easier to read the list of flags as increasing numbers
are enabled

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 configure |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

Comments

Stefan Weil April 2, 2012, 4:19 p.m. UTC | #1
Am 02.04.2012 12:50, schrieb Daniel P. Berrange:
> From: "Daniel P. Berrange" <berrange@redhat.com>
>
> The list of warning/optimization flags set in QEMU_CFLAGS is
> in two places in configure. Only one of the places checks
> for GCC support. Merge the two separate lists into one and
> ensure they are all tested. Set one flag per line to make
> it easier to read the list of flags as increasing numbers
> are enabled

The first list includes compiler flags which don't need
a test because all versions of gcc support them.

Only the flags in the second list must be tested.

Merging both list and testing all flags increases the time
needed for configure when the current test method is used.

It's possible to reduce the number of compiler invocations
during configure by passing all flags together to the
compiler and analyzing the error message which is returned.

Example:

gcc -Wtest1 -Wunsupported2 -E - < /dev/null
cc1: error: unrecognized command line option "-Wtest1"
cc1: error: unrecognized command line option "-Wunsupported2"

>
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
> configure | 31 ++++++++++++++++++++++++-------
> 1 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/configure b/configure
> index 4b3adc9..cd40d17 100755
> --- a/configure
> +++ b/configure
> @@ -252,9 +252,6 @@ pkg_config=query_pkg_config
> sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
>
> # default flags for all hosts
> -QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
> -QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes 
> $QEMU_CFLAGS"
> -QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
> QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 
> $QEMU_CFLAGS"
> QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
> QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
> @@ -1144,10 +1141,30 @@ else
> exit 1
> fi
>
> -gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
> -gcc_flags="-Wformat-security -Wformat-y2k -Winit-self 
> -Wignored-qualifiers $gcc_flags"
> -gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs 
> $gcc_flags"
> -gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
> +gcc_flags=
> +
> +# Optimization flags
> +gcc_flags="$gcc_flags -fstack-protector-all"
> +gcc_flags="$gcc_flags -fno-strict-aliasing"
> +
> +# Warning flags
> +gcc_flags="$gcc_flags -Wall"
> +gcc_flags="$gcc_flags -Wundef"
> +gcc_flags="$gcc_flags -Wwrite-strings"
> +gcc_flags="$gcc_flags -Wmissing-prototypes"
> +gcc_flags="$gcc_flags -Wstrict-prototypes"
> +gcc_flags="$gcc_flags -Wredundant-decls"
> +gcc_flags="$gcc_flags -Wold-style-declaration"
> +gcc_flags="$gcc_flags -Wold-style-definition"
> +gcc_flags="$gcc_flags -Wtype-limits"
> +gcc_flags="$gcc_flags -Wformat-security"
> +gcc_flags="$gcc_flags -Wformat-y2k"
> +gcc_flags="$gcc_flags -Winit-self"
> +gcc_flags="$gcc_flags -Wignored-qualifiers"
> +gcc_flags="$gcc_flags -Wmissing-include-dirs"
> +gcc_flags="$gcc_flags -Wempty-body"
> +gcc_flags="$gcc_flags -Wnested-externs"
> +gcc_flags="$gcc_flags -Wendif-labels"

Could you sort the -Wxxx flags? Then it's easier to avoid
duplicates, and merge conflicts will occur less often when
new flags are added.

> cat > $TMPC << EOF
> int main(void) { return 0; }
> EOF

Regards,

Stefan Weil
diff mbox

Patch

diff --git a/configure b/configure
index 4b3adc9..cd40d17 100755
--- a/configure
+++ b/configure
@@ -252,9 +252,6 @@  pkg_config=query_pkg_config
 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
 
 # default flags for all hosts
-QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
-QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
-QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
 QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
@@ -1144,10 +1141,30 @@  else
     exit 1
 fi
 
-gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
-gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
-gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
-gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
+gcc_flags=
+
+# Optimization flags
+gcc_flags="$gcc_flags -fstack-protector-all"
+gcc_flags="$gcc_flags -fno-strict-aliasing"
+
+# Warning flags
+gcc_flags="$gcc_flags -Wall"
+gcc_flags="$gcc_flags -Wundef"
+gcc_flags="$gcc_flags -Wwrite-strings"
+gcc_flags="$gcc_flags -Wmissing-prototypes"
+gcc_flags="$gcc_flags -Wstrict-prototypes"
+gcc_flags="$gcc_flags -Wredundant-decls"
+gcc_flags="$gcc_flags -Wold-style-declaration"
+gcc_flags="$gcc_flags -Wold-style-definition"
+gcc_flags="$gcc_flags -Wtype-limits"
+gcc_flags="$gcc_flags -Wformat-security"
+gcc_flags="$gcc_flags -Wformat-y2k"
+gcc_flags="$gcc_flags -Winit-self"
+gcc_flags="$gcc_flags -Wignored-qualifiers"
+gcc_flags="$gcc_flags -Wmissing-include-dirs"
+gcc_flags="$gcc_flags -Wempty-body"
+gcc_flags="$gcc_flags -Wnested-externs"
+gcc_flags="$gcc_flags -Wendif-labels"
 cat > $TMPC << EOF
 int main(void) { return 0; }
 EOF