summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xCMakeLists.txt17
-rw-r--r--cmake/navit_macros.cmake17
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)