cmake_minimum_required(VERSION 3.10) project(humanus.cpp VERSION 0.1.0) 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() 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("$<$:/utf-8>") add_compile_options("$<$:/utf-8>") add_compile_options("$<$:/bigobj>") add_compile_options("$<$:/bigobj>") add_compile_options(/wd4244 /wd4267) endif() # Set C++ standard set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(OpenSSL 3.0.0 REQUIRED) 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() find_package(Python3 COMPONENTS Development) if(Python3_FOUND) message(STATUS "Python3 found: ${Python3_VERSION}") message(STATUS "Python3 include directory: ${Python3_INCLUDE_DIRS}") message(STATUS "Python3 libraries: ${Python3_LIBRARIES}") include_directories(${Python3_INCLUDE_DIRS}) add_compile_definitions(PYTHON_FOUND) else() message(WARNING "Python3 development libraries not found. Python interpreter will not be available.") endif() # mcp add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/mcp) # server add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/server) # include include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mcp/include) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mcp/common) find_package(Threads REQUIRED) file(GLOB AGENT_SOURCES "agent/*.cpp" "agent/*.cc" ) file(GLOB TOOL_SOURCES "tool/*.cpp" "tool/*.cc" ) file(GLOB FLOW_SOURCES "flow/*.cpp" "flow/*.cc" ) add_executable(humanus_cpp main.cpp config.cpp llm.cpp prompt.cpp logger.cpp schema.cpp ${AGENT_SOURCES} ${TOOL_SOURCES} ${FLOW_SOURCES} ) target_link_libraries(humanus_cpp PRIVATE Threads::Threads mcp ${OPENSSL_LIBRARIES}) if(Python3_FOUND) target_link_libraries(humanus_cpp PRIVATE ${Python3_LIBRARIES}) endif() install(TARGETS humanus_cpp DESTINATION bin)