Skip to content

Commit fcb33b2

Browse files
authored
[SYCL] Use the system installed vc-intrinsics if available (#18206)
For all external dependencies, we should try using the system installed one first and only download the repo if we can't find it. Apply that for vc-intrinics first, I manually tested this with both static and shared library builds. --------- Signed-off-by: Sarnie, Nick <[email protected]>
1 parent cba5e07 commit fcb33b2

File tree

1 file changed

+39
-25
lines changed

1 file changed

+39
-25
lines changed

llvm/lib/SYCLLowerIR/CMakeLists.txt

+39-25
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,50 @@
11
# Lowering of SYCL ESIMD kernels depends on vc-intrinsics
22
# NOTE: could have been added earlier from llvm/projects
33
if (NOT TARGET LLVMGenXIntrinsics)
4-
if (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
5-
set(LLVMGenXIntrinsics_GIT_REPO https://github.com/intel/vc-intrinsics.git)
4+
if(NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR AND NOT LLVMGenXIntrinsics_INCLUDE_DIR)
5+
find_package(LLVMGenXIntrinsics QUIET)
6+
endif()
67

7-
# Date: Mar 7, 2025
8-
# Update Triple usage after 979c275097
9-
set(LLVMGenXIntrinsics_GIT_TAG 9e1935aedc2101deaab45b2f69f4b43ccf6f2b52)
8+
if (NOT LLVMGenXIntrinsics_FOUND)
9+
if (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
10+
find_path(LLVMGenXIntrinsics_INCLUDE_DIR GenXIntrinsics/include PATHS ${CMAKE_PREFIX_PATH})
1011

11-
message(STATUS "vc-intrinsics repo is missing. Will try to download it from ${LLVMGenXIntrinsics_GIT_REPO}")
12-
include(FetchContent)
13-
FetchContent_Declare(vc-intrinsics
14-
GIT_REPOSITORY ${LLVMGenXIntrinsics_GIT_REPO}
15-
GIT_TAG ${LLVMGenXIntrinsics_GIT_TAG}
16-
)
17-
FetchContent_MakeAvailable(vc-intrinsics)
18-
FetchContent_GetProperties(vc-intrinsics)
12+
if (NOT LLVMGenXIntrinsics_INCLUDE_DIR)
13+
set(LLVMGenXIntrinsics_GIT_REPO https://github.com/intel/vc-intrinsics.git)
1914

20-
set(LLVMGenXIntrinsics_SOURCE_DIR ${vc-intrinsics_SOURCE_DIR})
21-
set(LLVMGenXIntrinsics_BINARY_DIR ${vc-intrinsics_BINARY_DIR})
22-
else (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
23-
# -DLLVMGenXIntrinsics_SOURCE_DIR is provided
24-
message(STATUS "vc-intrinsics are added manually ${LLVMGenXIntrinsics_SOURCE_DIR}")
15+
# Date: Mar 7, 2025
16+
# Update Triple usage after 979c275097
17+
set(LLVMGenXIntrinsics_GIT_TAG 9e1935aedc2101deaab45b2f69f4b43ccf6f2b52)
2518

26-
set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build)
27-
add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR})
28-
endif (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
19+
message(STATUS "vc-intrinsics repo is missing. Will try to download it from ${LLVMGenXIntrinsics_GIT_REPO}")
20+
include(FetchContent)
21+
FetchContent_Declare(vc-intrinsics
22+
GIT_REPOSITORY ${LLVMGenXIntrinsics_GIT_REPO}
23+
GIT_TAG ${LLVMGenXIntrinsics_GIT_TAG}
24+
)
25+
FetchContent_MakeAvailable(vc-intrinsics)
26+
FetchContent_GetProperties(vc-intrinsics)
2927

30-
target_include_directories(LLVMGenXIntrinsics
31-
PUBLIC $<BUILD_INTERFACE:${LLVMGenXIntrinsics_SOURCE_DIR}/GenXIntrinsics/include>
32-
PUBLIC $<BUILD_INTERFACE:${LLVMGenXIntrinsics_BINARY_DIR}/GenXIntrinsics/include>
33-
)
28+
set(LLVMGenXIntrinsics_SOURCE_DIR ${vc-intrinsics_SOURCE_DIR})
29+
set(LLVMGenXIntrinsics_BINARY_DIR ${vc-intrinsics_BINARY_DIR})
30+
else()
31+
message(STATUS "vc-intrinsics found in system at ${LLVMGenXIntrinsics_INCLUDE_DIR}")
32+
set(LLVMGenXIntrinsics_SOURCE_DIR ${LLVMGenXIntrinsics_INCLUDE_DIR}/..)
33+
set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build)
34+
add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR})
35+
endif()
36+
else (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
37+
# -DLLVMGenXIntrinsics_SOURCE_DIR is provided
38+
message(STATUS "vc-intrinsics are added manually ${LLVMGenXIntrinsics_SOURCE_DIR}")
39+
40+
set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build)
41+
add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR})
42+
endif (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR)
43+
target_include_directories(LLVMGenXIntrinsics
44+
PUBLIC $<BUILD_INTERFACE:${LLVMGenXIntrinsics_SOURCE_DIR}/GenXIntrinsics/include>
45+
PUBLIC $<BUILD_INTERFACE:${LLVMGenXIntrinsics_BINARY_DIR}/GenXIntrinsics/include>
46+
)
47+
endif()
3448
endif (NOT TARGET LLVMGenXIntrinsics)
3549

3650
set_property(GLOBAL PROPERTY LLVMGenXIntrinsics_SOURCE_PROP ${LLVMGenXIntrinsics_SOURCE_DIR})

0 commit comments

Comments
 (0)