Skip to content

Commit 7d9567c

Browse files
authored
Enable running tests under LIT (#4813)
* Enable running tests under LIT If `CLANG_INCLUDE_TESTS=On`, the googletest unit tests are built as part of the clang unit test suite. This allows them to run via lit using the `check-clang-unit` target. * Configure DXILConv tests to run under check-all
1 parent ea3c096 commit 7d9567c

9 files changed

Lines changed: 45 additions & 36 deletions

File tree

cmake/caches/PredefinedParams.cmake

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,22 @@ if (DXC_COVERAGE)
1111
set(LLVM_CODE_COVERAGE_TARGETS "dxc;dxcompiler" CACHE STRING "")
1212
endif()
1313

14+
if (DXC_USE_LIT)
15+
set(LLVM_TEST_VALUE ON)
16+
else()
17+
set(LLVM_TEST_VALUE OFF)
18+
endif()
19+
20+
set(LLVM_INCLUDE_TESTS ${LLVM_TEST_VALUE} CACHE BOOL "")
21+
set(CLANG_INCLUDE_TESTS ${LLVM_TEST_VALUE} CACHE BOOL "")
22+
1423
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "")
1524
set(LLVM_APPEND_VC_REV ON CACHE BOOL "")
1625
set(LLVM_DEFAULT_TARGET_TRIPLE "dxil-ms-dx" CACHE STRING "")
1726
set(LLVM_ENABLE_EH ON CACHE BOOL "")
1827
set(LLVM_ENABLE_RTTI ON CACHE BOOL "")
1928
set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "")
2029
set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "")
21-
set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "")
2230
set(LLVM_OPTIMIZED_TABLEGEN OFF CACHE BOOL "")
2331
set(LLVM_REQUIRES_EH ON CACHE BOOL "")
2432
set(LLVM_REQUIRES_RTTI ON CACHE BOOL "")
@@ -28,7 +36,6 @@ set(CLANG_BUILD_EXAMPLES OFF CACHE BOOL "")
2836
set(CLANG_CL OFF CACHE BOOL "")
2937
set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
3038
set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
31-
set(CLANG_INCLUDE_TESTS OFF CACHE BOOL "")
3239
set(HLSL_INCLUDE_TESTS ON CACHE BOOL "")
3340
set(ENABLE_SPIRV_CODEGEN ON CACHE BOOL "")
3441
set(SPIRV_BUILD_TESTS ON CACHE BOOL "")

projects/dxilconv/test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ configure_lit_site_cfg(
88

99

1010
# HLSL Change Begin - Add taef tests
11-
add_lit_target("check-dxilconv" "Running lit suite dxilconv"
11+
add_lit_testsuite("check-dxilconv" "Running lit suite dxilconv"
1212
${CMAKE_CURRENT_SOURCE_DIR}/taef
1313
PARAMS
1414
dxilconv_site_config=${CMAKE_CURRENT_BINARY_DIR}/taef/lit.site.cfg

projects/dxilconv/test/taef/lit.site.cfg.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import sys
55
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
66
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
77
config.build_mode = lit_config.params["build_mode"]
8-
config.arch = "@DXC_BUILD_ARCH@"
8+
config.arch = "@CMAKE_C_COMPILER_ARCHITECTURE_ID@"
99

1010
# Let the main config do the real work.
1111
lit_config.load_config(config, "@LLVM_SOURCE_DIR@/projects/dxilconv/test/taef/lit.cfg")

tools/clang/test/taef/lit.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import lit.formats
99
import lit.util
1010

1111
# name: The name of this test suite.
12-
config.name = 'clang-hlsl'
12+
config.name = 'clang-taef'
1313

1414
# Check that the object root is known.
1515
llvm_obj_root = getattr(config, 'llvm_obj_root', None)
@@ -28,7 +28,7 @@ if llvm_obj_root is None:
2828

2929
te = os.path.join(config.llvm_obj_root, "TAEF", config.arch, 'te.exe')
3030

31-
test_dll = os.path.join(config.llvm_obj_root, config.build_mode, 'bin', 'clang-hlsl-tests.dll')
31+
test_dll = os.path.join(config.llvm_obj_root, config.build_mode, 'bin', 'ClangHLSLTests.dll')
3232

3333
hlsl_data_dir = os.path.join(config.llvm_src_root, 'tools', 'clang', 'test', 'hlsl')
3434

tools/clang/test/taef/lit.site.cfg.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ config.build_mode = lit_config.params["build_mode"]
88
config.arch = "@DXC_BUILD_ARCH@"
99

1010
# Let the main config do the real work.
11-
lit_config.load_config(config, "@CLANG_SOURCE_DIR@/test/clang-hlsl/lit.cfg")
11+
lit_config.load_config(config, "@CLANG_SOURCE_DIR@/test/taef/lit.cfg")

tools/clang/unittests/HLSL/CMakeLists.txt

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ set(HLSL_IGNORE_SOURCES
2828
TestMain.cpp
2929
HLSLTestOptions.cpp
3030
)
31-
add_clang_library(clang-hlsl-tests SHARED
31+
add_clang_library(ClangHLSLTests SHARED
3232
AllocatorTest.cpp
3333
CompilerTest.cpp
3434
DxilContainerTest.cpp
@@ -61,7 +61,7 @@ set(HLSL_IGNORE_SOURCES
6161
ShaderOpTest.cpp
6262
)
6363

64-
add_clang_unittest(clang-hlsl-tests
64+
add_clang_unittest(ClangHLSLTests
6565
AllocatorTest.cpp
6666
CompilerTest.cpp
6767
DxilContainerTest.cpp
@@ -82,10 +82,10 @@ add_clang_unittest(clang-hlsl-tests
8282

8383
endif(WIN32)
8484

85-
set_target_properties(clang-hlsl-tests PROPERTIES FOLDER "Clang tests")
85+
set_target_properties(ClangHLSLTests PROPERTIES FOLDER "Clang tests")
8686

8787
if (WIN32)
88-
target_link_libraries(clang-hlsl-tests PRIVATE
88+
target_link_libraries(ClangHLSLTests PRIVATE
8989
dxcompiler
9090
HLSLTestLib
9191
LLVMDxilContainer
@@ -96,7 +96,7 @@ target_link_libraries(clang-hlsl-tests PRIVATE
9696
shlwapi
9797
)
9898
else(WIN32)
99-
target_link_libraries(clang-hlsl-tests
99+
target_link_libraries(ClangHLSLTests
100100
dxcompiler
101101
HLSLTestLib
102102
)
@@ -113,23 +113,22 @@ endif(WIN32)
113113
# Add includes to directly reference intrinsic tables.
114114
include_directories(${CLANG_BINARY_DIR}/lib/Sema)
115115

116-
add_dependencies(clang-hlsl-tests dxcompiler)
116+
add_dependencies(ClangHLSLTests dxcompiler)
117117

118-
if(WIN32)
119-
install(TARGETS clang-hlsl-tests
120-
RUNTIME DESTINATION bin)
121-
else(WIN32)
122-
set_output_directory(clang-hlsl-tests
123-
${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
124-
endif(WIN32)
118+
if (NOT CLANG_INCLUDE_TESTS)
119+
set_target_properties(ClangHLSLTests PROPERTIES OUTPUT_NAME clang-hlsl-tests)
120+
set_output_directory(ClangHLSLTests
121+
${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
122+
if (NOT WIN32)
123+
add_test(NAME test-hlsl-codegen
124+
COMMAND $<TARGET_FILE:ClangHLSLTests> --HlslDataDir
125+
${PROJECT_SOURCE_DIR}/tools/clang/test/HLSL)
126+
endif()
127+
endif()
125128

126129
if(WIN32)
127130
# Add a .user file with settings for te.exe.
128131
file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" DOS_STYLE_SOURCE_DIR)
129132
file(TO_NATIVE_PATH "${TAEF_BIN_DIR}" DOS_TAEF_BIN_DIR)
130-
configure_file(clang-hlsl-tests.vcxproj.user.txt clang-hlsl-tests.vcxproj.user)
133+
configure_file(ClangHLSLTests.vcxproj.user.txt ClangHLSLTests.vcxproj.user)
131134
endif(WIN32)
132-
133-
add_test(NAME test-hlsl-codegen
134-
COMMAND clang-hlsl-tests --HlslDataDir
135-
${PROJECT_SOURCE_DIR}/tools/clang/test/HLSL)

tools/clang/unittests/HLSL/clang-hlsl-tests.vcxproj.user.txt renamed to tools/clang/unittests/HLSL/ClangHLSLTests.vcxproj.user.txt

File renamed without changes.

tools/clang/unittests/HLSLHost/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ add_clang_executable(HLSLHost
1212
)
1313

1414
target_link_libraries(HLSLHost
15-
clang-hlsl-tests
15+
ClangHLSLTests
1616
)
1717

1818
set_target_properties(HLSLHost PROPERTIES VERSION ${CLANG_EXECUTABLE_VERSION})
1919

2020
include_directories(AFTER ${DIASDK_INCLUDE_DIRS})
2121

22-
add_dependencies(HLSLHost clang-hlsl-tests)
22+
add_dependencies(HLSLHost ClangHLSLTests)
2323

2424
if(UNIX)
2525
set(CLANGXX_LINK_OR_COPY create_symlink)

tools/clang/unittests/SPIRV/CMakeLists.txt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set(LLVM_LINK_COMPONENTS
66
hlsl
77
)
88

9-
add_clang_unittest(clang-spirv-tests
9+
add_clang_unittest(ClangSPIRVTests
1010
CodeGenSpirvTest.cpp
1111
FileTestFixture.cpp
1212
FileTestUtils.cpp
@@ -21,7 +21,7 @@ add_clang_unittest(clang-spirv-tests
2121
WholeFileTestFixture.cpp
2222
)
2323

24-
target_link_libraries(clang-spirv-tests
24+
target_link_libraries(ClangSPIRVTests
2525
clangAST
2626
clangBasic
2727
clangCodeGen
@@ -36,13 +36,16 @@ target_link_libraries(clang-spirv-tests
3636
# This is necessary so that the linked dxcompiler is loaded into memory space
3737
# first, and in case dxcompiler.so is loaded via 'dlopen', it resolves to the
3838
# same memory space, and prevents getting two copies of global static variables.
39-
add_dependencies(clang-spirv-tests dxcompiler)
39+
add_dependencies(ClangSPIRVTests dxcompiler)
4040

41-
target_include_directories(clang-spirv-tests
41+
target_include_directories(ClangSPIRVTests
4242
PRIVATE ${SPIRV_TOOLS_INCLUDE_DIR} ${DXC_EFFCEE_DIR})
4343

44-
set_output_directory(clang-spirv-tests
45-
${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
44+
if (NOT CLANG_INCLUDE_TESTS)
45+
set_target_properties(ClangSPIRVTests PROPERTIES OUTPUT_NAME clang-spirv-tests)
46+
set_output_directory(ClangSPIRVTests
47+
${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
48+
endif()
4649

4750
set(SPIRV_TEST_DATA_DIR ${LLVM_SOURCE_DIR}/tools/clang/test/CodeGenSPIRV/)
4851
configure_file(
@@ -54,6 +57,6 @@ if(WIN32)
5457
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") # otherwise will hit fatal error C1128 on windows x64
5558
endif(WIN32)
5659

57-
add_test(NAME test-spirv-codegen
58-
COMMAND clang-spirv-tests --spirv-test-root
59-
${PROJECT_SOURCE_DIR}/tools/clang/test/CodeGenSPIRV)
60+
if (NOT CLANG_INCLUDE_TESTS)
61+
add_test(NAME test-spirv-codegen COMMAND $<TARGET_FILE:ClangSPIRVTests>)
62+
endif()

0 commit comments

Comments
 (0)