From 54b4783e39d7594ba3a1613fcdf1f956478a7700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Mon, 24 Apr 2017 03:01:57 +0200 Subject: [PATCH] Add missing ProjectJsonRpcCpp.cmake file --- cmake/ProjectJsonRpcCpp.cmake | 81 +++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 cmake/ProjectJsonRpcCpp.cmake diff --git a/cmake/ProjectJsonRpcCpp.cmake b/cmake/ProjectJsonRpcCpp.cmake new file mode 100644 index 000000000..2821e9ba6 --- /dev/null +++ b/cmake/ProjectJsonRpcCpp.cmake @@ -0,0 +1,81 @@ +# HTTP client from JSON RPC CPP requires curl library. It can find it itself, +# but we need to know the libcurl location for static linking. +hunter_add_package(CURL) +find_package(CURL CONFIG REQUIRED) + +get_target_property(JSONCPP_INCLUDE_DIR jsoncpp_lib_static INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(CURL_INCLUDE_DIR CURL::libcurl INTERFACE_INCLUDE_DIRECTORIES) +get_target_property(CURL_LIBRARY CURL::libcurl IMPORTED_LOCATION_RELEASE) + +set(CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= + -DCMAKE_BUILD_TYPE=Release + # Build static lib but suitable to be included in a shared lib. + -DCMAKE_POSITION_INDEPENDENT_CODE=${BUILD_SHARED_LIBS} + -DBUILD_STATIC_LIBS=On + -DBUILD_SHARED_LIBS=Off + -DUNIX_DOMAIN_SOCKET_SERVER=Off + -DUNIX_DOMAIN_SOCKET_CLIENT=Off + -DHTTP_SERVER=Off + -DHTTP_CLIENT=On + -DCOMPILE_TESTS=Off + -DCOMPILE_STUBGEN=Off + -DCOMPILE_EXAMPLES=Off + # Point to jsoncpp library. + -DJSONCPP_INCLUDE_DIR=${JSONCPP_INCLUDE_DIR} + # Select jsoncpp include prefix: or + -DJSONCPP_INCLUDE_PREFIX=json + -DJSONCPP_LIBRARY=${JSONCPP_LIBRARY} + -DCURL_INCLUDE_DIR=${CURL_INCLUDE_DIR} + -DCURL_LIBRARY=${CURL_LIBRARY} +) + +if (WIN32) + # For Windows we have to provide also locations for debug libraries. + set(CMAKE_ARGS ${CMAKE_ARGS} + -DJSONCPP_LIBRARY_DEBUG=${JSONCPP_LIBRARY} + -DCURL_LIBRARY_DEBUG=${CURL_LIBRARY} + ) +endif() + +include(ExternalProject) +ExternalProject_Add(jsonrpccpp + PREFIX deps + DOWNLOAD_NAME jsonrcpcpp-0.7.0.tar.gz + DOWNLOAD_NO_PROGRESS 1 + URL https://github.com/cinemast/libjson-rpc-cpp/archive/v0.7.0.tar.gz + URL_HASH SHA256=669c2259909f11a8c196923a910f9a16a8225ecc14e6c30e2bcb712bab9097eb + # On Windows it tries to install this dir. Create it to prevent failure. + PATCH_COMMAND ${CMAKE_COMMAND} -E make_directory /win32-deps/include + CMAKE_ARGS ${CMAKE_ARGS} +# LOG_CONFIGURE 1 + # Overwrite build and install commands to force Release build on MSVC. +# BUILD_COMMAND ${CMAKE_COMMAND} --build --config Release +# INSTALL_COMMAND ${CMAKE_COMMAND} --build --config Release --target install +# LOG_INSTALL 1 +) + +# Create imported libraries +if (WIN32) + # On Windows CMAKE_INSTALL_PREFIX is ignored and installs to dist dir. + ExternalProject_Get_Property(jsonrpccpp BINARY_DIR) + set(INSTALL_DIR ${BINARY_DIR}/dist) +else() + ExternalProject_Get_Property(jsonrpccpp INSTALL_DIR) +endif() +set(JSONRPCCPP_INCLUDE_DIR ${INSTALL_DIR}/include) +file(MAKE_DIRECTORY ${JSONRPCCPP_INCLUDE_DIR}) # Must exist. + +add_library(JsonRpcCpp::Common STATIC IMPORTED) +set_property(TARGET JsonRpcCpp::Common PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}jsonrpccpp-common${CMAKE_STATIC_LIBRARY_SUFFIX}) +set_property(TARGET JsonRpcCpp::Common PROPERTY INTERFACE_LINK_LIBRARIES jsoncpp_lib_static) +set_property(TARGET JsonRpcCpp::Common PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${JSONRPCCPP_INCLUDE_DIR}) +add_dependencies(JsonRpcCpp::Common jsonrpccpp) + +add_library(JsonRpcCpp::Client STATIC IMPORTED) +set_property(TARGET JsonRpcCpp::Client PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}jsonrpccpp-client${CMAKE_STATIC_LIBRARY_SUFFIX}) +set_property(TARGET JsonRpcCpp::Client PROPERTY INTERFACE_LINK_LIBRARIES JsonRpcCpp::Common CURL::libcurl) +add_dependencies(JsonRpcCpp::Client jsonrpccpp) + +unset(BINARY_DIR) +unset(INSTALL_DIR) +unset(CMAKE_ARGS)