mirror of
https://github.com/mudler/LocalAI.git
synced 2026-07-01 11:56:57 -04:00
* feat(backend): add locate-anything-cpp backend (open-vocab detection via la_capi) A Go/purego backend wrapping locate-anything.cpp's la_capi C ABI, implementing the gRPC Detect RPC: image + open-vocabulary text prompt -> labeled boxes. Mirrors backend/go/rfdetr-cpp; static-links ggml into a per-CPU-variant .so. Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * ci(backend): register locate-anything-cpp in build matrix Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(gallery): locate-anything gallery entry + model importer Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * test(backend): locate-anything-cpp Load+Detect wire test Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat(gallery): add locate-anything-3b model to the gallery index Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * ci(backend): register locate-anything.cpp in bump_deps auto-bump Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: mudler <mudler@localai.io> * ci(test): e2e smoke for locate-anything-cpp in test-extra (loads the 3B + image, runs Detect) Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: mudler <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Signed-off-by: mudler <mudler@localai.io> Co-authored-by: mudler <mudler@localai.io>
58 lines
2.6 KiB
CMake
58 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(liblocateanythingcpp LANGUAGES C CXX)
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# Static-link ggml + locate_anything so the resulting .so has no runtime
|
|
# dependency on extra ggml/locate_anything shared libraries — only on
|
|
# libc/libstdc++/libgomp, which the LocalAI package step bundles into the
|
|
# docker image.
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries" FORCE)
|
|
|
|
# locate-anything.cpp build switches: skip CLI/tests, keep static lib.
|
|
set(LA_BUILD_CLI OFF CACHE BOOL "Disable locate-anything CLI" FORCE)
|
|
set(LA_BUILD_TESTS OFF CACHE BOOL "Disable locate-anything tests" FORCE)
|
|
set(LA_SHARED OFF CACHE BOOL "Build locate_anything as static lib" FORCE)
|
|
|
|
# Unlike rt-detr.cpp, locate-anything.cpp ships no in-tree ggml patches, so
|
|
# there is no apply_ggml_patches.sh hook to shim here.
|
|
add_subdirectory(./sources/locate-anything.cpp)
|
|
|
|
# locate-anything.cpp's top-level CMakeLists points its own target's include
|
|
# dirs at ${CMAKE_SOURCE_DIR}/{include,src,third_party,...}. CMAKE_SOURCE_DIR
|
|
# is the *top-level* source dir of the whole CMake tree, so when we pull it in
|
|
# via add_subdirectory it resolves to OUR directory, not theirs, and the
|
|
# locate_anything target fails to find its own headers (la_capi.h, stb_image.h,
|
|
# la_gguf_keys.h). Re-add the correct, subdir-relative include paths to the
|
|
# already-defined target so it compiles regardless of where it's nested.
|
|
set(LA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/sources/locate-anything.cpp)
|
|
target_include_directories(locate_anything PRIVATE
|
|
${LA_SRC}/include
|
|
${LA_SRC}/src
|
|
${LA_SRC}/third_party
|
|
${LA_SRC}/third_party/stb)
|
|
|
|
# locate-anything.cpp's C-API symbols already live inside liblocate_anything
|
|
# (src/la_capi.cpp is compiled into the lib). We re-export them via a MODULE
|
|
# library that links locate_anything so the symbols are visible at dlopen time.
|
|
add_library(locateanythingcpp MODULE
|
|
sources/locate-anything.cpp/src/la_capi.cpp)
|
|
|
|
target_include_directories(locateanythingcpp PRIVATE
|
|
sources/locate-anything.cpp/include
|
|
sources/locate-anything.cpp/src
|
|
sources/locate-anything.cpp/third_party
|
|
sources/locate-anything.cpp/third_party/stb
|
|
)
|
|
|
|
target_link_libraries(locateanythingcpp PRIVATE locate_anything ggml)
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
|
|
target_link_libraries(locateanythingcpp PRIVATE stdc++fs)
|
|
endif()
|
|
|
|
set_property(TARGET locateanythingcpp PROPERTY CXX_STANDARD 17)
|
|
set_target_properties(locateanythingcpp PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|