GO_BIN_PATH = bin
GO_SRC_PATH = src
ROOT_PATH = $(shell pwd)
RElEASE_PATH = $(ROOT_PATH)/release

GO_NF = ac

GO_FILES = $(shell find $(GO_SRC_PATH)/$(%) -name "*.go" ! -name "*_test.go")

VERSION = 1.2408.0
COMMIT_HASH = $(shell git log -1 --format=%h)
COMMIT_TIME = $(shell git log --pretty="@%at" -1 | xargs date -u +"%Y-%m-%d %H:%M:%SZ" -d)
LDFLAGS = -X 'ac/internal/version.VERSION=$(VERSION)' \
          -X 'ac/internal/version.COMMIT_HASH=$(COMMIT_HASH)' \
          -X 'ac/internal/version.COMMIT_TIME=$(COMMIT_TIME)'

.PHONY: $(GO_NF) clean

.DEFAULT_GOAL: $(GO_NF)

all: $(GO_NF)

debug: GCFLAGS += -N -l
debug: all

$(GO_NF): % : $(GO_BIN_PATH)/%

$(GO_BIN_PATH)/%: $(GO_FILES)
# $(@F): The file-within-directory part of the file name of the target.
	@echo "Start building $(@F)...."
	cd $(GO_SRC_PATH)/cmd && \
	go build -gcflags "$(GCFLAGS)" -ldflags "$(LDFLAGS)" -o $(ROOT_PATH)/$@ main.go

vpath %.go $(addprefix $(GO_SRC_PATH)/, $(GO_NF))

PKG_NAME = ac-r$(VERSION)-ub22

deb: $(GO_NF)
	@echo "Start building deb package for $(@F)...."
	test -d debian && rm -rf debian/* || mkdir debian
	test -d $(RElEASE_PATH) || mkdir -p $(RElEASE_PATH)
	mkdir -p debian/DEBIAN
	mkdir -p debian/usr/local/bin
	mkdir -p debian/usr/local/etc/ac/default
	mkdir -p debian/lib/systemd/system
	cp $(GO_BIN_PATH)/$(GO_NF) debian/usr/local/bin
	cp config/ac.yaml debian/usr/local/etc/ac/default
	cp scripts/ac.service debian/lib/systemd/system
	cp scripts/postinst debian/DEBIAN
	cp scripts/prerm debian/DEBIAN
	cp scripts/control debian/DEBIAN
	fakeroot dpkg-deb --build debian $(RElEASE_PATH)/$(PKG_NAME).deb

clean:
	rm -rf $(addprefix $(GO_BIN_PATH)/, $(GO_NF))

