mirror of
https://codeberg.org/guix/guix.git
synced 2026-01-25 20:15:25 -06:00
83 lines
2.2 KiB
Diff
83 lines
2.2 KiB
Diff
|
|
diff --git a/cmake/FindJsonCPP.cmake b/cmake/FindJsonCPP.cmake
|
||
|
|
index 59e971a58..18260fde8 100644
|
||
|
|
--- a/cmake/FindJsonCPP.cmake
|
||
|
|
+++ b/cmake/FindJsonCPP.cmake
|
||
|
|
@@ -39,10 +39,11 @@
|
||
|
|
# JsonCPP_FOUND - The jsoncpp library has been found
|
||
|
|
# JsonCPP_TARGET - The name of the CMake target for the jsoncpp library
|
||
|
|
|
||
|
|
+if(TARGET jsoncpp_lib OR TARGET jsoncpp_static OR TARGET PkgConfig::jsoncpp)
|
||
|
|
|
||
|
|
-if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
|
||
|
|
-
|
||
|
|
- if(TARGET jsoncpp_lib)
|
||
|
|
+ if(TARGET PkgConfig::jsoncpp)
|
||
|
|
+ set(JsonCPP_TARGET PkgConfig::jsoncpp)
|
||
|
|
+ elseif(TARGET jsoncpp_lib)
|
||
|
|
set(JsonCPP_TARGET jsoncpp_lib)
|
||
|
|
else()
|
||
|
|
set(JsonCPP_TARGET jsoncpp_static)
|
||
|
|
@@ -57,24 +58,50 @@ if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
|
||
|
|
mark_as_advanced(JsonCPP_TARGET)
|
||
|
|
|
||
|
|
else()
|
||
|
|
-
|
||
|
|
- set(_OPTIONS "CONFIG")
|
||
|
|
+ find_package(PkgConfig QUIET)
|
||
|
|
+
|
||
|
|
+ set(_OPTIONS1 "CONFIG")
|
||
|
|
+ set(_OPTIONS2 "IMPORTED_TARGET") # for pkg_check_modules fallback
|
||
|
|
+
|
||
|
|
if(JsonCPP_FIND_REQUIRED)
|
||
|
|
- list(APPEND _OPTIONS "REQUIRED")
|
||
|
|
- endif()
|
||
|
|
- if(JsonCPP_FIND_QUIETLY)
|
||
|
|
- list(APPEND _OPTIONS "QUIET")
|
||
|
|
+ if(PKG_CONFIG_FOUND)
|
||
|
|
+ list(APPEND _OPTIONS2 "REQUIRED")
|
||
|
|
+ else()
|
||
|
|
+ list(APPEND _OPTIONS1 "REQUIRED")
|
||
|
|
+ endif()
|
||
|
|
endif()
|
||
|
|
- if(JsonCPP_FIND_VERSION)
|
||
|
|
- list(PREPEND _OPTIONS "${jsoncpp_FIND_VERSION}")
|
||
|
|
+ if(JsonCPP_FIND_QUIETLY)
|
||
|
|
+ list(APPEND _OPTIONS1 "QUIET")
|
||
|
|
+ list(APPEND _OPTIONS2 "QUIET")
|
||
|
|
endif()
|
||
|
|
- if(JsonCPP_FIND_EXACT)
|
||
|
|
- list(APPEND _OPTIONS "EXACT")
|
||
|
|
+ if(PKG_CONFIG_FOUND)
|
||
|
|
+ if(JsonCPP_FIND_VERSION)
|
||
|
|
+ if(JsonCPP_FIND_EXACT)
|
||
|
|
+ list(APPEND _OPTIONS2 "jsoncpp=${JsonCPP_FIND_VERSION}")
|
||
|
|
+ else()
|
||
|
|
+ list(APPEND _OPTIONS2 "jsoncpp>=${JsonCPP_FIND_VERSION}")
|
||
|
|
+ endif()
|
||
|
|
+ else()
|
||
|
|
+ list(APPEND _OPTIONS2 "jsoncpp")
|
||
|
|
+ endif()
|
||
|
|
+ else()
|
||
|
|
+ if(JsonCPP_FIND_VERSION)
|
||
|
|
+ list(PREPEND _OPTIONS1 "${jsoncpp_FIND_VERSION}")
|
||
|
|
+ endif()
|
||
|
|
+ if(JsonCPP_FIND_EXACT)
|
||
|
|
+ list(APPEND _OPTIONS1 "EXACT")
|
||
|
|
+ endif()
|
||
|
|
endif()
|
||
|
|
|
||
|
|
- find_package(jsoncpp ${_OPTIONS})
|
||
|
|
+ find_package(jsoncpp ${_OPTIONS1})
|
||
|
|
+
|
||
|
|
+ if(NOT JsonCPP_FOUND)
|
||
|
|
+ pkg_check_modules(jsoncpp ${_OPTIONS2})
|
||
|
|
+ endif()
|
||
|
|
|
||
|
|
- if(TARGET jsoncpp_lib)
|
||
|
|
+ if(TARGET PkgConfig::jsoncpp)
|
||
|
|
+ set(JsonCPP_TARGET jsoncpp)
|
||
|
|
+ elseif(TARGET jsoncpp_lib)
|
||
|
|
set(JsonCPP_TARGET jsoncpp_lib)
|
||
|
|
else()
|
||
|
|
set(JsonCPP_TARGET jsoncpp_static)
|