Files
luma/Makefile
Ole André Vadla Ravnås b70e8ee7bd build: Load a system frida-core in the app
Sign the USE_SYSTEM_FRIDA build with library validation
off, so the hardened app can load an ad-hoc signed dylib.
2026-09-28 00:39:37 +02:00

78 lines
2.4 KiB
Makefile

BUILD_DIR := $(PWD)/build
DERIVED_DIR := $(BUILD_DIR)/.derived
APP := $(BUILD_DIR)/Luma.app
SOURCES := $(shell find Luma Sources Agent -type f \( \
-name '*.swift' -o \
-name '*.ts' -o \
-name '*.plist' -o \
-name '*.xcassets' -o \
-name '*.pem' \
\) 2>/dev/null)
SHADER_SOURCES := $(wildcard Shaders/*.frag.glsl)
PHARO_IMAGE := Sources/LumaCore/Resources/pharo-image/SwiftyPharo.image
LOCAL_SHADER_TOOLCHAIN := artifacts/ShaderToolchain.xcframework
ifneq ($(wildcard $(LOCAL_SHADER_TOOLCHAIN)),)
export SHADER_TOOLCHAIN_ROOT := $(LOCAL_SHADER_TOOLCHAIN)
endif
IN_BUILD_ENVIRONMENT := scripts/in-build-environment.sh
SYSTEM_FRIDA_ENTITLEMENTS := $(BUILD_DIR)/Luma-macOS-system-frida.entitlements
ifneq ($(USE_SYSTEM_FRIDA),)
ENTITLEMENTS_OVERRIDE := CODE_SIGN_ENTITLEMENTS=$(SYSTEM_FRIDA_ENTITLEMENTS)
endif
all: $(APP)
# The examples are Smalltalk in Swift string literals, which nothing else
# reads. This reads them the way the image would.
# A patch that has gone silent sounds fine to a compiler.
# Both build the agent bundle through a plugin, and SwiftPM runs those in a
# sandbox with no network for npm to install from.
check-patches: $(PHARO_IMAGE)
$(IN_BUILD_ENVIRONMENT) swift run --disable-sandbox LumaSynthCheck
check-examples: $(PHARO_IMAGE)
$(IN_BUILD_ENVIRONMENT) swift run --disable-sandbox LumaExampleCheck
# The editor's completions come from the compiler's language server, which
# only a running one can vouch for.
check-editor: $(PHARO_IMAGE)
$(IN_BUILD_ENVIRONMENT) swift run --disable-sandbox LumaEditorCheck
$(PHARO_IMAGE):
scripts/stage-pharo-image.sh
$(APP): $(SOURCES) $(SHADER_SOURCES) Luma.xcodeproj Package.swift
mkdir -p "$(BUILD_DIR)"
@if [ -n "$(USE_SYSTEM_FRIDA)" ]; then \
cp Luma/Luma-macOS.entitlements "$(SYSTEM_FRIDA_ENTITLEMENTS)"; \
/usr/libexec/PlistBuddy -c "Add :com.apple.security.cs.disable-library-validation bool true" "$(SYSTEM_FRIDA_ENTITLEMENTS)"; \
fi
$(IN_BUILD_ENVIRONMENT) scripts/generate-sources.sh
$(IN_BUILD_ENVIRONMENT) xcodebuild \
-project Luma.xcodeproj \
-scheme Luma \
-configuration Release \
-derivedDataPath "$(DERIVED_DIR)" \
CONFIGURATION_BUILD_DIR="$(BUILD_DIR)" \
$(ENTITLEMENTS_OVERRIDE) \
build
@touch $@
gtk:
$(MAKE) -C LumaGtk build
gtk-release:
$(MAKE) -C LumaGtk build SWIFT_BUILD_FLAGS=-c\ release
clean:
rm -rf "$(BUILD_DIR)"
rm -rf .build LumaGtk/.build
.PHONY: all check-examples check-patches check-editor gtk gtk-release clean