diff --git a/Makefile b/Makefile index ffd676e..90d5a46 100644 --- a/Makefile +++ b/Makefile @@ -2,87 +2,84 @@ # Build usable documents # -ASCIIDOCTOR = asciidoctor -ASCIIDOCTOR_PDF = $(ASCIIDOCTOR)-pdf +DOCS := \ + riscv-sbi.adoc + +DATE ?= $(shell date +%Y-%m-%d) +VERSION ?= v0.0.0 +REVMARK ?= Draft +DOCKER_IMG := riscvintl/riscv-docs-base-container-image:latest +ifneq ($(SKIP_DOCKER),true) + DOCKER_CMD := docker run --rm -v ${PWD}:/build -w /build \ + ${DOCKER_IMG} \ + /bin/sh -c + DOCKER_QUOTE := " +endif + +SRC_DIR := src +BUILD_DIR := build + +DOCS_PDF := $(DOCS:%.adoc=%.pdf) +DOCS_HTML := $(DOCS:%.adoc=%.html) + +XTRA_ADOC_OPTS := +ASCIIDOCTOR_PDF := asciidoctor-pdf +ASCIIDOCTOR_HTML := asciidoctor OPTIONS := --trace \ - -a toc \ -a compress \ -a mathematical-format=svg \ + -a revnumber=${VERSION} \ + -a revremark=${REVMARK} \ + -a revdate=${DATE} \ -a pdf-fontsdir=docs-resources/fonts \ -a pdf-theme=docs-resources/themes/riscv-pdf.yml \ + $(XTRA_ADOC_OPTS) \ + -D build \ --failure-level=ERROR REQUIRES := --require=asciidoctor-bibtex \ --require=asciidoctor-diagram \ + --require=asciidoctor-lists \ --require=asciidoctor-mathematical -DITAA = ditaa -DEPS = src/contributors.adoc -DEPS += src/changelog.adoc -DEPS += src/intro.adoc -DEPS += src/terms.adoc -DEPS += src/binary-encoding.adoc -DEPS += src/ext-base.adoc -DEPS += src/ext-legacy.adoc -DEPS += src/ext-time.adoc -DEPS += src/ext-ipi.adoc -DEPS += src/ext-rfence.adoc -DEPS += src/ext-hsm.adoc -DEPS += src/ext-sys-reset.adoc -DEPS += src/ext-pmu.adoc -DEPS += src/ext-debug-console.adoc -DEPS += src/ext-sys-suspend.adoc -DEPS += src/ext-cppc.adoc -DEPS += src/ext-nested-acceleration.adoc -DEPS += src/ext-steal-time.adoc -DEPS += src/ext-sse.adoc -DEPS += src/ext-firmware-features.adoc -DEPS += src/ext-debug-triggers.adoc -DEPS += src/ext-experimental.adoc -DEPS += src/ext-vendor.adoc -DEPS += src/ext-firmware.adoc -DEPS += src/references.adoc -DEPS += src/references.bib -IMAGES = images/riscv-sbi-intro1.png -IMAGES += images/riscv-sbi-intro2.png -IMAGES += images/riscv-sbi-hsm.png -IMAGES += images/riscv-sbi-sse-sm.png -REVSNIP = $(SPEC)/autogenerated/revision.adoc-snippet -TARGETS = riscv-sbi.pdf -TARGETS += riscv-sbi.html -TARGETS += $(REVSNIP) -COMMITDATE=$(shell git show -s --format=%ci | cut -d ' ' -f 1) -GITVERSION=$(shell git describe --tag) -SPEC=$(shell pwd) - -.PHONY: all -all: $(IMAGES) $(TARGETS) - -images/%.png: src/%.ditaa - rm -f $@ - $(DITAA) $< $@ - -%.html: %.adoc $(IMAGES) $(REVSNIP) $(DEPS) - $(ASCIIDOCTOR) -d book -b html $< - -%.pdf: %.adoc $(IMAGES) docs-resources/themes/riscv-pdf.yml $(REVSNIP) $(DEPS) - $(ASCIIDOCTOR_PDF) $(OPTIONS) $(REQUIRES) --out-file=$@ $< - -$(SPEC)/autogenerated: - -mkdir $@ - -$(SPEC)/autogenerated/revision.adoc-snippet: Makefile $(SPEC)/autogenerated - echo ":revdate: ${COMMITDATE}" > $@-tmp - echo ":revnumber: ${GITVERSION}" >> $@-tmp - (test -f $@ && diff $@ $@-tmp) || mv $@-tmp $@ - -.PHONY: clean -clean: - rm -f $(TARGETS) - rm -rf $(SPEC)/autogenerated -.PHONY: install-debs -install-debs: - sudo apt-get install pandoc asciidoctor ditaa ruby-asciidoctor-pdf +.PHONY: all build clean build-container build-no-container build-docs + +all: build + +build-docs: $(DOCS_PDF) $(DOCS_HTML) + +vpath %.adoc $(SRC_DIR) -.PHONY: install-rpms -install-rpms: - sudo dnf install ditaa pandoc rubygem-asciidoctor rubygem-asciidoctor-pdf +%.pdf: %.adoc + $(DOCKER_CMD) $(DOCKER_QUOTE) $(ASCIIDOCTOR_PDF) $(OPTIONS) $(REQUIRES) $< $(DOCKER_QUOTE) + +%.html: %.adoc + $(DOCKER_CMD) $(DOCKER_QUOTE) $(ASCIIDOCTOR_HTML) $(OPTIONS) $(REQUIRES) $< $(DOCKER_QUOTE) + +build: + @echo "Checking if Docker is available..." + @if command -v docker >/dev/null 2>&1 ; then \ + echo "Docker is available, building inside Docker container..."; \ + $(MAKE) build-container; \ + else \ + echo "Docker is not available, building without Docker..."; \ + $(MAKE) build-no-container; \ + fi + +build-container: + @echo "Starting build inside Docker container..." + $(MAKE) build-docs + @echo "Build completed successfully inside Docker container." + +build-no-container: + @echo "Starting build..." + $(MAKE) SKIP_DOCKER=true build-docs + @echo "Build completed successfully." + +# Update docker image to latest +docker-pull-latest: + docker pull ${DOCKER_IMG} + +clean: + @echo "Cleaning up generated files..." + rm -rf $(BUILD_DIR) + @echo "Cleanup completed." \ No newline at end of file diff --git a/images/riscv-sbi-intro1.png b/images/riscv-sbi-intro1.png new file mode 100644 index 0000000..953e652 Binary files /dev/null and b/images/riscv-sbi-intro1.png differ diff --git a/riscv-sbi.adoc b/riscv-sbi.adoc index e8cfe2b..2a54111 100644 --- a/riscv-sbi.adoc +++ b/riscv-sbi.adoc @@ -17,6 +17,7 @@ :experimental: :reproducible: //:WaveDromEditorApp: app/wavedrom-editor.app +:imagesdir: . :imagesoutdir: docs-resources/images :bibtex-file: src/references.bib :bibtex-order: alphabetical