Files
dcfg/CMakeLists.txt
Slendi b642059ee5
All checks were successful
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=OFF (push) Successful in 11s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=OFF (push) Successful in 15s
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=ON (push) Successful in 17s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=ON (push) Successful in 15s
CMake / ubuntu-latest - shared=OFF, pthread=ON, posix=ON (push) Successful in 12s
CMake / ubuntu-latest - shared=ON, pthread=ON, posix=ON (push) Successful in 10s
Update CI
Signed-off-by: Slendi <slendi@socopon.com>
2025-07-26 01:00:03 +03:00

57 lines
1.9 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(DCFG C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON) # Would've done OFF but I need typeof (for now)
option(DCFG_BUILD_SHARED "Build DCFG as a shared library" ON)
option(DCFG_PTHREAD_SUPPORT "Enable pthreads support" ON)
option(DCFG_POSIX_SUPPORT "Enable POSIX support" ON)
find_package(Threads)
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
if(DCFG_BUILD_SHARED)
add_library(${PROJECT_NAME} SHARED ${SRC_DIR}/dcfg.c)
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR})
if(DCFG_PTHREAD_SUPPORT)
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_PTHREAD_SUPPORT)
endif()
if (DCFG_POSIX_SUPPORT)
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_POSIX_SUPPORT)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "dcfg")
install(TARGETS ${PROJECT_NAME} DESTINATION lib)
else()
add_library(${PROJECT_NAME} STATIC ${SRC_DIR}/dcfg.c)
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR})
if(DCFG_PTHREAD_SUPPORT)
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_PTHREAD_SUPPORT)
endif()
if (DCFG_POSIX_SUPPORT)
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_POSIX_SUPPORT)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "dcfg")
install(TARGETS ${PROJECT_NAME} DESTINATION lib)
endif()
install(DIRECTORY ${INCLUDE_DIR}/ DESTINATION include)
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /permissive-)
else()
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic -Werror -Wno-newline-eof -Wno-language-extension-token)
endif()