BUILDDIR=builddir
SELINUXDIR=policy
ARTIFACTSDIR=artifacts
SUBMODULE_DIR=inc_os_autosd
BAZEL ?= bazel

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

build: clean init-submodule build-lola-rpm build-selinux

init-submodule:
	@if [ ! -f "$(SUBMODULE_DIR)/reference_integration/BUILD" ]; then \
		echo "Initializing submodule..."; \
		git submodule update --init --recursive; \
	else \
		echo "Submodule already initalized."; \
	fi

build-lola-rpm: init-submodule
	@echo "Building lola-demo RPM..."
	@if ! command -v $(BAZEL) >/dev/null 2>&1; then \
		echo "Error: bazel not found. Please install bazel:"; \
		echo "See installation instructions in tests/README.md"; \
		exit 1; \
	fi
	cd $(SUBMODULE_DIR)/reference_integration && \
		USE_BAZEL_VERSION=8.3.0 $(BAZEL) build --config=bl-x86_64-linux-autosd //:lola-demo && \
		mkdir -p ../os_images/rpms && \
		cp bazel-out/k8-fastbuild/bin/lola-demo*.rpm ../os_images/rpms/
		
build-selinux:
	mkdir -p lola-shm-policy-selinux-0.1.0
	cp -r conf.selcraft.yaml inc_os_autosd lola-shm-policy-selinux-0.1.0/
	PYTHONPATH=../../../../ python3 -m selcraft.selcraft generate --config=conf.selcraft.yaml
	cp out/* lola-shm-policy-selinux-0.1.0/
	tar czf lola-shm-policy-selinux-0.1.0.tar.gz lola-shm-policy-selinux-0.1.0

	mkdir -p $(BUILDDIR)/$(SELINUXDIR)/rpmbuild

	rpmbuild -bb lola-shm-policy-selinux-host.spec \
		--define "_topdir $(PWD)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild" \
		--define "_sourcedir $(PWD)"
	rpmbuild -bb lola-shm-policy-selinux-qm.spec \
		--define "_topdir $(PWD)/$(BUILDDIR)/$(SELINUXDIR)/rpmbuild" \
		--define "_sourcedir $(PWD)"

	mkdir -p $(ARTIFACTSDIR)
	cp $(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS/x86_64/lola-shm-policy-selinux-host-*.rpm $(ARTIFACTSDIR)/
	cp $(BUILDDIR)/$(SELINUXDIR)/rpmbuild/RPMS/x86_64/lola-shm-policy-selinux-qm-*.rpm $(ARTIFACTSDIR)/
	cp inc_os_autosd/os_images/rpms/lola-demo-*.x86_64.rpm $(ARTIFACTSDIR)/