imsg/Makefile
Peter Steinberger bbd6b93a1e
Some checks failed
CI / build (push) Has been cancelled
pages / Deploy docs (push) Has been cancelled
docs: add per-feature docs site and deploy to imsg.sh
Per-feature pages (install, quickstart, permissions, chats, history,
watch, send, groups, attachments, json, rpc, completions, advanced-imcore,
troubleshooting) plus an Apple-styled static-site builder rendering them
to dist/docs-site. GitHub Pages workflow deploys on every docs/ change to
imsg.sh.
2026-05-05 19:09:09 +01:00

63 lines
1.7 KiB
Makefile

SHELL := /bin/bash
.PHONY: help format lint test build imsg clean build-dylib docs-site
help:
@printf "%s\n" \
"make format - swift format in-place" \
"make lint - swift format lint + swiftlint" \
"make test - sync version, patch deps, run swift test" \
"make build - universal release build into bin/" \
"make build-dylib - build injectable dylib for Messages.app" \
"make imsg - clean rebuild + run debug binary (ARGS=...)" \
"make docs-site - build the imsg.sh docs site into dist/docs-site" \
"make clean - swift package clean"
format:
swift format --in-place --recursive Sources Tests
lint:
swift format lint --recursive Sources Tests
swiftlint
test:
scripts/generate-version.sh
swift package resolve
scripts/patch-deps.sh
swift test
build:
scripts/generate-version.sh
swift package resolve
scripts/patch-deps.sh
scripts/build-universal.sh
# Build injectable dylib for Messages.app (DYLD_INSERT_LIBRARIES).
# Uses arm64e architecture to match Messages.app on Apple Silicon.
# Requires SIP disabled on the target machine to inject into system apps.
build-dylib:
@echo "Building imsg-bridge-helper.dylib (injectable)..."
@mkdir -p .build/release
@clang -dynamiclib -arch arm64e -fobjc-arc \
-Wno-arc-performSelector-leaks \
-framework Foundation \
-o .build/release/imsg-bridge-helper.dylib \
Sources/IMsgHelper/IMsgInjected.m
@echo "Built .build/release/imsg-bridge-helper.dylib"
imsg:
scripts/generate-version.sh
swift package resolve
scripts/patch-deps.sh
swift package clean
swift build -c debug --product imsg
./.build/debug/imsg $(ARGS)
docs-site:
node scripts/build-docs-site.mjs
clean:
swift package clean
@rm -f .build/release/imsg-bridge-helper.dylib
@rm -rf dist/docs-site