]> git.lizzy.rs Git - minetest.git/blobdiff - cmake/Modules/FindJson.cmake
Update curl dependency in buildbot
[minetest.git] / cmake / Modules / FindJson.cmake
index bc4e71a298cc581f8baa2c32d9f38fd6f45735cb..26339a2959d09819c051ce1d3c261d392e8b3041 100644 (file)
@@ -1,18 +1,26 @@
-# Look for json, use our own if not found
+# Look for JSONCPP if asked to.
+# We use a bundled version by default because some distros ship versions of
+# JSONCPP that cause segfaults and other memory errors when we link with them.
+# See https://github.com/minetest/minetest/issues/1793
 
-#FIND_PATH(JSON_INCLUDE_DIR json.h)
+mark_as_advanced(JSON_LIBRARY JSON_INCLUDE_DIR)
+option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JSONCPP.  May cause segfaults and other memory errors!" FALSE)
 
-#FIND_LIBRARY(JSON_LIBRARY NAMES json)
+if(ENABLE_SYSTEM_JSONCPP)
+       find_library(JSON_LIBRARY NAMES jsoncpp)
+       find_path(JSON_INCLUDE_DIR json/features.h PATH_SUFFIXES jsoncpp)
 
-#IF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
-#      SET( JSON_FOUND TRUE )
-#ENDIF(JSON_LIBRARY AND JSON_INCLUDE_DIR)
+       include(FindPackageHandleStandardArgs)
+       find_package_handle_standard_args(JSONCPP DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)
 
-#IF(JSON_FOUND)
-#      MESSAGE(STATUS "Found system json header file in ${JSON_INCLUDE_DIR}")
-#      MESSAGE(STATUS "Found system json library ${JSON_LIBRARY}")
-#ELSE(JSON_FOUND)
-       SET(JSON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/json)
-       SET(JSON_LIBRARY json)
-       MESSAGE(STATUS "Using project json library")
-#ENDIF(JSON_FOUND)
+       if(JSONCPP_FOUND)
+               message(STATUS "Using system JSONCPP library.")
+       endif()
+endif()
+
+if(NOT JSONCPP_FOUND)
+       message(STATUS "Using bundled JSONCPP library.")
+       set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp)
+       set(JSON_LIBRARY jsoncpp)
+       add_subdirectory(lib/jsoncpp)
+endif()