forked from solo-io/wasm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
122 lines (95 loc) · 3.59 KB
/
Makefile
File metadata and controls
122 lines (95 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#----------------------------------------------------------------------------------
# Base
#----------------------------------------------------------------------------------
OUTDIR?=_output
PROJECT?=wasme
BUILDER_IMAGE?=quay.io/solo-io/ee-builder
SOURCES := $(shell find . -name "*.go" | grep -v test.go | grep -v '\.\#*')
RELEASE := "true"
ifeq ($(TAGGED_VERSION),)
# TAGGED_VERSION := $(shell git describe --tags)
# This doesn't work in CI, need to find another way...
TAGGED_VERSION := vdev
RELEASE := "false"
endif
VERSION ?= $(shell echo $(TAGGED_VERSION) | cut -c 2-)
LDFLAGS := "-X github.com/solo-io/$(PROJECT)/pkg/version.Version=$(VERSION)"
GCFLAGS := all="-N -l"
# Passed by cloudbuild
GCLOUD_PROJECT_ID := $(GCLOUD_PROJECT_ID)
BUILD_ID := $(BUILD_ID)
#----------------------------------------------------------------------------------
# Build
#----------------------------------------------------------------------------------
.PHONY: enable-gomod
enable-gomod:
export GO11MODULE=on
# Build dependencies
.PHONY: generate-deps
generate-deps: enable-gomod
go get -u github.com/cratonica/2goarray
# Generated Static assets for CLI & Docs
.PHONY: generated-code
generated-code: enable-gomod
go generate ./...
.PHONY: wasme
wasme: $(OUTDIR)/wasme
$(OUTDIR)/wasme: $(SOURCES) enable-gomod
go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o $@ main.go
.PHONY: wasme-linux-amd64
wasme-linux-amd64: $(OUTDIR)/wasme-linux-amd64
$(OUTDIR)/wasme-linux-amd64: $(SOURCES) enable-gomod
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o $@ main.go
.PHONY: wasme-darwin-amd64
wasme-darwin-amd64: $(OUTDIR)/wasme-darwin-amd64
$(OUTDIR)/wasme-darwin-amd64: $(SOURCES) enable-gomod
CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o $@ main.go
.PHONY: wasme-windows-amd64
wasme-windows-amd64: $(OUTDIR)/wasme-windows-amd64.exe
$(OUTDIR)/wasme-windows-amd64.exe: $(SOURCES) enable-gomod
CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o $@ main.go
.PHONY: build-cli
build-cli: wasme-linux-amd64 wasme-darwin-amd64 wasme-windows-amd64
.PHONY: install-cli
install-cli: enable-gomod
go build -ldflags=$(LDFLAGS) -gcflags=$(GCFLAGS) -o ${GOPATH}/bin/wasme main.go
# build Builder image
.PHONY: builder-image
builder-image:
cd builder && \
docker build -t $(BUILDER_IMAGE):$(VERSION) .
.PHONY: builder-image-push
builder-image-push:
docker push $(BUILDER_IMAGE):$(VERSION)
#----------------------------------------------------------------------------------
# Release
#----------------------------------------------------------------------------------
# The code does the proper checking for a TAGGED_VERSION
.PHONY: upload-github-release-assets
upload-github-release-assets: build-cli
go run ci/upload_github_release_assets.go
.PHONY: publish-docs
publish-docs:
ifeq ($(RELEASE),"true")
$(MAKE) -C docs docker-push-docs \
VERSION=$(VERSION) \
TAGGED_VERSION=$(TAGGED_VERSION) \
GCLOUD_PROJECT_ID=$(GCLOUD_PROJECT_ID) \
RELEASE=$(RELEASE)
endif
.PHONY: publish-images
publish-images:
ifeq ($(RELEASE),"true")
docker push $(BUILDER_IMAGE):$(VERSION)
endif
#----------------------------------------------------------------------------------
# Clean
#----------------------------------------------------------------------------------
# Important to clean before pushing new releases. Dockerfiles and binaries may not update properly
.PHONY: clean
clean:
rm -rf _output/
rm -rf example/cpp/{bazel-bin,bazel-out,bazel-testlogs,bazel-workspace}
.PHONY: build-example
build-example:
go run main.go build example/cpp