josie / alder-tools

# aldermon — btop-style Alder Lake monitor. Gentoo-friendly: respects
# PREFIX, DESTDIR. `make check` runs fmt+clippy+test.
PREFIX  ?= /usr/local
SYSCONF ?= /etc
DATADIR ?= /usr/share

BIN      := $(DESTDIR)$(PREFIX)/bin/aldermon
MSRBIN   := $(DESTDIR)$(PREFIX)/bin/aldermon-msr
CONF     := $(DESTDIR)$(SYSCONF)/aldermon/aldermon.conf
SETUP    := $(DESTDIR)$(DATADIR)/aldermon/aldermon-setup.sh

.PHONY: all build check install uninstall clean

all: build

build:
	cargo build --release

check:
	cargo fmt --check
	cargo clippy --all-targets -- -D warnings
	cargo test

install: build
	install -Dm755 target/release/aldermon $(BIN)
	install -Dm755 target/release/aldermon-msr $(MSRBIN)
	install -Dm644 aldermon.conf $(CONF)
	install -Dm755 aldermon-setup.sh $(SETUP)
ifeq ($(DESTDIR),)
	# VID needs the cap half of a two-gate check (msr nodes also go 0440 adm
	# via aldermon-setup.sh); grant cap_sys_rawio to the read-only helper
	# only. Re-applied on every install since rebuilding drops file caps.
	setcap cap_sys_rawio+ep $(MSRBIN)
endif

uninstall:
	rm -f $(BIN) $(MSRBIN) $(CONF) $(SETUP)
	rm -f $(DESTDIR)$(DATADIR)/aldermon/powercap-pl-rules.sh
	rmdir -p --ignore-fail-on-non-empty $(CONF) 2>/dev/null || true
	rmdir -p --ignore-fail-on-non-empty $(SETUP) 2>/dev/null || true

clean:
	cargo clean