diff options
author | sleske <sleske@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-09-10 22:36:02 +0000 |
---|---|---|
committer | sleske <sleske@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-09-10 22:36:02 +0000 |
commit | eb49c62b6ba3edc84c54ca7e3083a7b3c907c0a8 (patch) | |
tree | 262e20b7c1f3df6769615da2fe6c9bd510854d03 | |
parent | c72999bb06160b3fc51877e221657715529e849c (diff) | |
download | navit-eb49c62b6ba3edc84c54ca7e3083a7b3c907c0a8.tar.gz |
Fix:build:Check if compiler options are supported before using them.|Allows building with GCC 3.3, to resolve #1144.
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5892 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rwxr-xr-x | CMakeLists.txt | 17 | ||||
-rw-r--r-- | cmake/navit_macros.cmake | 17 |
2 files changed, 25 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 366de2148..9dc351365 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -657,16 +657,15 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY # functions implementing the interface of a plugin. # -Wno-sign-compare: We currently just use int almost everywhere. # Unclear if it's really worth correcting. -include(CheckCCompilerFlag) if(CMAKE_COMPILER_IS_GNUCC OR CCMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wundef -Wcast-align -Wpointer-arith -Wextra -Wno-unused-parameter -Wno-sign-compare -Wmissing-prototypes -Wstrict-prototypes ") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wundef -Wcast-align -Wpointer-arith -Wextra -Wno-unused-parameter -Wno-sign-compare ") - # -Wno-missing-field-initializers does not work with old gcc - check_c_compiler_flag(-Wno-missing-field-initializers HAS_NO_MISSING_FIELD_INI) - if (HAS_NO_MISSING_FIELD_INI) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers ") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers ") - endif() + set(COMMON_COMPILER_FLAGS "-Wall -Wundef -Wcast-align -Wpointer-arith -Wno-unused-parameter -Wno-sign-compare") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}") + # flags not available in old GCC versions, or not for both C and C++ + add_compiler_flag_if_available("-Wno-missing-field-initializers") + add_compiler_flag_if_available("-Wextra") + add_compiler_flag_if_available("-Wmissing-prototypes") + add_compiler_flag_if_available("-Wstrict-prototypes ") endif() if (EXTRA_DEFINES) diff --git a/cmake/navit_macros.cmake b/cmake/navit_macros.cmake index de5ecb2f4..dd1b3bb37 100644 --- a/cmake/navit_macros.cmake +++ b/cmake/navit_macros.cmake @@ -86,3 +86,20 @@ macro(message_error) set(NAVIT_DEPENDENCY_ERROR 1) message( SEND_ERROR ${ARGN}) endmacro(message_error) + +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) +function(add_compiler_flag_if_available FLAG) + set(VAR_FLAG_AVAILABLE_C "FLAG_AVAILABLE_C_${FLAG}") + check_c_compiler_flag(${FLAG} ${VAR_FLAG_AVAILABLE_C}) + if (${${VAR_FLAG_AVAILABLE_C}}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG} ") + endif() + if(CMAKE_CXX_COMPILER) # C++ compiler is optional + set(VAR_FLAG_AVAILABLE_CXX "FLAG_AVAILABLE_CXX_${FLAG}") + check_cxx_compiler_flag(${FLAG} ${VAR_FLAG_AVAILABLE_CXX}) + if (${${VAR_FLAG_AVAILABLE_CXX}}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG} ") + endif() + endif() +endfunction(add_compiler_flag_if_available) |