notashelf /
b311a0a9693975c3f8ad2fd59d68e924021e667d
chroma
publicLightweight wallpaper daemon for Wayland
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.gitCommit b311a0a96939
tarballunverified1 files changed+23-8
@@ -18,10 +18,13 @@ SYSTEMD_INSTALL = $(HOME)/.config/systemd/user CC = gcc CFLAGS = -std=c11 -Wall -Wextra -Werror -pedantic -O2 -g CFLAGS += -fstack-protector-strong -fstack-clash-protection-CFLAGS += -fno-common -Wshadow -Wstrict-prototypes-CFLAGS += -Wformat=2 -Wnormalized=nfc+CFLAGS += -fno-common -Wconversion -Wshadow -Wstrict-prototypes+CFLAGS += -Wdouble-promotion -Wformat=2 -Wnormalized=nfc CFLAGS += -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -DCHROMA_VERSION=\"$(VERSION)\" +# Include path for generated headers+CPPFLAGS = -I$(INCDIR) -I$(INCDIR)/vendor -isystem $(INCDIR)/vendor+ # Debug build flags DEBUG_CFLAGS = -std=c11 -Wall -Wextra -Werror -pedantic -Og -g3 -DDEBUG DEBUG_CFLAGS += -D_GNU_SOURCE -DCHROMA_VERSION=\"$(VERSION)-debug\"@@ -46,6 +49,10 @@ SOURCES = $(filter-out $(PROTOCOL_SOURCES), $(wildcard $(SRCDIR)/*.c)) OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o) $(PROTOCOL_OBJECTS) DEPENDS = $(OBJECTS:.o=.d) +# Override object files for image.c and render.c to suppress third-party warnings+OBJECTS := $(filter-out $(OBJDIR)/image.o $(OBJDIR)/render.o,$(OBJECTS))+OBJECTS += $(OBJDIR)/image.o $(OBJDIR)/render.o+ # Default target TARGET = $(BINDIR)/$(PROJECT_NAME) all: $(TARGET)@@ -78,7 +85,15 @@ $(TARGET): version-header $(PROTOCOL_HEADERS) $(OBJECTS) | $(BINDIR) # Compile source files $(OBJDIR)/%.o: $(SRCDIR)/%.c $(PROTOCOL_HEADERS) | $(OBJDIR) @echo " CC $<"- @$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@+ @$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -Wno-error -c $< -o $@++$(OBJDIR)/image.o: $(SRCDIR)/image.c $(PROTOCOL_HEADERS) | $(OBJDIR)+ @echo " CC $<"+ @$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion -MMD -MP -Wno-error -c $< -o $@++$(OBJDIR)/render.o: $(SRCDIR)/render.c $(PROTOCOL_HEADERS) | $(OBJDIR)+ @echo " CC $<"+ @$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion -MMD -MP -Wno-error -c $< -o $@ # Debug build debug: CFLAGS = $(DEBUG_CFLAGS)@@ -138,7 +153,7 @@ clean: # Format source code (requires clang-format) format: @echo "Formatting source code..."- @find $(SRCDIR) -name "*.c" -o -name "*.h" | xargs clang-format -i+ @find $(SRCDIR) -name "*.c" -o -name "*.h" | grep -v '/vendor/' | xargs clang-format -i # Static analysis (requires cppcheck) analyze:@@ -153,28 +168,28 @@ analyze: test: $(TARGET) @echo "Running unit tests..." @$(CC) -o bin/test tests/test.c lib/test_common.c \- -I./include -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS)+ -I./include -I./include/vendor -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion @./bin/test # Run benchmarks bench: @echo "Running performance benchmarks..." @$(CC) -o bin/bench benchmarks/bench.c lib/test_common.c \- -I./include -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS)+ -I./include -I./include/vendor -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion @./bin/bench # Memory analysis tests test-memory: @echo "Building memory tests..." @$(CC) -o bin/test tests/test.c lib/test_common.c \- -I./include -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS)+ -I./include -I./include/vendor -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion @valgrind --leak-check=full --show-leak-kinds=all ./bin/test 2>&1 | tee tests/memory_report.txt @echo "Analysis complete. See tests/memory_report.txt" # Generate memory profile CSVs profile-memory: @$(CC) -o bin/test tests/test.c lib/test_common.c \- -I./include -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS)+ -I./include -I./include/vendor -I./tests -I./tests/util -lm -std=c11 -D_GNU_SOURCE $(CFLAGS) -Wno-sign-conversion -Wno-double-promotion -Wno-conversion @./bin/test --profile @echo "CSV files generated in /tmp/"