]> git.lizzy.rs Git - minetest.git/blobdiff - cmake/Modules/FindJson.cmake
Tile: Fix segfault caused by invalid PNG data
[minetest.git] / cmake / Modules / FindJson.cmake
index 8e355b93fd46bbf4f0cc78e000b2e4e4f129f249..cce2d387f689254a25a7ba12115109a23ffd5bc2 100644 (file)
@@ -1,27 +1,25 @@
-# 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
+# Look for JsonCpp, with fallback to bundeled version
 
 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)
+option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JsonCpp" TRUE)
+set(USE_SYSTEM_JSONCPP FALSE)
 
 if(ENABLE_SYSTEM_JSONCPP)
        find_library(JSON_LIBRARY NAMES jsoncpp)
-       find_path(JSON_INCLUDE_DIR json/features.h)
+       find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp)
 
-       include(FindPackageHandleStandardArgs)
-       find_package_handle_standard_args(JSONCPP DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)
-
-       if(JSONCPP_FOUND)
-               message(STATUS "Using system JSONCPP library.")
+       if(JSON_LIBRARY AND JSON_INCLUDE_DIR)
+               message(STATUS "Using JsonCpp provided by system.")
+               set(USE_SYSTEM_JSONCPP TRUE)
        endif()
 endif()
 
-if(NOT JSONCPP_FOUND)
-       message(STATUS "Using bundled JSONCPP library.")
-       set(JSON_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/json)
+if(NOT USE_SYSTEM_JSONCPP)
+       message(STATUS "Using bundled JsonCpp library.")
+       set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp)
        set(JSON_LIBRARY jsoncpp)
-       add_subdirectory(json)
+       add_subdirectory(lib/jsoncpp)
 endif()
 
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)