GitRoot

Craft your forge, Build your project, Grow your community freely
 1# SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
 2#
 3# SPDX-License-Identifier: EUPL-1.2
 4
 5VERSION ?= $(shell git describe --exact-match --tags HEAD 2> /dev/null || echo next)
 6COMMIT ?= $(shell git rev-parse HEAD)
 7PLUGINS_DIR := $(shell find app/plugins/ -maxdepth 1 -mindepth 1 -type d)
 8MAKEFLAGS += --no-print-directory
 9
10build:
11	cd app/server/ && GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" -o ../../releases/gitroot-linux-amd64
12	cd app/server/ && GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" -o ../../releases/gitroot-linux-arm64
13	cd app/server/ && GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" -o ../../releases/gitroot-darwin-amd64
14	cd app/server/ && GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" -o ../../releases/gitroot-darwin-arm64
15
16build-executor:
17	cd app/executor && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o ../server/exec/resources/executor-linux-amd64
18
19build-plugins:
20	for dir in $(PLUGINS_DIR) ; do \
21		make -C  $$dir build; \
22	done
23
24test:
25	cd app/libs/golang/glob && go test -race ./...
26	cd app/libs/golang/plugin && go test -race ./...
27	for dir in $(PLUGINS_DIR) ; do \
28		make -C  $$dir test; \
29	done
30	cd app/server/ && go test -race ./...
31
32testsuite: build-plugins
33	cd app/testsuite && ./runtest.sh
34
35testrust: build-plugins
36	cd app/testsuite && ./rust.sh
37
38testall: test testsuite
39
40force-build-plugins: clean-plugins build-plugins
41
42clean-plugins:
43	for dir in $(PLUGINS_DIR) ; do \
44		make -C  $$dir clean; \
45	done
46
47clean: clean-plugins
48	cd app/server/ && go clean
49	rm -rf gitroot