2025-03-16 17:17:01 +08:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
|
project(humanus.cpp VERSION 0.1.0)
|
|
|
|
|
2025-03-18 16:40:16 +08:00
|
|
|
set(CMAKE_WARN_UNUSED_CLI YES)
|
|
|
|
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
|
|
|
|
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
|
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
|
|
endif()
|
|
|
|
|
2025-03-19 18:44:54 +08:00
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
|
2025-03-18 16:40:16 +08:00
|
|
|
option(BUILD_SHARED_LIBS "build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})
|
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if (MSVC)
|
|
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/utf-8>")
|
|
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/utf-8>")
|
|
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/bigobj>")
|
|
|
|
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/bigobj>")
|
2025-03-19 18:44:54 +08:00
|
|
|
add_compile_options(/wd4244 /wd4267) # possible loss of data
|
2025-03-18 16:40:16 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Set C++ standard
|
2025-03-16 17:17:01 +08:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
2025-03-17 01:58:37 +08:00
|
|
|
find_package(OpenSSL 3.0.0 REQUIRED)
|
2025-03-16 17:17:01 +08:00
|
|
|
if(OPENSSL_FOUND)
|
|
|
|
message(STATUS "OpenSSL found: ${OPENSSL_VERSION}")
|
|
|
|
message(STATUS "OpenSSL include directory: ${OPENSSL_INCLUDE_DIR}")
|
|
|
|
message(STATUS "OpenSSL libraries: ${OPENSSL_LIBRARIES}")
|
|
|
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
|
|
add_compile_definitions(CPPHTTPLIB_OPENSSL_SUPPORT)
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "OpenSSL not found. Please install OpenSSL development libraries.")
|
|
|
|
endif()
|
|
|
|
|
2025-03-17 16:35:11 +08:00
|
|
|
# mcp
|
2025-03-16 17:17:01 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/mcp)
|
|
|
|
|
2025-03-17 16:35:11 +08:00
|
|
|
# server
|
2025-03-16 17:17:01 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/server)
|
|
|
|
|
2025-04-06 16:32:51 +08:00
|
|
|
# tokenizer
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tokenizer)
|
|
|
|
|
|
|
|
# tests
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests)
|
|
|
|
|
2025-03-17 16:35:11 +08:00
|
|
|
# include
|
2025-03-16 17:17:01 +08:00
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
2025-03-29 00:04:23 +08:00
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/common)
|
2025-03-16 17:17:01 +08:00
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mcp/include)
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mcp/common)
|
|
|
|
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
2025-04-06 16:32:51 +08:00
|
|
|
file(GLOB BASIC_SOURCES
|
|
|
|
"src/*.cpp"
|
|
|
|
"src/*.cc"
|
|
|
|
)
|
|
|
|
|
2025-03-17 01:58:37 +08:00
|
|
|
file(GLOB AGENT_SOURCES
|
|
|
|
"agent/*.cpp"
|
|
|
|
"agent/*.cc"
|
|
|
|
)
|
|
|
|
|
|
|
|
file(GLOB TOOL_SOURCES
|
|
|
|
"tool/*.cpp"
|
|
|
|
"tool/*.cc"
|
|
|
|
)
|
|
|
|
|
|
|
|
file(GLOB FLOW_SOURCES
|
|
|
|
"flow/*.cpp"
|
|
|
|
"flow/*.cc"
|
2025-03-16 17:17:01 +08:00
|
|
|
)
|
|
|
|
|
2025-03-20 16:03:26 +08:00
|
|
|
file(GLOB MEMORY_SOURCES
|
|
|
|
"memory/*.cpp"
|
|
|
|
"memory/*.cc"
|
2025-03-26 00:38:43 +08:00
|
|
|
"memory/*/*.cpp"
|
|
|
|
"memory/*/*.cc"
|
2025-04-06 16:32:51 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
file(GLOB TOKENIZER_SOURCES
|
|
|
|
"tokenizer/*.cpp"
|
|
|
|
"tokenizer/*.cc"
|
2025-03-20 16:03:26 +08:00
|
|
|
)
|
|
|
|
|
2025-03-29 00:04:23 +08:00
|
|
|
# humanus core
|
2025-03-23 14:35:54 +08:00
|
|
|
add_library(humanus
|
2025-04-06 16:32:51 +08:00
|
|
|
${BASIC_SOURCES}
|
2025-03-17 01:58:37 +08:00
|
|
|
${AGENT_SOURCES}
|
|
|
|
${TOOL_SOURCES}
|
|
|
|
${FLOW_SOURCES}
|
2025-03-23 14:35:54 +08:00
|
|
|
${MEMORY_SOURCES}
|
2025-04-06 16:32:51 +08:00
|
|
|
${TOKENIZER_SOURCES}
|
2025-03-17 01:58:37 +08:00
|
|
|
)
|
2025-03-16 17:17:01 +08:00
|
|
|
|
2025-03-23 14:35:54 +08:00
|
|
|
target_link_libraries(humanus PUBLIC Threads::Threads mcp ${OPENSSL_LIBRARIES})
|
2025-03-29 00:04:23 +08:00
|
|
|
|
|
|
|
# examples
|
2025-03-23 14:35:54 +08:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/examples)
|