mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-01 06:21:56 -09:00
package/cjson: add a patch to allow cross-compilation with sysroot.
The current generated cJSONConfig.cmake holds hard coded path of libraries and makes it impossible to use in SDKs. Use CMakePackageConfigHelpers and @PACKAGE_INIT@ to make them suit for real environment dynamically. Signed-off-by: Guillaume Chaye <guillaume.chaye@zeetim.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
b3abf16c8e
commit
e57c73bd5a
@@ -0,0 +1,191 @@
|
|||||||
|
From 2b0a994b5832439cf704147c5b485b9a4c7fbc24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Charles Chan <charles@zeerd.com>
|
||||||
|
Date: Fri, 22 Dec 2023 11:14:36 +0800
|
||||||
|
Subject: [PATCH] Use CMakePackageConfigHelpers to generate config.cmake
|
||||||
|
Signed-off-by: Charles Chan <charles@zeerd.com>
|
||||||
|
Upstream: https://github.com/DaveGamble/cJSON/pull/812/commits/2b0a994b5832439cf704147c5b485b9a4c7fbc24
|
||||||
|
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 72 ++++++++++---------
|
||||||
|
.../{cJSONConfig.cmake.in => Config.cmake.in} | 15 ++--
|
||||||
|
library_config/cJSONConfigVersion.cmake.in | 11 ---
|
||||||
|
3 files changed, 48 insertions(+), 50 deletions(-)
|
||||||
|
rename library_config/{cJSONConfig.cmake.in => Config.cmake.in} (57%)
|
||||||
|
delete mode 100644 library_config/cJSONConfigVersion.cmake.in
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index f23ec631..fe10d6fe 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -142,25 +142,25 @@ endif()
|
||||||
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/library_config/libcjson.pc.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" @ONLY)
|
||||||
|
|
||||||
|
-install(FILES cJSON.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/cjson")
|
||||||
|
-install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
|
||||||
|
+install(FILES cJSON.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/cjson")
|
||||||
|
+install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||||
|
install(TARGETS "${CJSON_LIB}"
|
||||||
|
- EXPORT "${CJSON_LIB}"
|
||||||
|
- ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}"
|
||||||
|
- INCLUDES DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}"
|
||||||
|
+ EXPORT "${CJSON_LIB}-targets"
|
||||||
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
if (BUILD_SHARED_AND_STATIC_LIBS)
|
||||||
|
install(TARGETS "${CJSON_LIB}-static"
|
||||||
|
- EXPORT "${CJSON_LIB}"
|
||||||
|
- ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- INCLUDES DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}"
|
||||||
|
+ EXPORT "${CJSON_LIB}-targets"
|
||||||
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
if(ENABLE_TARGET_EXPORT)
|
||||||
|
# export library information for CMake projects
|
||||||
|
- install(EXPORT "${CJSON_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON")
|
||||||
|
+ install(EXPORT "${CJSON_LIB}-targets" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_CJSON_VERSION_SO)
|
||||||
|
@@ -194,24 +194,24 @@ if(ENABLE_CJSON_UTILS)
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" @ONLY)
|
||||||
|
|
||||||
|
install(TARGETS "${CJSON_UTILS_LIB}"
|
||||||
|
- EXPORT "${CJSON_UTILS_LIB}"
|
||||||
|
- ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_BINDIR}"
|
||||||
|
- INCLUDES DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}"
|
||||||
|
+ EXPORT "${CJSON_UTILS_LIB}-targets"
|
||||||
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||||
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
if (BUILD_SHARED_AND_STATIC_LIBS)
|
||||||
|
- install(TARGETS "${CJSON_UTILS_LIB}-static"
|
||||||
|
- EXPORT "${CJSON_UTILS_LIB}"
|
||||||
|
- ARCHIVE DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}"
|
||||||
|
- INCLUDES DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}"
|
||||||
|
+ install(TARGETS "${CJSON_UTILS_LIB}-static"
|
||||||
|
+ EXPORT "${CJSON_UTILS_LIB}-targets"
|
||||||
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||||
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
- install(FILES cJSON_Utils.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/cjson")
|
||||||
|
- install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
|
||||||
|
+ install(FILES cJSON_Utils.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/cjson")
|
||||||
|
+ install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||||
|
if(ENABLE_TARGET_EXPORT)
|
||||||
|
- # export library information for CMake projects
|
||||||
|
- install(EXPORT "${CJSON_UTILS_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON")
|
||||||
|
+ # export library information for CMake projects
|
||||||
|
+ install(EXPORT "${CJSON_UTILS_LIB}-targets" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_CJSON_VERSION_SO)
|
||||||
|
@@ -223,18 +223,22 @@ if(ENABLE_CJSON_UTILS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# create the other package config files
|
||||||
|
-configure_file(
|
||||||
|
- "${CMAKE_CURRENT_SOURCE_DIR}/library_config/cJSONConfig.cmake.in"
|
||||||
|
- ${PROJECT_BINARY_DIR}/cJSONConfig.cmake @ONLY)
|
||||||
|
-configure_file(
|
||||||
|
- "${CMAKE_CURRENT_SOURCE_DIR}/library_config/cJSONConfigVersion.cmake.in"
|
||||||
|
- ${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake @ONLY)
|
||||||
|
-
|
||||||
|
if(ENABLE_TARGET_EXPORT)
|
||||||
|
- # Install package config files
|
||||||
|
- install(FILES ${PROJECT_BINARY_DIR}/cJSONConfig.cmake
|
||||||
|
+ include(CMakePackageConfigHelpers)
|
||||||
|
+ write_basic_package_version_file(
|
||||||
|
${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake
|
||||||
|
- DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON")
|
||||||
|
+ VERSION ${NCHL_VERSION}
|
||||||
|
+ COMPATIBILITY AnyNewerVersion)
|
||||||
|
+
|
||||||
|
+ configure_package_config_file(
|
||||||
|
+ "${PROJECT_SOURCE_DIR}/library_config/Config.cmake.in"
|
||||||
|
+ "${PROJECT_BINARY_DIR}/cJSONConfig.cmake"
|
||||||
|
+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON"
|
||||||
|
+ )
|
||||||
|
+ install(FILES
|
||||||
|
+ ${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake
|
||||||
|
+ ${PROJECT_BINARY_DIR}/cJSONConfig.cmake
|
||||||
|
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_CJSON_TEST "Enable building cJSON test" ON)
|
||||||
|
diff --git a/library_config/cJSONConfig.cmake.in b/library_config/Config.cmake.in
|
||||||
|
similarity index 57%
|
||||||
|
rename from library_config/cJSONConfig.cmake.in
|
||||||
|
rename to library_config/Config.cmake.in
|
||||||
|
index 909f7a9a..2784b7ab 100644
|
||||||
|
--- a/library_config/cJSONConfig.cmake.in
|
||||||
|
+++ b/library_config/Config.cmake.in
|
||||||
|
@@ -1,9 +1,12 @@
|
||||||
|
+@PACKAGE_INIT@
|
||||||
|
+include(CMakeFindDependencyMacro)
|
||||||
|
+
|
||||||
|
# Whether the utils lib was build.
|
||||||
|
set(CJSON_UTILS_FOUND @ENABLE_CJSON_UTILS@)
|
||||||
|
|
||||||
|
# The include directories used by cJSON
|
||||||
|
-set(CJSON_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@")
|
||||||
|
-set(CJSON_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@")
|
||||||
|
+set(CJSON_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
|
||||||
|
+set(CJSON_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@")
|
||||||
|
|
||||||
|
get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
|
||||||
|
@@ -11,19 +14,21 @@ get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
set(CJSON_LIBRARY "@CJSON_LIB@")
|
||||||
|
if(@ENABLE_TARGET_EXPORT@)
|
||||||
|
# Include the target
|
||||||
|
- include("${_dir}/cjson.cmake")
|
||||||
|
+ include("${CMAKE_CURRENT_LIST_DIR}/cjson-targets.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CJSON_UTILS_FOUND)
|
||||||
|
# The cJSON utils library
|
||||||
|
- set(CJSON_UTILS_LIBRARY @CJSON_UTILS_LIB@)
|
||||||
|
+ set(CJSON_UTILS_LIBRARY "@CJSON_UTILS_LIB@")
|
||||||
|
# All cJSON libraries
|
||||||
|
set(CJSON_LIBRARIES "@CJSON_UTILS_LIB@" "@CJSON_LIB@")
|
||||||
|
if(@ENABLE_TARGET_EXPORT@)
|
||||||
|
# Include the target
|
||||||
|
- include("${_dir}/cjson_utils.cmake")
|
||||||
|
+ include("${CMAKE_CURRENT_LIST_DIR}/cjson_utils-targets.cmake")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
# All cJSON libraries
|
||||||
|
set(CJSON_LIBRARIES "@CJSON_LIB@")
|
||||||
|
endif()
|
||||||
|
+
|
||||||
|
+check_required_components("@CMAKE_PROJECT_NAME@")
|
||||||
|
diff --git a/library_config/cJSONConfigVersion.cmake.in b/library_config/cJSONConfigVersion.cmake.in
|
||||||
|
deleted file mode 100644
|
||||||
|
index 22ffec0f..00000000
|
||||||
|
--- a/library_config/cJSONConfigVersion.cmake.in
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,11 +0,0 @@
|
||||||
|
-set(PACKAGE_VERSION "@PROJECT_VERSION@")
|
||||||
|
-
|
||||||
|
-# Check whether the requested PACKAGE_FIND_VERSION is compatible
|
||||||
|
-if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
||||||
|
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||||
|
-else()
|
||||||
|
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||||
|
- if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
|
||||||
|
- set(PACKAGE_VERSION_EXACT TRUE)
|
||||||
|
- endif()
|
||||||
|
-endif()
|
||||||
Reference in New Issue
Block a user