Skip to content

Commit 87171db

Browse files
committed
fix: Windows build
1 parent c1afcfd commit 87171db

File tree

2 files changed

+43
-45
lines changed

2 files changed

+43
-45
lines changed

llama/CMakeLists.txt

Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -48,61 +48,57 @@ else()
4848
set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
4949
endif()
5050

51-
if (NOT DEFINED NLC_SINGLE_LLAMA_CPP_TARGET)
52-
execute_process(COMMAND node -p "require('node-addon-api').include.slice(1,-1)"
53-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
54-
OUTPUT_VARIABLE NODE_ADDON_API_DIR
55-
OUTPUT_STRIP_TRAILING_WHITESPACE)
56-
include_directories(${NODE_ADDON_API_DIR} ${CMAKE_JS_INC})
57-
endif()
51+
execute_process(COMMAND node -p "require('node-addon-api').include.slice(1,-1)"
52+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
53+
OUTPUT_VARIABLE NODE_ADDON_API_DIR
54+
OUTPUT_STRIP_TRAILING_WHITESPACE)
55+
include_directories(${NODE_ADDON_API_DIR} ${CMAKE_JS_INC})
5856

5957
add_subdirectory("llama.cpp")
6058
include_directories("llama.cpp")
6159
include_directories("./llama.cpp/common")
6260

63-
if (NOT DEFINED NLC_SINGLE_LLAMA_CPP_TARGET)
64-
unset(GPU_INFO_HEADERS)
65-
unset(GPU_INFO_SOURCES)
66-
unset(GPU_INFO_EXTRA_LIBS)
67-
68-
if (GGML_VULKAN OR GGML_KOMPUTE)
69-
find_package(Vulkan)
70-
if (Vulkan_FOUND)
71-
if (GGML_VULKAN)
72-
message(STATUS "Using Vulkan for GPU info")
73-
elseif (GGML_KOMPUTE)
74-
message(STATUS "Using Vulkan for GPU info because Kompute is enabled")
75-
endif()
61+
unset(GPU_INFO_HEADERS)
62+
unset(GPU_INFO_SOURCES)
63+
unset(GPU_INFO_EXTRA_LIBS)
64+
65+
if (GGML_VULKAN OR GGML_KOMPUTE)
66+
find_package(Vulkan)
67+
if (Vulkan_FOUND)
68+
if (GGML_VULKAN)
69+
message(STATUS "Using Vulkan for GPU info")
70+
elseif (GGML_KOMPUTE)
71+
message(STATUS "Using Vulkan for GPU info because Kompute is enabled")
72+
endif()
7673

77-
list(APPEND GPU_INFO_HEADERS gpuInfo/vulkan-gpu-info.h)
78-
list(APPEND GPU_INFO_SOURCES gpuInfo/vulkan-gpu-info.cpp)
74+
list(APPEND GPU_INFO_HEADERS gpuInfo/vulkan-gpu-info.h)
75+
list(APPEND GPU_INFO_SOURCES gpuInfo/vulkan-gpu-info.cpp)
7976

80-
add_compile_definitions(GPU_INFO_USE_VULKAN)
77+
add_compile_definitions(GPU_INFO_USE_VULKAN)
8178

82-
list(APPEND GPU_INFO_EXTRA_LIBS Vulkan::Vulkan)
83-
else()
84-
message(FATAL_ERROR "Vulkan was not found")
85-
endif()
79+
list(APPEND GPU_INFO_EXTRA_LIBS Vulkan::Vulkan)
80+
else()
81+
message(FATAL_ERROR "Vulkan was not found")
8682
endif()
83+
endif()
8784

88-
list(REMOVE_DUPLICATES GPU_INFO_HEADERS)
89-
list(REMOVE_DUPLICATES GPU_INFO_SOURCES)
90-
list(REMOVE_DUPLICATES GPU_INFO_EXTRA_LIBS)
85+
list(REMOVE_DUPLICATES GPU_INFO_HEADERS)
86+
list(REMOVE_DUPLICATES GPU_INFO_SOURCES)
87+
list(REMOVE_DUPLICATES GPU_INFO_EXTRA_LIBS)
9188

92-
file(GLOB SOURCE_FILES "addon/*.cpp" "addon/**/*.cpp" ${GPU_INFO_SOURCES})
89+
file(GLOB SOURCE_FILES "addon/*.cpp" "addon/**/*.cpp" ${GPU_INFO_SOURCES})
9390

94-
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC} ${GPU_INFO_HEADERS})
95-
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
96-
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
97-
target_link_libraries(${PROJECT_NAME} "llama")
98-
target_link_libraries(${PROJECT_NAME} "common")
91+
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC} ${GPU_INFO_HEADERS})
92+
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
93+
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
94+
target_link_libraries(${PROJECT_NAME} "llama")
95+
target_link_libraries(${PROJECT_NAME} "common")
9996

100-
if (DEFINED GPU_INFO_EXTRA_LIBS)
101-
target_link_libraries(${PROJECT_NAME} ${GPU_INFO_EXTRA_LIBS})
102-
endif()
97+
if (DEFINED GPU_INFO_EXTRA_LIBS)
98+
target_link_libraries(${PROJECT_NAME} ${GPU_INFO_EXTRA_LIBS})
99+
endif()
103100

104-
if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
101+
if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
105102
# Generate node.lib
106103
execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS})
107-
endif()
108104
endif()

src/bindings/utils/compileLLamaCpp.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,16 +216,15 @@ export async function compileLlamaCpp(buildOptions: BuildOptions, compileOptions
216216
...(
217217
[
218218
...cmakeCustomOptions,
219-
[targetFlag, targetValue],
220-
["NLC_SINGLE_LLAMA_CPP_TARGET", "1"]
219+
[targetFlag, targetValue]
221220
].map(([key, value]) => "--CD" + key + "=" + value)
222221
)
223222
],
224223
__dirname,
225224
envVars,
226225
buildOptions.progressLogs
227226
);
228-
const targetCompileResultDir = await moveBuildFilesToResultDir(targetOutDir);
227+
const targetCompileResultDir = await moveBuildFilesToResultDir(targetOutDir, true);
229228
await mergeDirWithoutOverrides(targetCompileResultDir, compiledResultDirPath);
230229
}
231230
}
@@ -444,13 +443,16 @@ export async function getPrebuiltBinaryBuildMetadata(folderPath: string, folderN
444443
return buildMetadata;
445444
}
446445

447-
async function moveBuildFilesToResultDir(outDirectory: string) {
446+
async function moveBuildFilesToResultDir(outDirectory: string, canCreateReleaseDir: boolean = false) {
448447
const binFilesDirPaths = [
449448
path.join(outDirectory, "bin"),
450449
path.join(outDirectory, "llama.cpp", "bin")
451450
];
452451
const compiledResultDirPath = path.join(outDirectory, buildConfigType);
453452

453+
if (canCreateReleaseDir)
454+
await fs.ensureDir(compiledResultDirPath);
455+
454456
if (!await fs.pathExists(compiledResultDirPath))
455457
throw new Error(`Could not find ${buildConfigType} directory`);
456458

0 commit comments

Comments
 (0)