aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorTommaso Negri <me@tommasongr.com>2026-08-11 12:10:48 +0200
committerTommaso Negri <me@tommasongr.com>2026-08-11 12:10:48 +0200
commitc3f13e775e8814986974d646d6e4ba21b5cbf228 (patch)
tree6d776beb3008b2a446426be03345508fb80bffb2 /Makefile
parent149f4cb0e22f6b08e1eb26e765b80892ce295ff2 (diff)
downloadbar-c3f13e775e8814986974d646d6e4ba21b5cbf228.tar.gz
bar-c3f13e775e8814986974d646d6e4ba21b5cbf228.zip
remove docc dependency in favor of the bundled binary
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile52
1 files changed, 45 insertions, 7 deletions
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