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)