diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6828533645f9bc1e1dbf4ced9b19fb7fc6f1169f..1a008550fc9dc469396b1cc686fd0d8afdc853ce 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,8 @@ find_package(Vulkan REQUIRED)
 find_package(OpenGL REQUIRED COMPONENTS GLX)
 find_package(HIDAPI)
 find_package(OpenHMD)
-
+find_package(Libcheck)
+find_package(glfw3)
 
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
     find_package(X11)
@@ -37,6 +38,7 @@ cmake_dependent_option(BUILD_WITH_HIDAPI "Enable HIDAPI-based OSVR HDK driver" O
 cmake_dependent_option(BUILD_WITH_WAYLAND "Enable Wayland support" ON "WAYLAND_FOUND" OFF)
 cmake_dependent_option(BUILD_WITH_XLIB "Enable xlib support" ON "X11_FOUND" OFF)
 cmake_dependent_option(BUILD_WITH_OPENGL "Enable OpenGL Graphics API support?" ON "OPENGL_FOUND" OFF)
+cmake_dependent_option(BUILD_TESTING "Enable building of the test suite?" ON "LIBCHECK_FOUND AND glfw3_FOUND AND OPENGL_FOUND" OFF)
 
 if(NOT BUILD_WITH_OPENHMD AND NOT BUILD_WITH_HIDAPI)
     message(FATAL_ERROR "You must enable at least one driver: either provide OpenHMD and enable BUILD_WITH_OPENHMD (for a variety of devices via OpenHMD), or provide HIDAPI and enable BUILD_WITH_HIDAPI (for the HDK driver)")
@@ -58,4 +60,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter")
 add_subdirectory(src)
 add_subdirectory(doc)
 
-add_subdirectory(tests)
+if(BUILD_TESTING)
+    include(CTest)
+    add_subdirectory(tests)
+endif()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index c136b733c55a47232672b5b03b272a76cfde2763..94d29e9536d818777eef4b1ac9f5f1cfa531fdc7 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
-
-find_package(Libcheck REQUIRED)
+# Copyright 2018-2019, Collabora, Ltd.
+# SPDX-License-Identifier: BSL-1.0
 
 add_executable(tests
 	tests_common.c
@@ -7,15 +7,15 @@ add_executable(tests
 	tests_unit.c
 	tests_system.c)
 
-target_include_directories(tests PRIVATE "${CMAKE_SOURCE_DIR}/src")
-target_include_directories(tests PRIVATE "${CMAKE_SOURCE_DIR}/src/external")
-target_include_directories(tests PRIVATE "${CMAKE_SOURCE_DIR}/src/xrt/include")
-target_include_directories(tests PRIVATE "${CMAKE_SOURCE_DIR}/src/xrt/state_trackers")
-target_include_directories(tests PRIVATE "${CMAKE_SOURCE_DIR}/src/xrt/auxiliary")
-
-find_package(glfw3 3.2 REQUIRED)
-find_package(OpenGL REQUIRED)
-target_include_directories(tests PRIVATE ${OPENGL_INCLUDE_DIR})
+target_include_directories(tests PRIVATE
+	"${PROJECT_SOURCE_DIR}/src"
+	"${PROJECT_SOURCE_DIR}/src/external"
+	"${PROJECT_SOURCE_DIR}/src/xrt/include"
+	"${PROJECT_SOURCE_DIR}/src/xrt/state_trackers"
+	"${PROJECT_SOURCE_DIR}/src/xrt/auxiliary"
+)
 
-target_link_libraries(tests ${RUNTIME_TARGET} libcheck::check ${OPENGL_gl_LIBRARY} glfw X11)
+target_link_libraries(tests ${RUNTIME_TARGET} libcheck::check OpenGL::GL glfw X11)
 
+# TODO: adjust the runner so we can individually run test cases here.
+add_test(NAME monado_tests COMMAND tests)