CMakeLists.txt 2.8 KB

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