|
1 | 1 | cmake_minimum_required(VERSION 3.10) |
2 | 2 | project(addon.node) |
3 | 3 |
|
4 | | -set(TARGET addon.node) |
| 4 | +set(TARGET addon) |
5 | 5 |
|
6 | 6 | # Set include paths to main whisper.cpp cmake directory |
7 | 7 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake") |
@@ -34,17 +34,59 @@ string(REPLACE "\"" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR}) |
34 | 34 | target_include_directories(${TARGET} PRIVATE ${NODE_ADDON_API_DIR}) |
35 | 35 | #================================================================== |
36 | 36 |
|
| 37 | +# Determine build directory (check both build and build-openvino) |
| 38 | +set(WHISPER_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../build") |
| 39 | +if(NOT EXISTS "${WHISPER_BUILD_DIR}/src/libwhisper.a") |
| 40 | + set(WHISPER_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino") |
| 41 | +endif() |
| 42 | + |
| 43 | +message(STATUS "Using build directory: ${WHISPER_BUILD_DIR}") |
| 44 | + |
| 45 | +# Debug: List available library files |
| 46 | +file(GLOB_RECURSE ALL_LIBS "${WHISPER_BUILD_DIR}/*.a") |
| 47 | +message(STATUS "Found library files:") |
| 48 | +foreach(lib ${ALL_LIBS}) |
| 49 | + message(STATUS " ${lib}") |
| 50 | +endforeach() |
| 51 | + |
37 | 52 | # Link against the built libraries from main build |
38 | | -link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/src") |
39 | | -link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/ggml/src") |
40 | | -link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/examples") |
| 53 | +link_directories("${WHISPER_BUILD_DIR}/src") |
| 54 | +link_directories("${WHISPER_BUILD_DIR}/ggml/src") |
| 55 | +link_directories("${WHISPER_BUILD_DIR}/examples") |
| 56 | + |
| 57 | +# Core libraries in correct linking order |
| 58 | +set(WHISPER_LIBS |
| 59 | + "${WHISPER_BUILD_DIR}/examples/libcommon.a" |
| 60 | + "${WHISPER_BUILD_DIR}/src/libwhisper.a" |
| 61 | + "${WHISPER_BUILD_DIR}/ggml/src/libggml.a" |
| 62 | +) |
| 63 | + |
| 64 | +# Add ggml CPU backend libraries |
| 65 | +if(EXISTS "${WHISPER_BUILD_DIR}/ggml/src/libggml-cpu.a") |
| 66 | + list(APPEND WHISPER_LIBS "${WHISPER_BUILD_DIR}/ggml/src/libggml-cpu.a") |
| 67 | +endif() |
| 68 | + |
| 69 | +# Add ggml base library |
| 70 | +if(EXISTS "${WHISPER_BUILD_DIR}/ggml/src/libggml-base.a") |
| 71 | + list(APPEND WHISPER_LIBS "${WHISPER_BUILD_DIR}/ggml/src/libggml-base.a") |
| 72 | +endif() |
| 73 | + |
| 74 | +# Check if this is an OpenVINO build |
| 75 | +if(WHISPER_OPENVINO) |
| 76 | + message(STATUS "Building addon with OpenVINO support") |
| 77 | +endif() |
41 | 78 |
|
42 | 79 | target_link_libraries(${TARGET} ${CMAKE_JS_LIB} |
43 | | - "${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/src/libwhisper.a" |
44 | | - "${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/ggml/src/libggml.a" |
45 | | - "${CMAKE_CURRENT_SOURCE_DIR}/../../build-openvino/examples/libcommon.a" |
| 80 | + ${WHISPER_LIBS} |
46 | 81 | ${CMAKE_THREAD_LIBS_INIT}) |
47 | 82 |
|
| 83 | +# Link OpenVINO runtime if building with OpenVINO support |
| 84 | +if(WHISPER_OPENVINO) |
| 85 | + find_package(OpenVINO REQUIRED) |
| 86 | + target_link_libraries(${TARGET} openvino::runtime) |
| 87 | + message(STATUS "Linking addon with OpenVINO runtime") |
| 88 | +endif() |
| 89 | + |
48 | 90 | if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET) |
49 | 91 | # Generate node.lib |
50 | 92 | execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS}) |
|
0 commit comments