# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.

PROJECT = pageguard
BIN = build/${PROJECT}
DESTDIR =
PREFIX = usr/local

SRC := $(wildcard source/*.d source/*/*.d)

DC = ldc2
PHOBOS_LINKING = dynamic
AMALTHEA_LINKING = dynamic

PHOBOS_OPTS = $(shell ./mh.sh $(DC) phobos_options $(PHOBOS_LINKING))
AMALTHEA_OPTS = $(shell ./mh.sh $(DC) amalthea_options $(AMALTHEA_LINKING))
LINKING_OPTS = $(PHOBOS_OPTS) $(AMALTHEA_OPTS)
RELEASE_OPTS = $(shell ./mh.sh $(DC) release_options)
DEBUG_OPTS = $(shell ./mh.sh $(DC) debug_options)

DOC_DIR = $(shell ./mh.sh $(DC) doc_dir)/$(PROJECT)

OUT=-of
ifeq ($(DC),gdc)
	OUT=-o 
endif

.PHONY: release debug dub install uninstall clean

release: $(SRC)
	mkdir -p build/
	$(DC) $^ $(OUT)$(BIN) $(RELEASE_OPTS) -Jsource $(LINKING_OPTS)

debug: $(SRC)
	mkdir -p build/
	$(DC) $^ $(OUT)$(BIN) $(DEBUG_OPTS) -Jsource $(LINKING_OPTS)

dub:
	dub build --compiler=$(DC) -v --force --parallel


INST_BINDIR      = $(DESTDIR)/$(PREFIX)/bin/
INST_BASHCOMPDIR = $(DESTDIR)/$(PREFIX)/share/bash-completion/completions/
INST_DOCDIR      = $(DESTDIR)/$(PREFIX)/$(DOC_DIR)/
INST_HELPDIR     := $(DESTDIR)/$(PREFIX)/share/help

install:
	mkdir -p "$(INST_BINDIR)" "$(INST_BASHCOMPDIR)"
	mkdir -p "$(INST_DOCDIR)" "$(INST_HELPDIR)"
	install "$(BIN)" "${INST_BINDIR}"
	cp source/bash-completion "$(INST_BASHCOMPDIR)/$(PROJECT)" || true
	cp copyright $(INST_DOCDIR)
	cp -r share/help/* $(INST_HELPDIR)/

INST_HELPDIR_EN := $(INST_HELPDIR)/en_US/$(PROJECT)/
INST_HELPDIR_RU := $(INST_HELPDIR)/ru_RU/$(PROJECT)/
INST_HELPDIR_EO := $(INST_HELPDIR)/eo/$(PROJECT)/

uninstall:
	rm -f $(INST_BINDIR)/$(PROJECT)
	rm -f $(INST_BASHCOMPDIR)/$(PROJECT)
	rm -rf $(INST_DOCDIR)
	rm -rf $(INST_HELPDIR_EN) $(INST_HELPDIR_RU) $(INST_HELPDIR_EO)

clean:
	rm -rf build/
