Check for presence of return-type-c-linkage option with Clang. - Older versions of Clang (<= 2.9 - [which was shipped with Ubuntu 11.10]) do not support return-type-c-linkage option and thus aborted compilation. Change-Id: Ifc76db6e5d525c98bebfa579116672b3b0e04387
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bb4a39..b144365 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -676,7 +676,14 @@ # threshold to the linker and clang complains about it and dies. IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") SET(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600 -Wno-return-type-c-linkage") + "${CMAKE_CXX_FLAGS} -Qunused-arguments -mllvm -inline-threshold=600") + # Older versions of Clang (<= 2.9) do not support the 'return-type-c-linkage' + # option, so check for its presence before adding it to the default flags set. + CHECK_CXX_COMPILER_FLAG("-Wno-return-type-c-linkage" + HAVE_RETURN_TYPE_C_LINKAGE) + IF (HAVE_RETURN_TYPE_C_LINKAGE) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage") + ENDIF(HAVE_RETURN_TYPE_C_LINKAGE) ENDIF () ADD_SUBDIRECTORY(internal/ceres)