66 lines
1.9 KiB
Makefile
66 lines
1.9 KiB
Makefile
PROJECT := aee_2026
|
|
BUILDDIR := build
|
|
JOBS ?= $(shell nproc 2>/dev/null || echo 4)
|
|
|
|
# VERSION (única font de veritat: source/utils/defines.hpp)
|
|
VERSION := v$(shell grep 'constexpr const char\* VERSION' source/utils/defines.hpp | sed -E 's/.*VERSION = "([^"]+)".*/\1/')
|
|
|
|
# GIT_HASH calculat al host i passat a CMake (evita problemes si CMake corre en
|
|
# entorns sense accés a git, p.ex. Docker/emscripten).
|
|
GIT_HASH := $(shell git rev-parse --short=7 HEAD 2>/dev/null)
|
|
ifeq ($(GIT_HASH),)
|
|
GIT_HASH := unknown
|
|
endif
|
|
|
|
CMAKE_DEFS := -DGIT_HASH=$(GIT_HASH)
|
|
|
|
.PHONY: all configure build run clean rebuild release show-version format format-check tidy tidy-fix cppcheck hooks-install
|
|
|
|
all: build
|
|
|
|
configure:
|
|
@cmake -S . -B $(BUILDDIR) -DCMAKE_BUILD_TYPE=Debug $(CMAKE_DEFS)
|
|
|
|
build: configure
|
|
@cmake --build $(BUILDDIR) -j$(JOBS)
|
|
|
|
run: build
|
|
@./$(BUILDDIR)/$(PROJECT)
|
|
|
|
release:
|
|
@cmake -S . -B $(BUILDDIR) -DCMAKE_BUILD_TYPE=Release $(CMAKE_DEFS)
|
|
@cmake --build $(BUILDDIR) -j$(JOBS)
|
|
|
|
show-version:
|
|
@echo "$(PROJECT) $(VERSION) ($(GIT_HASH))"
|
|
|
|
clean:
|
|
@rm -rf $(BUILDDIR)
|
|
|
|
rebuild: clean build
|
|
|
|
# ==============================================================================
|
|
# CODE QUALITY (delegados a cmake)
|
|
# ==============================================================================
|
|
format: configure
|
|
@cmake --build $(BUILDDIR) --target format
|
|
|
|
format-check: configure
|
|
@cmake --build $(BUILDDIR) --target format-check
|
|
|
|
tidy: configure
|
|
@cmake --build $(BUILDDIR) --target tidy
|
|
|
|
tidy-fix: configure
|
|
@cmake --build $(BUILDDIR) --target tidy-fix
|
|
|
|
cppcheck: configure
|
|
@cmake --build $(BUILDDIR) --target cppcheck
|
|
|
|
# ==============================================================================
|
|
# GIT HOOKS
|
|
# ==============================================================================
|
|
hooks-install:
|
|
@git config core.hooksPath .githooks
|
|
@echo "Git hooks activats: $(shell pwd)/.githooks"
|