Files
flow/Makefile
2026-02-25 15:55:27 +02:00

62 lines
2.0 KiB
Makefile

PYTHON ?= python3
PIP ?= $(PYTHON) -m pip
SRC_DIR := $(CURDIR)/src
ENTRYPOINT := src/flow/__main__.py
DIST_DIR := dist
BUILD_DIR := build
SPEC_FILE := flow.spec
BINARY := $(DIST_DIR)/flow
INSTALL_DIR ?= $(HOME)/.local/bin
.PHONY: deps build install install-local check-binary clean help
help:
@printf "Targets:\n"
@printf " make deps Install build dependencies\n"
@printf " make build Build standalone binary at dist/flow\n"
@printf " make install Build and install to ~/.local/bin/flow\n"
@printf " make install-local Install binary to ~/.local/bin/flow\n"
@printf " make check-binary Run dist/flow --help\n"
@printf " make clean Remove build artifacts\n"
deps:
@set -eu; \
PIP_CMD="$(PIP)"; \
if ! $$PIP_CMD --version >/dev/null 2>&1; then \
if command -v pip3 >/dev/null 2>&1; then \
PIP_CMD="pip3"; \
elif $(PYTHON) -m ensurepip --version >/dev/null 2>&1; then \
$(PYTHON) -m ensurepip --upgrade; \
elif command -v apt-get >/dev/null 2>&1; then \
echo "pip missing; installing python3-pip via apt-get (sudo required)"; \
sudo apt-get update; \
sudo apt-get install -y python3-pip; \
elif command -v dnf >/dev/null 2>&1; then \
echo "pip missing; installing python3-pip via dnf (sudo required)"; \
sudo dnf install -y python3-pip; \
elif command -v brew >/dev/null 2>&1; then \
echo "pip missing; installing python via Homebrew"; \
brew install python; \
else \
echo "Unable to bootstrap pip automatically. Install pip for $(PYTHON) and rerun make deps."; \
exit 1; \
fi; \
fi; \
$$PIP_CMD install -e ".[build]"
build: deps
$(PYTHON) -m PyInstaller --noconfirm --clean --onefile --name flow --paths "$(SRC_DIR)" "$(ENTRYPOINT)"
install-local: build
mkdir -p "$(INSTALL_DIR)"
install -m 755 "$(BINARY)" "$(INSTALL_DIR)/flow"
@printf "Installed flow to $(INSTALL_DIR)/flow\n"
install: deps build install-local
check-binary:
"./$(BINARY)" --help
clean:
rm -rf "$(BUILD_DIR)" "$(DIST_DIR)" "$(SPEC_FILE)"