72 строки
2.1 KiB
Makefile
72 строки
2.1 KiB
Makefile
# All of these variables can be set as env variables instead
|
|
|
|
DOCS_BUILD_DIR ?= _build
|
|
DOC_TARGETS ?= html man
|
|
PYTHON_EXECUTABLE ?= python3
|
|
DIST_DIR ?= dist
|
|
CLEAN_CMDS ?= clean-python clean-docs clean-build
|
|
SDIST_OPTS ?=
|
|
SDIST ?= sdist --dist-dir $(DIST_DIR) $(SDIST_OPTS)
|
|
BDIST_OPTS ?=
|
|
BDIST_WHEEL ?= bdist_wheel --dist-dir $(DIST_DIR) $(BDIST_OPTS)
|
|
PACKAGE_TARGETS ?= $(SDIST) $(BDIST_WHEEL)
|
|
PACKAGE_OPTS ?=
|
|
|
|
|
|
.PHONY: help
|
|
help: ## Print this help message and exit
|
|
@echo Usage:
|
|
@echo " make [target]"
|
|
@echo
|
|
@echo Targets:
|
|
@awk -F ':|##' \
|
|
'/^[^\t].+?:.*?##/ {\
|
|
printf " %-30s %s\n", $$1, $$NF \
|
|
}' $(MAKEFILE_LIST)
|
|
|
|
.PHONY: package
|
|
package: ## Create release packages
|
|
$(PYTHON_EXECUTABLE) setup.py $(PACKAGE_TARGETS) $(PACKAGE_OPTS)
|
|
|
|
.PHONY: package-deps
|
|
package-deps: ## Create wheel files for all runtime dependencies
|
|
$(PYTHON_EXECUTABLE) -m pip wheel --wheel-dir $(DIST_DIR) $(PACKAGE_OPTS) .
|
|
|
|
.PHONY: docs
|
|
docs: ## Build all the docs in the docs/_build directory
|
|
$(MAKE) -C $@ $(DOC_TARGETS) BUILDDIR=$(DOCS_BUILD_DIR)
|
|
|
|
.PHONY: clean-python
|
|
clean-python: ## Cleans all the python cache & egg files files
|
|
$(RM) `find . -name "*.pyc" | tac`
|
|
$(RM) -d `find . -name "__pycache__" | tac`
|
|
$(RM) -r `find . -name "*.egg-info" | tac`
|
|
|
|
.PHONY: clean-docs
|
|
clean-docs: ## Clean the docs build directory
|
|
$(RM) -r docs/$(DOCS_BUILD_DIR)
|
|
|
|
.PHONY: clean-build
|
|
clean-build: ## Cleans all code build and distribution directories
|
|
$(RM) -r build $(DIST_DIR)
|
|
|
|
.PHONY: clean
|
|
clean: ## Cleans all build, docs, and cache files
|
|
$(MAKE) $(CLEAN_CMDS)
|
|
|
|
.PHONY: install
|
|
install: ## Installs the package
|
|
$(PYTHON_EXECUTABLE) -m pip install .
|
|
|
|
.PHONY: install-docs
|
|
install-docs: ## Install the package and docs dependencies
|
|
$(PYTHON_EXECUTABLE) -m pip install -e .[docs]
|
|
|
|
.PHONY: install-tests
|
|
install-tests: ## Install the package and test dependencies
|
|
$(PYTHON_EXECUTABLE) -m pip install -e .[tests]
|
|
|
|
.PHONY: install-all
|
|
install-all: ## Install the package, docs, and test dependencies as well as pre-commit hooks
|
|
$(PYTHON_EXECUTABLE) -m pip install -e .[all] && pre-commit install
|