# sfdupes is pure Go; disable cgo so builds never touch the host C
# toolchain.
export CGO_ENABLED = 0

BINARY := sfdupes
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -X main.Version=$(VERSION)

.PHONY: sfdupes build bootstrap setup test lint fmt fmt-check check docker hooks clean

# Standard targets are thin shims; the implementations live in script/
# per the scripts-to-rule-them-all pattern.

# Default target: build the binary. Phony so go build (which has its
# own build cache) always decides what to recompile.
sfdupes:
	go build -ldflags "$(LDFLAGS)" -o $(BINARY)

build: sfdupes

bootstrap:
	@script/bootstrap

setup:
	@script/setup

test:
	@script/test

lint:
	@script/lint

fmt:
	@script/fmt

fmt-check:
	@script/fmt-check

check:
	@script/check

docker:
	@script/docker

hooks:
	@script/install-precommit

clean:
	rm -f $(BINARY) files.dat
