diff options
-rw-r--r-- | CMakeLists.txt | 16 | ||||
-rw-r--r-- | include/ucode/util.h | 26 |
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 */ |