Skip to content

Commit 46b4c8d

Browse files
committed
fix: improve host compiler detection in vulkan shader build
Improve host compiler detection for vulkan shader generation: - Add NO_CMAKE_FIND_ROOT_PATH to all compiler searches - Consolidate compiler detection logic - Fix Windows-specific MSVC detection - Ensure correct compiler search in cross-compilation
1 parent 481d57f commit 46b4c8d

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

ggml/src/ggml-vulkan/CMakeLists.txt

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,28 @@ cmake_policy(SET CMP0114 NEW)
44
find_package(Vulkan COMPONENTS glslc REQUIRED)
55

66
function(detect_host_compiler)
7+
find_program(GNU_C_COMPILER gcc NO_CMAKE_FIND_ROOT_PATH)
8+
find_program(GNU_CXX_COMPILER g++ NO_CMAKE_FIND_ROOT_PATH)
9+
find_program(CLANG_C_COMPILER clang NO_CMAKE_FIND_ROOT_PATH)
10+
find_program(CLANG_CXX_COMPILER clang++ NO_CMAKE_FIND_ROOT_PATH)
11+
712
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
8-
find_program(MSVC_COMPILER cl)
9-
find_program(GNU_C_COMPILER gcc)
10-
find_program(GNU_CXX_COMPILER g++)
13+
find_program(MSVC_COMPILER cl NO_CMAKE_FIND_ROOT_PATH)
1114
if (MSVC_COMPILER)
1215
set(HOST_C_COMPILER "${MSVC_COMPILER}" PARENT_SCOPE)
1316
set(HOST_CXX_COMPILER "${MSVC_COMPILER}" PARENT_SCOPE)
14-
elseif (CLANG_C_COMPILER AND CLANG_CXX_COMPILER)
15-
set(HOST_C_COMPILER "${CLANG_C_COMPILER}" PARENT_SCOPE)
16-
set(HOST_CXX_COMPILER "${CLANG_CXX_COMPILER}" PARENT_SCOPE)
17-
else()
18-
message(WARNING "Neither MSVC nor clang found")
17+
return()
1918
endif()
19+
endif()
20+
21+
if (GNU_C_COMPILER AND GNU_CXX_COMPILER)
22+
set(HOST_C_COMPILER "${GNU_C_COMPILER}" PARENT_SCOPE)
23+
set(HOST_CXX_COMPILER "${GNU_CXX_COMPILER}" PARENT_SCOPE)
24+
elseif (CLANG_C_COMPILER AND CLANG_CXX_COMPILER)
25+
set(HOST_C_COMPILER "${CLANG_C_COMPILER}" PARENT_SCOPE)
26+
set(HOST_CXX_COMPILER "${CLANG_CXX_COMPILER}" PARENT_SCOPE)
2027
else()
21-
find_program(CLANG_C_COMPILER clang)
22-
find_program(CLANG_CXX_COMPILER clang++)
23-
find_program(GNU_C_COMPILER gcc)
24-
find_program(GNU_CXX_COMPILER g++)
25-
if (GNU_C_COMPILER AND GNU_CXX_COMPILER)
26-
set(HOST_C_COMPILER "${GNU_C_COMPILER}" PARENT_SCOPE)
27-
set(HOST_CXX_COMPILER "${GNU_CXX_COMPILER}" PARENT_SCOPE)
28-
elseif (CLANG_C_COMPILER AND CLANG_CXX_COMPILER)
29-
set(HOST_C_COMPILER "${CLANG_C_COMPILER}" PARENT_SCOPE)
30-
set(HOST_CXX_COMPILER "${CLANG_CXX_COMPILER}" PARENT_SCOPE)
31-
else()
32-
message(WARNING "Neither clang nor gcc found")
33-
endif()
28+
message(WARNING "No suitable host compiler found")
3429
endif()
3530
endfunction()
3631

0 commit comments

Comments
 (0)