summaryrefslogtreecommitdiff
path: root/examples/llava/CMakeLists.txt
diff options
context:
space:
mode:
authorDamian Stewart <d@damianstewart.com>2023-11-06 22:36:23 +0100
committerGitHub <noreply@github.com>2023-11-07 00:36:23 +0300
commit381efbf480959bb6d1e247a8b0c2328f22e350f8 (patch)
treee6ad3f01c2b681b5af7300d0d5c8650fbfe1eeaa /examples/llava/CMakeLists.txt
parent2833a6f63c1b87c7f4ac574bcf7a15a2f3bf3ede (diff)
llava : expose as a shared library for downstream projects (#3613)
* wip llava python bindings compatibility * add external llava API * add base64 in-prompt image support * wip refactor image loading * refactor image load out of llava init * cleanup * further cleanup; move llava-cli into its own file and rename * move base64.hpp into common/ * collapse clip and llava libraries * move llava into its own subdir * wip * fix bug where base64 string was not removed from the prompt * get libllava to output in the right place * expose llava methods in libllama.dylib * cleanup memory usage around clip_image_* * cleanup and refactor *again* * update headerdoc * build with cmake, not tested (WIP) * Editorconfig * Editorconfig * Build with make * Build with make * Fix cyclical depts on Windows * attempt to fix build on Windows * attempt to fix build on Windows * Upd TODOs * attempt to fix build on Windows+CUDA * Revert changes in cmake * Fix according to review comments * Support building as a shared library * address review comments --------- Co-authored-by: M. Yusuf Sarıgöz <yusufsarigoz@gmail.com> Co-authored-by: Jared Van Bortel <jared@nomic.ai>
Diffstat (limited to 'examples/llava/CMakeLists.txt')
-rw-r--r--examples/llava/CMakeLists.txt44
1 files changed, 33 insertions, 11 deletions
diff --git a/examples/llava/CMakeLists.txt b/examples/llava/CMakeLists.txt
index 03d32c26..8ea3e5c8 100644
--- a/examples/llava/CMakeLists.txt
+++ b/examples/llava/CMakeLists.txt
@@ -1,14 +1,36 @@
-set(TARGET clip)
-add_library(${TARGET} clip.cpp clip.h)
-install(TARGETS ${TARGET} LIBRARY)
-target_link_libraries(${TARGET} PRIVATE common ggml ${CMAKE_THREAD_LIBS_INIT})
-target_compile_features(${TARGET} PRIVATE cxx_std_11)
+add_library(llava OBJECT
+ llava.cpp
+ llava.h
+ clip.cpp
+ clip.h
+ )
+
+target_link_libraries(llava PRIVATE ggml llama ${CMAKE_THREAD_LIBS_INIT})
+
+target_include_directories(llava PUBLIC .)
+target_include_directories(llava PUBLIC ../..)
+target_include_directories(llava PUBLIC ../../common)
+
+target_compile_features(llava PRIVATE cxx_std_11)
+
+add_library(llava_static STATIC $<TARGET_OBJECTS:llava>)
+if (BUILD_SHARED_LIBS)
+ set_target_properties(llava PROPERTIES POSITION_INDEPENDENT_CODE ON)
+ target_compile_definitions(llava PRIVATE LLAMA_SHARED LLAMA_BUILD)
+ add_library(llava_shared SHARED $<TARGET_OBJECTS:llava>)
+ target_link_libraries(llava_shared PRIVATE ggml llama ${CMAKE_THREAD_LIBS_INIT})
+ install(TARGETS llava_shared LIBRARY)
+endif()
+
if (NOT MSVC)
- target_compile_options(${TARGET} PRIVATE -Wno-cast-qual) # stb_image.h
+ target_compile_options(llava PRIVATE -Wno-cast-qual) # stb_image.h
+ endif()
+if(TARGET BUILD_INFO)
+ add_dependencies(llava BUILD_INFO)
endif()
-set(TARGET llava)
-add_executable(${TARGET} llava.cpp)
-install(TARGETS ${TARGET} RUNTIME)
-target_link_libraries(${TARGET} PRIVATE common llama clip ${CMAKE_THREAD_LIBS_INIT})
-target_compile_features(${TARGET} PRIVATE cxx_std_11)
+set(TARGET llava-cli)
+add_executable(llava-cli llava-cli.cpp)
+install(TARGETS llava-cli RUNTIME)
+target_link_libraries(llava-cli PRIVATE common llama llava ${CMAKE_THREAD_LIBS_INIT})
+target_compile_features(llava PRIVATE cxx_std_11)