Make test suite optional by using CTest
authorDavid Seifert <soap@gentoo.org>
Fri, 28 Apr 2017 20:46:52 +0000 (22:46 +0200)
committerDavid Seifert <soap@gentoo.org>
Fri, 28 Apr 2017 20:46:52 +0000 (22:46 +0200)
CMakeLists.txt
External/CMakeLists.txt
gtests/CMakeLists.txt

index f1012f7..0e5b8b3 100644 (file)
@@ -15,6 +15,9 @@ option(ENABLE_HLSL "Enables HLSL input support" ON)
 
 project(glslang)
 
+# make testing optional
+include(CTest)
+
 if(ENABLE_AMD_EXTENSIONS)
     add_definitions(-DAMD_EXTENSIONS)
 endif(ENABLE_AMD_EXTENSIONS)
index b84be68..4f694ee 100644 (file)
@@ -1,33 +1,35 @@
 # Suppress all warnings from external projects.
 set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
 
-if (TARGET gmock)
-    message(STATUS "Google Mock already configured - use it")
-elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
-    # We need to make sure Google Test does not mess up with the
-    # global CRT settings on Windows.
-    if(WIN32)
-        set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-    endif(WIN32)
-    add_subdirectory(googletest)
-    set(GTEST_TARGETS
-        gtest
-        gtest_main
-        gmock
-        gmock_main)
-    foreach(target ${GTEST_TARGETS})
-        set_property(TARGET ${target} PROPERTY FOLDER gtest)
-    endforeach()
-    mark_as_advanced(gmock_build_tests
-        BUILD_GMOCK
-        BUILD_GTEST
-        BUILD_SHARED_LIBS
-        gtest_build_samples
-        gtest_build_tests
-        gtest_disable_pthreads
-        gtest_force_shared_crt
-        gtest_hide_internal_symbols)
-else()
-    message(STATUS
-        "Google Mock was not found - tests based on that will not build")
+if(BUILD_TESTING)
+    if(TARGET gmock)
+        message(STATUS "Google Mock already configured - use it")
+    elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
+        # We need to make sure Google Test does not mess up with the
+        # global CRT settings on Windows.
+        if(WIN32)
+            set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+        endif(WIN32)
+        add_subdirectory(googletest)
+        set(GTEST_TARGETS
+            gtest
+            gtest_main
+            gmock
+            gmock_main)
+        foreach(target ${GTEST_TARGETS})
+            set_property(TARGET ${target} PROPERTY FOLDER gtest)
+        endforeach()
+        mark_as_advanced(gmock_build_tests
+            BUILD_GMOCK
+            BUILD_GTEST
+            BUILD_SHARED_LIBS
+            gtest_build_samples
+            gtest_build_tests
+            gtest_disable_pthreads
+            gtest_force_shared_crt
+            gtest_hide_internal_symbols)
+    else()
+        message(STATUS
+            "Google Mock was not found - tests based on that will not build")
+    endif()
 endif()
index 558d139..2616ac0 100644 (file)
@@ -1,55 +1,57 @@
-if (TARGET gmock)
-    message(STATUS "Google Mock found - building tests")
+if(BUILD_TESTING)
+    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
+        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}/Link.FromFile.Vk.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
+            # 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}/Link.FromFile.Vk.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
 
-        # -- Remapper tests
-        ${CMAKE_CURRENT_SOURCE_DIR}/Remap.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 ${CMAKE_INSTALL_BINDIR})
+        add_executable(glslangtests ${TEST_SOURCES})
+        set_property(TARGET glslangtests PROPERTY FOLDER tests)
+        glslang_set_link_args(glslangtests)
+        install(TARGETS glslangtests
+                RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-    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)
+        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)
 
-    set(LIBRARIES
-        SPVRemapper glslang OSDependent OGLCompiler glslang
-        SPIRV glslang-default-resource-limits)
-    if(ENABLE_HLSL)
-        set(LIBRARIES ${LIBRARIES} HLSL)
-    endif(ENABLE_HLSL)
-    target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
+        set(LIBRARIES
+            SPVRemapper glslang OSDependent OGLCompiler glslang
+            SPIRV glslang-default-resource-limits)
+        if(ENABLE_HLSL)
+            set(LIBRARIES ${LIBRARIES} HLSL)
+        endif(ENABLE_HLSL)
+        target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
 
-    add_test(NAME glslang-gtests
-             COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
+        add_test(NAME glslang-gtests
+                 COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
+    endif()
 endif()