# where rebar3 stores build output
REBAR_BASE_DIR ?= _build
# config file used by 'run' and 'shell'
CONFIG ?= config/sys.config
# arguments passed to eunit, used by 'check'
EUNIT_ARGS ?=
# directory paths for 'install'
BINDIR ?= /usr/bin
LIBDIR ?= /usr/lib
CONFDIR ?= /etc/osmocom
SYSTEMDUNITDIR ?= /lib/systemd/system

all: build

GEN_FILES = include/diameter_*.hrl src/diameter_*.erl

src/diameter_%.erl include/diameter_%.hrl: dia/diameter_%.asn
	rebar3 diameter compile

build: $(GEN_FILES)
	rebar3 compile

escript: $(GEN_FILES)
	rebar3 escriptize

run-escript: escript
	ERL_FLAGS='-config $(CONFIG)' $(REBAR_BASE_DIR)/default/bin/osmo-epdg

run: build
	ERL_FLAGS='-config config/sys.config' _build/default/bin/osmo-epdg

shell: build
	rebar3 shell --config $(CONFIG)

check: $(GEN_FILES)
	rebar3 eunit $(EUNIT_ARGS)

analyze: $(GEN_FILES)
	rebar3 dialyzer

release: $(GEN_FILES)
	rebar3 release

install: release
	install -d $(DESTDIR)$(LIBDIR)
	cp -r $(REBAR_BASE_DIR)/default/bin/osmo-epdg $(DESTDIR)$(LIBDIR)/
	install -Dm0644 config/sys.config \
		$(DESTDIR)$(CONFDIR)/osmo-epdg.config
	install -Dm0644 contrib/systemd/osmo-epdg.service \
		$(DESTDIR)$(SYSTEMDUNITDIR)/osmo-epdg.service

clean:
# Avoid running rebar3 clean if $(REBAR_BASE_DIR) doesn't exist, since it would try
# to fetch deps from the Internet and that may not be avaialble when in
# OBS build.
ifneq ("$(wildcard $(REBAR_BASE_DIR)/.*)", "")
	rebar3 diameter clean
	rebar3 clean
	rm -rf $(REBAR_BASE_DIR)
else
	rm -f $(GEN_FILES)
endif
