aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 9a62eb9feccfeeb9cb7ab4222cf160a41150dfea (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
BINARY = weed/weed
package = github.com/chrislusf/seaweedfs/weed

GO_FLAGS = #-v
SOURCE_DIR = ./weed/

appname := weed

sources := $(wildcard *.go)

COMMIT ?= $(shell git rev-parse --short HEAD)
LDFLAGS ?= -X github.com/chrislusf/seaweedfs/weed/util.COMMIT=${COMMIT}

build = CGO_ENABLED=0 GOOS=$(1) GOARCH=$(2) go build -ldflags "-extldflags -static $(LDFLAGS)" -o build/$(appname)$(3) $(SOURCE_DIR)
tar = cd build && tar -cvzf $(1)_$(2).tar.gz $(appname)$(3) && rm $(appname)$(3)
zip = cd build && zip $(1)_$(2).zip $(appname)$(3) && rm $(appname)$(3)

build_large = CGO_ENABLED=0 GOOS=$(1) GOARCH=$(2) go build -tags 5BytesOffset -ldflags "-extldflags -static $(LDFLAGS)" -o build/$(appname)$(3) $(SOURCE_DIR)
tar_large = cd build && tar -cvzf $(1)_$(2)_large_disk.tar.gz $(appname)$(3) && rm $(appname)$(3)
zip_large = cd build && zip $(1)_$(2)_large_disk.zip $(appname)$(3) && rm $(appname)$(3)

all: build

.PHONY : clean deps build linux release windows_build darwin_build linux_build bsd_build clean

clean:
	go clean -i $(GO_FLAGS) $(SOURCE_DIR)
	rm -f $(BINARY)
	rm -rf build/

deps:
	go get $(GO_FLAGS) -d $(SOURCE_DIR)
	rm -rf /home/travis/gopath/src/github.com/coreos/etcd/vendor/golang.org/x/net/trace
	rm -rf /home/travis/gopath/src/go.etcd.io/etcd/vendor/golang.org/x/net/trace

build: deps
	go build $(GO_FLAGS) -ldflags "$(LDFLAGS)" -o $(BINARY) $(SOURCE_DIR)

install: deps
	go install $(GO_FLAGS) -ldflags "$(LDFLAGS)" $(SOURCE_DIR)

linux: deps
	mkdir -p linux
	GOOS=linux GOARCH=amd64 go build $(GO_FLAGS) -ldflags "$(LDFLAGS)" -o linux/$(BINARY) $(SOURCE_DIR)

release: deps windows_build darwin_build linux_build bsd_build 5_byte_linux_build 5_byte_arm64_build 5_byte_darwin_build 5_byte_windows_build

##### LINUX BUILDS #####
5_byte_linux_build:
	$(call build_large,linux,amd64,)
	$(call tar_large,linux,amd64)

5_byte_darwin_build:
	$(call build_large,darwin,amd64,)
	$(call tar_large,darwin,amd64)

5_byte_windows_build:
	$(call build_large,windows,amd64,.exe)
	$(call zip_large,windows,amd64,.exe)

5_byte_arm_build: $(sources)
	$(call build_large,linux,arm,)
	$(call tar_large,linux,arm)

5_byte_arm64_build: $(sources)
	$(call build_large,linux,arm64,)
	$(call tar_large,linux,arm64)

linux_build: build/linux_arm.tar.gz build/linux_arm64.tar.gz build/linux_386.tar.gz build/linux_amd64.tar.gz

build/linux_386.tar.gz: $(sources)
	$(call build,linux,386,)
	$(call tar,linux,386)

build/linux_amd64.tar.gz: $(sources)
	$(call build,linux,amd64,)
	$(call tar,linux,amd64)

build/linux_arm.tar.gz: $(sources)
	$(call build,linux,arm,)
	$(call tar,linux,arm)

build/linux_arm64.tar.gz: $(sources)
	$(call build,linux,arm64,)
	$(call tar,linux,arm64)

##### DARWIN (MAC) BUILDS #####
darwin_build: build/darwin_amd64.tar.gz

build/darwin_amd64.tar.gz: $(sources)
	$(call build,darwin,amd64,)
	$(call tar,darwin,amd64)

##### WINDOWS BUILDS #####
windows_build: build/windows_386.zip build/windows_amd64.zip

build/windows_386.zip: $(sources)
	$(call build,windows,386,.exe)
	$(call zip,windows,386,.exe)

build/windows_amd64.zip: $(sources)
	$(call build,windows,amd64,.exe)
	$(call zip,windows,amd64,.exe)

##### BSD BUILDS #####
bsd_build: build/freebsd_arm.tar.gz build/freebsd_386.tar.gz build/freebsd_amd64.tar.gz \
 build/netbsd_arm.tar.gz build/netbsd_386.tar.gz build/netbsd_amd64.tar.gz \
 build/openbsd_arm.tar.gz build/openbsd_386.tar.gz build/openbsd_amd64.tar.gz

build/freebsd_386.tar.gz: $(sources)
	$(call build,freebsd,386,)
	$(call tar,freebsd,386)

build/freebsd_amd64.tar.gz: $(sources)
	$(call build,freebsd,amd64,)
	$(call tar,freebsd,amd64)

build/freebsd_arm.tar.gz: $(sources)
	$(call build,freebsd,arm,)
	$(call tar,freebsd,arm)

build/netbsd_386.tar.gz: $(sources)
	$(call build,netbsd,386,)
	$(call tar,netbsd,386)

build/netbsd_amd64.tar.gz: $(sources)
	$(call build,netbsd,amd64,)
	$(call tar,netbsd,amd64)

build/netbsd_arm.tar.gz: $(sources)
	$(call build,netbsd,arm,)
	$(call tar,netbsd,arm)

build/openbsd_386.tar.gz: $(sources)
	$(call build,openbsd,386,)
	$(call tar,openbsd,386)

build/openbsd_amd64.tar.gz: $(sources)
	$(call build,openbsd,amd64,)
	$(call tar,openbsd,amd64)

build/openbsd_arm.tar.gz: $(sources)
	$(call build,openbsd,arm,)
	$(call tar,openbsd,arm)