cmake_minimum_required(VERSION 3.15) project(llama-mcp-bridge VERSION 1.0.0 LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) option(LLAMA_MCP_BUILD_SHARED "Build shared library" ON) option(LLAMA_MCP_BUILD_STATIC "Build static library" ON) set(LLAMA_CPP_DIR "${CMAKE_SOURCE_DIR}/../llama.cpp" CACHE PATH "Path to llama.cpp") add_subdirectory(${LLAMA_CPP_DIR} ${CMAKE_BINARY_DIR}/llama.cpp EXCLUDE_FROM_ALL) add_library(llama-mcp-bridge src/llama_mcp_bridge.cpp src/tensor_hooks.cpp src/attention_capture.cpp src/feature_steering.cpp ) target_include_directories(llama-mcp-bridge PRIVATE ${CMAKE_SOURCE_DIR}/include ${LLAMA_CPP_DIR} ${LLAMA_CPP_DIR}/include ${LLAMA_CPP_DIR}/src ${LLAMA_CPP_DIR}/ggml/include ${LLAMA_CPP_DIR}/ggml/src ) target_link_libraries(llama-mcp-bridge PRIVATE llama ggml) if(LLAMA_MCP_BUILD_SHARED) add_library(llama-mcp-bridge-shared SHARED src/llama_mcp_bridge.cpp src/tensor_hooks.cpp src/attention_capture.cpp src/feature_steering.cpp ) target_include_directories(llama-mcp-bridge-shared PRIVATE ${CMAKE_SOURCE_DIR}/include ${LLAMA_CPP_DIR} ${LLAMA_CPP_DIR}/include ${LLAMA_CPP_DIR}/src ${LLAMA_CPP_DIR}/ggml/include ${LLAMA_CPP_DIR}/ggml/src ) target_link_libraries(llama-mcp-bridge-shared PRIVATE llama ggml) set_target_properties(llama-mcp-bridge-shared PROPERTIES OUTPUT_NAME llama_mcp_bridge PREFIX "" ) if(WIN32) set_target_properties(llama-mcp-bridge-shared PROPERTIES SUFFIX ".dll" ) elseif(APPLE) set_target_properties(llama-mcp-bridge-shared PROPERTIES SUFFIX ".dylib" ) else() set_target_properties(llama-mcp-bridge-shared PROPERTIES SUFFIX ".so" ) endif() endif() if(BUILD_TESTING) add_subdirectory(tests) endif()