forked from taichi-dev/taichi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTaichiTests.cmake
119 lines (102 loc) · 4.04 KB
/
TaichiTests.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
cmake_minimum_required(VERSION 3.0)
set(TESTS_NAME taichi_cpp_tests)
if (WIN32)
# Prevent overriding the parent project's compiler/linker
# settings on Windows
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
endif()
# TODO(#2195):
# 1. "cpp" -> "cpp_legacy", "cpp_new" -> "cpp"
# 2. Re-implement the legacy CPP tests using googletest
file(GLOB_RECURSE TAICHI_TESTS_SOURCE
"tests/cpp/analysis/*.cpp"
"tests/cpp/backends/*.cpp"
"tests/cpp/codegen/*.cpp"
"tests/cpp/common/*.cpp"
"tests/cpp/ir/*.cpp"
"tests/cpp/program/*.cpp"
"tests/cpp/struct/*.cpp"
"tests/cpp/transforms/*.cpp"
"tests/cpp/offline_cache/*.cpp")
if (TI_WITH_OPENGL OR TI_WITH_VULKAN)
file(GLOB TAICHI_TESTS_GFX_UTILS_SOURCE
"tests/cpp/aot/gfx_utils.cpp")
list(APPEND TAICHI_TESTS_SOURCE ${TAICHI_TESTS_GFX_UTILS_SOURCE})
endif()
if(TI_WITH_LLVM)
file(GLOB TAICHI_TESTS_LLVM_SOURCE "tests/cpp/aot/llvm/*.cpp" "tests/cpp/llvm/*.cpp")
list(APPEND TAICHI_TESTS_SOURCE ${TAICHI_TESTS_LLVM_SOURCE})
endif()
if(TI_WITH_VULKAN)
file(GLOB TAICHI_TESTS_VULKAN_SOURCE "tests/cpp/aot/vulkan/*.cpp")
list(APPEND TAICHI_TESTS_SOURCE ${TAICHI_TESTS_VULKAN_SOURCE})
endif()
if(TI_WITH_OPENGL)
file(GLOB TAICHI_TESTS_OPENGL_SOURCE "tests/cpp/aot/opengl/*.cpp")
list(APPEND TAICHI_TESTS_SOURCE ${TAICHI_TESTS_OPENGL_SOURCE})
endif()
if(TI_WITH_DX12)
file(GLOB TAICHI_TESTS_DX12_SOURCE "tests/cpp/aot/dx12/*.cpp")
list(APPEND TAICHI_TESTS_SOURCE ${TAICHI_TESTS_DX12_SOURCE})
endif()
add_executable(${TESTS_NAME} ${TAICHI_TESTS_SOURCE})
if (WIN32)
# Output the executable to build/ instead of build/Debug/...
set(TESTS_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build")
set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTS_OUTPUT_DIR})
set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${TESTS_OUTPUT_DIR})
set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${TESTS_OUTPUT_DIR})
set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${TESTS_OUTPUT_DIR})
set_target_properties(${TESTS_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TESTS_OUTPUT_DIR})
if (MSVC AND TI_GENERATE_PDB)
target_compile_options(${TESTS_NAME} PRIVATE "/Zi")
target_link_options(${TESTS_NAME} PRIVATE "/DEBUG")
target_link_options(${TESTS_NAME} PRIVATE "/OPT:REF")
target_link_options(${TESTS_NAME} PRIVATE "/OPT:ICF")
endif()
endif()
target_link_libraries(${TESTS_NAME} PRIVATE taichi_core)
target_link_libraries(${TESTS_NAME} PRIVATE gtest_main)
target_link_libraries(${TESTS_NAME} PRIVATE taichi_common)
if (TI_WITH_BACKTRACE)
target_link_libraries(${TESTS_NAME} PRIVATE ${BACKWARD_ENABLE})
endif()
if (TI_WITH_OPENGL OR TI_WITH_VULKAN)
target_link_libraries(${TESTS_NAME} PRIVATE gfx_runtime)
endif()
if (TI_WITH_VULKAN)
target_link_libraries(${TESTS_NAME} PRIVATE vulkan_rhi)
endif()
if (TI_WITH_OPENGL)
target_link_libraries(${TESTS_NAME} PRIVATE opengl_rhi)
endif()
if (TI_WITH_DX12)
target_link_libraries(${TESTS_NAME} PRIVATE dx12_runtime)
target_link_libraries(${TESTS_NAME} PRIVATE dx12_rhi)
endif()
target_include_directories(${TESTS_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/external/spdlog/include
${PROJECT_SOURCE_DIR}/external/include
${PROJECT_SOURCE_DIR}/external/eigen
${PROJECT_SOURCE_DIR}/external/volk
${PROJECT_SOURCE_DIR}/external/glad/include
${PROJECT_SOURCE_DIR}/external/SPIRV-Tools/include
${PROJECT_SOURCE_DIR}/external/Vulkan-Headers/include
)
target_include_directories(${TESTS_NAME} SYSTEM
PRIVATE
${PROJECT_SOURCE_DIR}/external/VulkanMemoryAllocator/include
)
if (NOT ANDROID)
target_include_directories(${TESTS_NAME}
PRIVATE
external/glfw/include
)
endif ()
if(LINUX)
target_link_options(${TESTS_NAME} PUBLIC -Wl,--exclude-libs=ALL)
target_link_options(${TESTS_NAME} PUBLIC -static-libgcc -static-libstdc++)
endif()
add_test(NAME ${TESTS_NAME} COMMAND ${TESTS_NAME})