BUILDDIR=builddir
SELINUXDIR=policy
ARTIFACTSDIR=artifacts
CFLAGS=-g -Wextra -Werror
BINARIES=$(BUILDDIR)/manager $(BUILDDIR)/blocked $(BUILDDIR)/partly

ROOT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))

.PHONY: clean build all build-selinux format

clean:
	rm -rf $(BUILDDIR)
	rm -rf $(ARTIFACTSDIR)
	rm -rf ./rpmbuild
	rm -rf ./systemd-control-0.1.0
	rm -rf ./out

build: clean all build-selinux

all: $(BINARIES)

$(BUILDDIR)/%: src/common.c
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) $< -o $@ $$(pkg-config --cflags --libs libsystemd)

build-selinux: all
	mkdir -p systemd-control-0.1.0
	cp -r conf.selcraft.yaml src systemd qm Makefile systemd-control-0.1.0/
	tar czf systemd-control-0.1.0.tar.gz systemd-control-0.1.0
	mkdir -p $(BUILDDIR)/$(SELINUXDIR)/rpmbuild
	rpmbuild -bb systemd-control.spec --define "_topdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild" --define "_sourcedir $(ROOT_DIR)" --define "_rpmdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS"
	rpmbuild -bb systemd-control-qm.spec --define "_topdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild" --define "_sourcedir $(ROOT_DIR)" --define "_rpmdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS"
	mkdir -p $(ARTIFACTSDIR)
	cp $(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS/x86_64/systemd-control-*.rpm $(ARTIFACTSDIR)/
	cp $(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS/x86_64/systemd-control-qm-*.rpm $(ARTIFACTSDIR)/

format:
	find src -name '*.c' -o -name '*.h' | xargs clang-format --sort-includes -i