-find_package (Eigen3 3.3 REQUIRED NO_MODULE)
-message(STATUS "Found Eigen3: ${EIGEN3_INCLUDE_DIR}")
-include_directories(${EIGEN3_INCLUDE_DIR})
-if ("3.3.4" EQUAL EIGEN3_VERSION_STRING AND CMAKE_COMPILER_IS_GNUCC)
- message(STATUS "Avoid build error of Eigen3 v3.3.4 using -Wno-error=int-in-bool-context")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=int-in-bool-context")
-endif()
-
-set(SIMGRID_HAVE_MSG 0)
-if(enable_msg)
- set(SIMGRID_HAVE_MSG 1)
-endif()
-
-if(WIN32)
- set(Boost_USE_STATIC_LIBS 1)
+if ((NOT DEFINED EIGEN3_HINT) OR (NOT EIGEN3_HINT STRLESS_EQUAL "OFF"))
+ set(SIMGRID_HAVE_EIGEN3 OFF)
+ find_package (Eigen3 3.3 CONFIG
+ HINTS ${EIGEN3_HINT})
+ if (Eigen3_FOUND)
+ set(SIMGRID_HAVE_EIGEN3 ON)
+ message(STATUS "Found Eigen3: ${EIGEN3_INCLUDE_DIR}")
+ include_directories(${EIGEN3_INCLUDE_DIR})
+ if ("3.3.4" VERSION_EQUAL EIGEN3_VERSION_STRING AND CMAKE_COMPILER_IS_GNUCC)
+ message(STATUS "Avoid build error of Eigen3 v3.3.4 using -Wno-error=int-in-bool-context")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=int-in-bool-context")
+ endif()
+ else()
+ message(STATUS "Disabling model BMF because Eigen3 was not found. If it's installed, use EIGEN3_HINT to hint cmake about the location of Eigen3Config.cmake")
+ endif()
+ mark_as_advanced(Eigen3_DIR)
+else()
+ message(STATUS "Disabling Eigen3 as requested by the user (EIGEN3_HINT is set to 'OFF')")
+endif()
+
+# Check for our JSON dependency
+set(SIMGRID_HAVE_JSON 0)
+find_package(nlohmann_json 3.7
+ HINTS ${nlohmann_json_HINT})
+if (nlohmann_json_FOUND)
+ set(SIMGRID_HAVE_JSON 1)
+ if (NOT NLOHMANN_JSON_INCLUDE_DIR)
+ get_target_property(NLOHMANN_JSON_INCLUDE_DIR nlohmann_json::nlohmann_json INTERFACE_INCLUDE_DIRECTORIES)
+ list(REMOVE_DUPLICATES NLOHMANN_JSON_INCLUDE_DIR)
+ else()
+ include_directories(${NLOHMANN_JSON_INCLUDE_DIR})
+ endif()
+ message(STATUS "Found nlohmann_json: ${NLOHMANN_JSON_INCLUDE_DIR}")