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