include sdk.mk

# GNU CODING STANDARDS
prefix ?= /usr/local
exec_prefix ?= $(prefix)
bindir ?= $(exec_prefix)/bin
sbindir ?= $(exec_prefix)/sbin
libdir ?= $(exec_prefix)/lib
libexecdir ?= $(exec_prefix)/libexec
sysconfdir ?= $(prefix)/etc
srcdir ?= $(prefix)/src
datarootdir ?= $(prefix)/share

# UTILITIES
# Install to a target directory without executable bit
INSTALL=install -m644 -D --target-directory
# Always try copy-on-write
COPY=cp --reflink=auto

BUILD_BASE ?= $(SDK_BUILD_BASE)/$(shell basename $(SDK_SRC_BASE))

all:
	mkdir -p $(BUILD_BASE)$(sysconfdir) $(BUILD_BASE)$(bindir) $(BUILD_BASE)$(sbindir) $(BUILD_BASE)$(libdir) $(BUILD_BASE)$(libexecdir) $(BUILD_BASE)$(datarootdir)
	$(COPY) -r etc/* $(BUILD_BASE)$(sysconfdir)
	$(COPY) -r bin/* $(BUILD_BASE)$(bindir)
	$(COPY) -r sbin/* $(BUILD_BASE)$(sbindir)
	$(COPY) -r lib/* $(BUILD_BASE)$(libdir)
	$(COPY) -r libexec/* $(BUILD_BASE)$(libexecdir)
	$(COPY) -r share/* $(BUILD_BASE)$(datarootdir)
	sed -i 's|/usr/local/etc|$(sysconfdir)|g' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service
	sed -i 's|/usr/local/share|$(datarootdir)|g' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service
	
	sed -i 's|/usr/local/share|$(datarootdir)|g' $(BUILD_BASE)$(bindir)/*
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(bindir)/*
	
	sed -i 's|/usr/local/share|$(datarootdir)|g' $(BUILD_BASE)$(sbindir)/*
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(sbindir)/*

	sed -i 's|/usr/local/share|$(datarootdir)|g' $(BUILD_BASE)$(sysconfdir)/default/*
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(sysconfdir)/default/*
		
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(libdir)/sysj/jvm.args

# sbin
#	$(MAKE) -C sjbin all
	sed -i 's|/usr/local/share|$(datarootdir)|g' $(BUILD_BASE)$(sbindir)/*
	sed -i 's|/usr/local/lib|$(libdir)|g' $(BUILD_BASE)$(sbindir)/*

clean:
	$(RM) -r $(BUILD_BASE)
#	$(MAKE) -C sjbin clean

distclean: clean

install:
	mkdir -p $(DESTDIR)$(sysconfdir) $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(libexecdir) $(DESTDIR)$(datarootdir)
# TODO use install and wildcard ?
	$(COPY) -v -r --no-clobber $(BUILD_BASE)$(sysconfdir)/* $(DESTDIR)$(sysconfdir)
	$(COPY) -v -r $(BUILD_BASE)$(libdir)/* $(DESTDIR)$(libdir)
	install -m755 -D --target-directory $(DESTDIR)$(bindir) $(BUILD_BASE)$(bindir)/* 
	install -m755 -D --target-directory $(DESTDIR)$(sbindir) $(BUILD_BASE)$(sbindir)/*
	install -m755 -D --target-directory $(DESTDIR)$(libexecdir)/ipsec $(BUILD_BASE)$(libexecdir)/ipsec/*
	$(COPY) -v -r $(BUILD_BASE)$(datarootdir)/* $(DESTDIR)$(datarootdir)
#	systemctl daemon-reload

uninstall:  ## Uninstall FREEd
# TODO fix warning when directory does not exist
	$(foreach f, $(shell cd $(BUILD_BASE)$(bindir) && find . -type f), $(RM) $(DESTDIR)$(bindir)/$(f);)
	$(foreach f, $(shell cd $(BUILD_BASE)$(libdir) && find . -type f), $(RM) $(DESTDIR)$(libdir)/$(f);)
	$(foreach f, $(shell cd $(BUILD_BASE)$(libexecdir) && find . -type f), $(RM) $(DESTDIR)$(libexecdir)/$(f);)
	$(foreach f, $(shell cd $(BUILD_BASE)$(datarootdir) && find . -type f), $(RM) $(DESTDIR)$(datarootdir)/$(f);)
# Remove emtpy directories
# No need to delete $(bindir) subdirectories
	-$(foreach d, $(shell cd $(BUILD_BASE)$(libdir) && find . -mindepth 1 -type d | sort -r), $(RM) -d $(abspath $(DESTDIR)$(libdir)/$(d));)
	-$(foreach d, $(shell cd $(BUILD_BASE)$(libexecdir) && find . -mindepth 1 -type d | sort -r), $(RM) -d $(abspath $(DESTDIR)$(libexecdir)/$(d));)
	-$(foreach d, $(shell cd $(BUILD_BASE)$(datarootdir) && find . -mindepth 1 -type d | sort -r), $(RM) -d $(abspath $(DESTDIR)$(datarootdir)/$(d));)

purge: uninstall	
	$(foreach f, $(shell cd $(BUILD_BASE)$(sysconfdir) && find . -type f), $(RM) $(DESTDIR)$(sysconfdir)/$(f);)
# Remove emtpy directories
	-$(foreach d, $(shell cd $(BUILD_BASE)$(sysconfdir) && find . -mindepth 1 -type d | sort -r), $(RM) -d $(abspath $(DESTDIR)$(sysconfdir)/$(d));)

help:     ## Show this help.
	@sed -ne '/@sed/!s/## //p' $(MAKEFILE_LIST)
