From 72a44b61701fc100568d9424d4a7e9e56970179a Mon Sep 17 00:00:00 2001 From: Zorchenhimer Date: Thu, 30 Jan 2020 14:46:54 -0500 Subject: [PATCH] Clean up Makefile Removed the Darwin and Windows specific build targets. Instead, the system's build target will be used (as specified with the GOOS and GOARCH environment variables). Added a "server" build target. This is mostly just for me to build the binary that will be deployed on my own server. Added the GO_VERSION environment variable to all the calls to the go command. This will allow easier building on systems that have installed an additional version of Go along side their distribution's version. Users wanting to build with one of these versions must first install it with `go get` and `go[version] download` as detailed here: https://golang.org/doc/install#extra_versions. Setting the GO_VERSION environment variable to the version number will use that version. Eg, setting it to "1.13.7" will call `go1.13.7 build [...]` instead of `go build [...]`. --- Makefile | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 20267ab..79ad13f 100644 --- a/Makefile +++ b/Makefile @@ -1,38 +1,51 @@ +# If a different version of Go is installed (via `go get`) set the GO_VERSION +# environment variable to that version. For example, setting it to "1.13.7" +# will run `go1.13.7 build [...]` instead of `go build [...]`. +# +# For info on installing extra versions, see this page: +# https://golang.org/doc/install#extra_versions + TAGS= -.PHONY: fmt vet get clean dev setdev test +# Windows needs the .exe extension. +ifeq ($(OS),Windows_NT) +EXT=.exe +endif -all: fmt vet test MovieNight MovieNight.exe MovieNightDarwin static/main.wasm settings.json +.PHONY: fmt vet get clean dev setdev test ServerMovieNight + +all: fmt vet test MovieNight$(EXT) static/main.wasm settings.json + +# Build the server deployment +server: ServerMovieNight static/main.wasm + +# Bulid used for deploying to my server. +ServerMovieNight: *.go common/*.go + GOOS=linux GOARCH=386 go$(GO_VERSION) build -o MovieNight $(TAGS) setdev: $(eval export TAGS=-tags "dev") dev: setdev all -MovieNight.exe: *.go common/*.go - GOOS=windows GOARCH=amd64 go build -o MovieNight.exe $(TAGS) - -MovieNight: *.go common/*.go - GOOS=linux GOARCH=386 go build -o MovieNight $(TAGS) - -MovieNightDarwin: *.go common/*.go - GOOS=darwin GOARCH=amd64 go build -o MovieNightDarwin $(TAGS) +MovieNight$(EXT): *.go common/*.go + go$(GO_VERSION) build -o $@ $(TAGS) static/main.wasm: wasm/*.go common/*.go - GOOS=js GOARCH=wasm go build -o ./static/main.wasm $(TAGS) wasm/*.go + GOOS=js GOARCH=wasm go$(GO_VERSION) build -o $@ $(TAGS) wasm/*.go clean: - -rm MovieNight.exe MovieNight MovieNightDarwin ./static/main.wasm + -rm MovieNight$(EXT) ./static/main.wasm fmt: gofmt -w . vet: - go vet $(TAGS) ./... - GOOS=js GOARCH=wasm go vet $(TAGS) ./... + go$(GO_VERSION) vet $(TAGS) ./... + GOOS=js GOARCH=wasm go$(GO_VERSION) vet $(TAGS) ./... test: - go test $(TAGS) ./... + go$(GO_VERSION) test $(TAGS) ./... # Do not put settings_example.json here as a prereq to avoid overwriting # the settings if the example is updated.