if (TARGET gmock)
  message(STATUS "Google Mock found - building tests")

  set(TEST_SOURCES
    # Framework related source files
    ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
    ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
    ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h

    # Test related source files
    ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
    # -- Remapper tests
    ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp
  )

  add_executable(glslangtests ${TEST_SOURCES})
  set_property(TARGET glslangtests PROPERTY FOLDER tests)
  glslang_set_link_args(glslangtests)
  install(TARGETS glslangtests
        RUNTIME DESTINATION bin)

  set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
  # Supply a default test root directory, so that manual testing
  # doesn't have to specify the --test-root option in the normal
  # case that you want to use the tests from the same source tree.
  target_compile_definitions(glslangtests
    PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}")
  target_include_directories(glslangtests PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}
    ${gmock_SOURCE_DIR}/include
    ${gtest_SOURCE_DIR}/include)
  target_link_libraries(glslangtests PRIVATE
    SPVRemapper glslang OSDependent OGLCompiler HLSL glslang
    SPIRV glslang-default-resource-limits gmock)
  add_test(NAME glslang-gtests
	   COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
endif()
