From becc592cc06db2f78ec4f91f716fc8b8c9276b6a Mon Sep 17 00:00:00 2001 From: Te993 <3923106166@qq.com> Date: Tue, 10 Dec 2024 13:47:46 +0800 Subject: [PATCH 1/3] fix build error issue --- examples/nexa-omni-audio/CMakeLists.txt | 83 +++++++++++-------------- 1 file changed, 35 insertions(+), 48 deletions(-) diff --git a/examples/nexa-omni-audio/CMakeLists.txt b/examples/nexa-omni-audio/CMakeLists.txt index a99a02bd09bf5..5c19c0cf7c182 100644 --- a/examples/nexa-omni-audio/CMakeLists.txt +++ b/examples/nexa-omni-audio/CMakeLists.txt @@ -1,24 +1,14 @@ -# whisper - # Find the Threads package find_package(Threads REQUIRED) -# build nexa-whisper-utils +# Build nexa-whisper-utils set(WHISPER_LIB nexa-whisper-utils) add_library(${WHISPER_LIB} OBJECT whisper.cpp ) target_link_libraries(${WHISPER_LIB} PRIVATE ggml llama common Threads::Threads) -# build the whisper encoder -# add_executable(whisper-encode main-encode.cpp) -# target_link_libraries(whisper-encode PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB}) - -# build the audio projector -# add_executable(audio-projector-cli audio-projector-cli.cpp audio-projector.cpp) -# target_link_libraries(audio-projector-cli PRIVATE ggml llama common) - -# add nexa-omni-audio-lib library +# Add omni_audio library set(OMNI_AUDIO_LIB omni_audio) add_library(${OMNI_AUDIO_LIB} OBJECT omni.cpp @@ -28,54 +18,51 @@ add_library(${OMNI_AUDIO_LIB} OBJECT ) target_link_libraries(${OMNI_AUDIO_LIB} PRIVATE ggml llama common ${WHISPER_LIB}) -target_include_directories(OMNI_AUDIO_LIB PUBLIC .) -target_include_directories(OMNI_AUDIO_LIB PUBLIC ../..) -target_include_directories(OMNI_AUDIO_LIB PUBLIC ../../common) - -target_compile_features(OMNI_AUDIO_LIB PRIVATE cxx_std_11) - -add_library(omni_audio_static STATIC $) -if (BUILD_SHARED_LIBS) - set_target_properties(OMNI_AUDIO_LIB PROPERTIES POSITION_INDEPENDENT_CODE ON) - target_compile_definitions(OMNI_AUDIO_LIB PRIVATE LLAMA_SHARED LLAMA_BUILD) - add_library(omni_audio_shared SHARED $) - target_link_libraries(omni_audio_shared PRIVATE common ggml llama ${CMAKE_THREAD_LIBS_INIT}) - install(TARGETS omni_audio_shared LIBRARY) -endif() - +# Include directories for omni_audio +target_include_directories(${OMNI_AUDIO_LIB} PUBLIC .) +target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../..) +target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../../common) +# Compile features for omni_audio +target_compile_features(${OMNI_AUDIO_LIB} PRIVATE cxx_std_11) +# Create a static library from omni_audio +add_library(omni_audio_static STATIC $) - -# build the nexa-omni-cli -add_executable(nexa-omni-cli omni-cli.cpp) -target_link_libraries(nexa-omni-cli PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB} ${OMNI_AUDIO_LIB}) - -# If BUILD_SHARED_LIBS is ON, also build a shared library -if(BUILD_SHARED_LIBS) +# Shared library creation +if (BUILD_SHARED_LIBS) message(STATUS "Building shared libraries") - set_target_properties(${WHISPER_LIB} PROPERTIES POSITION_INDEPENDENT_CODE ON) + # Ensure position-independent code for shared libraries set_target_properties(${OMNI_AUDIO_LIB} PROPERTIES POSITION_INDEPENDENT_CODE ON) + set_target_properties(omni_audio_static PROPERTIES POSITION_INDEPENDENT_CODE ON) - add_library(${OMNI_AUDIO_LIB}_shared SHARED $) - target_link_libraries(${OMNI_AUDIO_LIB}_shared PRIVATE ggml llama common ${WHISPER_LIB}) - # NEXA AI : must have below two lines to make Neexa SDK export the shared library to the correct location - set_target_properties(${OMNI_AUDIO_LIB}_shared PROPERTIES - PUBLIC_HEADER omni.h - POSITION_INDEPENDENT_CODE ON - OUTPUT_NAME "${OMNI_AUDIO_LIB}_shared" + # Create the shared library + add_library(omni_audio_shared SHARED $) + target_link_libraries(omni_audio_shared PRIVATE common ggml llama ${WHISPER_LIB} Threads::Threads) + + # Set target properties for shared library + set_target_properties(omni_audio_shared PROPERTIES + PUBLIC_HEADER omni.h + POSITION_INDEPENDENT_CODE ON + OUTPUT_NAME "omni_audio_shared" ) - install(TARGETS ${OMNI_AUDIO_LIB}_shared - LIBRARY - PUBLIC_HEADER DESTINATION include + + # Install the shared library + install(TARGETS omni_audio_shared + LIBRARY + PUBLIC_HEADER DESTINATION include ) - # Add OMNI_AUDIO_SHARED definition when building the shared library - target_compile_definitions(${OMNI_AUDIO_LIB}_shared PRIVATE OMNI_AUDIO_SHARED WHISPER_SHARED) + # Add compile definitions for the shared library + target_compile_definitions(omni_audio_shared PRIVATE OMNI_AUDIO_SHARED WHISPER_SHARED) # Ensure all symbols are exported on Windows if(MSVC) - set_target_properties(${OMNI_AUDIO_LIB}_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) + set_target_properties(omni_audio_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() endif() + +# Build the nexa-omni-cli executable +add_executable(nexa-omni-cli omni-cli.cpp) +target_link_libraries(nexa-omni-cli PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB} omni_audio_static) From 470c31c5ba9d255bdfb0020ac376e00ed6123c65 Mon Sep 17 00:00:00 2001 From: Te993 <3923106166@qq.com> Date: Tue, 10 Dec 2024 14:46:46 +0800 Subject: [PATCH 2/3] update omni audio cmake --- .gitignore | 1 + examples/nexa-omni-audio/CMakeLists.txt | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000..e390b124a6b8f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/** \ No newline at end of file diff --git a/examples/nexa-omni-audio/CMakeLists.txt b/examples/nexa-omni-audio/CMakeLists.txt index 5c19c0cf7c182..980f0452aba89 100644 --- a/examples/nexa-omni-audio/CMakeLists.txt +++ b/examples/nexa-omni-audio/CMakeLists.txt @@ -10,7 +10,7 @@ target_link_libraries(${WHISPER_LIB} PRIVATE ggml llama common Threads::Threads) # Add omni_audio library set(OMNI_AUDIO_LIB omni_audio) -add_library(${OMNI_AUDIO_LIB} OBJECT +add_library(${OMNI_AUDIO_LIB} STATIC omni.cpp omni.h audio-projector.cpp @@ -18,15 +18,23 @@ add_library(${OMNI_AUDIO_LIB} OBJECT ) target_link_libraries(${OMNI_AUDIO_LIB} PRIVATE ggml llama common ${WHISPER_LIB}) +<<<<<<< Updated upstream # Include directories for omni_audio +======= +>>>>>>> Stashed changes target_include_directories(${OMNI_AUDIO_LIB} PUBLIC .) target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../..) target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../../common) +<<<<<<< Updated upstream # Compile features for omni_audio target_compile_features(${OMNI_AUDIO_LIB} PRIVATE cxx_std_11) # Create a static library from omni_audio +======= +target_compile_features(${OMNI_AUDIO_LIB} PRIVATE cxx_std_11) + +>>>>>>> Stashed changes add_library(omni_audio_static STATIC $) # Shared library creation @@ -61,8 +69,12 @@ if (BUILD_SHARED_LIBS) if(MSVC) set_target_properties(omni_audio_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() +<<<<<<< Updated upstream endif() # Build the nexa-omni-cli executable add_executable(nexa-omni-cli omni-cli.cpp) target_link_libraries(nexa-omni-cli PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB} omni_audio_static) +======= +endif() +>>>>>>> Stashed changes From eb04dc2ecf26582a7d43dd214a51c26f53de4dec Mon Sep 17 00:00:00 2001 From: Te993 <3923106166@qq.com> Date: Tue, 10 Dec 2024 14:49:20 +0800 Subject: [PATCH 3/3] update omni audio cmake --- examples/nexa-omni-audio/CMakeLists.txt | 77 +++++++++++-------------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/examples/nexa-omni-audio/CMakeLists.txt b/examples/nexa-omni-audio/CMakeLists.txt index 980f0452aba89..252787165e11e 100644 --- a/examples/nexa-omni-audio/CMakeLists.txt +++ b/examples/nexa-omni-audio/CMakeLists.txt @@ -1,14 +1,24 @@ +# whisper + # Find the Threads package find_package(Threads REQUIRED) -# Build nexa-whisper-utils +# build nexa-whisper-utils set(WHISPER_LIB nexa-whisper-utils) add_library(${WHISPER_LIB} OBJECT whisper.cpp ) target_link_libraries(${WHISPER_LIB} PRIVATE ggml llama common Threads::Threads) -# Add omni_audio library +# build the whisper encoder +# add_executable(whisper-encode main-encode.cpp) +# target_link_libraries(whisper-encode PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB}) + +# build the audio projector +# add_executable(audio-projector-cli audio-projector-cli.cpp audio-projector.cpp) +# target_link_libraries(audio-projector-cli PRIVATE ggml llama common) + +# add nexa-omni-audio-lib library set(OMNI_AUDIO_LIB omni_audio) add_library(${OMNI_AUDIO_LIB} STATIC omni.cpp @@ -18,63 +28,44 @@ add_library(${OMNI_AUDIO_LIB} STATIC ) target_link_libraries(${OMNI_AUDIO_LIB} PRIVATE ggml llama common ${WHISPER_LIB}) -<<<<<<< Updated upstream -# Include directories for omni_audio -======= ->>>>>>> Stashed changes target_include_directories(${OMNI_AUDIO_LIB} PUBLIC .) target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../..) target_include_directories(${OMNI_AUDIO_LIB} PUBLIC ../../common) -<<<<<<< Updated upstream -# Compile features for omni_audio target_compile_features(${OMNI_AUDIO_LIB} PRIVATE cxx_std_11) -# Create a static library from omni_audio -======= -target_compile_features(${OMNI_AUDIO_LIB} PRIVATE cxx_std_11) - ->>>>>>> Stashed changes add_library(omni_audio_static STATIC $) -# Shared library creation -if (BUILD_SHARED_LIBS) + +# build the nexa-omni-cli +add_executable(nexa-omni-cli omni-cli.cpp) +target_link_libraries(nexa-omni-cli PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB} ${OMNI_AUDIO_LIB}) + +# If BUILD_SHARED_LIBS is ON, also build a shared library +if(BUILD_SHARED_LIBS) message(STATUS "Building shared libraries") - # Ensure position-independent code for shared libraries + set_target_properties(${WHISPER_LIB} PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(${OMNI_AUDIO_LIB} PROPERTIES POSITION_INDEPENDENT_CODE ON) - set_target_properties(omni_audio_static PROPERTIES POSITION_INDEPENDENT_CODE ON) - - # Create the shared library - add_library(omni_audio_shared SHARED $) - target_link_libraries(omni_audio_shared PRIVATE common ggml llama ${WHISPER_LIB} Threads::Threads) - # Set target properties for shared library - set_target_properties(omni_audio_shared PROPERTIES - PUBLIC_HEADER omni.h - POSITION_INDEPENDENT_CODE ON - OUTPUT_NAME "omni_audio_shared" + add_library(${OMNI_AUDIO_LIB}_shared SHARED $) + target_link_libraries(${OMNI_AUDIO_LIB}_shared PRIVATE ggml llama common ${WHISPER_LIB}) + # NEXA AI : must have below two lines to make Neexa SDK export the shared library to the correct location + set_target_properties(${OMNI_AUDIO_LIB}_shared PROPERTIES + PUBLIC_HEADER omni.h + POSITION_INDEPENDENT_CODE ON + OUTPUT_NAME "${OMNI_AUDIO_LIB}_shared" ) - - # Install the shared library - install(TARGETS omni_audio_shared - LIBRARY - PUBLIC_HEADER DESTINATION include + install(TARGETS ${OMNI_AUDIO_LIB}_shared + LIBRARY + PUBLIC_HEADER DESTINATION include ) - # Add compile definitions for the shared library - target_compile_definitions(omni_audio_shared PRIVATE OMNI_AUDIO_SHARED WHISPER_SHARED) + # Add OMNI_AUDIO_SHARED definition when building the shared library + target_compile_definitions(${OMNI_AUDIO_LIB}_shared PRIVATE OMNI_AUDIO_SHARED WHISPER_SHARED) # Ensure all symbols are exported on Windows if(MSVC) - set_target_properties(omni_audio_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) + set_target_properties(${OMNI_AUDIO_LIB}_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() -<<<<<<< Updated upstream -endif() - -# Build the nexa-omni-cli executable -add_executable(nexa-omni-cli omni-cli.cpp) -target_link_libraries(nexa-omni-cli PRIVATE ggml llama common Threads::Threads ${WHISPER_LIB} omni_audio_static) -======= -endif() ->>>>>>> Stashed changes +endif() \ No newline at end of file