Skip to content

Instantly share code, notes, and snippets.

@heffcodex
Created May 9, 2020 17:31
Show Gist options
  • Save heffcodex/760f991f2b2ace8c794474ebfacedae7 to your computer and use it in GitHub Desktop.
Save heffcodex/760f991f2b2ace8c794474ebfacedae7 to your computer and use it in GitHub Desktop.
Multi-arch generic makefile for go
DIR = ./.build
EXECUTABLE = app
GOARCH = amd64
GOOSWIN = windows
GOOSX = darwin
GOOSLINUX = linux
GOMOD = on
CGO_ENABLED = 0
WINBIN = $(DIR)/$(EXECUTABLE)-win-$(GOARCH).exe
OSXBIN = $(DIR)/$(EXECUTABLE)-darwin-$(GOARCH)
LINUXBIN = $(DIR)/$(EXECUTABLE)-linux-$(GOARCH)
CC = go build
CFLAGS = -i -trimpath
LDFLAGS = all=-w -s
GCFLAGS = all=
ASMFLAGS = all=
.PHONY: all
all: darwin linux win64
.PHONY: darwin
darwin: $(OSXBIN)
chmod +x $(OSXBIN)
.PHONY: $(OSXBIN)
$(OSXBIN):
GO111MODULE=$(GOMOD) GOARCH=$(GOARCH) GOOS=$(GOOSX) CGO_ENABLED=$(CGO_ENABLED) $(CC) $(CFLAGS) -o $(OSXBIN) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)"
.PHONY: linux
linux: $(LINUXBIN)
chmod +x $(LINUXBIN)
.PHONY: $(LINUXBIN)
$(LINUXBIN):
GO111MODULE=$(GOMOD) GOARCH=$(GOARCH) GOOS=$(GOOSLINUX) CGO_ENABLED=$(CGO_ENABLED) $(CC) $(CFLAGS) -o $(LINUXBIN) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)"
.PHONY: win64
win64: $(WINBIN)
.PHONY: $(WINBIN)
$(WINBIN):
GO111MODULE=$(GOMOD) GOARCH=$(GOARCH) GOOS=$(GOOSWIN) CGO_ENABLED=$(CGO_ENABLED) $(CC) $(CFLAGS) -o $(WINBIN) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)"
.PHONY: clean
clean:
rm -rf $(DIR)/*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment