# 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=

# Windows needs the .exe extension.
ifeq ($(OS),Windows_NT)
EXT=.exe
endif

.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$(EXT): *.go common/*.go
	go$(GO_VERSION) build -o $@ $(TAGS)

static/main.wasm: wasm/*.go common/*.go
	GOOS=js GOARCH=wasm go$(GO_VERSION) build -o $@ $(TAGS) wasm/*.go

clean:
	-rm MovieNight$(EXT) ./static/main.wasm

fmt:
	gofmt -w .

vet:
	go$(GO_VERSION) vet $(TAGS) ./...
	GOOS=js GOARCH=wasm go$(GO_VERSION) vet $(TAGS) ./...

test:
	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.
settings.json:
	cp settings_example.json settings.json
