aoc/CMakeLists.txt

55 lines
1.9 KiB
CMake
Raw Permalink Normal View History

2021-09-02 15:04:19 -07:00
cmake_minimum_required(VERSION 3.10)
set(CMAKE_C_STANDARD 99)
2021-09-08 12:12:11 -07:00
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_BUILD_TYPE Debug)
2021-09-02 15:04:19 -07:00
project(advent C)
add_subdirectory(lib/libflint)
2021-09-02 15:04:19 -07:00
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)
2021-12-10 11:01:51 -08:00
file(GLOB SRC2021 src/2021/*.c)
2022-12-02 06:53:34 -08:00
file(GLOB SRC2022 src/2022/*.c)
2023-12-02 07:09:52 -08:00
file(GLOB SRC2023 src/2023/*.c)
2024-12-02 06:22:25 -08:00
file(GLOB SRC2024 src/2024/*.c)
2021-09-02 15:04:19 -07:00
file(COPY input DESTINATION ${CMAKE_BINARY_DIR})
2024-12-02 06:22:25 -08:00
add_executable(advent ${SRC} ${SRC2015} ${SRC2016} ${SRC2017} ${SRC2018} ${SRC2019} ${SRC2020} ${SRC2021} ${SRC2022} ${SRC2023} ${SRC2024})
2021-09-08 11:19:24 -07:00
2024-12-03 12:08:18 -08:00
set(INCLUDES
include
lib/libflint/include
lib/uthash/src
)
2021-09-08 12:12:11 -07:00
if ((${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD"))
2024-12-03 12:08:18 -08:00
find_package(PCRE2 REQUIRED)
target_include_directories(advent PRIVATE ${INCLUDES} ${PCRE2_INCLUDE_DIR})
target_link_libraries(advent PRIVATE flint ${PCRE2_LIBRARIES})
2022-09-09 11:13:53 -07:00
elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
2021-09-08 12:12:11 -07:00
find_package(OpenSSL REQUIRED)
2024-12-03 12:08:18 -08:00
target_include_directories(advent PRIVATE ${INCLUDES} ${OpenSSL_INCLUDE_DIR} ${PCRE2_INCLUDE_DIR})
target_link_libraries(advent PRIVATE bsd flint ${PCRE2_LIBRARIES} ${OPENSSL_LIBRARIES})
2022-09-09 11:15:05 -07:00
elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Darwin"))
2024-12-03 12:08:18 -08:00
# OpenSSL
2022-12-02 08:10:58 -08:00
set(OPENSSL_ROOT_DIR /opt/homebrew/opt/openssl@3)
2022-09-09 11:13:53 -07:00
set(OpenSSL_INCLUDE_DIR /opt/homebrew/opt/openssl@3/include)
find_package(OpenSSL REQUIRED)
2024-12-03 12:08:18 -08:00
# 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})
2022-09-09 11:15:05 -07:00
else()
2022-12-02 08:10:58 -08:00
message(FATAL_ERROR "OS ${CMAKE_SYSTEM_NAME} is not supported" )
2021-09-08 11:19:24 -07:00
endif()