summaryrefslogtreecommitdiff
path: root/cmd/rescribe/makefile
blob: 21a59fbb223e74c9ab3b97ddc52078136acc9ee5 (plain)
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
# See LICENSE file for copyright and license details.
#
# This is a set of make(1) rules to cross compile rescribe
# from Linux to other architectures - as we use Fyne, CGO
# is required, so we have to do more to cross compile than
# just rely on the standard go tools. It relies on osxcross
# being set up for the Mac builds, and mingw-w64 being
# installed for the Windows build.
#
# The standard go tools work perfectly for native builds on
# all architectures - note that "go generate" needs to be
# run before building to download the dependencies which are
# embedded.

# For osxcross, there are many versions of the MacOS SDK
# that are too old or too new to build Rescribe correctly.
# SDK 11.3, as extracted from XCode 12.5.1, seems to work
# perfectly for us.
OSXCROSSBIN=$(HOME)/src/osxcross/target/bin

EMBEDS=embed_darwin_amd64.go embed_linux.go embed_windows.go gui.go embed_darwin_arm64.go embed_other.go
GODEPS=gui.go main.go $(EMBEDS)

all: dist/linux/rescribe dist/darwin_universal/Rescribe.app dist/windows/rescribe.exe

dist/linux/rescribe: $(GODEPS)
	go generate
	mkdir -p dist/linux
	GOOS=linux GOARCH=amd64 go build -o $@ .

dist/darwin_amd64/rescribe: $(GODEPS)
	go generate
	mkdir -p dist/darwin_amd64
	PATH="$(PATH):$(OSXCROSSBIN)" CC="o64-clang" CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -o $@ .

dist/darwin_arm64/rescribe: $(GODEPS)
	go generate
	mkdir -p dist/darwin_arm64
	PATH="$(PATH):$(OSXCROSSBIN)" CC="oa64-clang" CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o $@ .

dist/darwin_universal/rescribe: dist/darwin_amd64/rescribe dist/darwin_arm64/rescribe
	mkdir -p dist/darwin_universal
	PATH="$(PATH):$(OSXCROSSBIN)" lipo -create dist/darwin_amd64/rescribe dist/darwin_arm64/rescribe -output $@

# TODO: remove this, once universal is confirmed working
dist/darwin_amd64/Rescribe.app: dist/darwin_amd64/rescribe
	go install fyne.io/fyne/v2/cmd/fyne@latest
	fyne package --name Rescribe --exe dist/darwin_amd64/rescribe --os darwin --icon icon.png
	mv Rescribe.app $@

# TODO: remove this, once universal is confirmed working
dist/darwin_arm64/Rescribe.app: dist/darwin_arm64/rescribe
	go install fyne.io/fyne/v2/cmd/fyne@latest
	fyne package --name Rescribe --exe dist/darwin_arm64/rescribe --os darwin --icon icon.png
	mv Rescribe.app $@

dist/darwin_universal/Rescribe.app: dist/darwin_universal/rescribe
	go install fyne.io/fyne/v2/cmd/fyne@latest
	fyne package --name Rescribe --exe dist/darwin_universal/rescribe --os darwin --icon icon.png
	mv Rescribe.app $@

dist/windows/rescribe-bin.exe: $(GODEPS)
	#go generate
	mkdir -p dist/windows
	CC="x86_64-w64-mingw32-gcc" CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -o $@ .

dist/windows/rescribe.exe: dist/windows/rescribe-bin.exe
	CC="x86_64-w64-mingw32-gcc" fyne package --name Rescribe --exe dist/windows/rescribe-bin.exe --os windows --icon icon.png
	mv rescribe.exe $@