Cross-compile macOS and Windows builds (#89)

Adds support for cross-compiling macOS and Windows builds with cgo (using https://github.com/techknowlogick/xgo).

Closes #41
This commit is contained in:
Adrian Macneil 2019-09-18 22:30:59 +12:00 committed by GitHub
parent 23d48e48aa
commit aa72a39a29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 22 deletions

View file

@ -1,5 +1,4 @@
DC := docker-compose
BUILD_FLAGS := -ldflags '-s'
LDFLAGS := -ldflags '-s'
.PHONY: all
all: test lint build
@ -22,13 +21,27 @@ clean:
rm -rf dist
.PHONY: build
build: clean
GOARCH=amd64 go build $(BUILD_FLAGS) -o dist/dbmate-linux-amd64 .
# musl target does not support sqlite
GOARCH=amd64 CGO_ENABLED=0 go build $(BUILD_FLAGS) -o dist/dbmate-linux-musl-amd64 .
build: clean build-linux build-macos build-windows
ls -lh dist
.PHONY: build-linux
build-linux:
GOOS=linux GOARCH=amd64 CGO_ENABLED=1 \
go build $(LDFLAGS) -o dist/dbmate-linux-amd64 .
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \
go build $(LDFLAGS) -o dist/dbmate-linux-musl-amd64 .
.PHONY: build-macos
build-macos:
GOOS=darwin GOARCH=amd64 CGO_ENABLED=1 CC=o64-clang CXX=o64-clang++ \
go build $(LDFLAGS) -o dist/dbmate-macos-amd64 .
.PHONY: build-windows
build-windows:
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix \
go build $(LDFLAGS) -o dist/dbmate-windows-amd64.exe .
.PHONY: docker
docker:
$(DC) pull
$(DC) build
$(DC) run --rm dbmate make
docker-compose build
docker-compose run --rm dbmate make