77 lines
2.7 KiB
Makefile
77 lines
2.7 KiB
Makefile
|
SHELL = /bin/bash
|
||
|
SPHINXOPTS ?=
|
||
|
SPHINXBUILD ?= sphinx-build
|
||
|
SOURCEDIR = .
|
||
|
BUILDDIR = _build
|
||
|
|
||
|
help:
|
||
|
@echo "For help about the container instance, do \`make container-help\`"
|
||
|
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||
|
|
||
|
.PHONY: help Makefile
|
||
|
|
||
|
%: Makefile
|
||
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||
|
|
||
|
#------------------------------------------------------------------------------
|
||
|
# Container commands
|
||
|
#------------------------------------------------------------------------------
|
||
|
|
||
|
CONTAINER_IMG ?=hdl-docs
|
||
|
CONTAINER_ENGINE =podman
|
||
|
CONTAINER_REPO =${CONTAINER_IMG}
|
||
|
CONTAINER_IMAGE =${CONTAINER_IMG}_build
|
||
|
CONTAINER_VERSION ?=0.1
|
||
|
CONTAINER_SHELL ?=bash -l
|
||
|
CONTAINER_RUN_EXTRA ?=
|
||
|
CONTAINER_FORMAT =$(if $(filter podman,${CONTAINER_ENGINE}),--format docker,)
|
||
|
|
||
|
IF_CONTAINER_RUNS=$(shell ${CONTAINER_ENFINE} container inspect -f '{{.State.Running}}' ${CONTAINER_IMAGE} 2>/dev/null)
|
||
|
|
||
|
CONTAINER_RUN_PARAMS = -it --rm --name=${CONTAINER_IMG} \
|
||
|
--name=${CONTAINER_IMAGE} \
|
||
|
--workdir=/${CONTAINER_IMG} \
|
||
|
--mount type=bind,source=${CURDIR}/../,target=/${CONTAINER_IMG} \
|
||
|
${CONTAINER_RUN_EXTRA} \
|
||
|
${CONTAINER_REPO}/${CONTAINER_IMAGE}:${CONTAINER_VERSION}
|
||
|
|
||
|
container-login:
|
||
|
@if [ "${IF_CONTAINER_RUNS}" != "true" ]; then \
|
||
|
${CONTAINER_ENGINE} run ${CONTAINER_RUN_PARAMS} \
|
||
|
${CONTAINER_SHELL}; \
|
||
|
else \
|
||
|
${CONTAINER_ENGINE} exec -it ${CONTAINER_IMAGE} \
|
||
|
${CONTAINER_SHELL}; \
|
||
|
fi
|
||
|
|
||
|
container-build:
|
||
|
@printf "Building container image\n"
|
||
|
@${CONTAINER_ENGINE} build --no-cache=true ${CONTAINER_FORMAT} -t ${CONTAINER_REPO}/${CONTAINER_IMAGE}:${CONTAINER_VERSION} -f ./Containerfile .
|
||
|
|
||
|
|
||
|
container-html:
|
||
|
@${CONTAINER_ENGINE} run ${CONTAINER_RUN_PARAMS} ${CONTAINER_SHELL} -c \
|
||
|
"source /.venv/bin/activate ; cd docs ; make html"
|
||
|
|
||
|
container-pdf:
|
||
|
@${CONTAINER_ENGINE} run ${CONTAINER_RUN_PARAMS} ${CONTAINER_SHELL} -c \
|
||
|
"source /.venv/bin/activate ; cd docs ; make latexpdf"
|
||
|
|
||
|
container-clean:
|
||
|
@${CONTAINER_ENGINE} run ${CONTAINER_RUN_PARAMS} ${CONTAINER_SHELL} -c \
|
||
|
"source /.venv/bin/activate ; cd docs ; make clean"
|
||
|
|
||
|
.PHONY: container-build container-login container-html container-pdf container-clean
|
||
|
|
||
|
container-help:
|
||
|
@printf "The container commands allow to use a container to build the documentation.\n"
|
||
|
@printf "Both podman and docker are supported, change the CONTAINER_ENGINE variable to select which to use.\n\n"
|
||
|
@printf "Usage: make [options]\n"
|
||
|
@printf "\
|
||
|
Options:\n\
|
||
|
container-build Build the container image with dependencies (do once).\n\
|
||
|
container-login Access the container shell.\n\
|
||
|
container-html Build html documentation.\n\
|
||
|
container-latexpdf Build pdf documentation.\n\
|
||
|
\n"
|