diff --git a/CMakeLists.txt b/CMakeLists.txt
index f309bbc..bd9c5b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -615,6 +615,18 @@
 endif()
 
 ###########################################################
+# gtest and gmock
+###########################################################
+if(SWIFTSHADER_BUILD_TESTS)
+    # For Win32, force gtest to match our CRT (shared)
+    set(gtest_force_shared_crt TRUE CACHE BOOL "" FORCE)
+    add_subdirectory(third_party/googletest EXCLUDE_FROM_ALL)
+    # gtest finds python, which picks python 2 first, if present.
+    # We need to undo this so that SPIR-V can later find python3.
+    unset(PYTHON_EXECUTABLE CACHE)
+endif()
+
+###########################################################
 # Include Directories
 ###########################################################
 
@@ -984,7 +996,7 @@
         # This variable is also used by SPIRV-Tools to locate SPIRV-Headers
         set(SPIRV-Headers_SOURCE_DIR "${THIRD_PARTY_DIR}/SPIRV-Headers")
         list(APPEND VULKAN_INCLUDE_DIR "${SPIRV-Headers_SOURCE_DIR}/include")
-
+        set(SPIRV_SKIP_TESTS TRUE CACHE BOOL "" FORCE)
         add_subdirectory(third_party/SPIRV-Tools)
 
         set_target_properties(core_tables PROPERTIES FOLDER "SPIRV-Tools build")
@@ -1097,33 +1109,22 @@
 if(SWIFTSHADER_BUILD_TESTS)
     set(REACTOR_UNIT_TESTS_LIST
         ${SOURCE_DIR}/Reactor/ReactorUnitTests.cpp
-        ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
-    )
-
-    set(REACTOR_UNIT_TESTS_INCLUDE_DIR
-        ${THIRD_PARTY_DIR}/googletest/googletest/include
-        ${THIRD_PARTY_DIR}/googletest/googletest/
     )
 
     add_executable(ReactorUnitTests ${REACTOR_UNIT_TESTS_LIST})
     set_target_properties(ReactorUnitTests PROPERTIES
-        INCLUDE_DIRECTORIES "${REACTOR_UNIT_TESTS_INCLUDE_DIR}"
         COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
         LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
         FOLDER "Tests"
     )
-    target_link_libraries(ReactorUnitTests ${Reactor} ${OS_LIBS})
+    target_link_libraries(ReactorUnitTests ${Reactor} ${OS_LIBS} gtest)
 
     set(GLES_UNITTESTS_LIST
         ${TESTS_DIR}/GLESUnitTests/main.cpp
         ${TESTS_DIR}/GLESUnitTests/unittests.cpp
-        ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
     )
 
     set(GLES_UNITTESTS_INCLUDE_DIR
-        ${THIRD_PARTY_DIR}/googletest/googletest/include/
-        ${THIRD_PARTY_DIR}/googletest/googlemock/include/
-        ${THIRD_PARTY_DIR}/googletest/googletest/
         ${CMAKE_CURRENT_SOURCE_DIR}/include/
     )
 
@@ -1136,7 +1137,7 @@
         LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
     )
 
-    target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS} ${SWIFTSHADER_LIBS})
+    target_link_libraries(gles-unittests libEGL libGLESv2 ${OS_LIBS} ${SWIFTSHADER_LIBS} gtest gmock)
     if(ANDROID)
         target_link_libraries(gles-unittests -landroid)
     endif()
@@ -1145,13 +1146,9 @@
     set(MATH_UNITTESTS_LIST
         ${TESTS_DIR}/MathUnitTests/main.cpp
         ${TESTS_DIR}/MathUnitTests/unittests.cpp
-        ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
     )
 
     set(MATH_UNITTESTS_INCLUDE_DIR
-        ${THIRD_PARTY_DIR}/googletest/googletest/include/
-        ${THIRD_PARTY_DIR}/googletest/googlemock/include/
-        ${THIRD_PARTY_DIR}/googletest/googletest/
         ${CMAKE_CURRENT_SOURCE_DIR}/src/
     )
 
@@ -1163,6 +1160,7 @@
         LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
     )
 
+    target_link_libraries(math-unittests gtest gmock)
     if(NOT WIN32)
         target_link_libraries(math-unittests pthread ${SWIFTSHADER_LIBS})
     endif()
@@ -1194,13 +1192,9 @@
         ${TESTS_DIR}/VulkanUnitTests/Driver.cpp
         ${TESTS_DIR}/VulkanUnitTests/main.cpp
         ${TESTS_DIR}/VulkanUnitTests/unittests.cpp
-        ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
     )
 
     set(VK_UNITTESTS_INCLUDE_DIR
-        ${THIRD_PARTY_DIR}/googletest/googletest/include/
-        ${THIRD_PARTY_DIR}/googletest/googlemock/include/
-        ${THIRD_PARTY_DIR}/googletest/googletest/
         ${THIRD_PARTY_DIR}/SPIRV-Tools/include
         ${CMAKE_CURRENT_SOURCE_DIR}/include/
     )
@@ -1216,7 +1210,7 @@
         LINK_FLAGS "${SWIFTSHADER_LINK_FLAGS}"
     )
 
-    target_link_libraries(vk-unittests ${OS_LIBS} SPIRV-Tools ${SWIFTSHADER_LIBS})
+    target_link_libraries(vk-unittests SPIRV-Tools ${OS_LIBS} ${SWIFTSHADER_LIBS} gtest gmock)
 endif(SWIFTSHADER_BUILD_TESTS AND SWIFTSHADER_BUILD_VULKAN)
 
 if(HAVE_PVR_SUBMODULE AND SWIFTSHADER_BUILD_PVR)
