|
| 1 | +.PHONY: help |
| 2 | +help: |
| 3 | + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-18s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) |
| 4 | + |
| 5 | +# |
| 6 | +# If you want to see the full commands, run: |
| 7 | +# NOISY_BUILD=y make |
| 8 | +# |
| 9 | +ifeq ($(NOISY_BUILD),) |
| 10 | + ECHO_PREFIX=@ |
| 11 | + CMD_PREFIX=@ |
| 12 | +else |
| 13 | + ECHO_PREFIX=@\# |
| 14 | + CMD_PREFIX= |
| 15 | +endif |
| 16 | + |
| 17 | +# Pinned container image tags. Check for updates periodically. |
| 18 | + |
| 19 | +APISERVER_VERSION?=$(shell date +%Y.%m.%d) |
| 20 | +APISERVER_RELEASE?=$(shell git describe --always --abbrev=6 --exclude qa --exclude prod) |
| 21 | +APISERVER_GCFLAGS?= |
| 22 | + |
| 23 | +APISERVER_BUILD_PROFILE?=dev |
| 24 | +APISERVER_LDFLAGS:=$(APISERVER_LDFLAGS) -X main.Version=$(APISERVER_VERSION)-$(APISERVER_RELEASE) |
| 25 | + |
| 26 | +CGO_ENABLED?=0 |
| 27 | +ifeq ($(APISERVER_RACE_DETECTOR),1) |
| 28 | + CGO_ENABLED=1 |
| 29 | + APISERVER_BUILD_FLAGS+=-race |
| 30 | +endif |
| 31 | +ifneq ($(APISERVER_BUILD_TAGS),) |
| 32 | + APISERVER_BUILD_FLAGS+=-tags $(APISERVER_BUILD_TAGS) |
| 33 | +endif |
| 34 | +ifeq ($(CGO_ENABLED),0) |
| 35 | + APISERVER_LDFLAGS+=-extldflags=-static |
| 36 | +endif |
| 37 | + |
| 38 | + |
| 39 | +# Crunchy DB operator does not work well on arm64, use an different overlay to work around it. |
| 40 | +UNAME_M := $(shell uname -m) |
| 41 | +ifeq ($(UNAME_M),arm64) |
| 42 | + OVERLAY?=arm64 |
| 43 | +else |
| 44 | + OVERLAY?=dev |
| 45 | +endif |
| 46 | + |
| 47 | +##@ Binaries |
| 48 | + |
| 49 | +.PHONY: apiserver |
| 50 | +apiserver: dist/apiserver dist/apiserver-linux-arm64 dist/apiserver-linux-amd64 dist/apiserver-darwin-amd64 dist/apiserver-darwin-arm64 ## Build Instructlab UI API server |
| 51 | + |
| 52 | +# Use go list to find all the go files that make up a binary. |
| 53 | +APISERVER_DEPS:= $(shell go list -deps -f '{{if (and .Module (eq .Module.Path "github.com/instructlab/ui/api-server"))}}{{$$dir := .Dir}}{{range .GoFiles}}{{$$dir}}/{{.}} {{end}}{{end}}' ./) |
| 54 | + |
| 55 | +TAG=$(shell git rev-parse HEAD) |
| 56 | + |
| 57 | +dist: |
| 58 | + $(CMD_PREFIX) mkdir -p $@ |
| 59 | + |
| 60 | +dist/apiserver: $(APISERVER_DEPS) | dist |
| 61 | + $(ECHO_PREFIX) printf " %-12s $@\n" "[GO BUILD]" |
| 62 | + $(CMD_PREFIX) CGO_ENABLED=$(CGO_ENABLED) go build $(APISERVER_BUILD_FLAGS) \ |
| 63 | + -gcflags="$(APISERVER_GCFLAGS)" -ldflags="$(APISERVER_LDFLAGS)" -o $@ ./ |
| 64 | + |
| 65 | +dist/apiserver-%: $(APISERVER_DEPS) | dist |
| 66 | + $(ECHO_PREFIX) printf " %-12s $@\n" "[GO BUILD]" |
| 67 | + $(CMD_PREFIX) CGO_ENABLED=$(CGO_ENABLED) GOOS=$(word 2,$(subst -, ,$(basename $@))) GOARCH=$(word 3,$(subst -, ,$(basename $@))) \ |
| 68 | + go build $(APISERVER_BUILD_FLAGS) -gcflags="$(APISERVER_GCFLAGS)" \ |
| 69 | + -ldflags="$(APISERVER_LDFLAGS)" -o $@ ./ |
| 70 | +dist/packages: \ |
| 71 | + dist/packages/apiserver-linux-amd64.tar.gz \ |
| 72 | + dist/packages/apiserver-linux-arm64.tar.gz \ |
| 73 | + dist/packages/apiserver-darwin-amd64.tar.gz \ |
| 74 | + dist/packages/apiserver-darwin-arm64.tar.gz \ |
| 75 | + |
| 76 | +dist/packages/%: apiserver |
| 77 | + $(CMD_PREFIX) mkdir -p $(basename $(basename $@)) |
| 78 | + $(CMD_PREFIX) cp README.md $(basename $(basename $@)) |
| 79 | + $(CMD_PREFIX) cp dist/apiserver-$(subst apiserver-,,$(basename $(basename $(@F))))$(if $(findstring windows,$@),.exe) $(basename $(basename $@))/ilab-apiserver$(if $(findstring windows,$@),.exe) |
| 80 | + $(CMD_PREFIX) if test "$(word 2,$(subst -, ,$(shell basename $@)))" = "windows" ; then \ |
| 81 | + printf " %-12s dist/packages/$(@F)\n" "[ZIP]" ;\ |
| 82 | + cd dist/packages && zip -q9r $(@F) $(basename $(basename $(@F))) ;\ |
| 83 | + else \ |
| 84 | + printf " %-12s dist/packages/$(@F)\n" "[TAR]" ;\ |
| 85 | + cd dist/packages && tar -czf $(@F) $(basename $(basename $(@F))) ;\ |
| 86 | + fi |
| 87 | + |
| 88 | +.PHONY: clean |
| 89 | +clean: ## clean built binaries |
| 90 | + $(CMD_PREFIX) rm -rf dist |
0 commit comments