Files
webserver/CMakeLists.txt
2026-02-22 00:33:44 +01:00

58 lines
1.3 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(Webserver)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Generate compile_commands.json (for clangd, IDEs, etc.)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Find OpenSSL (includes both libssl and libcrypto)
find_package(OpenSSL REQUIRED)
# Source files
set(SOURCES
src/main.c
)
add_executable(${PROJECT_NAME} ${SOURCES})
# Include OpenSSL headers
target_include_directories(${PROJECT_NAME} PRIVATE
${OPENSSL_INCLUDE_DIR}
)
# Link against OpenSSL libraries
# OpenSSL::SSL → libssl
# OpenSSL::Crypto → libcrypto
target_link_libraries(${PROJECT_NAME} PRIVATE
OpenSSL::SSL
OpenSSL::Crypto
)
# Compiler warnings + debug flags (GCC/Clang)
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<C_COMPILER_ID:GNU,Clang>:
-Wall
-Wextra
-Wpedantic
-Wshadow
-Wformat=2
-Wconversion
-Wsign-conversion
-Wnull-dereference
-Wdouble-promotion
-Wstrict-prototypes
-Wmissing-prototypes
>
$<$<C_COMPILER_ID:GNU>:
-fanalyzer # GCC static analyzer
>
)
# Optional: print found versions for debugging
message(STATUS "OpenSSL version: ${OPENSSL_VERSION}")
message(STATUS "OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
message(STATUS "OpenSSL libraries: ${OPENSSL_LIBRARIES}")