From 30bb4ccb670a02273e293b159c67238ae20ba459 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:39:00 +0530 Subject: [PATCH 1/9] Use standard CMake variables - static/shared lib. Currently JSONCPP_LIB_BUILD_SHARED variable is used as option to build static/shared libraries. The current patch uses standard CMake variables for this. Such a workaround is done in https://github.com/open-source-parsers/jsoncpp/issues/51 Current patch will make it generic. --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cf63ea..30038d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ OPTION(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post OPTION(JSONCPP_WITH_WARNING_AS_ERROR "Force compilation to fail if a warning occurs" OFF) OPTION(JSONCPP_WITH_PKGCONFIG_SUPPORT "Generate and install .pc files" ON) OPTION(JSONCPP_WITH_CMAKE_PACKAGE "Generate and install cmake package files" OFF) +OPTION(BUILD_SHARED_LIBS "Build jsoncpp_lib as a shared library." OFF) +OPTION(BUILD_STATIC_LIBS "Build jsoncpp_lib static library." ON) # Ensures that CMAKE_BUILD_TYPE is visible in cmake-gui on Unix IF(NOT WIN32) From 11130997c3b35c2015ec074f2dd415d857339784 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:44:32 +0530 Subject: [PATCH 2/9] Use standard CMake variables - static/shared lib. Replace JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS Replace JSONCPP_LIB_BUILD_STATIC => BUILD_STATIC_LIBS Removed workaround https://github.com/open-source-parsers/jsoncpp/issues/51 Removed OPTION for shared/static in this file. --- src/lib_json/CMakeLists.txt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt index 18d127b..97b7019 100644 --- a/src/lib_json/CMakeLists.txt +++ b/src/lib_json/CMakeLists.txt @@ -1,10 +1,3 @@ -OPTION(JSONCPP_LIB_BUILD_SHARED "Build jsoncpp_lib as a shared library." OFF) -OPTION(JSONCPP_LIB_BUILD_STATIC "Build jsoncpp_lib static library." ON) - -IF(BUILD_SHARED_LIBS) - SET(JSONCPP_LIB_BUILD_SHARED ON) -ENDIF(BUILD_SHARED_LIBS) - if( CMAKE_COMPILER_IS_GNUCXX ) #Get compiler version. execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion @@ -46,7 +39,7 @@ ELSE(JSONCPP_WITH_CMAKE_PACKAGE) SET(INSTALL_EXPORT) ENDIF(JSONCPP_WITH_CMAKE_PACKAGE) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) ADD_DEFINITIONS( -DJSON_DLL_BUILD ) ADD_LIBRARY(jsoncpp_lib SHARED ${PUBLIC_HEADERS} ${jsoncpp_sources}) SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR}) @@ -65,7 +58,7 @@ IF(JSONCPP_LIB_BUILD_SHARED) ENDIF() -IF(JSONCPP_LIB_BUILD_STATIC) +IF(BUILD_STATIC_LIBS) ADD_LIBRARY(jsoncpp_lib_static STATIC ${PUBLIC_HEADERS} ${jsoncpp_sources}) SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR}) SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES OUTPUT_NAME jsoncpp ) From 0c1c076b7c77ca60df2179d04560bf201d0bafca Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:50:43 +0530 Subject: [PATCH 3/9] Use standard CMake variables - static/shared lib. Replaced JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS Moved definition DJSON_DLL to line 11. --- src/test_lib_json/CMakeLists.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/test_lib_json/CMakeLists.txt b/src/test_lib_json/CMakeLists.txt index f925ce0..f54c85f 100644 --- a/src/test_lib_json/CMakeLists.txt +++ b/src/test_lib_json/CMakeLists.txt @@ -1,9 +1,5 @@ # vim: et ts=4 sts=4 sw=4 tw=0 -IF(JSONCPP_LIB_BUILD_SHARED) - ADD_DEFINITIONS( -DJSON_DLL ) -ENDIF(JSONCPP_LIB_BUILD_SHARED) - ADD_EXECUTABLE( jsoncpp_test jsontest.cpp jsontest.h @@ -11,11 +7,12 @@ ADD_EXECUTABLE( jsoncpp_test ) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) + ADD_DEFINITIONS( -DJSON_DLL ) TARGET_LINK_LIBRARIES(jsoncpp_test jsoncpp_lib) -ELSE(JSONCPP_LIB_BUILD_SHARED) +ELSE(BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(jsoncpp_test jsoncpp_lib_static) -ENDIF(JSONCPP_LIB_BUILD_SHARED) +ENDIF(BUILD_SHARED_LIBS) # another way to solve issue #90 #set_target_properties(jsoncpp_test PROPERTIES COMPILE_FLAGS -ffloat-store) @@ -23,19 +20,19 @@ ENDIF(JSONCPP_LIB_BUILD_SHARED) # Run unit tests in post-build # (default cmake workflow hides away the test result into a file, resulting in poor dev workflow?!?) IF(JSONCPP_WITH_POST_BUILD_UNITTEST) - IF(JSONCPP_LIB_BUILD_SHARED) + IF(BUILD_SHARED_LIBS) # First, copy the shared lib, for Microsoft. # Then, run the test executable. ADD_CUSTOM_COMMAND( TARGET jsoncpp_test POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND $) - ELSE(JSONCPP_LIB_BUILD_SHARED) + ELSE(BUILD_SHARED_LIBS) # Just run the test executable. ADD_CUSTOM_COMMAND( TARGET jsoncpp_test POST_BUILD COMMAND $) - ENDIF(JSONCPP_LIB_BUILD_SHARED) + ENDIF(BUILD_SHARED_LIBS) ENDIF(JSONCPP_WITH_POST_BUILD_UNITTEST) SET_TARGET_PROPERTIES(jsoncpp_test PROPERTIES OUTPUT_NAME jsoncpp_test) From 43019088f0079fd6da2133b3a50af2006b7a5393 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:53:30 +0530 Subject: [PATCH 4/9] Use standard CMake variables - static/shared lib. Replaced JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS Moved flag JSON_DLL to line no 8. --- src/jsontestrunner/CMakeLists.txt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/jsontestrunner/CMakeLists.txt b/src/jsontestrunner/CMakeLists.txt index a2e48d6..820a7cd 100644 --- a/src/jsontestrunner/CMakeLists.txt +++ b/src/jsontestrunner/CMakeLists.txt @@ -1,18 +1,15 @@ FIND_PACKAGE(PythonInterp 2.6) -IF(JSONCPP_LIB_BUILD_SHARED) - ADD_DEFINITIONS( -DJSON_DLL ) -ENDIF(JSONCPP_LIB_BUILD_SHARED) - ADD_EXECUTABLE(jsontestrunner_exe main.cpp ) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) + ADD_DEFINITIONS( -DJSON_DLL ) TARGET_LINK_LIBRARIES(jsontestrunner_exe jsoncpp_lib) -ELSE(JSONCPP_LIB_BUILD_SHARED) +ELSE(BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(jsontestrunner_exe jsoncpp_lib_static) -ENDIF(JSONCPP_LIB_BUILD_SHARED) +ENDIF(BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES(jsontestrunner_exe PROPERTIES OUTPUT_NAME jsontestrunner_exe) From 0fe61a68f812e4c8d80547fe52b9b680a6ef4e96 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:55:24 +0530 Subject: [PATCH 5/9] Use standard CMake variables - static/shared lib. Replaced JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 59ba2ae..a0e84a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ language: cpp compiler: - gcc - clang -script: cmake -DJSONCPP_WITH_CMAKE_PACKAGE=$CMAKE_PKG -DJSONCPP_LIB_BUILD_SHARED=$SHARED_LIB -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE=$VERBOSE_MAKE . && make && make jsoncpp_check +script: cmake -DJSONCPP_WITH_CMAKE_PACKAGE=$CMAKE_PKG -DBUILD_SHARED_LIBS=$SHARED_LIB -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE=$VERBOSE_MAKE . && make && make jsoncpp_check env: matrix: - SHARED_LIB=ON STATIC_LIB=ON CMAKE_PKG=ON BUILD_TYPE=release VERBOSE_MAKE=false From 4f8ec9d207eb2fd7a25e2d6dacb3d37fd91d3d0b Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 18:58:26 +0530 Subject: [PATCH 6/9] Use standard CMake variables - static/shared lib. Replaced JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS Replaced JSONCPP_LIB_BUILD_STATIC => BUILD_STATIC_LIBS --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e728973..2940852 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Steps for generating solution/makefiles using `cmake-gui`: * Make "source code" point to the source directory. * Make "where to build the binary" point to the directory to use for the build. * Click on the "Grouped" check box. -* Review JsonCpp build options (tick `JSONCPP_LIB_BUILD_SHARED` to build as a +* Review JsonCpp build options (tick `BUILD_SHARED_LIBS` to build as a dynamic library). * Click the configure button at the bottom, then the generate button. * The generated solution/makefiles can be found in the binary directory. @@ -67,7 +67,7 @@ Alternatively, from the command-line on Unix in the source directory: mkdir -p build/debug cd build/debug - cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_STATIC=ON -DJSONCPP_LIB_BUILD_SHARED=OFF -G "Unix Makefiles" ../.. + cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -G "Unix Makefiles" ../.. make Running `cmake -`" will display the list of available generators (passed using From c09e121aeb927403369a06fbe456d7510db2e86f Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 19:00:56 +0530 Subject: [PATCH 7/9] Use standard CMake variables - static/shared lib. Replace JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS --- dev.makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev.makefile b/dev.makefile index 710aafe..e289266 100644 --- a/dev.makefile +++ b/dev.makefile @@ -16,7 +16,7 @@ dox: # Then 'git add -A' and 'git push' in jsoncpp-docs. build: mkdir -p build/debug - cd build/debug; cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_SHARED=ON -G "Unix Makefiles" ../.. + cd build/debug; cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_SHARED_LIBS=ON -G "Unix Makefiles" ../.. make -C build/debug # Currently, this depends on include/json/version.h generated From a53070c42b820e95d39d48b0af920a567fce8470 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 19:03:12 +0530 Subject: [PATCH 8/9] Use standard CMake variables - static/shared lib. Replace JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS --- devtools/agent_vmw7.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devtools/agent_vmw7.json b/devtools/agent_vmw7.json index 38b50d9..086ad9a 100644 --- a/devtools/agent_vmw7.json +++ b/devtools/agent_vmw7.json @@ -19,8 +19,8 @@ }, {"name": "shared_dll", "variables": [ - ["JSONCPP_LIB_BUILD_SHARED=true"], - ["JSONCPP_LIB_BUILD_SHARED=false"] + ["BUILD_SHARED_LIBS=true"], + ["BUILD_SHARED_LIBS=false"] ] }, {"name": "build_type", From 3f6345234feda0f272df7694de9b02d8cf82de48 Mon Sep 17 00:00:00 2001 From: Gaurav Date: Thu, 23 Apr 2015 19:04:09 +0530 Subject: [PATCH 9/9] Use standard CMake variables - static/shared lib. Replace JSONCPP_LIB_BUILD_SHARED => BUILD_SHARED_LIBS --- devtools/agent_vmxp.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devtools/agent_vmxp.json b/devtools/agent_vmxp.json index 61f5a4c..997aa5e 100644 --- a/devtools/agent_vmxp.json +++ b/devtools/agent_vmxp.json @@ -12,8 +12,8 @@ }, {"name": "shared_dll", "variables": [ - ["JSONCPP_LIB_BUILD_SHARED=true"], - ["JSONCPP_LIB_BUILD_SHARED=false"] + ["BUILD_SHARED_LIBS=true"], + ["BUILD_SHARED_LIBS=false"] ] }, {"name": "build_type",