cmake_minimum_required(VERSION 3.20) project(biergarten-pipeline VERSION 0.1.0 LANGUAGES CXX) cmake_policy(SET CMP0167 NEW) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(CURL REQUIRED) find_package(Boost REQUIRED COMPONENTS unit_test_framework) find_package(SQLite3 REQUIRED) include(FetchContent) FetchContent_Declare( nlohmann_json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.3 ) FetchContent_MakeAvailable(nlohmann_json) # TODO: Integrate real llama.cpp when generator is ready to use actual models # For now, using mocked brewery generation in generator.cpp # SQLite for in-memory database find_package(SQLite3 REQUIRED) file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.cpp ) add_executable(biergarten-pipeline ${SOURCES}) target_include_directories(biergarten-pipeline PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/includes ) target_link_libraries(biergarten-pipeline PRIVATE CURL::libcurl nlohmann_json::nlohmann_json Boost::unit_test_framework SQLite::SQLite3 ) target_compile_options(biergarten-pipeline PRIVATE $<$: -Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wsign-conversion > $<$: /W4 /WX > ) add_custom_command(TARGET biergarten-pipeline POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/output COMMENT "Creating output/ directory for seed SQL files" ) find_program(VALGRIND valgrind) if(VALGRIND) add_custom_target(memcheck COMMAND ${VALGRIND} --leak-check=full --error-exitcode=1 $ --help DEPENDS biergarten-pipeline COMMENT "Running Valgrind memcheck" ) endif() include(CTest) if(BUILD_TESTING) find_package(Boost REQUIRED COMPONENTS unit_test_framework) file(GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS tests/*.cpp tests/*.cc tests/*.cxx ) if(TEST_SOURCES) add_executable(biergarten-pipeline-tests ${TEST_SOURCES}) target_include_directories(biergarten-pipeline-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(biergarten-pipeline-tests PRIVATE Boost::unit_test_framework CURL::libcurl nlohmann_json::nlohmann_json llama ) add_test( NAME biergarten-pipeline-tests COMMAND biergarten-pipeline-tests ) endif() endif()