anki/rspy/Makefile
2020-04-07 10:59:14 +10:00

99 lines
2.4 KiB
Makefile

SHELL := /bin/bash
ifndef SHELLFLAGS
SHELLFLAGS :=
endif
.SHELLFLAGS := -eu -o pipefail ${SHELLFLAGS} -c
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
FIND := $(if $(wildcard /bin/find),/bin/find,/usr/bin/find)
ifndef OS
OS := unknown
endif
ifeq (${OS},Windows_NT)
ifndef PYTHON_FILE
PYTHON_FILE := $(shell which python)
USE_CYGPATH_COMMAND := case "$$(uname -s)" in CYGWIN*|MINGW*|MSYS*) printf "yes";; esac;
USE_CYGPATH := $(shell ${USE_CYGPATH_COMMAND})
ifneq (,${USE_CYGPATH})
PYTHON_FILE := $(shell cygpath -w "${PYTHON_FILE}")
endif
endif
else
ifndef PYTHON_FILE
PYTHON_FILE := $(shell which python3)
endif
endif
.DELETE_ON_ERROR:
$(shell mkdir -p .build ../dist)
OUTDIR := ../dist
BUILDFLAGS := --release --strip
DEVFLAGS :=
RSPY_TARGET_DIR ?= target
QT_FTL_TEMPLATES := ../qt/ftl
QT_FTL_LOCALES := ../qt/ftl/repo/desktop
.PHONY: all develop build check fix clean
all: develop
develop: .build/develop
DEPS := .build/tools .build/vernum ../meta/buildhash \
$(wildcard $(QT_FTL_TEMPLATES)/*.ftl) \
$(wildcard $(QT_FTL_LOCALES)/*/*.ftl) \
$(shell ${FIND} ../rslib/src -name '*.rs') $(wildcard ../proto/*) \
$(shell ${FIND} ../rslib/ftl -type f) \
$(shell ${FIND} ./src -type f)
.build/develop: $(DEPS)
touch ../proto/backend.proto
FTL_TEMPLATE_DIRS="$(QT_FTL_TEMPLATES)" FTL_LOCALE_DIRS="$(QT_FTL_LOCALES)" \
CARGO_TARGET_DIR="$(RSPY_TARGET_DIR)" maturin develop $(DEVFLAGS)
touch $@
build: .build/build
.build/build: $(DEPS)
touch ../proto/backend.proto
FTL_TEMPLATE_DIRS="$(QT_FTL_TEMPLATES)" FTL_LOCALE_DIRS="$(QT_FTL_LOCALES)" \
maturin build -i "${PYTHON_FILE}" -o "$(OUTDIR)" $(BUILDFLAGS)
touch $@
check: .build/check
fix:
cargo fmt
clean:
rm -rf .build target
# nightly currently required for ignoring files in rustfmt.toml
RUST_TOOLCHAIN := $(shell cat rust-toolchain)
.build/tools: requirements.txt rust-toolchain
python -m pip install -r requirements.txt
rustup toolchain install $(RUST_TOOLCHAIN)
rustup component add rustfmt-preview --toolchain $(RUST_TOOLCHAIN)
rustup component add clippy-preview --toolchain $(RUST_TOOLCHAIN)
@touch $@
.build/check: build
cargo fmt -- --check
cargo clippy -- -D warnings
@touch $@
VER := $(shell cat ../meta/version)
.build/vernum: ../meta/version
sed -i.bak 's/.*automatically updated.*/version = "$(VER)" # automatically updated/' Cargo.toml
rm Cargo.toml.bak
@touch $@