From c3f13e775e8814986974d646d6e4ba21b5cbf228 Mon Sep 17 00:00:00 2001 From: Tommaso Negri Date: Tue, 11 Aug 2026 12:10:48 +0200 Subject: remove docc dependency in favor of the bundled binary --- Makefile | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index e84a5b3..57bbcb7 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,28 @@ PREFIX ?= $(HOME)/.local/bin +# Auto-detect docc binary: prefer standalone, fall back to xcrun +DOCC := $(shell which docc 2>/dev/null || echo "xcrun docc") + +# Derive the build triple from the bin path (e.g., arm64-apple-macosx) +BUILD_DIR := $(shell swift build -c debug --show-bin-path 2>/dev/null) +TRIPLE := $(notdir $(patsubst %/,%,$(dir $(BUILD_DIR)))) +MODULE_DIR := .build/$(TRIPLE)/debug/Modules +SYMBOL_GRAPH_DIR := .build/$(TRIPLE)/symbolgraph + +.DEFAULT_GOAL := all + all: run run: swift run -c debug build: + swift build -c debug + +release: swift build -c release -install: build +install: release install -d $(PREFIX) install ".build/release/bar" "$(PREFIX)/bar" @@ -16,9 +30,33 @@ uninstall: rm -f "$(PREFIX)/bar" clean: - rm -rf .build - -docs: - swift package --disable-sandbox preview-documentation --target bar - -.PHONY: all run build install uninstall clean docs + rm -rf .build .docc-build docs + +# Build the project and generate symbol graphs (prerequisite for docc targets) +# Uses -minimum-access-level internal to capture doc-commented types even when they aren't public +symbol-graphs: build + mkdir -p $(SYMBOL_GRAPH_DIR) + xcrun swift-symbolgraph-extract \ + -module-name bar \ + -target $(TRIPLE)26.0 \ + -sdk $(shell xcrun --show-sdk-path 2>/dev/null) \ + -minimum-access-level internal \ + -I $(MODULE_DIR) \ + -output-dir $(SYMBOL_GRAPH_DIR) + +preview-docs: symbol-graphs + $(DOCC) preview Sources/bar/bar.docc \ + --additional-symbol-graph-dir $(SYMBOL_GRAPH_DIR) \ + --output-dir .docc-build + +generate-docs: symbol-graphs + $(DOCC) convert Sources/bar/bar.docc \ + --additional-symbol-graph-dir $(SYMBOL_GRAPH_DIR) \ + --transform-for-static-hosting \ + --hosting-base-path bar \ + --output-path ./docs \ + --source-service github \ + --source-service-base-url https://github.com/paninihouse/bar/blob/master \ + --checkout-path ~/Developer/paninihouse/tools/bar/ + +.PHONY: all run build release install uninstall clean symbol-graphs preview-docs generate-docs -- cgit v1.2.3