APPNAME=echo-uds-0.1.0
BUILDDIR=builddir
SELINUXDIR=policy
ARTIFACTSDIR=artifacts
CFLAGS=-g -Wextra -Werror

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

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

build: clean \
	build-server-h2h-system \
	build-client-h2h-system \
	build-server-q2q-system \
	build-client-q2q-system \
	build-restricted-client-h2h-system \
	build-selinux

build-server-h2h-system:
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) src/server-h2h-system.c -o $(BUILDDIR)/server-h2h-system $$(pkg-config --cflags --libs libsystemd)

build-client-h2h-system:
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) src/client-h2h-system.c -o $(BUILDDIR)/client-h2h-system $$(pkg-config --cflags --libs libsystemd)

build-restricted-client-h2h-system:
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) src/restricted-client-h2h-system.c -o $(BUILDDIR)/restricted-client-h2h-system $$(pkg-config --cflags --libs libsystemd)

build-server-q2q-system:
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) src/server-q2q-system.c -o $(BUILDDIR)/server-q2q-system $$(pkg-config --cflags --libs libsystemd)

build-client-q2q-system:
	mkdir -p $(BUILDDIR)
	gcc $(CFLAGS) src/client-q2q-system.c -o $(BUILDDIR)/client-q2q-system $$(pkg-config --cflags --libs libsystemd)

build-selinux: build-server-h2h-system build-client-h2h-system build-server-q2q-system build-client-q2q-system build-restricted-client-h2h-system
	mkdir -p dbus-test-0.1.0
	cp -r conf.selcraft.yaml src systemd qm Makefile dbus-test-0.1.0/
	tar czf dbus-test-0.1.0.tar.gz dbus-test-0.1.0
	mkdir -p $(BUILDDIR)/$(SELINUXDIR)/rpmbuild
	rpmbuild -bb dbus-test.spec --define "_topdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild" --define "_sourcedir $(ROOT_DIR)" --define "_rpmdir $(ROOT_DIR)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS"
	rpmbuild -bb dbus-test-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/dbus-test-*.rpm $(ARTIFACTSDIR)/
	cp $(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS/x86_64/dbus-test-qm-*.rpm $(ARTIFACTSDIR)/

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