cmake_minimum_required(VERSION 3.10) set(CMAKE_C_STANDARD 99) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_BUILD_TYPE Debug) project(advent C) add_subdirectory(lib/libflint) file(GLOB SRC src/*.c) file(GLOB SRC2015 src/2015/*.c) file(GLOB SRC2016 src/2016/*.c) file(GLOB SRC2017 src/2017/*.c) file(GLOB SRC2018 src/2018/*.c) file(GLOB SRC2019 src/2019/*.c) file(GLOB SRC2020 src/2020/*.c) file(GLOB SRC2021 src/2021/*.c) file(GLOB SRC2022 src/2022/*.c) file(GLOB SRC2023 src/2023/*.c) file(GLOB SRC2024 src/2024/*.c) file(COPY input DESTINATION ${CMAKE_BINARY_DIR}) add_executable(advent ${SRC} ${SRC2015} ${SRC2016} ${SRC2017} ${SRC2018} ${SRC2019} ${SRC2020} ${SRC2021} ${SRC2022} ${SRC2023} ${SRC2024}) set(INCLUDES include lib/libflint/include lib/uthash/src ) if ((${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")) find_package(PCRE2 REQUIRED) target_include_directories(advent PRIVATE ${INCLUDES} ${PCRE2_INCLUDE_DIR}) target_link_libraries(advent PRIVATE flint ${PCRE2_LIBRARIES}) elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux")) find_package(OpenSSL REQUIRED) target_include_directories(advent PRIVATE ${INCLUDES} ${OpenSSL_INCLUDE_DIR} ${PCRE2_INCLUDE_DIR}) target_link_libraries(advent PRIVATE bsd flint ${PCRE2_LIBRARIES} ${OPENSSL_LIBRARIES}) elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")) # OpenSSL set(OPENSSL_ROOT_DIR /opt/homebrew/opt/openssl@3) set(OpenSSL_INCLUDE_DIR /opt/homebrew/opt/openssl@3/include) find_package(OpenSSL REQUIRED) # PCRE2 set(PCRE2_INCLUDE_DIR /opt/homebrew/opt/pcre2/include) set(PCRE2_LIBRARIES /opt/homebrew/opt/pcre2/lib/libpcre2-8.dylib) target_include_directories(advent PRIVATE ${INCLUDES} ${OpenSSL_INCLUDE_DIR} ${PCRE2_INCLUDE_DIR}) target_link_libraries(advent PRIVATE flint ${OPENSSL_LIBRARIES} ${PCRE2_LIBRARIES}) else() message(FATAL_ERROR "OS ${CMAKE_SYSTEM_NAME} is not supported" ) endif()