yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Valentin SarthouAdd --discard-is-terminate option (#4081)c8ec3690

main
5.1 KiB109 linesraw
1# Copyright (C) 2020-2023 The Khronos Group Inc.
2#
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9#    Redistributions of source code must retain the above copyright
10#    notice, this list of conditions and the following disclaimer.
11#
12#    Redistributions in binary form must reproduce the above
13#    copyright notice, this list of conditions and the following
14#    disclaimer in the documentation and/or other materials provided
15#    with the distribution.
16#
17#    Neither the name of The Khronos Group Inc. nor the names of its
18#    contributors may be used to endorse or promote products derived
19#    from this software without specific prior written permission.
20#
21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32# POSSIBILITY OF SUCH DAMAGE.
33
34if(GLSLANG_TESTS)
35    if(TARGET ${GMOCK_TARGET})
36        message(STATUS "Google Mock found - building tests")
37
38        set(TEST_SOURCES
39            # Framework related source files
40            ${CMAKE_CURRENT_SOURCE_DIR}/Initializer.h
41            ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
42            ${CMAKE_CURRENT_SOURCE_DIR}/Settings.cpp
43            ${CMAKE_CURRENT_SOURCE_DIR}/Settings.h
44            ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.cpp
45            ${CMAKE_CURRENT_SOURCE_DIR}/TestFixture.h
46
47            # Test related source files
48            ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
49            ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
50            ${CMAKE_CURRENT_SOURCE_DIR}/Common.cpp
51            ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
52            ${CMAKE_CURRENT_SOURCE_DIR}/Discard.cpp
53            ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
54            ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
55            ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
56            ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp
57            ${CMAKE_CURRENT_SOURCE_DIR}/LiveTraverser.FromFile.cpp
58            ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
59            ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
60            ${CMAKE_CURRENT_SOURCE_DIR}/StructName.cpp
61            ${CMAKE_CURRENT_SOURCE_DIR}/SpvPatternTest.cpp
62            ${CMAKE_CURRENT_SOURCE_DIR}/SpvDebugInfoTest.cpp
63            ${CMAKE_CURRENT_SOURCE_DIR}/InvertY.cpp
64            ${CMAKE_CURRENT_SOURCE_DIR}/VkRelaxed.FromFile.cpp
65            ${CMAKE_CURRENT_SOURCE_DIR}/GlslMapIO.FromFile.cpp
66            ${CMAKE_CURRENT_SOURCE_DIR}/UboUnsizedArray.cpp)
67
68        add_executable(glslangtests ${TEST_SOURCES})
69        glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h)
70        set_property(TARGET glslangtests PROPERTY FOLDER tests)
71        glslang_set_link_args(glslangtests)
72
73        set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
74        # Supply a default test root directory, so that manual testing
75        # doesn't have to specify the --test-root option in the normal
76        # case that you want to use the tests from the same source tree.
77        target_compile_definitions(glslangtests
78                                   PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}"
79                                   PRIVATE GLSLANG_TEST_BUILD=1)
80        target_include_directories(glslangtests PRIVATE
81                                   ${CMAKE_CURRENT_SOURCE_DIR}
82                                   ${PROJECT_SOURCE_DIR})
83
84        if(ENABLE_OPT)
85            target_link_libraries(glslangtests
86                PRIVATE SPIRV-Tools-opt
87            )
88        endif()
89
90        set(LIBRARIES
91            glslang glslang-default-resource-limits
92            $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>)
93
94        target_link_libraries(glslangtests PRIVATE ${LIBRARIES} ${GMOCK_TARGET})
95
96        # The TARGET_RUNTIME_DLL_DIRS feature requires CMake 3.27 or greater.
97        if(WIN32 AND BUILD_SHARED_LIBS AND CMAKE_VERSION VERSION_LESS "3.27")
98            message(WARNING "The Windows shared library test configuration requires CMake 3.27 or greater")
99        else()
100            add_test(NAME glslang-gtests
101                     COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}")
102
103            # Prepend paths to shared libraries.
104            if (BUILD_SHARED_LIBS)
105                set_tests_properties(glslang-gtests PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<JOIN:$<TARGET_RUNTIME_DLL_DIRS:glslangtests>,\;>")
106            endif()
107        endif()
108    endif()
109endif()