From abd1bb070912265e90c11468bd53bb6646fb6655 Mon Sep 17 00:00:00 2001 From: dominicpezzuto Date: Sat, 27 Dec 2014 16:44:26 -0500 Subject: [PATCH 1/2] Fix build issues related to Solaris and older GCC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed two build issues: - JsonCPP currently doesn’t compile for Solaris due to platform differences with ‘isfinite’ function. Fixed by adding proper include and define for Solaris. - JsonCPP currently doesn’t compile for GCC version 4.1.2 and earlier due to use of ‘-Werror=*’ compile flag, which was introduced in a later version. Fixed by adding version check to only add this flag on supported versions of GCC. --- src/lib_json/CMakeLists.txt | 1 - src/lib_json/json_writer.cpp | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt index 418044deb..f2ec781f7 100644 --- a/src/lib_json/CMakeLists.txt +++ b/src/lib_json/CMakeLists.txt @@ -6,7 +6,6 @@ ELSE(JSONCPP_LIB_BUILD_SHARED) SET(JSONCPP_LIB_TYPE STATIC) ENDIF(JSONCPP_LIB_BUILD_SHARED) - if( CMAKE_COMPILER_IS_GNUCXX ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing") endif( CMAKE_COMPILER_IS_GNUCXX ) diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index 8eb7dc590..12355f190 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -26,6 +26,11 @@ #pragma warning(disable : 4996) #endif +#if defined(__sun) && defined(__SVR4) //Solaris +#include +#define isfinite finite +#endif + namespace Json { static bool containsControlCharacter(const char* str) { From 250bd9a00fc49df58bc78bccebffda9689991e59 Mon Sep 17 00:00:00 2001 From: dominicpezzuto Date: Sat, 27 Dec 2014 16:45:40 -0500 Subject: [PATCH 2/2] Fix build issues related to Solaris and older GCC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed two build issues: - JsonCPP currently doesn’t compile for Solaris due to platform differences with ‘isfinite’ function. Fixed by adding proper include and define for Solaris. - JsonCPP currently doesn’t compile for GCC version 4.1.2 and earlier due to use of ‘-Werror=*’ compile flag, which was introduced in a later version. Fixed by adding version check to only add this flag on supported versions of GCC. --- src/lib_json/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt index f2ec781f7..eeaa2598e 100644 --- a/src/lib_json/CMakeLists.txt +++ b/src/lib_json/CMakeLists.txt @@ -7,7 +7,14 @@ ELSE(JSONCPP_LIB_BUILD_SHARED) ENDIF(JSONCPP_LIB_BUILD_SHARED) if( CMAKE_COMPILER_IS_GNUCXX ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing") + #Get compiler version. + execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion + OUTPUT_VARIABLE GNUCXX_VERSION ) + + #-Werror=* was introduced -after- GCC 4.1.2 + if( GNUCXX_VERSION VERSION_GREATER 4.1.2 ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing") + endif() endif( CMAKE_COMPILER_IS_GNUCXX ) SET( JSONCPP_INCLUDE_DIR ../../include )