Skip to content

Commit 7ea23e5

Browse files
Improvements to logic for working with custom DPC++ toolchain (#481)
Renamed DPCTL_CSTOME_DPCPP_INSATLL_DIR to DPCTL_DPCPP_HOME_DIR, and added DPCTL_DPCPP_FROM_ONEAPI and improved their CMake description strings. We now always pass DPCTL_DPCPP_HOME_DIR to cmake when building backend. We rely on user supplied `DPCTL_DPCPP_FROM_ONEAPI` to either require minimum version of 2021.2.0, or not. The logic for querying compiler for the version got simplified. We always execute ``clang++ --version``
1 parent 48794f7 commit 7ea23e5

File tree

3 files changed

+24
-25
lines changed

3 files changed

+24
-25
lines changed

dpctl-capi/CMakeLists.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ project(
99
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
1010
find_package(Git REQUIRED)
1111

12-
option(DPCTL_CUSTOM_DPCPP_INSTALL_DIR
13-
"Use a custom version of DPCPP installed at the provided location."
12+
option(DPCTL_DPCPP_HOME_DIR
13+
"The installation home for the DPC++ toolchain compiler."
1414
OFF
1515
)
16+
option(DPCTL_DPCPP_FROM_ONEAPI
17+
"Indicates whether DPCTL_DPCPP_HOME_DIR points to a oneAPI installation."
18+
ON
19+
)
1620
# Option to turn on support for creating Level Zero interoperability programs
1721
# from a SPIR-V binary file.
1822
option(DPCTL_ENABLE_LO_PROGRAM_CREATION
@@ -36,10 +40,10 @@ option(DPCTL_BUILD_CAPI_TESTS
3640
)
3741

3842
# Minimum version requirement only when oneAPI dpcpp is used.
39-
if(DPCTL_CUSTOM_DPCPP_INSTALL_DIR)
40-
find_package(IntelSycl REQUIRED)
41-
else()
43+
if(DPCTL_DPCPP_FROM_ONEAPI)
4244
find_package(IntelSycl 2021.2.0 REQUIRED)
45+
else()
46+
find_package(IntelSycl REQUIRED)
4347
endif()
4448

4549
if(DPCTL_ENABLE_LO_PROGRAM_CREATION)

dpctl-capi/cmake/modules/FindIntelSycl.cmake

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,9 @@ include(FindPackageHandleStandardArgs)
3636

3737
# Check if a specific DPC++ installation directory was provided then set
3838
# IntelSycl_ROOT to that path.
39-
if(DPCTL_CUSTOM_DPCPP_INSTALL_DIR)
40-
set(IntelSycl_ROOT ${DPCTL_CUSTOM_DPCPP_INSTALL_DIR})
41-
set(USING_ONEAPI_DPCPP False)
42-
message(STATUS "Not using oneAPI, but IntelSycl at " ${IntelSycl_ROOT})
39+
if(DPCTL_DPCPP_HOME_DIR)
40+
set(IntelSycl_ROOT ${DPCTL_DPCPP_HOME_DIR})
41+
message(STATUS "Not using standard oneAPI installation, but IntelSycl at " ${IntelSycl_ROOT})
4342
# If DPC++ installation was not specified, check for ONEAPI_ROOT
4443
elseif(DEFINED ENV{ONEAPI_ROOT})
4544
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
@@ -49,38 +48,31 @@ elseif(DEFINED ENV{ONEAPI_ROOT})
4948
else()
5049
message(FATAL_ERROR "Unsupported system.")
5150
endif()
52-
set(USING_ONEAPI_DPCPP True)
5351
else()
5452
message(FATAL_ERROR,
5553
"Could not locate a DPC++ installation. Either pass the path to a "
56-
"custom location using CUSTOM_IntelSycl_INSTALL_DIR or set the "
54+
"custom location using DPCTL_DPCPP_HOME_DIR or set the "
5755
" ONEAPI_ROOT environment variable."
5856
)
5957
return()
6058
endif()
6159

6260
# We will extract the version information from the compiler
63-
if(USING_ONEAPI_DPCPP)
64-
set(dpcpp_cmd "${IntelSycl_ROOT}/bin/dpcpp")
65-
set(dpcpp_arg "--version")
66-
else()
67-
set(dpcpp_cmd "${IntelSycl_ROOT}/bin/clang++")
68-
set(dpcpp_arg "--version")
69-
endif()
61+
set(clangxx_cmd "${IntelSycl_ROOT}/bin/clang++")
62+
set(clangxx_arg "--version")
7063

7164
# Check if dpcpp is available
7265
execute_process(
73-
COMMAND ${dpcpp_cmd} ${dpcpp_arg}
66+
COMMAND ${clangxx_cmd} ${clangxx_arg}
7467
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
75-
RESULT_VARIABLE dpcpp_result
76-
OUTPUT_VARIABLE dpcpp_ver
68+
RESULT_VARIABLE clangxx_result
69+
OUTPUT_VARIABLE clangxx_ver
7770
)
7871

7972
# If dpcpp is found then set the package variables
80-
if(${dpcpp_result} MATCHES "0")
81-
string(REPLACE "\n" ";" IntelSycl_VERSION_LIST "${dpcpp_ver}")
73+
if(${clangxx_result} MATCHES "0")
74+
string(REPLACE "\n" ";" IntelSycl_VERSION_LIST "${clangxx_ver}")
8275
set(IDX 0)
83-
list(GET IntelSycl_VERSION_LIST 0 dpcpp_ver_line)
8476
foreach(X ${IntelSycl_VERSION_LIST})
8577
message(STATUS "dpcpp ver[${IDX}]: ${X}")
8678
MATH(EXPR IDX "${IDX}+1")

scripts/build_backend.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,17 @@ def build_backend(
8181
if IS_LIN:
8282
if os.path.exists(os.path.join(DPCPP_ROOT, "bin", "dpcpp")):
8383
cmake_compiler_args = [
84+
"-DDPCTL_DPCPP_HOME_DIR=" + DPCPP_ROOT,
85+
"-DDPCTL_DPCPP_FROM_ONEAPI=ON",
8486
"-DCMAKE_C_COMPILER:PATH="
8587
+ os.path.join(DPCPP_ROOT, "bin", "clang"),
8688
"-DCMAKE_CXX_COMPILER:PATH="
8789
+ os.path.join(DPCPP_ROOT, "bin", "dpcpp"),
8890
]
8991
else:
9092
cmake_compiler_args = [
91-
"-DDPCTL_CUSTOM_DPCPP_INSTALL_DIR=" + DPCPP_ROOT,
93+
"-DDPCTL_DPCPP_HOME_DIR=" + DPCPP_ROOT,
94+
"-DDPCTL_DPCPP_FROM_ONEAPI=OFF",
9295
"-DCMAKE_C_COMPILER:PATH="
9396
+ os.path.join(DPCPP_ROOT, "bin", "clang"),
9497
"-DCMAKE_CXX_COMPILER:PATH="

0 commit comments

Comments
 (0)