63 lines
1.8 KiB
Makefile
63 lines
1.8 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 TestsLinux
|
|
|
|
lint:
|
|
swift format lint --recursive Sources Tests TestsLinux
|
|
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
|