Skip to content

Commit

Permalink
Use docker image to build binary for different platforms
Browse files Browse the repository at this point in the history
  • Loading branch information
alphanota committed Jan 14, 2025
1 parent fb14be6 commit 902fd12
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
GOVERSION ?= 1.23.4
GOPATH ?= $(shell go env GOPATH)
GOBIN ?= $(or $(shell go env GOBIN),$(GOPATH)/bin)
GOOS ?= $(shell go env GOOS)
Expand Down Expand Up @@ -93,12 +94,33 @@ install: $(BUILD_DIR)/$(PROJECT)
.PHONY: cross
cross: $(foreach platform, $(SUPPORTED_PLATFORMS), $(BUILD_DIR)/$(PROJECT)-$(platform))

$(BUILD_DIR)/$(PROJECT)-%: $(EMBEDDED_FILES_CHECK) $(GO_FILES) $(BUILD_DIR)
.PHONY $(BUILD_DIR)/$(PROJECT)-%:
$(BUILD_DIR)/$(PROJECT)-%:
$(eval os = $(firstword $(subst -, ,$*)))
$(eval goarch = $(lastword $(subst -, ,$(subst .exe,,$*))))
$(eval image_platform = $(shell \
if [[ $(os) == "darwin" ]]; then \
echo darwin-arm64; \
elif [[ $(goarch) == "arm64" ]]; then \
echo arm; \
else \
echo main; \
fi \
))
@echo $(image_platform)
docker run --rm \
-v $(CURDIR):/skaffold \
-w /skaffold \
docker.elastic.co/beats-dev/golang-crossbuild:$(GOVERSION)-$(image_platform)-debian12 \
-p="$(os)/$(goarch)" \
--build-cmd="git config --global --add safe.directory /skaffold;make ./out/docker-skaffold-$(os)-$(goarch)"

$(BUILD_DIR)/docker-$(PROJECT)-%: $(EMBEDDED_FILES_CHECK) $(GO_FILES) $(BUILD_DIR)
$(eval os = $(firstword $(subst -, ,$*)))
$(eval arch = $(lastword $(subst -, ,$(subst .exe,,$*))))
$(eval ldflags = $(GO_LDFLAGS) $(patsubst %,-extldflags \"%\",$(LDFLAGS_$(os))))
$(eval tags = $(GO_BUILD_TAGS) $(GO_BUILD_TAGS_$(os)) $(GO_BUILD_TAGS_$(os)_$(arch)))
GOOS=$(os) GOARCH=$(arch) CGO_ENABLED=1 go build -mod="vendor" -tags "$(tags)" -ldflags "$(ldflags)" -o $@ ./cmd/skaffold
CGO_ENABLED=1 go build -mod="vendor" -tags "$(tags)" -ldflags "$(ldflags)" -o $@ ./cmd/skaffold
(cd `dirname $@`; shasum -a 256 `basename $@`) | tee $@.sha256
file $@ || true

Expand Down

0 comments on commit 902fd12

Please sign in to comment.