mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-10-19 03:20:14 +00:00
720beb161a
This commit is the initial implementation of the intrusive linked list class. It includes the implementation in the header files, and unit test. The iterators are circular: incrementing end() gives begin() and decrementing begin() gives end(). Also made it valid to decrement end(). Expliticly defines move constructor and move assignment - Visual Studio 2013 does not implicitly generate the move constructor or move assignments. So they need to be explicit, otherwise it will try to use the copy constructor, which we explicitly deleted. - Can't use "= default" either. Seems like VS2013 does not support explicitly using the default move constructors and move assignments, so I wrote them out.
188 lines
5.1 KiB
CMake
188 lines
5.1 KiB
CMake
# Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Add a SPIR-V Tools unit test. Signature:
|
|
# add_spvtools_unittest(
|
|
# TARGET target_name
|
|
# SRCS src_file.h src_file.cpp
|
|
# LIBS lib1 lib2
|
|
# )
|
|
|
|
if (NOT "${SPIRV_SKIP_TESTS}")
|
|
if (TARGET gmock_main)
|
|
message(STATUS "Found Google Mock, building tests.")
|
|
else()
|
|
message(STATUS "Did not find googletest, tests will not be built."
|
|
"To enable tests place googletest in '<spirv-dir>/external/googletest'.")
|
|
endif()
|
|
endif()
|
|
|
|
function(add_spvtools_unittest)
|
|
if (NOT "${SPIRV_SKIP_TESTS}" AND TARGET gmock_main)
|
|
set(one_value_args TARGET)
|
|
set(multi_value_args SRCS LIBS)
|
|
cmake_parse_arguments(
|
|
ARG "" "${one_value_args}" "${multi_value_args}" ${ARGN})
|
|
set(target test_${ARG_TARGET})
|
|
add_executable(${target} ${ARG_SRCS})
|
|
spvtools_default_compile_options(${target})
|
|
if(${COMPILER_IS_LIKE_GNU})
|
|
target_compile_options(${target} PRIVATE -Wno-undef)
|
|
endif()
|
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
# Disable C4503 "decorated name length exceeded" warning,
|
|
# triggered by some heavily templated types.
|
|
# We don't care much about that in test code.
|
|
# Important to do since we have warnings-as-errors.
|
|
target_compile_options(${target} PRIVATE /wd4503)
|
|
endif()
|
|
target_include_directories(${target} PRIVATE
|
|
${SPIRV_HEADER_INCLUDE_DIR}
|
|
${spirv-tools_SOURCE_DIR}
|
|
${spirv-tools_SOURCE_DIR}/include
|
|
${spirv-tools_SOURCE_DIR}/test
|
|
${spirv-tools_BINARY_DIR}
|
|
${gtest_SOURCE_DIR}/include
|
|
${gmock_SOURCE_DIR}/include
|
|
)
|
|
target_link_libraries(${target} PRIVATE ${ARG_LIBS})
|
|
target_link_libraries(${target} PRIVATE gmock_main)
|
|
add_test(NAME spirv-tools-${target} COMMAND ${target})
|
|
set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools tests")
|
|
endif()
|
|
endfunction()
|
|
|
|
set(TEST_SOURCES
|
|
test_fixture.h
|
|
unit_spirv.h
|
|
|
|
assembly_context_test.cpp
|
|
assembly_format_test.cpp
|
|
binary_destroy_test.cpp
|
|
binary_endianness_test.cpp
|
|
binary_header_get_test.cpp
|
|
binary_parse_test.cpp
|
|
binary_strnlen_s_test.cpp
|
|
binary_to_text_test.cpp
|
|
binary_to_text.literal_test.cpp
|
|
comment_test.cpp
|
|
enum_string_mapping_test.cpp
|
|
enum_set_test.cpp
|
|
ext_inst.glsl_test.cpp
|
|
ext_inst.opencl_test.cpp
|
|
fix_word_test.cpp
|
|
generator_magic_number_test.cpp
|
|
hex_float_test.cpp
|
|
immediate_int_test.cpp
|
|
libspirv_macros_test.cpp
|
|
named_id_test.cpp
|
|
name_mapper_test.cpp
|
|
opcode_make_test.cpp
|
|
opcode_require_capabilities_test.cpp
|
|
opcode_split_test.cpp
|
|
opcode_table_get_test.cpp
|
|
operand_capabilities_test.cpp
|
|
operand_test.cpp
|
|
operand_pattern_test.cpp
|
|
software_version_test.cpp
|
|
target_env_test.cpp
|
|
text_advance_test.cpp
|
|
text_destroy_test.cpp
|
|
text_literal_test.cpp
|
|
text_start_new_inst_test.cpp
|
|
text_to_binary.annotation_test.cpp
|
|
text_to_binary.barrier_test.cpp
|
|
text_to_binary.constant_test.cpp
|
|
text_to_binary.control_flow_test.cpp
|
|
text_to_binary_test.cpp
|
|
text_to_binary.debug_test.cpp
|
|
text_to_binary.device_side_enqueue_test.cpp
|
|
text_to_binary.extension_test.cpp
|
|
text_to_binary.function_test.cpp
|
|
text_to_binary.group_test.cpp
|
|
text_to_binary.image_test.cpp
|
|
text_to_binary.literal_test.cpp
|
|
text_to_binary.memory_test.cpp
|
|
text_to_binary.misc_test.cpp
|
|
text_to_binary.mode_setting_test.cpp
|
|
text_to_binary.pipe_storage_test.cpp
|
|
text_to_binary.type_declaration_test.cpp
|
|
text_to_binary.subgroup_dispatch_test.cpp
|
|
text_word_get_test.cpp
|
|
|
|
unit_spirv.cpp
|
|
)
|
|
|
|
add_spvtools_unittest(
|
|
TARGET spirv_unit_tests
|
|
SRCS ${TEST_SOURCES}
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET diagnostic
|
|
SRCS diagnostic_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET c_interface
|
|
SRCS c_interface_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET cpp_interface
|
|
SRCS cpp_interface_test.cpp
|
|
LIBS SPIRV-Tools-opt)
|
|
|
|
add_spvtools_unittest(
|
|
TARGET parse_number
|
|
SRCS parse_number_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET string_utils
|
|
SRCS string_utils_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET log
|
|
SRCS log_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET preserve_numeric_ids
|
|
SRCS preserve_numeric_ids_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET bit_stream
|
|
SRCS bit_stream.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET huffman_codec
|
|
SRCS huffman_codec.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_spvtools_unittest(
|
|
TARGET move_to_front
|
|
SRCS move_to_front_test.cpp
|
|
LIBS ${SPIRV_TOOLS})
|
|
|
|
add_subdirectory(comp)
|
|
add_subdirectory(link)
|
|
add_subdirectory(opt)
|
|
add_subdirectory(stats)
|
|
add_subdirectory(util)
|
|
add_subdirectory(val)
|