CMakeLists.txt 2.7 KB

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