view Makefile @ 5701:c23fa3d1824c sr-v2

Build meshmigrate via Makefile
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 13 Feb 2024 23:25:48 +0100
parents 5049f7ad9faa
children
line wrap: on
line source

# Simple Makefile to build all of Gemma
#
# Authors: Sascha Wilde <wilde@intevation.de>

basedir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))

BUILDBASE := $(basedir).buildbase
GOPATH := $(BUILDBASE)/go
GOCACHE := $(BUILDBASE)/gocache
ENVWARPPER := $(BUILDBASE)/run-with-env.sh
BINDIR := /usr/local/bin

export BUILDBASE

.PHONY: all gemma gmaggregate meshmigrate client clean

all: gemma gmaggregate meshmigrate client

$(ENVWARPPER):
	@echo "Preparing go build environment:"
	mkdir -p "$(GOPATH)"
	mkdir -p "$(GOCACHE)"
	@echo "Creating wrapper script:"
	echo '#!/bin/sh' >"$(ENVWARPPER)"
	echo 'export GOPATH=$(GOPATH)' >>"$(ENVWARPPER)"
	echo 'export GOCACHE=$(GOCACHE)' >>"$(ENVWARPPER)"
	echo 'export GOAMD64=v3' >>"$(ENVWARPPER)"
	echo 'exec "$$@"' >>"$(ENVWARPPER)"
	chmod +x "$(ENVWARPPER)"

gemma: $(ENVWARPPER)
	"$(ENVWARPPER)" go build -o ./cmd/gemma/gemma ./cmd/gemma

gmaggregate: $(ENVWARPPER)
	cd ./contrib/gmaggregate; "$(ENVWARPPER)" go build

meshmigrate: $(ENVWARPPER)
	cd ./cmd/meshmigrate; "$(ENVWARPPER)" go build

client:
	$(MAKE) -f Makefile.build -C client

install: gemma
	cp cmd/gemma/gemma $(BINDIR)
	cp cmd/meshmigrate/meshmigrate $(BINDIR)
	cp contrib/gmaggregate/gmaggregate $(BINDIR)

tar: all
	v="gemma-$$(hg id -i)" ;\
        tar --transform "s@^@$${v}/@" \
	    -cJf "../$${v}.tar.xz" \
	    cmd/gemma/gemma \
	    cmd/meshmigrate/meshmigrate \
	    contrib/gmaggregate/gmaggregate \
	    schema style-templates report-templates \
	    web misc example_conf.toml

clean:
	$(MAKE) -f Makefile.build -C client $@
	rm -f contrib/gmaggregate/gmaggregate
	rm -f cmd/meshmigrate/meshmigrate
	rm -f cmd/gemma/gemma
	chmod -R u+w "$(BUILDBASE)" # This is neccessary for deletion to work...
	rm -rf "$(BUILDBASE)"