diff --git a/cmake/Modules/FindJansson.cmake b/cmake/Modules/FindJansson.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..001a4ee2b3dede02965900ff1efccb9562f7d725
--- /dev/null
+++ b/cmake/Modules/FindJansson.cmake
@@ -0,0 +1,63 @@
+# Once done these will be defined:
+#
+#  JANSSON_FOUND
+#  JANSSON_INCLUDE_DIRS
+#  JANSSON_LIBRARIES
+#  JANSSON_VERSION
+#
+
+if(JANSSON_INCLUDE_DIRS AND JANSSON_LIBRARIES)
+	set(JANSSON_FOUND TRUE)
+else()
+	find_package(PkgConfig QUIET)
+	if (PKG_CONFIG_FOUND)
+		pkg_check_modules(_JANSSON QUIET jansson)
+	endif()
+
+	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+		set(_lib_suffix 64)
+	else()
+		set(_lib_suffix 32)
+	endif()
+
+	find_path(Jansson_INCLUDE_DIR
+		NAMES jansson.h
+		HINTS
+			ENV JanssonPath
+			${_JANSSON_INCLUDE_DIRS}
+			/usr/include /usr/local/include /opt/local/include /sw/include)
+
+	find_library(Jansson_LIB
+		NAMES jansson libjansson
+		HINTS
+			${Jansson_INCLUDE_DIR}/../lib
+			${Jansson_INCLUDE_DIR}/lib${_lib_suffix}
+			${_JANSSON_LIBRARY_DIRS}
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+ 
+	if(JANSSON_VERSION)
+		set(_JANSSON_VERSION_STRING "${JANSSON_VERSION}")
+	elseif(_JANSSON_FOUND AND _JANSSON_VERSION)
+		set(_JANSSON_VERSION_STRING "${_JANSSON_VERSION}")
+	elseif(EXISTS "${Jansson_INCLUDE_DIR}/jansson.h")
+		file(STRINGS "${Jansson_INCLUDE_DIR}/jansson.h" _jansson_version_parse
+			REGEX "#define[ \t]+JANSSON_VERSION[ \t]+.+")
+		string(REGEX REPLACE
+			".*#define[ \t]+JANSSON_VERSION[ \t]+\"(.+)\".*" "\\1"
+			_JANSSON_VERSION_STRING "${_jansson_version_parse}")
+	else()
+		message(WARNING "Failed to find Jansson version")
+		set(_JANSSON_VERSION_STRING "unknown")
+	endif()
+
+	set(JANSSON_INCLUDE_DIRS ${Jansson_INCLUDE_DIR} CACHE PATH "Jansson include dir")
+	set(JANSSON_LIBRARIES ${Jansson_LIB} CACHE STRING "Jansson libraries")
+	set(JANSSON_VERSION "${_JANSSON_VERSION_STRING}" CACHE STRING "Jansson version")
+
+	find_package_handle_standard_args(Jansson
+		FOUND_VAR JANSSON_FOUND
+		REQUIRED_VARS Jansson_LIB Jansson_INCLUDE_DIR
+		VERSION_VAR JANSSON_VERSION)
+	mark_as_advanced(Jansson_INCLUDE_DIR Jansson_LIB)
+endif()
+
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
index d61f0b9d5f50a80c06b795eab1335e35559aab03..e758b61aa24e09c280c59eed11f3624ff53e6aad 100644
--- a/deps/CMakeLists.txt
+++ b/deps/CMakeLists.txt
@@ -1,4 +1,17 @@
 
 add_subdirectory(w32-pthreads)
 add_subdirectory(glad)
-add_subdirectory(jansson)
+
+find_package(Jansson 2.5 QUIET)
+
+if(NOT JANSSON_FOUND)
+	message(STATUS "Jansson >=2.5 not found, building bundled version")
+	add_subdirectory(jansson)
+else()
+	message(STATUS "Using system Jansson library")
+	add_library(jansson UNKNOWN IMPORTED)
+	set_property(TARGET jansson PROPERTY
+		IMPORTED_LOCATION "${JANSSON_LIBRARIES}"
+		INTERFACE_INCLUDE_DIRECTORIES "${JANSSON_INCLUDE_DIRS}")
+endif()
+