From d8986cb065e770017ee1622fb7324387ead60203 Mon Sep 17 00:00:00 2001 From: Ming Liu Date: Tue, 7 Mar 2017 11:46:52 +0100 Subject: [PATCH] Adjust the cmake files - Remove json_test which can not build with boost 1.61.0. - Build shared library as well with the original static library. - Add FindLibJsonSpirit.cmake to be able to be found by the dependers. Upstream-Status: Inappropriate [configuration] Signed-off-by: Ming Liu --- CMakeLists.txt | 8 +++--- FindLibJsonSpirit.cmake | 64 ++++++++++++++++++++++++++++++++++++++++++++++ json_spirit/CMakeLists.txt | 16 +++++++++++- 3 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 FindLibJsonSpirit.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4637a6c..b292f0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(json_spirit) -SUBDIRS(json_spirit json_demo json_headers_only_demo json_map_demo json_test) +SUBDIRS(json_spirit json_demo json_headers_only_demo json_map_demo) INCLUDE_DIRECTORIES(json_spirit) INSTALL( @@ -16,11 +16,11 @@ INSTALL( ${CMAKE_SOURCE_DIR}/json_spirit/json_spirit_writer.h ${CMAKE_SOURCE_DIR}/json_spirit/json_spirit_writer_template.h ${CMAKE_SOURCE_DIR}/json_spirit/json_spirit_writer_options.h - DESTINATION include) + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) INSTALL( FILES - ${CMAKE_BINARY_DIR}/json_spirit/libjson_spirit.a - DESTINATION lib) + ${CMAKE_SOURCE_DIR}/FindLibJsonSpirit.cmake + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules) INCLUDE(CPack) diff --git a/FindLibJsonSpirit.cmake b/FindLibJsonSpirit.cmake new file mode 100644 index 0000000..7ee7687 --- /dev/null +++ b/FindLibJsonSpirit.cmake @@ -0,0 +1,64 @@ +# FindLibJsonSpirit - Find libjson_spirit headers and libraries. +# +# Sample: +# +# SET( LibJsonSpirit_USE_STATIC_LIBS OFF ) +# FIND_PACKAGE( LibJsonSpirit REQUIRED ) +# IF( LibJsonSpirit_FOUND ) +# INCLUDE_DIRECTORIES( ${LibJsonSpirit_INCLUDE_DIRS} ) +# TARGET_LINK_LIBRARIES( ... ${LibJsonSpirit_LIBRARIES} ) +# ENDIF() +# +# Variables used by this module need to be set before calling find_package +# +# LibJsonSpirit_USE_STATIC_LIBS Can be set to ON to force the use of the static +# libjson_spirit libraries. Defaults to OFF. +# +# Variables provided by this module: +# +# LibJsonSpirit_FOUND Include dir, libjson_spirit libraries. +# +# LibJsonSpirit_LIBRARIES Link to these to use all the libraries you specified. +# +# LibJsonSpirit_INCLUDE_DIRS Include directories. +# +# For each component you specify in find_package(), the following (UPPER-CASE) +# variables are set to pick and choose components instead of just using +# LibJsonSpirit_LIBRARIES: +# +# LIBJSONSPIRIT_FOUND TRUE if libjson_spirit was found +# LIBJSONSPIRIT_LIBRARY libjson_spirit library +# + +# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES +IF(LibJsonSpirit_USE_STATIC_LIBS) + SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ) +ENDIF() + +# Look for the header files +UNSET(LibJsonSpirit_INCLUDE_DIRS CACHE) +FIND_PATH(LibJsonSpirit_INCLUDE_DIRS NAMES json_spirit.h) + +# Look for the core library +UNSET(LIBJSONSPIRIT_LIBRARY CACHE) +FIND_LIBRARY(LIBJSONSPIRIT_LIBRARY NAMES json_spirit) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibJsonSpirit DEFAULT_MSG LIBJSONSPIRIT_LIBRARY LibJsonSpirit_INCLUDE_DIRS) +MARK_AS_ADVANCED( + LIBJSONSPIRIT_FOUND + LIBJSONSPIRIT_LIBRARY +) + +# Prepare return values and collectiong more components +SET(LibJsonSpirit_FOUND ${LIBJSONSPIRIT_FOUND}) +SET(LibJsonSpirit_LIBRARIES ${LIBJSONSPIRIT_LIBRARY}) +MARK_AS_ADVANCED( + LibJsonSpirit_FOUND + LibJsonSpirit_LIBRARIES + LibJsonSpirit_INCLUDE_DIRS +) + +# Restore CMAKE_FIND_LIBRARY_SUFFIXES +IF(LibJsonSpirit_USE_STATIC_LIBS) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} ) +ENDIF() diff --git a/json_spirit/CMakeLists.txt b/json_spirit/CMakeLists.txt index fb52818..c1613b2 100644 --- a/json_spirit/CMakeLists.txt +++ b/json_spirit/CMakeLists.txt @@ -13,5 +13,19 @@ json_spirit_writer_template.h ) FIND_PACKAGE(Boost 1.34 REQUIRED) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) -ADD_LIBRARY(json_spirit STATIC ${JSON_SPIRIT_SRCS}) +SET(JSONSPIRIT_SOVERSION_MAJOR "4") +SET(JSONSPIRIT_SOVERSION_MINOR "0") +SET(JSONSPIRIT_SOVERSION_PATCH "8") +ADD_LIBRARY(json_spirit SHARED ${JSON_SPIRIT_SRCS}) +SET_TARGET_PROPERTIES(json_spirit PROPERTIES PROJECT_LABEL "Json Spirit Library") +SET_TARGET_PROPERTIES(json_spirit PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS}) +SET_TARGET_PROPERTIES(json_spirit PROPERTIES VERSION ${JSONSPIRIT_SOVERSION_MAJOR}.${JSONSPIRIT_SOVERSION_MINOR}.${JSONSPIRIT_SOVERSION_PATCH}) +SET_TARGET_PROPERTIES(json_spirit PROPERTIES SOVERSION ${JSONSPIRIT_SOVERSION_MAJOR}) +INSTALL(TARGETS json_spirit DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +ADD_LIBRARY(json_spirit_static STATIC ${JSON_SPIRIT_SRCS}) +SET_TARGET_PROPERTIES(json_spirit_static PROPERTIES PROJECT_LABEL "Json Spirit Static Library") +SET_TARGET_PROPERTIES(json_spirit_static PROPERTIES OUTPUT_NAME "json_spirit") +SET_TARGET_PROPERTIES(json_spirit_static PROPERTIES SOVERSION ${JSONSPIRIT_SOVERSION_MAJOR}) +INSTALL(TARGETS json_spirit_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- 1.9.1