Browse Source

Merge pull request #3552 from jakesmith/return-type-error2

HPCC-8114 Check gcc c++ version before using -Werror=

Reviewed-By: Renato Golin <rengolin@hpccsystems.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 12 years ago
parent
commit
da7065da37
1 changed files with 20 additions and 18 deletions
  1. 20 18
      cmake_modules/commonSetup.cmake

+ 20 - 18
cmake_modules/commonSetup.cmake

@@ -127,6 +127,19 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     message(FATAL_ERROR "No threading support found")
   ENDIF()
 
+  if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+   set (CMAKE_COMPILER_IS_CLANGXX 1)
+  endif()
+  if ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
+   set (CMAKE_COMPILER_IS_CLANG 1)
+  endif()
+  if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
+    execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_C_COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+  endif ()
+  if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
+    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+  endif ()
+
   if (WIN32)
     # On windows, the vcproj generator generates both windows and debug build capabilities, and the release mode is appended to the directory later
     # This output location matches what our existing windows release scripts expect - might make sense to move out of tree sometime though
@@ -152,19 +165,17 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     endif ()
     set ( EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/bin" )
     set ( LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/libs" )
-    if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
-     set (CMAKE_COMPILER_IS_CLANGXX 1)
-    endif()
-    if ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
-     set (CMAKE_COMPILER_IS_CLANG 1)
-    endif()
+
     if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
       message ("${CMAKE_CXX_COMPILER_ID}")
-      SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti -fPIC -fmessage-length=0 -Wformat -Wformat-security -Werror=return-type -Wformat-nonliteral -pthread")
+      SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti -fPIC -fmessage-length=0 -Wformat -Wformat-security -Wformat-nonliteral -pthread")
       SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rdynamic")
       SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -fno-inline-functions")
       if (CMAKE_COMPILER_IS_GNUCXX)
         SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g -fno-default-inline")
+        if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2.4 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.2.4)
+          SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type")
+        endif ()
       endif ()
     endif ()
     if (CMAKE_COMPILER_IS_CLANGXX)
@@ -178,14 +189,6 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     endif ()
   endif ()
 
-  if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
-    execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_C_COMPILER_VERSION)
-  endif ()
-
-  if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
-    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION)
-  endif ()
-
   macro(HPCC_ADD_EXECUTABLE target)
     add_executable(${target} ${ARGN})
   endmacro(HPCC_ADD_EXECUTABLE target)
@@ -337,9 +340,8 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
       ENDIF()
 
       IF (CMAKE_COMPILER_IS_GNUCXX)
-        EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GNUCXX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
-        IF ("${GNUCXX_VERSION}" VERSION_LESS "4.1.1")
-          MESSAGE(FATAL_ERROR "You need Gnu c++ version 4.1.1 or later to build this project (version ${GNUCXX_VERSION} detected)")
+        IF ("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.1.1")
+          MESSAGE(FATAL_ERROR "You need Gnu c++ version 4.1.1 or later to build this project (version ${CMAKE_CXX_COMPILER_VERSION} detected)")
         ENDIF()
       ENDIF()
     ENDIF()