Zebediah Figura : configure: Use -Winit-self if possible.
Alexandre Julliard
julliard at winehq.org
Thu Mar 11 15:59:36 CST 2021
Module: wine
Branch: master
Commit: 131d2d2ef3ab180eeb9d6c7e7b9c8bd8697b62d5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=131d2d2ef3ab180eeb9d6c7e7b9c8bd8697b62d5
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Thu Mar 11 10:08:06 2021 -0600
configure: Use -Winit-self if possible.
This protects against variable initialization like "int x = x". gcc apparently
treats this as an intentional way to suppress uninitialized or unused variable
warnings, but in my case it has caused at least one confusing bug.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
configure | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 2 ++
2 files changed, 58 insertions(+)
diff --git a/configure b/configure
index 475fcfdf749..9026b1f53ad 100755
--- a/configure
+++ b/configure
@@ -9981,6 +9981,37 @@ fi
$as_echo "$ac_cv_crosscflags__Wignored_qualifiers" >&6; }
if test "x$ac_cv_crosscflags__Wignored_qualifiers" = xyes; then :
EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wignored-qualifiers"
+fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -Winit-self" >&5
+$as_echo_n "checking whether the cross-compiler supports -Winit-self... " >&6; }
+if ${ac_cv_crosscflags__Winit_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -Winit-self"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_crosscflags__Winit_self=yes
+else
+ ac_cv_crosscflags__Winit_self=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__Winit_self" >&5
+$as_echo "$ac_cv_crosscflags__Winit_self" >&6; }
+if test "x$ac_cv_crosscflags__Winit_self" = xyes; then :
+ EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Winit-self"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -Wpacked-not-aligned" >&5
$as_echo_n "checking whether the cross-compiler supports -Wpacked-not-aligned... " >&6; }
@@ -17193,6 +17224,31 @@ fi
$as_echo "$ac_cv_cflags__Wignored_qualifiers" >&6; }
if test "x$ac_cv_cflags__Wignored_qualifiers" = xyes; then :
EXTRACFLAGS="$EXTRACFLAGS -Wignored-qualifiers"
+fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Winit-self" >&5
+$as_echo_n "checking whether the compiler supports -Winit-self... " >&6; }
+if ${ac_cv_cflags__Winit_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_wine_try_cflags_saved=$CFLAGS
+CFLAGS="$CFLAGS -Winit-self"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(int argc, char **argv) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_cflags__Winit_self=yes
+else
+ ac_cv_cflags__Winit_self=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Winit_self" >&5
+$as_echo "$ac_cv_cflags__Winit_self" >&6; }
+if test "x$ac_cv_cflags__Winit_self" = xyes; then :
+ EXTRACFLAGS="$EXTRACFLAGS -Winit-self"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wpacked-not-aligned" >&5
$as_echo_n "checking whether the compiler supports -Wpacked-not-aligned... " >&6; }
diff --git a/configure.ac b/configure.ac
index 5b7f09de924..1ca832102d8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1044,6 +1044,7 @@ then
WINE_TRY_CROSSCFLAGS([-Wdeclaration-after-statement])
WINE_TRY_CROSSCFLAGS([-Wempty-body])
WINE_TRY_CROSSCFLAGS([-Wignored-qualifiers])
+ WINE_TRY_CROSSCFLAGS([-Winit-self])
WINE_TRY_CROSSCFLAGS([-Wpacked-not-aligned],[EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wno-packed-not-aligned"])
WINE_TRY_CROSSCFLAGS([-Wpragma-pack],[EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wno-pragma-pack"])
WINE_TRY_CROSSCFLAGS([-Wshift-overflow=2])
@@ -2024,6 +2025,7 @@ then
WINE_TRY_CFLAGS([-Wdeclaration-after-statement])
WINE_TRY_CFLAGS([-Wempty-body])
WINE_TRY_CFLAGS([-Wignored-qualifiers])
+ WINE_TRY_CFLAGS([-Winit-self])
WINE_TRY_CFLAGS([-Wpacked-not-aligned],[EXTRACFLAGS="$EXTRACFLAGS -Wno-packed-not-aligned"])
WINE_TRY_CFLAGS([-Wpragma-pack],[EXTRACFLAGS="$EXTRACFLAGS -Wno-pragma-pack"])
WINE_TRY_CFLAGS([-Wshift-overflow=2])
More information about the wine-cvs
mailing list