forked from osmocom/wireshark
autotools: do not apply CFLAGS in reverse order
Fixes false "-Wvariadic-macros" because "-Wpedantic" came after
"-Wno-variadic-macros". While at it, avoid (unintentionally?) adding
-fPIE to all C++ programs (via CXXFLAGS).
Availability of flags is checked by appending a flag (in case the user
has something like CFLAGS=-Wno-error).
This removes a -fPIE check for CXXFLAGS and removes 5
-Woverlength-strings and 9 -Wvariadic-macros warnings from make with
Clang 3.7.0. configure and compile times were equal. (A diff between the
configure outputs showed no other changes.)
This reverts commit cf0d762d73
and applies
a different approach.
Ping-Bug: 10791
Change-Id: Ic7b4137e2d98b06bc7625091be9bc7dd69182586
Reviewed-on: https://code.wireshark.org/review/12175
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
parent
a198f47c06
commit
470c745a7a
42
acinclude.m4
42
acinclude.m4
|
@ -1532,7 +1532,9 @@ AC_DEFUN([AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR],
|
|||
#
|
||||
# The macro first determines if the compiler supports GCC-style flags.
|
||||
# Then it attempts to compile with the defined cflags. The defined
|
||||
# flags are added to CFLAGS only if the compilation succeeds.
|
||||
# flags are added to WS_CHECKED_CFLAGS only if the compilation succeeds.
|
||||
# CFLAGS remains unchanged. can_add_to_cflags is set to "no" when the
|
||||
# flag is checked but unavailable. (Like-wise for CXXFLAGS.)
|
||||
#
|
||||
# We do this because not all such options are necessarily supported by
|
||||
# the version of the particular compiler we're using.
|
||||
|
@ -1560,17 +1562,18 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
#
|
||||
AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS)
|
||||
CFLAGS_saved="$CFLAGS"
|
||||
CFLAGS="$WS_CHECKED_CFLAGS $CFLAGS"
|
||||
if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
|
||||
then
|
||||
CFLAGS="$ac_wireshark_unknown_warning_option_error $GCC_OPTION $CFLAGS"
|
||||
CFLAGS="$CFLAGS $ac_wireshark_unknown_warning_option_error $GCC_OPTION"
|
||||
elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
|
||||
then
|
||||
CFLAGS="-Werror $GCC_OPTION $CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror $GCC_OPTION"
|
||||
elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
|
||||
then
|
||||
CFLAGS="-Werror $GCC_OPTION $CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror $GCC_OPTION"
|
||||
else
|
||||
CFLAGS="$GCC_OPTION $CFLAGS"
|
||||
CFLAGS="$CFLAGS $GCC_OPTION"
|
||||
fi
|
||||
AC_COMPILE_IFELSE(
|
||||
[
|
||||
|
@ -1591,7 +1594,7 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_MSG_CHECKING(whether $GCC_OPTION $4)
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_SOURCE($3)],
|
||||
[AC_LANG_SOURCE($3)],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
#
|
||||
|
@ -1599,19 +1602,18 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
# added them, by setting CFLAGS to the saved value plus
|
||||
# just the new option.
|
||||
#
|
||||
CFLAGS="$GCC_OPTION $CFLAGS_saved"
|
||||
WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS $GCC_OPTION"
|
||||
if test "$CC" = "$CC_FOR_BUILD"; then
|
||||
#
|
||||
# We're building the build tools with the same compiler
|
||||
# with which we're building Wireshark, so add the flags
|
||||
# to the flags for that compiler as well.
|
||||
#
|
||||
CFLAGS_FOR_BUILD="$GCC_OPTION $CFLAGS_FOR_BUILD"
|
||||
CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD $GCC_OPTION"
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CFLAGS="$CFLAGS_saved"
|
||||
])
|
||||
else
|
||||
#
|
||||
|
@ -1619,22 +1621,22 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
# added them, by setting CFLAGS to the saved value plus
|
||||
# just the new option.
|
||||
#
|
||||
CFLAGS="$GCC_OPTION $CFLAGS_saved"
|
||||
WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS $GCC_OPTION"
|
||||
if test "$CC" = "$CC_FOR_BUILD"; then
|
||||
#
|
||||
# We're building the build tools with the same compiler
|
||||
# with which we're building Wireshark, so add the flags
|
||||
# to the flags for that compiler as well.
|
||||
#
|
||||
CFLAGS_FOR_BUILD="$GCC_OPTION $CFLAGS_FOR_BUILD"
|
||||
CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD $GCC_OPTION"
|
||||
fi
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
can_add_to_cflags=no
|
||||
CFLAGS="$CFLAGS_saved"
|
||||
])
|
||||
CFLAGS="$CFLAGS_saved"
|
||||
fi
|
||||
#
|
||||
# Did we find a C++ compiler?
|
||||
|
@ -1666,17 +1668,18 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
#
|
||||
AC_MSG_CHECKING(whether we can add $GCC_OPTION to CXXFLAGS)
|
||||
CXXFLAGS_saved="$CXXFLAGS"
|
||||
CXXFLAGS="$WS_CHECKED_CXXFLAGS $CXXFLAGS"
|
||||
if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
|
||||
then
|
||||
CXXFLAGS="$ac_wireshark_unknown_warning_option_error $ac_wireshark_non_cxx_warning_option_error $GCC_OPTION $CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS $ac_wireshark_unknown_warning_option_error $ac_wireshark_non_cxx_warning_option_error $GCC_OPTION"
|
||||
elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
|
||||
then
|
||||
CXXFLAGS="-Werror $GCC_OPTION $CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
|
||||
elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
|
||||
then
|
||||
CXXFLAGS="-Werror $GCC_OPTION $CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
|
||||
else
|
||||
CXXFLAGS="$GCC_OPTION $CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS $GCC_OPTION"
|
||||
fi
|
||||
AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE(
|
||||
|
@ -1706,11 +1709,10 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
# added them, by setting CXXFLAGS to the saved value plus
|
||||
# just the new option.
|
||||
#
|
||||
CXXFLAGS="$GCC_OPTION $CXXFLAGS_saved"
|
||||
WS_CHECKED_CXXFLAGS="$WS_CHECKED_CXXFLAGS $GCC_OPTION"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CXXFLAGS="$CXXFLAGS_saved"
|
||||
])
|
||||
else
|
||||
#
|
||||
|
@ -1718,14 +1720,14 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
|
|||
# added them, by setting CXXFLAGS to the saved value plus
|
||||
# just the new option.
|
||||
#
|
||||
CXXFLAGS="$GCC_OPTION $CXXFLAGS_saved"
|
||||
WS_CHECKED_CXXFLAGS="$WS_CHECKED_CXXFLAGS $GCC_OPTION"
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
can_add_to_cxxflags=no
|
||||
CXXFLAGS="$CXXFLAGS_saved"
|
||||
])
|
||||
CXXFLAGS="$CXXFLAGS_saved"
|
||||
AC_LANG_POP([C++])
|
||||
fi
|
||||
if test "(" "$can_add_to_cflags" = "yes" -a "$can_add_to_cxxflags" = "no" ")" \
|
||||
|
|
32
configure.ac
32
configure.ac
|
@ -941,6 +941,7 @@ AC_ARG_ENABLE(asan,
|
|||
# and no yet all leak is fixed...
|
||||
# use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
|
||||
#
|
||||
# XXX shouldn't this also be added to LDFLAGS?
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=address)
|
||||
|
||||
],)
|
||||
|
@ -1048,18 +1049,16 @@ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
|
|||
# failures to export symbols, rather than having that fail only on
|
||||
# Windows.
|
||||
#
|
||||
CFLAGS_before_fvhidden="$CFLAGS"
|
||||
#
|
||||
# GCC and GCC-compatible compilers
|
||||
#
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
|
||||
if test "x$CFLAGS" = "x$CFLAGS_before_fvhidden"
|
||||
if test "x$can_add_to_cflags" = "xno"
|
||||
then
|
||||
#
|
||||
# Sun^WOracle C.
|
||||
#
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xldscope=hidden)
|
||||
if test "x$CFLAGS" = "x$CFLAGS_before_fvhidden"
|
||||
if test "x$can_add_to_cflags" = "xno"
|
||||
then
|
||||
# TODO add other ways of hiding symbols
|
||||
AC_MSG_WARN(Compiler will export all symbols from shared libraries)
|
||||
|
@ -1079,12 +1078,12 @@ AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
|
|||
# privileges, and using PIE means the OS can run it at random locations
|
||||
# in the address space to make attacks more difficult.
|
||||
#
|
||||
CFLAGS_before_pie="$CFLAGS"
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE)
|
||||
if test "x$CFLAGS" != "x$CFLAGS_before_pie"
|
||||
WS_CHECKED_CFLAGS_before_pie="$WS_CHECKED_CFLAGS"
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
|
||||
if test "x$can_add_to_cflags" = "xyes"
|
||||
then
|
||||
# Restore CFLAGS
|
||||
CFLAGS="$CFLAGS_before_pie"
|
||||
WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_pie"
|
||||
|
||||
LDFLAGS_before_pie="$LDFLAGS"
|
||||
AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
|
||||
|
@ -1102,9 +1101,9 @@ fi
|
|||
AC_SUBST(PIE_CFLAGS)
|
||||
AC_SUBST(PIE_LDFLAGS)
|
||||
|
||||
CFLAGS_before_simd="$CFLAGS"
|
||||
WS_CHECKED_CFLAGS_before_simd="$WS_CHECKED_CFLAGS"
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-msse4.2, C)
|
||||
if test "x$CFLAGS" != "x$CFLAGS_before_simd"
|
||||
if test "x$can_add_to_cflags" = "xyes"
|
||||
then
|
||||
#
|
||||
# The compiler supports -msse4.2; use that to enable SSE 4.2.
|
||||
|
@ -1114,14 +1113,14 @@ then
|
|||
# is run only if the hardware supports it, but other
|
||||
# code would do no such checks.
|
||||
#
|
||||
CFLAGS="$CFLAGS_before_simd"
|
||||
WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
|
||||
ac_sse4_2_flag=-msse4.2
|
||||
else
|
||||
#
|
||||
# Try -xarch=sse4_2; that's the flag for Sun's compiler.
|
||||
#
|
||||
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xarch=sse4_2, C)
|
||||
if test "x$CFLAGS" != "x$CFLAGS_before_simd"
|
||||
if test "x$can_add_to_cflags" = "xyes"
|
||||
then
|
||||
#
|
||||
# The compiler supports -xarch=sse4_2; use that to
|
||||
|
@ -1129,11 +1128,18 @@ else
|
|||
#
|
||||
# Restore CFLAGS; see above.
|
||||
#
|
||||
CFLAGS="$CFLAGS_before_simd"
|
||||
WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
|
||||
ac_sse4_2_flag=-xarch=sse4_2
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# All AC_WIRESHARK_COMPILER_FLAGS_CHECK are done, do not call it again!
|
||||
# Prepend them to the user-specified CFLAGS/CXXFLAGS.
|
||||
#
|
||||
CFLAGS="$WS_CHECKED_CFLAGS $CFLAGS"
|
||||
CXXFLAGS="$WS_CHECKED_CXXFLAGS $CXXFLAGS"
|
||||
|
||||
if test "x$ac_sse4_2_flag" != x; then
|
||||
#
|
||||
# OK, we have a compiler flag to enable SSE 4.2.
|
||||
|
|
Loading…
Reference in New Issue