# SPDX-FileCopyrightText: 2026 Ololduck <ololduck@vit.am> and contributors
#
# SPDX-License-Identifier: GPL-3.0-or-later

# make && sudo make install && make clean

GIT_COMMIT_ID := $(shell git describe --always)
JJ_CHANGE_ID := $(shell jj log --no-graph -r @ -T 'change_id.short()')

ZIGBUILD_TARGET := x86_64-unknown-linux-gnu
ZIGBUILD_GLIBC := 2.36
ZIGBUILD_TRIPLE := $(ZIGBUILD_TARGET).$(ZIGBUILD_GLIBC)

.PHONY: install clean build build-zigbuild annotate-license fmt build-rpi

# Generates target/release/frogue
build:
	GIT_COMMIT_ID=$(GIT_COMMIT_ID) JJ_CHANGE_ID=$(JJ_CHANGE_ID) cargo build --release

# Generates target/<triple>/release/frogue, linked against GLIBC $(ZIGBUILD_GLIBC)
build-zigbuild:
	GIT_COMMIT_ID=$(GIT_COMMIT_ID) JJ_CHANGE_ID=$(JJ_CHANGE_ID) cargo zigbuild --release --target $(ZIGBUILD_TRIPLE)

# for RPi>=3
build-rpi:
	GIT_COMMIT_ID=$(GIT_COMMIT_ID) JJ_CHANGE_ID=$(JJ_CHANGE_ID) cross build --release --target=aarch64-unknown-linux-gnu --config 'build.rustc-wrapper=""'

clean:
	cargo clean

install: /usr/local/bin/frogue

/usr/local/bin/frogue: target/release/frogue
	install -D -m755 $< $@

install-zigbuild: target/$(ZIGBUILD_TARGET)/release/frogue
	install -D -m755 $< /usr/local/bin/frogue

# Puts the license header in all files
annotate-license:
	comply annotate

fmt: annotate-license
	cargo +nightly fmt
	taplo fmt
