1SHELL:=/bin/bash
2ENGINE_DIR:=$(CURDIR)/../engine
3CLI_DIR:=$(CURDIR)/../cli
4VERSION?=0.0.0-dev
5DOCKER_GITCOMMIT:=abcdefg
6ARCH=$(shell uname -m)
7STATIC_VERSION=$(shell static/gen-static-ver $(ENGINE_DIR) $(VERSION))
8GO_VERSION:=1.10.8
9DEFAULT_PRODUCT_LICENSE:=Community Engine
10PLATFORM=Docker Engine - Community
11BUILDTIME=$(shell date -u -d "@$${SOURCE_DATE_EPOCH:-$$(date +%s)}" --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
12export DEFAULT_PRODUCT_LICENSE
13export PLATFORM
14export BUILDTIME
15
16# Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable
17print-%  : ; @echo $($*)
18
19.PHONY: help
20help: ## show make targets
21	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m  %s\n", $$1, $$2}' $(MAKEFILE_LIST)
22
23.PHONY: clean-engine
24clean-engine:
25	rm -rf $(ENGINE_DIR)
26
27.PHONY: clean-image
28clean-image:
29	$(MAKE) ENGINE_DIR=$(ENGINE_DIR) -C image clean
30
31
32.PHONY: clean
33clean: clean-image ## remove build artifacts
34	$(MAKE) -C rpm clean
35	$(MAKE) -C deb clean
36	$(MAKE) -C static clean
37
38.PHONY: rpm
39rpm: DOCKER_BUILD_PKGS:=$(shell find rpm -type d | grep ".*-.*" | sed 's/^rpm\///')
40rpm: ## build rpm packages
41	for p in $(DOCKER_BUILD_PKGS); do \
42		$(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) GO_VERSION=$(GO_VERSION) $${p}; \
43	done
44
45.PHONY: deb
46deb: DOCKER_BUILD_PKGS:=$(shell find deb -type d | grep ".*-.*" | sed 's/^deb\///')
47deb: ## build deb packages
48	for p in $(DOCKER_BUILD_PKGS); do \
49		$(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) GO_VERSION=$(GO_VERSION) $${p}; \
50	done
51
52.PHONY: static
53static: DOCKER_BUILD_PKGS:=static-linux cross-mac cross-win cross-arm
54static: ## build static-compiled packages
55	for p in $(DOCKER_BUILD_PKGS); do \
56		$(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) GO_VERSION=$(GO_VERSION) $${p}; \
57	done
58
59# TODO - figure out multi-arch
60.PHONY: image
61image: DOCKER_BUILD_PKGS:=image-linux
62image: ## build static-compiled packages
63	for p in $(DOCKER_BUILD_PKGS); do \
64		$(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) GO_VERSION=$(GO_VERSION) $${p}; \
65	done
66
67engine-$(ARCH).tar:
68	$(MAKE) -C image $@
69
70.PHONY: release
71release:
72	$(MAKE) -C image $@
73