config: drop custom INI parser; migrate to TOML configurations

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6eabda96988b987d7397d6fc3cd47f2f6a6a6964
This commit is contained in:
raf 2026-04-21 17:25:16 +03:00
commit 40227627c1
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
2 changed files with 209 additions and 390 deletions

View file

@ -1,5 +1,5 @@
PROJECT_NAME = chroma
VERSION = 1.1.0
VERSION = 2.0.0
# Directories
SRCDIR = src
@ -14,6 +14,9 @@ PREFIX ?= /usr/local
BINDIR_INSTALL = $(PREFIX)/bin
SYSTEMD_INSTALL = $(HOME)/.config/systemd/user
# Config file
CONFIG_FILE_NAME = chroma.toml
# Compiler and flags
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -Werror -pedantic -O2 -g
@ -46,8 +49,11 @@ LDFLAGS += -lm -ldl
# Source files (excluding generated protocol files)
SOURCES = $(filter-out $(PROTOCOL_SOURCES), $(wildcard $(SRCDIR)/*.c))
VENDOR_SOURCES = $(INCDIR)/vendor/tomlc17.c
OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o) $(PROTOCOL_OBJECTS)
DEPENDS = $(OBJECTS:.o=.d)
VENDOR_OBJECTS = $(VENDOR_SOURCES:$(INCDIR)/vendor/%.c=$(OBJDIR)/%.o)
ALL_OBJECTS = $(OBJECTS) $(VENDOR_OBJECTS)
DEPENDS = $(ALL_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))
@ -78,9 +84,9 @@ $(INCDIR):
@mkdir -p $(INCDIR)
# Build main executable
$(TARGET): version-header $(PROTOCOL_HEADERS) $(OBJECTS) | $(BINDIR)
$(TARGET): version-header $(PROTOCOL_HEADERS) $(ALL_OBJECTS) | $(BINDIR)
@echo " LINK $@"
@$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
@$(CC) $(ALL_OBJECTS) -o $@ $(LDFLAGS)
# Compile source files
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(PROTOCOL_HEADERS) | $(OBJDIR)
@ -95,6 +101,11 @@ $(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 $@
# Compile vendor files
$(OBJDIR)/%.o: $(INCDIR)/vendor/%.c | $(OBJDIR)
@echo " CC $<"
@$(CC) $(CPPFLAGS) $(CFLAGS) -w -MMD -MP -c $< -o $@
# Debug build
debug: CFLAGS = $(DEBUG_CFLAGS)
debug: $(TARGET)
@ -145,7 +156,7 @@ systemd-service: $(SYSTEMD_DIR)/$(PROJECT_NAME).service
# Create sample configuration file
sample-config:
@echo "Creating sample configuration..."
@cp chroma.conf.sample $(CONFIG_FILE_NAME)
@cp chroma.toml.sample $(CONFIG_FILE_NAME)
@echo "Sample configuration created at $(CONFIG_FILE_NAME)"
# Clean build artifacts