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