Skip to content

Commit 89d6442

Browse files
committed
fix: Windows cmake build
1 parent 9d859eb commit 89d6442

File tree

5 files changed

+42
-30
lines changed

5 files changed

+42
-30
lines changed

llama/cmake/win32.ensureNinjaPath.cmake

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ function(ensureNinjaPath)
22
if ((NOT DEFINED CMAKE_MAKE_PROGRAM OR NOT EXISTS "${CMAKE_MAKE_PROGRAM}" OR NOT CMAKE_MAKE_PROGRAM) AND (CMAKE_GENERATOR STREQUAL "Ninja" OR CMAKE_GENERATOR STREQUAL "Ninja Multi-Config"))
33
find_program(NINJA_EXECUTABLE ninja)
44

5-
set(CMAKE_MAKE_PROGRAM "")
5+
set(CMAKE_MAKE_PROGRAM "" PARENT_SCOPE)
66

77
if(NINJA_EXECUTABLE AND EXISTS "${NINJA_EXECUTABLE}")
8-
set(CMAKE_MAKE_PROGRAM "${NINJA_EXECUTABLE}")
8+
set(CMAKE_MAKE_PROGRAM "${NINJA_EXECUTABLE}" PARENT_SCOPE)
99
endif()
1010

1111
if (NOT CMAKE_MAKE_PROGRAM OR NOT EXISTS "${CMAKE_MAKE_PROGRAM}")
@@ -16,9 +16,10 @@ function(ensureNinjaPath)
1616
file(GLOB_RECURSE FOUND_NINJA_EXE "${PROGRAMDATA_PATH}/chocolatey/bin/ninja.exe")
1717

1818
if(FOUND_NINJA_EXE)
19-
list(GET FOUND_NINJA_EXE 0 CMAKE_MAKE_PROGRAM)
19+
list(GET FOUND_NINJA_EXE 0 FOUND_CMAKE_MAKE_PROGRAM)
20+
list(CMAKE_MAKE_PROGRAM "${FOUND_CMAKE_MAKE_PROGRAM}" PARENT_SCOPE)
2021
endif()
21-
else()
22+
endif()
2223
endif()
2324

2425
if (NOT CMAKE_MAKE_PROGRAM OR NOT EXISTS "${CMAKE_MAKE_PROGRAM}")
@@ -29,9 +30,10 @@ function(ensureNinjaPath)
2930
file(GLOB_RECURSE FOUND_NINJA_EXE "${LOCALAPPDATA_PATH}/Microsoft/WinGet/Packages/Ninja-build.Ninja_Microsoft.Winget.*/ninja.exe")
3031

3132
if(FOUND_NINJA_EXE)
32-
list(GET FOUND_NINJA_EXE 0 CMAKE_MAKE_PROGRAM)
33+
list(GET FOUND_NINJA_EXE 0 FOUND_CMAKE_MAKE_PROGRAM)
34+
list(CMAKE_MAKE_PROGRAM "${FOUND_CMAKE_MAKE_PROGRAM}" PARENT_SCOPE)
3335
endif()
34-
else()
36+
endif()
3537
endif()
3638

3739
if (NOT CMAKE_MAKE_PROGRAM OR NOT EXISTS "${CMAKE_MAKE_PROGRAM}")
@@ -41,7 +43,8 @@ function(ensureNinjaPath)
4143
"${PATH}/Microsoft Visual Studio/**/*/CMake/Ninja/ninja.exe")
4244

4345
if(FOUND_NINJA_EXE)
44-
list(GET FOUND_NINJA_EXE 0 CMAKE_MAKE_PROGRAM)
46+
list(GET FOUND_NINJA_EXE 0 FOUND_CMAKE_MAKE_PROGRAM)
47+
list(CMAKE_MAKE_PROGRAM "${FOUND_CMAKE_MAKE_PROGRAM}" PARENT_SCOPE)
4548
break()
4649
endif()
4750
endforeach()
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
function(llvmApplyGnuModeAdaptations)
22
# adapt cmake-js to work with llvm in GNU mode
33
if (NOT CMAKE_SHARED_LINKER_FLAGS MATCHES "-Xlinker /DELAYLOAD:NODE.EXE")
4-
string(REPLACE "/DELAYLOAD:NODE.EXE" "-Xlinker /DELAYLOAD:NODE.EXE -Xlinker /defaultlib:delayimp"
5-
CMAKE_SHARED_LINKER_FLAGS
6-
"${CMAKE_SHARED_LINKER_FLAGS}")
4+
string(REPLACE "/DELAYLOAD:NODE.EXE" "-Xlinker /DELAYLOAD:NODE.EXE -Xlinker /defaultlib:delayimp"
5+
UPDATED_CMAKE_SHARED_LINKER_FLAGS
6+
"${CMAKE_SHARED_LINKER_FLAGS}")
7+
set(CMAKE_SHARED_LINKER_FLAGS "${UPDATED_CMAKE_SHARED_LINKER_FLAGS}" PARENT_SCOPE)
78
endif()
89

9-
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
10-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Xclang --dependent-lib=msvcrt")
11-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Xclang --dependent-lib=msvcrt")
10+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON PARENT_SCOPE)
11+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Xclang --dependent-lib=msvcrt" PARENT_SCOPE)
12+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Xclang --dependent-lib=msvcrt" PARENT_SCOPE)
1213
endfunction()

llama/cmake/win32.llvmEnsureCmakeAr.cmake

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ function(llvmEnsureCmakeAr CURRENT_ARCH)
1111
foreach(PATH IN LISTS PROGRAMFILES_PATHS)
1212
list(APPEND LLVM_INSTALL_PATHS "${PATH}/LLVM")
1313

14-
file(GLOB_RECURSE FOUND_LLVM_ROOT
15-
"${PATH}/Microsoft Visual Studio/*/VC/Tools/Llvm/${CURRENT_ARCH}"
16-
"${PATH}/Microsoft Visual Studio/**/*/VC/Tools/Llvm/${CURRENT_ARCH}")
14+
file(GLOB_RECURSE FOUND_LLVM_ROOT LIST_DIRECTORIES true
15+
"${PATH}/Microsoft Visual Studio/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}"
16+
"${PATH}/Microsoft Visual Studio/**/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}")
17+
list(FILTER FOUND_LLVM_ROOT INCLUDE REGEX "VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}$")
1718

1819
if(FOUND_LLVM_ROOT)
1920
list(APPEND LLVM_INSTALL_PATHS ${FOUND_LLVM_ROOT})
@@ -24,9 +25,11 @@ function(llvmEnsureCmakeAr CURRENT_ARCH)
2425
list(INSERT LLVM_INSTALL_PATHS 0 "${LLVM_ROOT}")
2526
endif()
2627

28+
list(REMOVE_DUPLICATES LLVM_INSTALL_PATHS)
29+
2730
foreach(PATH IN LISTS LLVM_INSTALL_PATHS)
2831
if(EXISTS "${PATH}/bin/llvm-ar.exe" AND EXISTS "${PATH}/bin/llvm-ar.exe")
29-
set(CMAKE_AR "${PATH}/bin/llvm-ar.exe")
32+
set(CMAKE_AR "${PATH}/bin/llvm-ar.exe" PARENT_SCOPE)
3033
break()
3134
endif()
3235
endforeach()

llama/cmake/win32.llvmUseGnuModeCompilers.cmake

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
function(llvmUseGnuModeCompilers CURRENT_ARCH)
22
set(LLVM_INSTALLATION_URL "https://github.com/llvm/llvm-project/releases/tag/llvmorg-19.1.5")
33

4-
set(CMAKE_C_COMPILER clang)
5-
set(CMAKE_CXX_COMPILER clang++)
6-
set(CMAKE_RC_COMPILER llvm-rc)
4+
set(CMAKE_C_COMPILER clang PARENT_SCOPE)
5+
set(CMAKE_CXX_COMPILER clang++ PARENT_SCOPE)
6+
set(CMAKE_RC_COMPILER llvm-rc PARENT_SCOPE)
77

88

99
set (LLVM_DIR_ARCH_NAME "")
@@ -17,9 +17,10 @@ function(llvmUseGnuModeCompilers CURRENT_ARCH)
1717
foreach(PATH IN LISTS PROGRAMFILES_PATHS)
1818
list(APPEND LLVM_INSTALL_PATHS "${PATH}/LLVM")
1919

20-
file(GLOB_RECURSE FOUND_LLVM_ROOT
20+
file(GLOB_RECURSE FOUND_LLVM_ROOT LIST_DIRECTORIES true
2121
"${PATH}/Microsoft Visual Studio/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}"
2222
"${PATH}/Microsoft Visual Studio/**/*/VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}")
23+
list(FILTER FOUND_LLVM_ROOT INCLUDE REGEX "VC/Tools/Llvm/${LLVM_DIR_ARCH_NAME}$")
2324

2425
if(FOUND_LLVM_ROOT)
2526
list(APPEND LLVM_INSTALL_PATHS ${FOUND_LLVM_ROOT})
@@ -30,10 +31,12 @@ function(llvmUseGnuModeCompilers CURRENT_ARCH)
3031
list(INSERT LLVM_INSTALL_PATHS 0 "${LLVM_ROOT}")
3132
endif()
3233

33-
set(LLVM_ROOT "")
34+
list(REMOVE_DUPLICATES LLVM_INSTALL_PATHS)
35+
36+
set(LLVM_ROOT "" PARENT_SCOPE)
3437
foreach(PATH IN LISTS LLVM_INSTALL_PATHS)
3538
if(EXISTS "${PATH}/bin/clang.exe" AND EXISTS "${PATH}/bin/clang++.exe" AND EXISTS "${PATH}/bin/llvm-rc.exe")
36-
set(LLVM_ROOT "${PATH}")
39+
set(LLVM_ROOT "${PATH}" PARENT_SCOPE)
3740
break()
3841
endif()
3942
endforeach()
@@ -47,9 +50,9 @@ function(llvmUseGnuModeCompilers CURRENT_ARCH)
4750
endif()
4851

4952
if (NOT EXISTS "${CMAKE_C_COMPILER}" OR NOT EXISTS "${CMAKE_CXX_COMPILER}" OR NOT EXISTS "${CMAKE_RC_COMPILER}")
50-
set(CMAKE_C_COMPILER "${LLVM_ROOT}/bin/clang.exe")
51-
set(CMAKE_CXX_COMPILER "${LLVM_ROOT}/bin/clang++.exe")
52-
set(CMAKE_RC_COMPILER "${LLVM_ROOT}/bin/llvm-rc.exe")
53+
set(CMAKE_C_COMPILER "${LLVM_ROOT}/bin/clang.exe" PARENT_SCOPE)
54+
set(CMAKE_CXX_COMPILER "${LLVM_ROOT}/bin/clang++.exe" PARENT_SCOPE)
55+
set(CMAKE_RC_COMPILER "${LLVM_ROOT}/bin/llvm-rc.exe" PARENT_SCOPE)
5356
endif()
5457

5558
if (NOT EXISTS "${CMAKE_C_COMPILER}")

llama/cmake/win32.programFilesPaths.cmake

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,24 @@ function(setProgramFilesPaths CURRENT_ARCH)
88
set(PROGRAMFILES_ARM64 "$ENV{ProgramFiles\(Arm\)}")
99
file(TO_CMAKE_PATH "${PROGRAMFILES_ARM64}" PROGRAMFILES_ARM64)
1010

11-
set(PROGRAMFILES_PATHS
11+
set(PROGRAMFILES_PATHS_LIST
1212
"${PROGRAMFILES_ARM64}"
1313
"${PROGRAMFILES}"
1414
"${PROGRAMFILES_X86}"
1515
"C:/Program Files (Arm)"
1616
"C:/Program Files"
1717
"C:/Program Files (x86)"
18-
PARENT_SCOPE
1918
)
19+
list(REMOVE_DUPLICATES PROGRAMFILES_PATHS_LIST)
20+
set(PROGRAMFILES_PATHS ${PROGRAMFILES_PATHS_LIST} PARENT_SCOPE)
2021
else()
21-
set(PROGRAMFILES_PATHS
22+
set(PROGRAMFILES_PATHS_LIST
2223
"${PROGRAMFILES}"
2324
"${PROGRAMFILES_X86}"
2425
"C:/Program Files"
2526
"C:/Program Files (x86)"
26-
PARENT_SCOPE
2727
)
28+
list(REMOVE_DUPLICATES PROGRAMFILES_PATHS_LIST)
29+
set(PROGRAMFILES_PATHS ${PROGRAMFILES_PATHS_LIST} PARENT_SCOPE)
2830
endif()
2931
endfunction()

0 commit comments

Comments
 (0)