0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-19 19:52:15 +02:00

CMake: Generalize add_json_library

Make sure we find vcpkg and system packages on all
platforms.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
This commit is contained in:
Frank Lichtenheld 2023-02-14 14:55:33 +01:00
parent 2fb5d08ea0
commit e720bf3aba

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
@ -131,27 +131,19 @@ function(add_core_dependencies target)
endfunction()
function (add_json_library target)
if (MSVC)
find_package(jsoncpp CONFIG REQUIRED)
target_link_libraries(${target} jsoncpp_lib)
target_compile_definitions(${target} PRIVATE -DHAVE_JSONCPP)
message("Adding jsoncpp to " ${target})
elseif (APPLE)
find_package(PkgConfig REQUIRED)
pkg_check_modules(JSONCPP jsoncpp)
target_link_libraries(${target} ${JSONCPP_LDFLAGS})
target_include_directories(${target} PRIVATE ${JSONCPP_INCLUDE_DIRS})
target_compile_definitions(${target} PRIVATE -DHAVE_JSONCPP)
else ()
find_package(PkgConfig REQUIRED)
if (MINGW)
# due to cmake bug, APPEND doesn't work for mingw
# https://github.com/Kitware/CMake/commit/f92a4b23994fa7516f16fbb5b3c02caa07534b3f
set(CMAKE_PREFIX_PATH ${DEP_DIR})
endif ()
pkg_check_modules(JSONCPP jsoncpp)
target_link_libraries(${target} ${JSONCPP_LDFLAGS})
target_include_directories(${target} PRIVATE ${JSONCPP_INCLUDE_DIRS})
target_compile_definitions(${target} PRIVATE -DHAVE_JSONCPP)
find_package(jsoncpp CONFIG)
if (jsoncpp_FOUND AND TARGET JsonCpp::JsonCpp)
target_link_libraries(${target} JsonCpp::JsonCpp)
target_compile_definitions(${target} PRIVATE -DHAVE_JSONCPP)
else()
find_package(PkgConfig REQUIRED)
if (MINGW)
# due to cmake bug, APPEND doesn't work for mingw
# https://github.com/Kitware/CMake/commit/f92a4b23994fa7516f16fbb5b3c02caa07534b3f
set(CMAKE_PREFIX_PATH ${DEP_DIR})
endif ()
pkg_check_modules(JSONCPP REQUIRED IMPORTED_TARGET jsoncpp)
target_link_libraries(${target} PkgConfig::JSONCPP)
target_compile_definitions(${target} PRIVATE -DHAVE_JSONCPP)
endif ()
endfunction ()