INSTALL_PREFIX ?= /usr
DESTDIR ?= $(INSTALL_PREFIX)/share/plasma/desktoptheme/warg
CXX ?= c++
COMPILE_COMMANDS := compile_commands.json
TASK_SVG_TEST := tests/.build/task_svg_test
QT6_CFLAGS ?= $(shell pkg-config --cflags Qt6Core Qt6Gui 2>/dev/null)
QT6_LIBS ?= $(shell pkg-config --libs Qt6Core Qt6Gui 2>/dev/null)
KSVG_CFLAGS ?= -I/usr/include/KF6/KSvg -I/usr/include/KF6/KConfig -I/usr/include/KF6/KConfigCore
KSVG_LIBS ?= -lKF6Svg -lKF6ConfigCore
TASK_SVG_TEST_CFLAGS := -std=c++17 -fPIC $(CXXFLAGS) $(QT6_CFLAGS) $(KSVG_CFLAGS)

SVG_FILES := widgets/tasks.svg
SVGZ_FILES := $(SVG_FILES:.svg=.svgz)

all: $(SVGZ_FILES)

%.svgz: %.svg
	@echo "Compressing $<"
	@gzip -Sz -kf $<

clean:
	@for file in $(SVGZ_FILES); do \
		if [ -f $$file ]; then \
			echo "Removing $$file"; \
			rm -f $$file; \
		fi; \
	done
	@if [ -d tests/.build ]; then \
		echo "Removing tests/.build"; \
		rm -rf tests/.build; \
	fi
	@if [ -f $(COMPILE_COMMANDS) ]; then \
		echo "Removing $(COMPILE_COMMANDS)"; \
		rm -f $(COMPILE_COMMANDS); \
	fi

install: metadata.json plasmarc $(SVGZ_FILES)
	@mkdir -p $(DESTDIR)
	@for file in $^; do \
		echo "Installing $(DESTDIR)/$$file"; \
		install -Dm644 $$file $(DESTDIR)/$$file; \
	done

$(COMPILE_COMMANDS): Makefile tests/task_svg_test.cpp
	@printf '[\n  {\n    "directory": "%s",\n    "command": "%s %s -c %s",\n    "file": "%s"\n  }\n]\n' \
		"$(CURDIR)" \
		"$(CXX)" \
		"$(TASK_SVG_TEST_CFLAGS)" \
		"$(CURDIR)/tests/task_svg_test.cpp" \
		"$(CURDIR)/tests/task_svg_test.cpp" > $@

test: $(COMPILE_COMMANDS) $(SVGZ_FILES) $(TASK_SVG_TEST)
	@QT_QPA_PLATFORM=offscreen $(TASK_SVG_TEST) widgets/tasks.svg widgets/tasks.svgz

$(TASK_SVG_TEST): tests/task_svg_test.cpp
	@mkdir -p $(@D)
	$(CXX) $(TASK_SVG_TEST_CFLAGS) $< -o $@ $(LDFLAGS) $(KSVG_LIBS) $(QT6_LIBS)

.PHONY: all clean install test
