APPNAME=echo-uds-container
VERSION=0.1.0
BUILDDIR=builddir
SELINUXDIR=policy
ARTIFACTSDIR=artifacts

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

clean:
	rm -rf $(BUILDDIR)
	rm -rf $(ARTIFACTSDIR)
	rm -rf ./rpmbuild
	rm -rf ./$(APPNAME)-$(VERSION)

build-artifacts: clean build-server build-client build-selinux

build-policy-only: clean build-selinux

build-rpm: build-policy-only
	mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
	mkdir -p $(APPNAME)-$(VERSION)
	cp -r src Makefile conf.selcraft.yaml systemd qm containers $(APPNAME).spec $(APPNAME)-qm.spec $(APPNAME)-$(VERSION)/
	tar czf rpmbuild/SOURCES/$(APPNAME)-$(VERSION).tar.gz $(APPNAME)-$(VERSION)
	cp $(APPNAME).spec $(APPNAME)-qm.spec rpmbuild/SPECS/
	rpmbuild --define "_topdir $(ROOT_DIR)/rpmbuild" -ba rpmbuild/SPECS/$(APPNAME).spec
	rpmbuild --define "_topdir $(ROOT_DIR)/rpmbuild" -ba rpmbuild/SPECS/$(APPNAME)-qm.spec
	mkdir -p $(ARTIFACTSDIR)
	cp rpmbuild/RPMS/*/*.rpm $(ARTIFACTSDIR)/
	@echo "RPM created in $(ARTIFACTSDIR)/"

build: build-rpm

build-server:
	mkdir -p $(BUILDDIR)
	gcc -g -Wextra -Werror src/echo-uds-server.c -o $(BUILDDIR)/echo-uds-server

build-client:
	mkdir -p $(BUILDDIR)
	gcc -g -Wextra -Werror src/echo-uds-client.c -o $(BUILDDIR)/echo-uds-client

build-selinux:
	mkdir -p $(BUILDDIR)/$(SELINUXDIR)
	PYTHONPATH=../../../../ python3 -m selcraft.selcraft generate --config=conf.selcraft.yaml
	cp out/* $(BUILDDIR)/$(SELINUXDIR)
	cd $(BUILDDIR)/$(SELINUXDIR) && make build

format:
	clang-format --sort-includes -i src/echo-uds-server.c
	clang-format --sort-includes -i src/echo-uds-client.c
	clang-format --sort-includes -i src/common.h
