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)