From 2847ecf2ddac85755dfec8b07517aab5490e4147 Mon Sep 17 00:00:00 2001 From: Damian Stewart Date: Sat, 14 Oct 2023 19:15:35 +0200 Subject: [PATCH] expose llava methods in libllama.dylib --- CMakeLists.txt | 17 +++++++++++++++++ llava/CMakeLists.txt | 12 ++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58547b6d5..09e28ff62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -698,6 +698,7 @@ target_include_directories(llama PUBLIC .) target_compile_features(llama PUBLIC cxx_std_11) # don't bump target_link_libraries(llama PRIVATE ggml + llava ${LLAMA_EXTRA_LIBS} ) @@ -707,6 +708,22 @@ if (BUILD_SHARED_LIBS) if (LLAMA_METAL) set_target_properties(llama PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal") endif() + + # By default, symbols provided by the sublibs that are not used by mainlib (which is all of them in this case) + # are not used. This changes that. + if (WIN32) + set_target_properties(llama PROPERTIES + LINK_FLAGS "/WHOLEARCHIVE" + ) + elseif (APPLE) + set_target_properties(llama PROPERTIES + LINK_FLAGS "-Wl,-all_load" + ) + else () + set_target_properties(llama PROPERTIES + LINK_FLAGS "-Wl,--whole-archive" + ) + endif () endif() diff --git a/llava/CMakeLists.txt b/llava/CMakeLists.txt index d1118e9db..433ec6cfa 100644 --- a/llava/CMakeLists.txt +++ b/llava/CMakeLists.txt @@ -1,15 +1,7 @@ set(TARGET llava) -if (BUILD_SHARED_LIBS) - add_library(${TARGET} SHARED llava.cpp llava.h clip.cpp clip.h) - set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON) - set_target_properties(${TARGET} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) - target_link_libraries(${TARGET} PUBLIC Threads::Threads common llama ggml ${LLAMA_EXTRA_LIBS}) - install(TARGETS ${TARGET} LIBRARY) -else() - add_library(${TARGET} llava.cpp llava.h clip.cpp clip.h) - target_link_libraries(${TARGET} PRIVATE common llama ggml ${CMAKE_THREAD_LIBS_INIT}) -endif() +add_library(${TARGET} STATIC llava.cpp llava.h clip.cpp clip.h) +target_link_libraries(${TARGET} PRIVATE ${CMAKE_THREAD_LIBS_INIT}) target_include_directories(${TARGET} PUBLIC .) target_include_directories(${TARGET} PUBLIC ..)