mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2946 from ethereum/cmake
CMake: Add compiler warning about implicit fallthough
This commit is contained in:
commit
6db13311dd
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
|
# CMake file for cpp-ethereum project which specifies our compiler settings
|
||||||
# for each supported platform and build configuration.
|
# 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.
|
# 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)
|
# 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)
|
eth_add_cxx_compiler_flag_if_supported(-fstack-protector-strong have_stack_protector_strong_support)
|
||||||
if (have_stack_protector_strong)
|
if(NOT have_stack_protector_strong_support)
|
||||||
add_compile_options(-fstack-protector-strong)
|
eth_add_cxx_compiler_flag_if_supported(-fstack-protector)
|
||||||
else()
|
|
||||||
check_cxx_compiler_flag(-fstack-protector have_stack_protector)
|
|
||||||
if(have_stack_protector)
|
|
||||||
add_compile_options(-fstack-protector)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
eth_add_cxx_compiler_flag_if_supported(-Wimplicit-fallthrough)
|
||||||
|
|
||||||
if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
|
if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
|
||||||
|
|
||||||
# Use ISO C++11 standard language.
|
# 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.")
|
message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater.")
|
||||||
endif ()
|
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.
|
# Additional Clang-specific compiler settings.
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user