From 09bda478401ca66f32a33117f633ca4bf0fdd05e Mon Sep 17 00:00:00 2001 From: Drath Date: Thu, 1 Jan 2026 13:56:28 +0100 Subject: [PATCH] use cmake --- .gitignore | 2 +- CMakeLists.txt | 45 ++++++++++++++ Makefile | 36 ++++------- compile_commands.json | 135 ------------------------------------------ linuxSmartie.service | 2 +- 5 files changed, 60 insertions(+), 160 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 compile_commands.json diff --git a/.gitignore b/.gitignore index a45af48..a2397c0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ *.log* .cache/ .vscode/ -linuxSmartie +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..9e392a9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,45 @@ +cmake_minimum_required(VERSION 3.20) + +project(linuxSmartie + VERSION 1.0 + LANGUAGES CXX +) + +# Use C++26 (CMake name for c++2c) +set(CMAKE_CXX_STANDARD 26) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +# Collect sources +file(GLOB SOURCES + src/*.cpp + main.cpp +) + +# Define executable +add_executable(linuxSmartie ${SOURCES}) + +# Include directories +target_include_directories(linuxSmartie + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +# Compiler warnings +target_compile_options(linuxSmartie + PRIVATE + -O2 + -Wall + -Wextra + -Wpedantic + -Werror + -fdiagnostics-color=always +) + +# Link libraries +target_link_libraries(linuxSmartie + PRIVATE + websockets + z +) + diff --git a/Makefile b/Makefile index d929fde..04fe086 100644 --- a/Makefile +++ b/Makefile @@ -1,31 +1,21 @@ -MAKEFLAGS := "-j $(shell nproc)" +.PHONY: configure build clean nuke install install_service -# compiling with C++26 -CXXFLAGS := -std=c++2c -fdiagnostics-color=always -Iinclude -lwebsockets -lz -Wall -Wextra -Wpedantic -Werror -CXXFLAGS += -MMD -MP -CXXFLAGS += -O2 -s +BUILD_DIR ?= build -SOURCES := $(wildcard src/*.cpp) main.cpp -OBJECTS := $(SOURCES:.cpp=.o) -DEPS := $(OBJECTS:.o=.d) +configure: + cmake -S . -B ${BUILD_DIR} -# glowny target, linkuje linuxSmartie, potrzebuje ${OBJECTS}, jest na samej górze wiec jest domyslny -linuxSmartie: $(OBJECTS) - g++ $(CXXFLAGS) -o $@ $^ +build: + cmake --build ${BUILD_DIR} -j -# kompiluje obiekty, potrzebuje zrodel cpp -%.o: %.cpp - g++ $(CXXFLAGS) -c $< -o $@ +clean: + cmake --build $(BUILD_DIR) --target clean + +nuke: clean + rm -rf $(BUILD_DIR) --include $(DEPS) - -.PHONY: clean cleanobj install_service - -cleanobj: - rm -f $(OBJECTS) $(DEPS) $(TEST_OBJS) - -clean: cleanobj - rm -f linuxSmartie +install: + install ${BUILD}/linuxSmartie ${HOME}/.local/bin install_service: mkdir -p ~/.config/systemd/user diff --git a/compile_commands.json b/compile_commands.json deleted file mode 100644 index 09cabbd..0000000 --- a/compile_commands.json +++ /dev/null @@ -1,135 +0,0 @@ -[ - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "main.o", - "main.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/main.cpp", - "output": "/home/drath/git/linuxSmartie/main.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/gpu.o", - "src/gpu.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/gpu.cpp", - "output": "/home/drath/git/linuxSmartie/src/gpu.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/cpu.o", - "src/cpu.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/cpu.cpp", - "output": "/home/drath/git/linuxSmartie/src/cpu.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/hass.o", - "src/hass.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/hass.cpp", - "output": "/home/drath/git/linuxSmartie/src/hass.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/LCDDisplay.o", - "src/LCDDisplay.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/LCDDisplay.cpp", - "output": "/home/drath/git/linuxSmartie/src/LCDDisplay.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/sys.o", - "src/sys.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/sys.cpp", - "output": "/home/drath/git/linuxSmartie/src/sys.o" - }, - { - "arguments": [ - "/usr/bin/g++", - "-std=c++2c", - "-fdiagnostics-color=always", - "-Iinclude", - "-Wall", - "-Wpedantic", - "-Wextra", - "-O2", - "-c", - "-o", - "src/utils.o", - "src/utils.cpp" - ], - "directory": "/home/drath/git/linuxSmartie", - "file": "/home/drath/git/linuxSmartie/src/utils.cpp", - "output": "/home/drath/git/linuxSmartie/src/utils.o" - } -] diff --git a/linuxSmartie.service b/linuxSmartie.service index ee30967..54e82df 100644 --- a/linuxSmartie.service +++ b/linuxSmartie.service @@ -3,7 +3,7 @@ Description=HD44780 display service (linuxSmartie) [Service] Type=simple -ExecStart=%h/git/linuxSmartie/linuxSmartie -d +ExecStart=%h/.local/bin/linuxSmartie Restart=on-failure [Install]