Skip to content

Commit ac97108

Browse files
Alcpzjoeatodd
authored andcommitted
[SYCL][COMPAT] Improved Windows library unittests
1 parent f36ff23 commit ac97108

File tree

5 files changed

+91
-45
lines changed

5 files changed

+91
-45
lines changed

sycl/cmake/modules/AddSYCLLibraryUnitTest.cmake

Lines changed: 72 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,89 @@
77
# Will compile the list of files together using clang.
88
# Produces a single binary using all the .cpp files
99
# named 'test_suite_name' at ${CMAKE_CURRENT_BINARY_DIR}.
10-
macro(add_sycl_library_unittest test_suite_name sycl_extra_flags)
10+
macro(add_sycl_library_unittest test_suite_name)
11+
cmake_parse_arguments(ARG
12+
""
13+
""
14+
"SYCL_EXTRA_FLAGS;SOURCES"
15+
${ARGN})
1116

12-
add_custom_target(check-sycl-${test_suite_name}
13-
${CMAKE_COMMAND} -E env
14-
LD_LIBRARY_PATH="${CMAKE_BINARY_DIR}/lib"
15-
LLVM_PROFILE_FILE="${SYCL_COVERAGE_PATH}/${test_dirname}.profraw"
16-
env SYCL_CONFIG_FILE_NAME=null.cfg
17-
env SYCL_DEVICELIB_NO_FALLBACK=1
18-
env SYCL_CACHE_DIR="${CMAKE_BINARY_DIR}/sycl_cache"
19-
${CMAKE_CURRENT_BINARY_DIR}/${test_suite_name}
20-
)
17+
set(CXX_COMPILER clang++)
18+
if(MSVC)
19+
set(CXX_COMPILER clang-cl.exe)
20+
set(LIB_POSTFIX ".lib")
21+
else()
22+
set(LIB_PREFIX "-l")
23+
endif()
2124

22-
add_dependencies(check-sycl-unittests-libs check-sycl-${test_suite_name})
25+
set(DEVICE_COMPILER_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/${CXX_COMPILER})
26+
set(_OUTPUT_BIN ${CMAKE_CURRENT_BINARY_DIR}/${test_suite_name}Tests)
27+
set(_TESTS_TARGET ${test_suite_name}Tests)
28+
set(_BIN_TARGET ${_TESTS_TARGET}_bin)
29+
set(_TARGET_DEPENDENCIES
30+
"llvm_gtest_main;llvm_gtest;LLVMTestingSupport;LLVMSupport;LLVMDemangle")
31+
32+
foreach(_lib ${_TARGET_DEPENDENCIES})
33+
list(APPEND _LIBRARIES $<TARGET_FILE:${_lib}>)
34+
endforeach()
35+
36+
# Enable exception handling on Windows
37+
if(WIN32)
38+
list(APPEND _INTERNAL_EXTRA_FLAGS "/EHs")
39+
set(LIBRARIES_PREFIX ${CMAKE_BINARY_DIR}/lib/)
40+
list(APPEND _LIBRARIES $<TARGET_FILE:sycl>)
41+
endif()
42+
43+
if(UNIX)
44+
foreach(_lib "pthread;dl;ncurses")
45+
list(APPEND _LIBRARIES "-l${_lib}">)
46+
endforeach()
47+
endif()
2348

2449
if (SYCL_ENABLE_COVERAGE)
25-
list(APPEND sycl_extra_flags "-fprofile-instr-generate")
26-
list(APPEND sycl_extra_flags "-fcoverage-mapping")
50+
list(APPEND _INTERNAL_EXTRA_FLAGS "-fprofile-instr-generate")
51+
list(APPEND _INTERNAL_EXTRA_FLAGS "-fcoverage-mapping")
2752
endif()
28-
53+
2954
get_target_property(GTEST_INCLUDES llvm_gtest INCLUDE_DIRECTORIES)
3055
foreach(_dir ${GTEST_INCLUDES})
3156
# Avoid -I when _dir contains an empty generator expression.
3257
list(APPEND INCLUDE_COMPILER_STRING "$<$<BOOL:${_dir}>:-I${_dir}>")
3358
endforeach()
3459

35-
add_sycl_executable(
36-
# 'Tests' suffix needed by lit framework to detect the tests
37-
${test_suite_name}Tests
38-
OPTIONS
39-
${sycl_extra_flags}
60+
add_custom_target(${_BIN_TARGET}
61+
COMMAND ${DEVICE_COMPILER_EXECUTABLE} -fsycl ${ARG_SOURCES}
62+
-o ${_OUTPUT_BIN}
63+
${ARG_SYCL_EXTRA_FLAGS}
64+
${_INTERNAL_EXTRA_FLAGS}
4065
${INCLUDE_COMPILER_STRING}
41-
LIBRARIES
42-
llvm_gtest_main
43-
llvm_gtest
44-
LLVMSupport
45-
LLVMDemangle
46-
pthread
47-
dl
48-
ncurses
49-
SOURCES
50-
${ARGN}
51-
DEPENDANTS
52-
check-sycl-${test_suite_name}
53-
SYCLUnitTests)
66+
${_LIBRARIES}
67+
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${_TESTS_TARGET}
68+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
69+
COMMAND_EXPAND_LISTS)
5470

55-
endmacro()
71+
add_dependencies(${_BIN_TARGET} sycl)
72+
foreach(_lib ${ARG_LIBRARIES})
73+
add_dependencies(${_BIN_TARGET} ${_TARGET_DEPENDENCIES})
74+
endforeach()
75+
76+
add_dependencies(SYCLUnitTests ${_BIN_TARGET})
5677

78+
add_executable(${_TESTS_TARGET} IMPORTED GLOBAL)
79+
set_target_properties(${_TESTS_TARGET} PROPERTIES
80+
IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR})
81+
82+
# Check target (Unix Only)
83+
add_custom_target(check-sycl-${test_suite_name}
84+
${CMAKE_COMMAND} -E
85+
env LD_LIBRARY_PATH="${CMAKE_BINARY_DIR}/lib"
86+
env SYCL_CONFIG_FILE_NAME=null.cfg
87+
env SYCL_DEVICELIB_NO_FALLBACK=1
88+
env SYCL_CACHE_DIR="${CMAKE_BINARY_DIR}/sycl_cache"
89+
${CMAKE_CURRENT_BINARY_DIR}/${test_suite_name}
90+
)
91+
92+
add_dependencies(check-sycl-${test_suite_name} ${_BIN_TARGET})
93+
add_dependencies(check-sycl-unittests-libs check-sycl-${test_suite_name})
94+
95+
endmacro()

sycl/include/syclcompat/defs.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
template <class... Args> class sycl_compat_kernel_name;
3636
template <int Arg> class sycl_compat_kernel_scalar;
3737

38-
#define __sycl_compat_align__(n) __attribute__((aligned(n)))
38+
#define __sycl_compat_align__(n) alignas(n)
3939
#define __sycl_compat_inline__ __inline__ __attribute__((always_inline))
4040

4141
#define __sycl_compat_noinline__ __attribute__((noinline))

sycl/include/syclcompat/dims.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ class dim3 {
3232
public:
3333
const size_t x, y, z;
3434

35-
constexpr dim3(const sycl::range<3> &r) : x(r[2]), y(r[1]), z(r[0]) {}
35+
dim3(const sycl::range<3> &r) : x(r[2]), y(r[1]), z(r[0]) {}
3636

37-
constexpr dim3(const sycl::range<2> &r) : x(r[1]), y(r[0]), z(1) {}
37+
dim3(const sycl::range<2> &r) : x(r[1]), y(r[0]), z(1) {}
3838

39-
constexpr dim3(const sycl::range<1> &r) : x(r[0]), y(1), z(1) {}
39+
dim3(const sycl::range<1> &r) : x(r[0]), y(1), z(1) {}
4040

4141
constexpr dim3(size_t x, size_t y = 1, size_t z = 1) : x(x), y(y), z(z) {}
4242

sycl/unittests/syclcompat/CMakeLists.txt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,18 @@
1616

1717
set(SYCL_EXTRA_FLAGS "-fsycl-unnamed-lambda;-fsycl-device-code-split=per_kernel")
1818

19-
add_custom_target(check-sycl-syclcompat)
20-
add_dependencies(check-sycl-unittests check-sycl-syclcompat)
19+
# add_custom_target(check-sycl-syclcompat)
20+
# add_dependencies(check-sycl-unittests check-sycl-syclcompat)
2121

22-
add_sycl_library_unittest(syclcompat-base ${SYCL_EXTRA_FLAGS}
23-
Dim.cpp
24-
Defs.cpp)
22+
# add_sycl_library_unittest(syclcompat-base
23+
# SYCL_EXTRA_FLAGS
24+
# ${SYCL_EXTRA_FLAGS}
25+
# SOURCES
26+
# Dim.cpp
27+
# Defs.cpp)
28+
29+
# add_dependencies(check-sycl-syclcompat check-sycl-syclcompat-base)
2530

26-
add_dependencies(check-sycl-syclcompat check-sycl-syclcompat-base)
31+
add_sycl_unittest(syclcompat-baseTests OBJECT
32+
Dim.cpp
33+
Defs.cpp)

sycl/unittests/syclcompat/Defs.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
#include <syclcompat/defs.hpp>
2626

2727
TEST(DEFS, Align) {
28-
struct {
28+
struct __sycl_compat_align__(16) {
2929
int a;
3030
char c;
31-
} __sycl_compat_align__(16) s;
31+
} s;
3232
EXPECT_EQ(sizeof(s), 16);
3333
}

0 commit comments

Comments
 (0)