mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
CMake: Add compiler warning about implicit fallthough
This commit is contained in:
parent
af4d8779bb
commit
5722f3083c
23
cmake/EthCheckCXXCompilerFlag.cmake
Normal file
23
cmake/EthCheckCXXCompilerFlag.cmake
Normal file
@ -0,0 +1,23 @@
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
# Adds CXX compiler flag if the flag is supported by the compiler.
|
||||
#
|
||||
# This is effectively a combination of CMake's check_cxx_compiler_flag()
|
||||
# and add_compile_options():
|
||||
#
|
||||
# if(check_cxx_compiler_flag(flag))
|
||||
# add_compile_options(flag)
|
||||
#
|
||||
function(eth_add_cxx_compiler_flag_if_supported FLAG)
|
||||
# Remove leading - or / from the flag name.
|
||||
string(REGEX REPLACE "^-|/" "" name ${FLAG})
|
||||
check_cxx_compiler_flag(${FLAG} ${name})
|
||||
if(${name})
|
||||
add_compile_options(${FLAG})
|
||||
endif()
|
||||
|
||||
# If the optional argument passed, store the result there.
|
||||
if(ARGV1)
|
||||
set(${ARGV1} ${name} PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
@ -4,7 +4,7 @@
|
||||
# CMake file for cpp-ethereum project which specifies our compiler settings
|
||||
# for each supported platform and build configuration.
|
||||
#
|
||||
# See http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/.
|
||||
# The documentation for cpp-ethereum is hosted at http://cpp-ethereum.org
|
||||
#
|
||||
# Copyright (c) 2014-2016 cpp-ethereum contributors.
|
||||
#------------------------------------------------------------------------------
|
||||
@ -14,18 +14,15 @@
|
||||
#
|
||||
# These settings then end up spanning all POSIX platforms (Linux, OS X, BSD, etc)
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(EthCheckCXXCompilerFlag)
|
||||
|
||||
check_cxx_compiler_flag(-fstack-protector-strong have_stack_protector_strong)
|
||||
if (have_stack_protector_strong)
|
||||
add_compile_options(-fstack-protector-strong)
|
||||
else()
|
||||
check_cxx_compiler_flag(-fstack-protector have_stack_protector)
|
||||
if(have_stack_protector)
|
||||
add_compile_options(-fstack-protector)
|
||||
endif()
|
||||
eth_add_cxx_compiler_flag_if_supported(-fstack-protector-strong have_stack_protector_strong_support)
|
||||
if(NOT have_stack_protector_strong_support)
|
||||
eth_add_cxx_compiler_flag_if_supported(-fstack-protector)
|
||||
endif()
|
||||
|
||||
eth_add_cxx_compiler_flag_if_supported(-Wimplicit-fallthrough)
|
||||
|
||||
if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
|
||||
|
||||
# Use ISO C++11 standard language.
|
||||
@ -83,12 +80,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
|
||||
message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater.")
|
||||
endif ()
|
||||
|
||||
# Until https://github.com/ethereum/solidity/issues/2479 is handled
|
||||
# disable all implicit fallthrough warnings in the codebase for GCC > 7.0
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
|
||||
add_compile_options(-Wno-implicit-fallthrough)
|
||||
endif()
|
||||
|
||||
# Additional Clang-specific compiler settings.
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user