mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-28 13:53:10 +00:00
cmake: defeat bogus missing-field-initializers warning on g++ 4.8
g++ 4.8 emits a bogus warning on code like foo{}. Add a compiler flag -Wno-missing-field-initializers if that warning is detected, because it is annoying.
This commit is contained in:
parent
e7de342259
commit
379ad245e4
1 changed files with 20 additions and 1 deletions
|
@ -5,6 +5,7 @@
|
||||||
# This is the case for at least Cygwin and Newlib.
|
# This is the case for at least Cygwin and Newlib.
|
||||||
list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE=1)
|
list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE=1)
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(CMakePushCheckState)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
check_cxx_compiler_flag("-Werror=unguarded-availability" REQUIRES_UNGUARDED_AVAILABILITY)
|
check_cxx_compiler_flag("-Werror=unguarded-availability" REQUIRES_UNGUARDED_AVAILABILITY)
|
||||||
|
@ -31,6 +32,25 @@ if (HAS_REDUNDANT_MOVE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-move")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-move")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Defeat bogus warnings about missing field initializers for `var{}` initialization.
|
||||||
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
cmake_push_check_state()
|
||||||
|
list(APPEND CMAKE_REQUIRED_FLAGS "-W")
|
||||||
|
check_cxx_source_compiles("
|
||||||
|
struct sr_t { int x; };
|
||||||
|
int main(void) {
|
||||||
|
sr_t sr{};
|
||||||
|
return sr.x;
|
||||||
|
}"
|
||||||
|
EMPTY_VALUE_INIT_ACCEPTED
|
||||||
|
FAIL_REGEX "-Wmissing-field-initializers"
|
||||||
|
)
|
||||||
|
if (NOT EMPTY_VALUE_INIT_ACCEPTED)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
|
||||||
|
endif()
|
||||||
|
cmake_pop_check_state()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Disable static destructors if we can.
|
# Disable static destructors if we can.
|
||||||
check_cxx_compiler_flag("-fno-c++-static-destructors" DISABLE_STATIC_DESTRUCTORS)
|
check_cxx_compiler_flag("-fno-c++-static-destructors" DISABLE_STATIC_DESTRUCTORS)
|
||||||
if (DISABLE_STATIC_DESTRUCTORS)
|
if (DISABLE_STATIC_DESTRUCTORS)
|
||||||
|
@ -79,7 +99,6 @@ include(CheckIncludeFiles)
|
||||||
include(CheckStructHasMember)
|
include(CheckStructHasMember)
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
include(CheckTypeSize)
|
include(CheckTypeSize)
|
||||||
include(CMakePushCheckState)
|
|
||||||
check_cxx_symbol_exists(backtrace_symbols execinfo.h HAVE_BACKTRACE_SYMBOLS)
|
check_cxx_symbol_exists(backtrace_symbols execinfo.h HAVE_BACKTRACE_SYMBOLS)
|
||||||
|
|
||||||
# workaround for lousy mtime precision on a Linux kernel
|
# workaround for lousy mtime precision on a Linux kernel
|
||||||
|
|
Loading…
Reference in a new issue