brewery
notashelf /
b311a0a9693975c3f8ad2fd59d68e924021e667d

chroma

public

Lightweight wallpaper daemon for Wayland

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.git

Commit b311a0a96939

tarball

NotAShelf <raf@notashelf.dev> · 2026-04-16 18:06 UTC

unverified1 files changed+23-8
build: add `-Wconversion` and `-Wdouble-promotion` to default flags

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I92e454f97d628a7b8ada8dc85ec458376a6a6964
diff --git a/Makefile b/Makefileindex 9b83593..2041d3e 100644--- a/Makefile+++ b/Makefile@@ -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/"