Skip to content

Commit c3a77fb

Browse files
Support DPCTL_WITH_REDIST for pybind11 modules in dpctl/utils
Deduplicated common steps among two pybind11 extensions in this dpctl.utils Fixed typo CUMAKE_CURRENT_SOURCE_DIR -> CMAKE_CURRENT_SOURCE_DIR
1 parent 55316eb commit c3a77fb

File tree

1 file changed

+49
-49
lines changed

1 file changed

+49
-49
lines changed

dpctl/utils/CMakeLists.txt

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,68 +5,68 @@ foreach(_cy_file ${_cython_sources})
55
build_dpctl_ext(${_trgt} ${_cy_file} "dpctl/utils")
66
endforeach()
77

8+
set(_pybind11_targets)
9+
810
set(python_module_name _device_queries)
911
set(_module_src ${CMAKE_CURRENT_SOURCE_DIR}/src/device_queries.cpp)
1012
pybind11_add_module(${python_module_name} MODULE
1113
${_module_src}
1214
)
1315
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})
14-
if(DPCTL_GENERATE_COVERAGE)
15-
if(DPCTL_GENERATE_COVERAGE_FOR_PYBIND11_EXTENSIONS)
16-
target_compile_options(${python_module_name}
17-
PRIVATE -fprofile-instr-generate -fcoverage-mapping
18-
)
19-
endif()
20-
target_link_options(${python_module_name}
21-
PRIVATE -fprofile-instr-generate -fcoverage-mapping
22-
)
23-
endif()
24-
if(_dpctl_sycl_targets)
25-
# make fat binary
26-
target_compile_options(
27-
${python_module_name}
28-
PRIVATE
29-
-fsycl-targets=${_dpctl_sycl_targets}
30-
)
31-
target_link_options(
32-
${python_module_name}
33-
PRIVATE
34-
-fsycl-targets=${_dpctl_sycl_targets}
35-
)
36-
endif()
37-
target_link_libraries(${python_module_name} PRIVATE DpctlCAPI)
38-
install(TARGETS ${python_module_name} DESTINATION "dpctl/utils")
16+
list(APPEND _pybind11_targets ${python_module_name})
3917

4018

4119
set(python_module_name _seq_order_keeper)
4220
set(_module_src ${CMAKE_CURRENT_SOURCE_DIR}/src/order_keeper.cpp)
4321
pybind11_add_module(${python_module_name} MODULE
4422
${_module_src}
4523
)
46-
target_include_directories(${python_module_name} PRIVATE ${CUMAKE_CURRENT_SOURCE_DIR}/src)
24+
target_include_directories(${python_module_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
4725
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_module_src})
48-
if(DPCTL_GENERATE_COVERAGE)
49-
if(DPCTL_GENERATE_COVERAGE_FOR_PYBIND11_EXTENSIONS)
50-
target_compile_options(${python_module_name}
51-
PRIVATE -fprofile-instr-generate -fcoverage-mapping
52-
)
53-
endif()
54-
target_link_options(${python_module_name}
55-
PRIVATE -fprofile-instr-generate -fcoverage-mapping
56-
)
57-
endif()
58-
if(_dpctl_sycl_targets)
59-
# make fat binary
60-
target_compile_options(
61-
${python_module_name}
62-
PRIVATE
63-
-fsycl-targets=${_dpctl_sycl_targets}
64-
)
65-
target_link_options(
66-
${python_module_name}
26+
list(APPEND _pybind11_targets ${python_module_name})
27+
28+
set(_linker_options "LINKER:${DPCTL_LDFLAGS}")
29+
foreach(python_module_name ${_pybind11_targets})
30+
target_compile_options(${python_module_name} PRIVATE -fno-sycl-id-queries-fit-in-int)
31+
target_link_options(${python_module_name} PRIVATE -fsycl-device-code-split=per_kernel)
32+
target_include_directories(${python_module_name}
6733
PRIVATE
68-
-fsycl-targets=${_dpctl_sycl_targets}
34+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/include
35+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/
6936
)
70-
endif()
71-
target_link_libraries(${python_module_name} PRIVATE DpctlCAPI)
72-
install(TARGETS ${python_module_name} DESTINATION "dpctl/utils")
37+
target_link_options(${python_module_name} PRIVATE ${_linker_options})
38+
if(DPCTL_GENERATE_COVERAGE)
39+
if(DPCTL_GENERATE_COVERAGE_FOR_PYBIND11_EXTENSIONS)
40+
target_compile_options(${python_module_name}
41+
PRIVATE -fprofile-instr-generate -fcoverage-mapping
42+
)
43+
endif()
44+
target_link_options(${python_module_name}
45+
PRIVATE -fprofile-instr-generate -fcoverage-mapping
46+
)
47+
endif()
48+
if(_dpctl_sycl_targets)
49+
# make fat binary
50+
target_compile_options(
51+
${python_module_name}
52+
PRIVATE
53+
-fsycl-targets=${_dpctl_sycl_targets}
54+
)
55+
target_link_options(
56+
${python_module_name}
57+
PRIVATE
58+
-fsycl-targets=${_dpctl_sycl_targets}
59+
)
60+
endif()
61+
# TODO: update source so they refernece individual libraries instead of
62+
# dpctl4pybind11.hpp. It will allow to simplify dependency tree
63+
target_link_libraries(${python_module_name} PRIVATE DpctlCAPI)
64+
if (DPCTL_WITH_REDIST)
65+
set_target_properties(
66+
${python_module_name}
67+
PROPERTIES
68+
INSTALL_RPATH "$ORIGIN/../../../.."
69+
)
70+
endif()
71+
install(TARGETS ${python_module_name} DESTINATION "dpctl/utils")
72+
endforeach()

0 commit comments

Comments
 (0)