This commit is contained in:
2026-01-14 22:03:11 +01:00
commit 70bb065fbe
16 changed files with 935 additions and 0 deletions

70
CMakeLists.txt Normal file
View File

@@ -0,0 +1,70 @@
cmake_minimum_required(VERSION 3.16)
project(miniboinc
VERSION 0.1.0
LANGUAGES C
)
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
# ---------------------------------------------------------
# Output directories
# ---------------------------------------------------------
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
foreach(OUTPUTCONFIG DEBUG RELEASE RELWITHDEBINFO MINSIZEREL)
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${CMAKE_BINARY_DIR}/lib)
endforeach()
# Common
file(GLOB_RECURSE COMMON_SRC CONFIGURE_DEPENDS src/common/*.c)
add_library(common STATIC ${COMMON_SRC})
target_link_libraries(common PUBLIC)
target_compile_options(common PRIVATE
-Wall
-Wextra
-Wpedantic
-lpthread
)
target_include_directories(common PUBLIC
${PROJECT_SOURCE_DIR}/include
)
# Client
file(GLOB_RECURSE CLIENT_SRC CONFIGURE_DEPENDS src/client/*.c)
add_executable(client ${CLIENT_SRC})
target_link_libraries(client PRIVATE common)
target_include_directories(client PRIVATE
${PROJECT_SOURCE_DIR}/include
)
target_compile_options(client PRIVATE
-Wall
-Wextra
-Wpedantic
-lpthread
)
set_target_properties(client PROPERTIES OUTPUT_NAME "miniboinc_client")
# Server
file(GLOB_RECURSE SERVER_SRC CONFIGURE_DEPENDS src/server/*.c)
add_executable(server ${SERVER_SRC})
target_link_libraries(server PRIVATE common)
target_include_directories(server PRIVATE
${PROJECT_SOURCE_DIR}/include
)
target_compile_options(server PRIVATE
-Wall
-Wextra
-Wpedantic
-lpthread
-g
)
target_compile_definitions(server PRIVATE)
set_target_properties(server PROPERTIES OUTPUT_NAME "miniboinc_server")