diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5038cfb..801d4f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,16 +4,14 @@
 
 message(STATUS "Shaderc: build type is \"${CMAKE_BUILD_TYPE}\".")
 
-option(SHADERC_SKIP_TESTS
-       "Skip building unit tests based on googlemock and googletest"
-       ${SHADERC_SKIP_TESTS})
+option(SHADERC_SKIP_TESTS "Skip building tests" ${SHADERC_SKIP_TESTS})
 if(NOT ${SHADERC_SKIP_TESTS})
   set(SHADERC_ENABLE_TESTS ON)
 endif()
 if(${SHADERC_ENABLE_TESTS})
-  message(STATUS "Configuring Shaderc to build unit tests.")
+  message(STATUS "Configuring Shaderc to build tests.")
 else()
-  message(STATUS "Configuring Shaderc to avoid building unit tests.")
+  message(STATUS "Configuring Shaderc to avoid building tests.")
 endif()
 
 include(cmake/setup_build.cmake)
diff --git a/cmake/utils.cmake b/cmake/utils.cmake
index 0d1b4bb..f807d9f 100644
--- a/cmake/utils.cmake
+++ b/cmake/utils.cmake
@@ -21,10 +21,10 @@
     endif()
     if (NOT SHADERC_ENABLE_SHARED_CRT)
       if (WIN32)
-	# For MinGW cross compile, statically link to the libgcc runtime.
-	# But it still depends on MSVCRT.dll.
-	set_target_properties(${TARGET} PROPERTIES
-		LINK_FLAGS "-static -static-libgcc")
+        # For MinGW cross compile, statically link to the libgcc runtime.
+        # But it still depends on MSVCRT.dll.
+        set_target_properties(${TARGET} PROPERTIES
+          LINK_FLAGS "-static -static-libgcc")
       endif(WIN32)
     endif(NOT SHADERC_ENABLE_SHARED_CRT)
   else()
@@ -40,10 +40,10 @@
     target_compile_options(${TARGET} PRIVATE -std=c++11)
     if (NOT SHADERC_ENABLE_SHARED_CRT)
       if (WIN32)
-	# For MinGW cross compile, statically link to the C++ runtime.
-	# But it still depends on MSVCRT.dll.
-	set_target_properties(${TARGET} PROPERTIES
-		LINK_FLAGS "-static -static-libgcc -static-libstdc++")
+        # For MinGW cross compile, statically link to the C++ runtime.
+        # But it still depends on MSVCRT.dll.
+        set_target_properties(${TARGET} PROPERTIES
+          LINK_FLAGS "-static -static-libgcc -static-libstdc++")
       endif(WIN32)
     endif(NOT SHADERC_ENABLE_SHARED_CRT)
   endif()
@@ -67,7 +67,7 @@
 # and functions whose names start with "nosetest". The test name will be
 # ${PREFIX}_nosetests.
 function(shaderc_add_nosetests PREFIX)
-  if(NOSETESTS_EXE)
+  if("${SHADERC_ENABLE_TESTS}" AND NOSETESTS_EXE)
     add_test(
       NAME ${PREFIX}_nosetests
       COMMAND ${NOSETESTS_EXE} -m "^[Nn]ose[Tt]est" -v
diff --git a/glslc/test/CMakeLists.txt b/glslc/test/CMakeLists.txt
index e00a5d4..7f02328 100644
--- a/glslc/test/CMakeLists.txt
+++ b/glslc/test/CMakeLists.txt
@@ -1,8 +1,9 @@
 shaderc_add_nosetests(expect)
 shaderc_add_nosetests(glslc_test_framework)
 
-add_test(NAME glslc_tests
-  COMMAND ${PYTHON_EXECUTABLE}
-  ${CMAKE_CURRENT_SOURCE_DIR}/glslc_test_framework.py
-  $<TARGET_FILE:glslc_exe> --test-dir ${CMAKE_CURRENT_SOURCE_DIR})
-
+if(${SHADERC_ENABLE_TESTS})
+  add_test(NAME glslc_tests
+    COMMAND ${PYTHON_EXECUTABLE}
+    ${CMAKE_CURRENT_SOURCE_DIR}/glslc_test_framework.py
+    $<TARGET_FILE:glslc_exe> --test-dir ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
diff --git a/libshaderc/CMakeLists.txt b/libshaderc/CMakeLists.txt
index 3f979f7..59ff932 100644
--- a/libshaderc/CMakeLists.txt
+++ b/libshaderc/CMakeLists.txt
@@ -32,16 +32,16 @@
 shaderc_combine_static_lib(shaderc_combined shaderc)
 
 shaderc_add_tests(
-TEST_PREFIX shaderc_combined
-LINK_LIBS shaderc_combined ${CMAKE_THREAD_LIBS_INIT}
-INCLUDE_DIRS include ${glslang_SOURCE_DIR}
-TEST_NAMES
-  shaderc
-  shaderc_cpp)
+  TEST_PREFIX shaderc_combined
+  LINK_LIBS shaderc_combined ${CMAKE_THREAD_LIBS_INIT}
+  INCLUDE_DIRS include ${glslang_SOURCE_DIR}
+  TEST_NAMES
+    shaderc
+    shaderc_cpp)
 
-add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c)
-shaderc_default_c_compile_options(shaderc_c_smoke_test)
-
-target_link_libraries(shaderc_c_smoke_test PRIVATE shaderc)
-add_test(NAME shaderc_c_smoke_test COMMAND shaderc_c_smoke_test)
-
+if(${SHADERC_ENABLE_TESTS})
+  add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c)
+  shaderc_default_c_compile_options(shaderc_c_smoke_test)
+  target_link_libraries(shaderc_c_smoke_test PRIVATE shaderc)
+  add_test(NAME shaderc_c_smoke_test COMMAND shaderc_c_smoke_test)
+endif()
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index 71bb3c9..8f7f8b2 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -37,43 +37,49 @@
 endif()
 
 if (IS_DIRECTORY ${SHADERC_SPIRV_TOOLS_DIR})
+  if ("${SHADERC_SKIP_TESTS}")
+    # Also skip building tests in SPIRV-Tools.
+    set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
+  endif()
   add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools)
 endif()
 if (NOT TARGET SPIRV-Tools)
   message(FATAL_ERROR "SPIRV-Tools was not found - required for compilation")
 endif()
 
-# Configure out-of-source-directory tests for glslang.
-# The glslang project uses a bash script called "runtests" to run tests.
-# The runtests script assumes the glslangValidator executable exists in
-# a location inside the source tree, but we build it elsewhere.
-# We need to copy the test files, fix the path references, and then run tests.
-set(GLSLANG_TEST_SRC_DIR ${SHADERC_GLSLANG_DIR}/Test)
-set(GLSLANG_TEST_BIN_DIR
-      ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/${CMAKE_CFG_INTDIR})
+if(${SHADERC_ENABLE_TESTS})
+  # Configure out-of-source-directory tests for glslang.
+  # The glslang project uses a bash script called "runtests" to run tests.
+  # The runtests script assumes the glslangValidator executable exists in
+  # a location inside the source tree, but we build it elsewhere.
+  # We need to copy the test files, fix the path references, and then run tests.
+  set(GLSLANG_TEST_SRC_DIR ${SHADERC_GLSLANG_DIR}/Test)
+  set(GLSLANG_TEST_BIN_DIR
+        ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/${CMAKE_CFG_INTDIR})
 
-# If we are building in a multi-configuration setting we have
-# to put the glslang tests into their respective subdirectories.
-if (CMAKE_CONFIGURATION_TYPES)
-  set(GLSLANG_CONFIGURATION_DIR ${CMAKE_CFG_INTDIR})
-endif()
+  # If we are building in a multi-configuration setting we have
+  # to put the glslang tests into their respective subdirectories.
+  if (CMAKE_CONFIGURATION_TYPES)
+    set(GLSLANG_CONFIGURATION_DIR ${CMAKE_CFG_INTDIR})
+  endif()
 
-add_custom_target(copy-tests-if-necessary ALL
-  COMMAND ${PYTHON_EXECUTABLE}
-    ${shaderc_SOURCE_DIR}/utils/copy-tests-if-necessary.py
-    ${GLSLANG_TEST_SRC_DIR} ${GLSLANG_TEST_BIN_DIR} ${GLSLANG_CONFIGURATION_DIR}
-  COMMENT "Copying and patching glslang tests if needed")
+  add_custom_target(copy-tests-if-necessary ALL
+    COMMAND ${PYTHON_EXECUTABLE}
+      ${shaderc_SOURCE_DIR}/utils/copy-tests-if-necessary.py
+      ${GLSLANG_TEST_SRC_DIR} ${GLSLANG_TEST_BIN_DIR} ${GLSLANG_CONFIGURATION_DIR}
+    COMMENT "Copying and patching glslang tests if needed")
 
-if (CMAKE_CONFIGURATION_TYPES)
-  # If we are running a multi-configuration project,
-  # the tests will be in test-glslang/${Configuration}
-  add_test(NAME glslang-testsuite
-    COMMAND bash runtests
-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/$<CONFIGURATION>
-  )
-else()
-  add_test(NAME glslang-testsuite
-    COMMAND bash runtests
-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/
-  )
+  if (CMAKE_CONFIGURATION_TYPES)
+    # If we are running a multi-configuration project,
+    # the tests will be in test-glslang/${Configuration}
+    add_test(NAME glslang-testsuite
+      COMMAND bash runtests
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/$<CONFIGURATION>
+    )
+  else()
+    add_test(NAME glslang-testsuite
+      COMMAND bash runtests
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test-glslang/
+    )
+  endif()
 endif()
