include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/pkg-info.mk

include defines.mk

GITVERSION:=$(shell git rev-parse HEAD)

SUBDIRS := etc

ifeq ($(BUILD_MODE), release)
CARGO_BUILD_ARGS += --release
COMPILEDIR := target/release
else
COMPILEDIR := target/debug
endif

SERVICE_BIN := pve-lxc-syscalld

COMPILED_BINS := \
	$(addprefix $(COMPILEDIR)/,$(SERVICE_BIN))

DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb
DSC=$(PACKAGE)_$(DEB_VERSION).dsc

BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)

all: cargo-build $(SUBDIRS)

.PHONY: $(SUBDIRS)
$(SUBDIRS):
	$(MAKE) -C $@

.PHONY: cargo-build
cargo-build:
	cargo build $(CARGO_BUILD_ARGS)

.PHONY: test
test:
	cargo test $(CARGO_BUILD_ARGS)

.PHONY: check
check: test

$(COMPILED_BINS): cargo-build

install: $(COMPILED_BINS)
	install -dm755 $(DESTDIR)$(LIBEXECDIR)/pve-lxc-syscalld
	$(foreach i,$(SERVICE_BIN), \
	    install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/pve-lxc-syscalld/ ;)

$(BUILDDIR): src debian etc Cargo.toml
	rm -rf $(BUILDDIR) $(BUILDDIR).tmp
	mkdir $(BUILDDIR).tmp
	#mkdir $(BUILDDIR).tmp/.cargo
	cp -a -t $(BUILDDIR).tmp $^ Makefile defines.mk
	#cp -a -t $(BUILDDIR).tmp/.cargo .cargo/config
	echo "git clone git://git.proxmox.com/git/pve-lxc-syscalld.git\\ngit checkout $(shell git rev-parse HEAD)" > $(BUILDDIR).tmp/debian/SOURCE
	mv $(BUILDDIR).tmp $(BUILDDIR)

.PHONY: deb
deb: $(DEB)
$(DEB): $(BUILDDIR)
	cd $(BUILDDIR); dpkg-buildpackage -b -us -uc
	lintian $(DEB)

.PHONY: dsc
dsc: $(DSC)
$(DSC): $(BUILDDIR)
	cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d
	lintian $(DSC)

sbuild: $(DSC)
	sbuild $(DSC)

.PHONY: upload
upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
upload: $(DEB)
	dcmd --deb pve-lxc-syscalld_*.changes \
	    | grep -v '.changes$$' \
	    | tar -cf- -T- \
	    | ssh -X repoman@repo.proxmox.com upload --product pve --dist $(UPLOAD_DIST)

.PHONY: dinstall
dinstall:
	$(MAKE) deb
	sudo -k dpkg -i $(DEB)

clean:
	$(foreach i,$(SUBDIRS), \
	    $(MAKE) -C $(i) clean ;)
	rm -rf ./target
	rm -rf ./$(BUILDDIR)
	rm -f -- *.deb *.dsc *.tar.?z *.buildinfo *.build *.changes
