[PATCH 3/4] CMake: rework json-c dependency handling

yegorslists at googlemail.com yegorslists at googlemail.com
Thu Jun 5 23:55:57 PDT 2025


From: Yegor Yefremov <yegorslists at googlemail.com>

json-c will be already detected via PKG_SEARCH_MODULE().
Hence, there is no need to search for this library again.

Signed-off-by: Yegor Yefremov <yegorslists at googlemail.com>
---
 CMakeLists.txt            | 46 ++++++++++++++++++---------------------
 examples/CMakeLists.txt   |  4 +---
 tests/CMakeLists.txt      |  2 +-
 tests/fuzz/CMakeLists.txt |  2 +-
 4 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 00c9e41..60ba81a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,37 +63,33 @@ IF(UNIT_TESTING)
   ADD_SUBDIRECTORY(tests)
 ENDIF()
 
-find_library(json NAMES json-c)
-IF(EXISTS ${json})
-	ADD_LIBRARY(blobmsg_json SHARED blobmsg_json.c)
-	TARGET_LINK_LIBRARIES(blobmsg_json ubox ${json})
+ADD_LIBRARY(blobmsg_json SHARED blobmsg_json.c)
+TARGET_LINK_LIBRARIES(blobmsg_json ubox ${JSONC_LIBRARIES})
 
-	ADD_LIBRARY(blobmsg_json-static STATIC blobmsg_json.c)
-	SET_TARGET_PROPERTIES(blobmsg_json-static
-			      PROPERTIES OUTPUT_NAME blobmsg_json)
+ADD_LIBRARY(blobmsg_json-static STATIC blobmsg_json.c)
+SET_TARGET_PROPERTIES(blobmsg_json-static
+		      PROPERTIES OUTPUT_NAME blobmsg_json)
 
-	IF(UNIT_TESTING)
-		ADD_UNIT_TEST_SAN(jshn)
-	ENDIF(UNIT_TESTING)
-
-	ADD_EXECUTABLE(jshn jshn.c)
-	TARGET_LINK_LIBRARIES(jshn blobmsg_json ${json})
+IF(UNIT_TESTING)
+	ADD_UNIT_TEST_SAN(jshn)
+ENDIF(UNIT_TESTING)
 
-	ADD_LIBRARY(json_script SHARED json_script.c)
-	TARGET_LINK_LIBRARIES(json_script ubox)
+ADD_EXECUTABLE(jshn jshn.c)
+TARGET_LINK_LIBRARIES(jshn blobmsg_json ${JSONC_LIBRARIES})
 
-	INSTALL(TARGETS blobmsg_json blobmsg_json-static jshn json_script
-		ARCHIVE DESTINATION lib
-		LIBRARY DESTINATION lib
-		RUNTIME DESTINATION bin
-	)
+ADD_LIBRARY(json_script SHARED json_script.c)
+TARGET_LINK_LIBRARIES(json_script ubox)
 
-	FILE(GLOB scripts sh/*.sh)
-	INSTALL(FILES ${scripts}
-		DESTINATION share/libubox
-	)
+INSTALL(TARGETS blobmsg_json blobmsg_json-static jshn json_script
+	ARCHIVE DESTINATION lib
+	LIBRARY DESTINATION lib
+	RUNTIME DESTINATION bin
+)
 
-ENDIF()
+FILE(GLOB scripts sh/*.sh)
+INSTALL(FILES ${scripts}
+	DESTINATION share/libubox
+)
 
 IF(ABIVERSION)
 	SET_TARGET_PROPERTIES(ubox PROPERTIES VERSION ${ABIVERSION})
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 6f463fa..c22a498 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -4,10 +4,8 @@ ADD_DEFINITIONS(-O1 -Wall -Werror --std=gnu99 -g3)
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/..)
 LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/..)
 
-FIND_LIBRARY(json NAMES json-c json)
-
 ADD_EXECUTABLE(ustream-example ustream-example.c)
 TARGET_LINK_LIBRARIES(ustream-example ubox)
 
 ADD_EXECUTABLE(json_script-example json_script-example.c)
-TARGET_LINK_LIBRARIES(json_script-example ubox blobmsg_json json_script ${json})
+TARGET_LINK_LIBRARIES(json_script-example ubox blobmsg_json json_script ${JSONC_LIBRARIES})
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6258bee..11637d6 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -3,7 +3,7 @@ ADD_SUBDIRECTORY(shunit2)
 
 MACRO(ADD_UNIT_TEST name)
   ADD_EXECUTABLE(${name} ${name}.c)
-  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json})
+  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${JSONC_LIBRARIES})
   TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR})
 ENDMACRO(ADD_UNIT_TEST)
 
diff --git a/tests/fuzz/CMakeLists.txt b/tests/fuzz/CMakeLists.txt
index cca74fd..290f06f 100644
--- a/tests/fuzz/CMakeLists.txt
+++ b/tests/fuzz/CMakeLists.txt
@@ -5,7 +5,7 @@ MACRO(ADD_FUZZER_TEST name)
   TARGET_COMPILE_OPTIONS(${name} PRIVATE -g -O1 -fno-omit-frame-pointer -fsanitize=fuzzer,address,leak,undefined)
   TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR})
   TARGET_LINK_OPTIONS(${name} PRIVATE -stdlib=libc++ -fsanitize=fuzzer,address,leak,undefined)
-  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json})
+  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${JSONC_LIBRARIES})
   ADD_TEST(
     NAME ${name}
     COMMAND ${name} -max_len=256 -timeout=10 -max_total_time=300 ${CMAKE_CURRENT_SOURCE_DIR}/corpus
-- 
2.34.1




More information about the openwrt-devel mailing list