CMakeLists.txt 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # mtmd
  2. find_package(Threads REQUIRED)
  3. add_library(mtmd
  4. mtmd.cpp
  5. mtmd-audio.cpp
  6. mtmd.h
  7. mtmd-helper.cpp
  8. mtmd-helper.h
  9. clip.cpp
  10. clip.h
  11. clip-impl.h
  12. clip-model.h
  13. clip-graph.h
  14. models/models.h
  15. models/cogvlm.cpp
  16. models/internvl.cpp
  17. models/kimivl.cpp
  18. models/llama4.cpp
  19. models/llava.cpp
  20. models/minicpmv.cpp
  21. models/pixtral.cpp
  22. models/qwen2vl.cpp
  23. models/qwen3vl.cpp
  24. models/siglip.cpp
  25. models/whisper-enc.cpp
  26. )
  27. set_target_properties(mtmd PROPERTIES
  28. VERSION ${LLAMA_INSTALL_VERSION}
  29. SOVERSION 0
  30. MACHO_CURRENT_VERSION 0 # keep macOS linker from seeing oversized version number
  31. )
  32. target_link_libraries (mtmd PUBLIC ggml llama)
  33. target_link_libraries (mtmd PRIVATE Threads::Threads)
  34. target_include_directories(mtmd PUBLIC .)
  35. target_include_directories(mtmd PRIVATE ../..)
  36. target_include_directories(mtmd PRIVATE ../../vendor)
  37. target_compile_features (mtmd PRIVATE cxx_std_17)
  38. if (BUILD_SHARED_LIBS)
  39. set_target_properties (mtmd PROPERTIES POSITION_INDEPENDENT_CODE ON)
  40. target_compile_definitions(mtmd PRIVATE LLAMA_BUILD)
  41. target_compile_definitions(mtmd PUBLIC LLAMA_SHARED)
  42. endif()
  43. set(MTMD_PUBLIC_HEADERS
  44. ${CMAKE_CURRENT_SOURCE_DIR}/mtmd.h
  45. ${CMAKE_CURRENT_SOURCE_DIR}/mtmd-helper.h
  46. )
  47. set_target_properties(mtmd
  48. PROPERTIES
  49. PUBLIC_HEADER "${MTMD_PUBLIC_HEADERS}")
  50. install(TARGETS mtmd LIBRARY PUBLIC_HEADER)
  51. if (NOT MSVC)
  52. # for stb_image.h and miniaudio.h
  53. target_compile_options(mtmd PRIVATE -Wno-cast-qual)
  54. endif()
  55. if (TARGET BUILD_INFO)
  56. add_dependencies(mtmd BUILD_INFO)
  57. add_dependencies(mtmd-helper BUILD_INFO)
  58. endif()
  59. # if mtmd is linked against common, we throw an error
  60. if (TARGET mtmd)
  61. get_target_property(libs mtmd LINK_LIBRARIES)
  62. if (libs AND "common" IN_LIST libs)
  63. message(FATAL_ERROR "mtmd is designed to be a public library.\n"
  64. "It must not link against common")
  65. endif()
  66. endif()
  67. add_executable(llama-llava-cli deprecation-warning.cpp)
  68. add_executable(llama-gemma3-cli deprecation-warning.cpp)
  69. add_executable(llama-minicpmv-cli deprecation-warning.cpp)
  70. add_executable(llama-qwen2vl-cli deprecation-warning.cpp)
  71. set(TARGET llama-mtmd-cli)
  72. add_executable (${TARGET} mtmd-cli.cpp)
  73. set_target_properties (${TARGET} PROPERTIES OUTPUT_NAME llama-mtmd-cli)
  74. if(LLAMA_TOOLS_INSTALL)
  75. install(TARGETS ${TARGET} RUNTIME)
  76. endif()
  77. target_link_libraries (${TARGET} PRIVATE common mtmd Threads::Threads)
  78. target_compile_features(${TARGET} PRIVATE cxx_std_17)