11# A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
22
3+ ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST ) ) ) )
4+
35# Docker-local svix secret, only used for testing
46SVIX_JWT_SECRET = DUMMY_JWT_SECRET
57
@@ -107,29 +109,38 @@ build-dir:
107109.PHONY : build
108110build : build-server build-sink-worker build-benthos-collector build-balance-worker build-billing-worker build-notification-service build-jobs # # Build all binaries
109111
112+ COLLECTOR_DIR := $(ROOT_DIR ) /collector
113+ COLLECTOR_RELEASE_OUTPUT_DIR := $(ROOT_DIR ) /build/release/benthos-collector_$(GOOS ) _$(GOARCH )
114+
115+ collector-release-output-dir :
116+ $(if $(GOOS ) ,,$(error GOOS is not set) )
117+ $(if $(GOARCH ) ,,$(error GOARCH is not set) )
118+ @mkdir -p $(COLLECTOR_RELEASE_OUTPUT_DIR )
119+
110120# Cross-compile the benthos-collector binary for release archives.
111121# Usage: make build-benthos-collector-release GOOS=linux GOARCH=amd64 VERSION=v1.2.3
112122# Produces build/release/benthos-collector_<GOOS>_<GOARCH>/benthos (+ README.md, LICENSE)
113123.PHONY : build-benthos-collector-release
114- build-benthos-collector-release : # # Cross-compile benthos-collector for release (set GOOS/GOARCH/VERSION)
124+ build-benthos-collector-release : | collector-release-output-dir # # Cross-compile benthos-collector for release (set GOOS/GOARCH/VERSION)
115125 $(call print-target)
116- @if [ -z " $( GOOS) " ] || [ -z " $( GOARCH) " ]; then echo " ERROR: GOOS and GOARCH are required" ; exit 1; fi
117- @version=" $$ {VERSION:-unknown}" && \
118- outdir=" build/release/benthos-collector_$( GOOS) _$( GOARCH) " && \
119- rm -rf " $$ outdir" && mkdir -p " $$ outdir" && \
126+ $(if $(GOOS ) ,,$(error GOOS is not set) )
127+ $(if $(GOARCH ) ,,$(error GOARCH is not set) )
128+ @rm -rf " $( COLLECTOR_RELEASE_OUTPUT_DIR) " /* && \
120129 CGO_ENABLED=0 GOOS=$(GOOS ) GOARCH=$(GOARCH ) \
121- go build -trimpath \
122- -ldflags " -s -w -X main.version=$$ {version}" \
123- -o " $$ outdir/benthos" ./cmd/benthos-collector && \
124- cp README.md LICENSE " $$ outdir/"
130+ go build -C $(COLLECTOR_DIR ) -trimpath \
131+ -ldflags " -s -w -X main.version=$( or $( VERSION) ,unknown) " \
132+ -o " $( COLLECTOR_RELEASE_OUTPUT_DIR) /benthos" ./cmd && \
133+ cp README.md LICENSE " $( COLLECTOR_RELEASE_OUTPUT_DIR) /"
134+
135+ COLLECTOR_RELEASE_NAME := benthos-collector_$(GOOS ) _$(GOARCH )
125136
126137# Produces build/release/benthos-collector_<GOOS>_<GOARCH>.tar.gz from the directory above.
127138.PHONY : archive-benthos-collector-release
128139archive-benthos-collector-release : # # Archive the cross-compiled benthos-collector (set GOOS/GOARCH)
129140 $(call print-target)
130- @ if [ -z " $( GOOS) " ] || [ -z " $( GOARCH ) " ] ; then echo " ERROR: GOOS and GOARCH are required " ; exit 1 ; fi
131- @name= " benthos-collector_ $( GOOS ) _ $( GOARCH) " && \
132- tar -C build/release -czf " build/release/$$ {name} .tar.gz" " $$ name "
141+ $( if $(GOOS ) ,, $( error GOOS is not set) )
142+ $( if $(GOARCH ) ,, $( error GOARCH is not set) )
143+ @ tar -C build/release -czf " build/release/$( COLLECTOR_RELEASE_NAME ) .tar.gz" " $( COLLECTOR_RELEASE_NAME ) "
133144
134145.PHONY : build-server
135146build-server : | build-dir # # Build server binary
@@ -144,7 +155,7 @@ build-sink-worker: | build-dir ## Build sink-worker binary
144155.PHONY : build-benthos-collector
145156build-benthos-collector : | build-dir # # Build benthos collector binary
146157 $(call print-target)
147- go build -o build/benthos-collector ${GO_BUILD_FLAGS} ./cmd/benthos-collector
158+ go build -C $( COLLECTOR_DIR ) -o ../ build/benthos-collector ${GO_BUILD_FLAGS} ./cmd
148159
149160.PHONY : build-balance-worker
150161build-balance-worker : | build-dir # # Build balance-worker binary
0 commit comments