Makefile
Rama main · réplica de lectura del repositorio original.
.SUFFIXES:
MAKEFLAGS += --no-print-directory
MAKEFLAGS += --no-builtin-rules
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
PWD := $(dir $(MAKEFILE_PATH))
RELEASE ?= $(shell git describe --tag --dirty)
REVISION ?= $(shell git rev-parse HEAD)
CONTAINER_RELEASE ?= $(RELEASE:v%=%)
ifeq ($(OS),Windows_NT)
# This block will be executed if OS is Windows
TIME := $(shell powershell -command "[DateTime]::UtcNow.ToString('yyyy-MM-ddTHH:mm:ssZ')")
else
# This block will be executed if OS is not Windows
TIME := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
endif
ifneq ("$(wildcard $(PWD)/.cmakepreset)","")
CMAKE_PRESET ?= $(shell cat $(PWD)/.cmakepreset)
endif
ifneq ("$(wildcard $(HOME)/.monetr/development.env)","")
include $(HOME)/.monetr/development.env
export
endif
ifndef CI
CMAKE_PRESET ?= default
CONCURRENCY ?= 8
else
CMAKE_PRESET ?= release
CONCURRENCY ?= 4
endif
ifdef DEBUG
CMAKE_OPTIONS += --debug-output --log-level=DEBUG
BUILD_ARGS += -v
CONCURRENCY = 1
endif
ifdef MONETR_BUILD_TYPE
CMAKE_OPTIONS += -DMONETR_BUILD_TYPE=$(MONETR_BUILD_TYPE)
endif
export RELEASE_VERSION=$(RELEASE)
export CONTAINER_VERSION=$(CONTAINER_RELEASE)
export RELEASE_REVISION=$(REVISION)
export BUILD_TIME=$(TIME)
default: monetr
CMAKE_CONFIGURATION_DIRECTORY=build
# cmake -S . -B $(CMAKE_CONFIGURATION_DIRECTORY) -G $(GENERATOR) $(CMAKE_OPTIONS) $(CMAKE_ARGS)
.PHONY: $(CMAKE_CONFIGURATION_DIRECTORY)
$(CMAKE_CONFIGURATION_DIRECTORY): CMakeLists.txt CMakePresets.json Makefile
cmake --preset $(CMAKE_PRESET) $(CMAKE_OPTIONS)
clean:
-@$(MAKE) shutdown CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DBUILD_TESTING=OFF"
-cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t clean $(BUILD_ARGS)
-cmake -E remove_directory $(CMAKE_CONFIGURATION_DIRECTORY) $(BUILD_ARGS)
dependencies: | $(CMAKE_CONFIGURATION_DIRECTORY)
+cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t dependencies $(BUILD_ARGS)
deps: dependencies
monetr: | $(CMAKE_CONFIGURATION_DIRECTORY)
+cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.monetr $(BUILD_ARGS)
monetr-release:
+$(MAKE) monetr -B CMAKE_PRESET=release
release: monetr-release
interface: $(CMAKE_CONFIGURATION_DIRECTORY)
+cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.interface $(BUILD_ARGS)
.PHONY: docs
docs: | $(CMAKE_CONFIGURATION_DIRECTORY)
+cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.docs $(BUILD_ARGS)
email: | $(CMAKE_CONFIGURATION_DIRECTORY)
+cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.email $(BUILD_ARGS)
migrate: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.migrate $(BUILD_ARGS)
new-pg-migration:
cmake -P cmake/scripts/NewPgMigration.cmake
fourier-tables: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t generate.fourier.tables $(BUILD_ARGS)
# If the user provides a pattern, then pass that through to CTest
ifdef PATTERN
PATTERN_ARG=-R $(PATTERN)
endif
# Optional: SHARDS=N SHARD=i runs the i-th of N shards via ctest's -I flag.
# When set, the per-shard coverage merge is skipped; codecov merges server-side.
# Precompile steps are left out of the shard selection, ctest pulls them back in
# as fixtures only for the packages whose tests landed in this shard.
SHARD ?=
SHARDS ?=
ifneq ($(SHARDS),)
SHARD_ARG=-I $(SHARD),,$(SHARDS) -LE precompile
JUNIT_SUFFIX=-$(SHARD)
SKIP_COVERAGE_MERGE=1
else
JUNIT_SUFFIX=
endif
test:
cmake --preset testing $(CMAKE_OPTIONS)
ctest --test-dir $(CMAKE_CONFIGURATION_DIRECTORY) --repeat until-pass:2 --no-tests=error --output-on-failure --output-junit $(PWD)$(CMAKE_CONFIGURATION_DIRECTORY)/junit$(JUNIT_SUFFIX).xml -j $(CONCURRENCY) $(PATTERN_ARG) $(SHARD_ARG)
ifndef SKIP_COVERAGE_MERGE
cmake -P cmake/scripts/MergeGoCoverage.cmake
endif
lint: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t lint $(BUILD_ARGS)
lint-all: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t lint-all $(BUILD_ARGS)
typecheck: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t interface.typecheck emails.typecheck docs.typecheck $(BUILD_ARGS)
develop: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.monetr.up $(BUILD_ARGS)
develop-lite: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.lite $(BUILD_ARGS)
develop-docs: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.documentation.up $(BUILD_ARGS)
develop-email: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.email $(BUILD_ARGS)
logs: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.logs $(BUILD_ARGS)
restart: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.restart $(BUILD_ARGS)
shell: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.shell $(BUILD_ARGS)
sql-shell: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.shell.sql $(BUILD_ARGS)
redis-shell: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.shell.redis $(BUILD_ARGS)
shutdown: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t development.down $(BUILD_ARGS)
container: | $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.container.docker $(BUILD_ARGS)
container-push: $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.container.docker.push $(BUILD_ARGS)
sign-container: $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.container.docker.sign $(BUILD_ARGS)
verify-container: $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t build.container.docker.verify $(BUILD_ARGS)
images: $(CMAKE_CONFIGURATION_DIRECTORY)
cmake --build $(CMAKE_CONFIGURATION_DIRECTORY) -t images $(BUILD_ARGS)