cmake_minimum_required(VERSION 3.15)
project(ocr VERSION 1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(DEPS_DIR "${CMAKE_SOURCE_DIR}/deps/llama.cpp")

find_library(LLAMA_LIB   llama      PATHS "${DEPS_DIR}/lib" NO_DEFAULT_PATH)
find_library(MTMD_LIB    mtmd       PATHS "${DEPS_DIR}/lib" NO_DEFAULT_PATH)
find_library(GGML_LIB    ggml       PATHS "${DEPS_DIR}/lib" NO_DEFAULT_PATH)
find_library(GGML_BASE   ggml-base  PATHS "${DEPS_DIR}/lib" NO_DEFAULT_PATH)
find_library(GGML_CPU    ggml-cpu   PATHS "${DEPS_DIR}/lib" NO_DEFAULT_PATH)

if(NOT LLAMA_LIB OR NOT MTMD_LIB)
    message(FATAL_ERROR "libraries not found in ${DEPS_DIR}/lib")
endif()

add_executable(ocr main.cpp)
target_include_directories(ocr PRIVATE "${DEPS_DIR}/include")

set(CUDA_DIR "${DEPS_DIR}/usr/local/cuda-12.2")
set_target_properties(ocr PROPERTIES
    BUILD_RPATH "${DEPS_DIR}/lib;${CUDA_DIR}/targets/x86_64-linux/lib"
    INSTALL_RPATH "${DEPS_DIR}/lib;${CUDA_DIR}/targets/x86_64-linux/lib"
)

target_link_libraries(ocr PRIVATE
    ${LLAMA_LIB}
    ${MTMD_LIB}
    ${GGML_LIB}
    ${GGML_BASE}
    ${GGML_CPU}
    pthread
    dl
    stdc++fs
)
