From 21b9f46f775a7c7becbafae9456525029f396dfb Mon Sep 17 00:00:00 2001 From: Alexander Zhylin Date: Tue, 10 Feb 2026 14:42:45 +0200 Subject: [PATCH] CMake integration --- CMakeLists.txt | 11 +++++++ CMakePresets.json | 25 +++++++++++++++ Makefile | 35 --------------------- deps.mk | 7 ----- setup.sh | 1 - src/CMakeLists.txt | 55 +++++++++++++++++++++++++++++++++ src/deps.mk | 10 ------ src/file_p.c | 2 +- src/libs/CMakeLists.txt | 1 + src/libs/murmur3/CMakeLists.txt | 13 ++++++++ 10 files changed, 106 insertions(+), 54 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 CMakePresets.json delete mode 100644 Makefile delete mode 100644 deps.mk create mode 100644 src/CMakeLists.txt delete mode 100644 src/deps.mk create mode 100644 src/libs/CMakeLists.txt create mode 100644 src/libs/murmur3/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..977b763 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.23) + +project(ZBBSServer + VERSION 1.0.0 +) + +add_subdirectory(src) + +install( + TARGETS zbbs-server +) \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..9948b42 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,25 @@ +{ + "version": 4, + "configurePresets": [ + { + "name": "debug", + "displayName": "Debug", + "description": "Debug build", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "ZBBS_DEBUG": "ON", + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "release", + "displayName": "Release", + "description": "Release build", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "ZBBS_DEBUG": "OFF", + "CMAKE_BUILD_TYPE":"Release" + } + } + ] +} \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index 94d63e8..0000000 --- a/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -CFLAGS := -ggdb -Wextra -pedantic -std=c23 -lpq -lcrypto - -SRC_DIR := src -OBJ_DIR := src/obj -BIN_DIR := bin - -SRCS := $(wildcard $(SRC_DIR)/*.c) -OBJS := $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) - -OBJS += murmur3.o - -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h - $(CC) $(CFLAGS) -c $< -o $@ - -bbs-server: $(OBJS) - $(CC) $(CFLAGS) $^ -o $(BIN_DIR)/$@ - -murmur3.o: $(SRC_DIR)/libs/murmur3/murmur3.c $(SRC_DIR)/libs/murmur3/murmur3.h - $(CC) $(CFLAGS) -c $< -o $@ - -ifneq (clean, $(MAKECMDGOALS)) --include deps.mk -endif - -deps.mk: $(SRCS) - $(CC) -MM $^ > $(SRC_DIR)/$@ - -clean: - rm -f $(OBJ_DIR)/*.o $(BIN_DIR)/bbs-server - -run: - $(BIN_DIR)/bbs-server wdir - -valgrind: - valgrind --tool=memcheck $(BIN_DIR)/bbs-server wdir \ No newline at end of file diff --git a/deps.mk b/deps.mk deleted file mode 100644 index e4e6f36..0000000 --- a/deps.mk +++ /dev/null @@ -1,7 +0,0 @@ -client.o: src/client.c src/client.h src/main.h src/file_p.h src/session.h -file_p.o: src/file_p.c src/file_p.h src/main.h src/session.h -main.o: src/main.c src/main.h src/file_p.h src/server.h -server.o: src/server.c src/main.h src/session.h src/user.h -session.o: src/session.c src/session.h src/main.h src/client.h \ - src/file_p.h src/user.h -user.o: src/user.c src/main.h src/session.h diff --git a/setup.sh b/setup.sh index 985f0f6..efa33ab 100755 --- a/setup.sh +++ b/setup.sh @@ -1,6 +1,5 @@ #!/bin/sh -mkdir bin mkdir wdir mkdir wdir/storage touch wdir/file_descriptions diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..059ac86 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,55 @@ +add_executable(zbbs-server) + +set_property(TARGET zbbs-server PROPERTY C_STANDARD 23) + +find_package(PostgreSQL REQUIRED) +if(NOT PostgreSQL_FOUND) + message(FATAL_ERROR "PostgreSQL not found. Please install libpq-dev or set PostgreSQL_ROOT.") +endif() + +find_package(OpenSSL REQUIRED) +if(NOT OpenSSL_FOUND) + message(FATAL_ERROR "OpenSSL not found. Please install libcrypto or set OpenSSL_ROOT.") +endif() + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +target_sources(zbbs-server + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} + "types.h" +) + +add_subdirectory(libs) + +target_link_libraries(zbbs-server + PRIVATE + murmur3 + PostgreSQL::PostgreSQL + OpenSSL::Crypto +) + +if (ZBBS_DEBUG) +if( + (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR + (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") +) + + target_compile_options(zbbs-server PRIVATE /W3) + message("Include debug info (Microsoft)") + +elseif( + (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR + (CMAKE_CXX_COMPILER_ID MATCHES "Clang") +) + + target_compile_options(zbbs-server PRIVATE -Wall -ggdb -pedantic) + message("Include debug info (GNU/Clang)") + +endif() +endif() \ No newline at end of file diff --git a/src/deps.mk b/src/deps.mk deleted file mode 100644 index 8c8f8b1..0000000 --- a/src/deps.mk +++ /dev/null @@ -1,10 +0,0 @@ -client.o: src/client.c src/client.h src/main.h src/types.h src/file_p.h \ - src/session.h -db.o: src/db.c src/db.h src/main.h src/types.h -file_p.o: src/file_p.c src/file_p.h src/main.h src/types.h src/db.h \ - src/libs/murmur3/murmur3.h src/session.h -main.o: src/main.c src/main.h src/types.h src/server.h src/db.h -server.o: src/server.c src/main.h src/types.h src/session.h src/user.h -session.o: src/session.c src/session.h src/main.h src/types.h \ - src/client.h src/db.h src/file_p.h src/user.h -user.o: src/user.c src/db.h src/main.h src/types.h src/session.h diff --git a/src/file_p.c b/src/file_p.c index 0415ff6..da79cc8 100644 --- a/src/file_p.c +++ b/src/file_p.c @@ -1,6 +1,6 @@ #include "file_p.h" #include "db.h" -#include "libs/murmur3/murmur3.h" +#include #include "main.h" #include "session.h" #include diff --git a/src/libs/CMakeLists.txt b/src/libs/CMakeLists.txt new file mode 100644 index 0000000..6296d4a --- /dev/null +++ b/src/libs/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(murmur3) \ No newline at end of file diff --git a/src/libs/murmur3/CMakeLists.txt b/src/libs/murmur3/CMakeLists.txt new file mode 100644 index 0000000..3000731 --- /dev/null +++ b/src/libs/murmur3/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(murmur3 STATIC) + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +target_sources(murmur3 + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} +) \ No newline at end of file