summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt16
-rw-r--r--include/ucode/util.h26
2 files changed, 41 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d578458..da07ec0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,7 +76,8 @@ IF (NOT FMOD_FUNCTION_EXISTS)
TARGET_LINK_LIBRARIES(libucode m)
ENDIF()
-SET(CMAKE_REQUIRED_LIBRARIES json-c)
+SET(CMAKE_REQUIRED_INCLUDES ${JSONC_INCLUDE_DIRS})
+SET(CMAKE_REQUIRED_LIBRARIES ${JSONC_LINK_LIBRARIES})
CHECK_SYMBOL_EXISTS(json_object_array_shrink "json.h" HAVE_ARRAY_SHRINK)
IF(HAVE_ARRAY_SHRINK)
ADD_DEFINITIONS(-DHAVE_ARRAY_SHRINK)
@@ -86,6 +87,19 @@ ELSE()
ADD_DEFINITIONS(-DHAVE_ARRAY_SHRINK)
ENDIF()
ENDIF()
+CHECK_SYMBOL_EXISTS(json_tokener_get_parse_end "json-c/json.h" HAVE_PARSE_END)
+IF(HAVE_PARSE_END)
+ ADD_DEFINITIONS(-DHAVE_PARSE_END)
+ENDIF()
+CHECK_SYMBOL_EXISTS(json_object_new_array_ext "json-c/json.h" HAVE_ARRAY_EXT)
+IF(HAVE_ARRAY_EXT)
+ ADD_DEFINITIONS(-DHAVE_ARRAY_EXT)
+ENDIF()
+CHECK_SYMBOL_EXISTS(json_object_new_uint64 "json-c/json.h" HAVE_JSON_UINT64)
+IF(HAVE_JSON_UINT64)
+ ADD_DEFINITIONS(-DHAVE_JSON_UINT64)
+ENDIF()
+UNSET(CMAKE_REQUIRED_INCLUDES)
UNSET(CMAKE_REQUIRED_LIBRARIES)
SET(LIBRARIES "")
diff --git a/include/ucode/util.h b/include/ucode/util.h
index 3203499..35c1e56 100644
--- a/include/ucode/util.h
+++ b/include/ucode/util.h
@@ -159,4 +159,30 @@ static inline struct printbuf *xprintbuf_new(void) {
return pb;
}
+
+/* json-c compat */
+
+#ifndef HAVE_PARSE_END
+static inline size_t json_tokener_get_parse_end(struct json_tokener *tok) {
+ return (size_t)tok->char_offset;
+}
+#endif
+
+#ifndef HAVE_ARRAY_EXT
+static inline struct json_object *json_object_new_array_ext(int size) {
+ (void) size;
+ return json_object_new_array();
+}
+#endif
+
+#ifndef HAVE_JSON_UINT64
+static inline struct json_object *json_object_new_uint64(uint64_t i) {
+ return json_object_new_int64((int64_t)i);
+}
+
+static inline uint64_t json_object_get_uint64(const struct json_object *obj) {
+ return (uint64_t)json_object_get_int64(obj);
+}
+#endif
+
#endif /* UCODE_UTIL_H */