Notify.NET/native/MacNotifyWrapper/Makefile
2026-06-14 14:23:56 -05:00

58 lines
1.7 KiB
Makefile

# Makefile for MacNotifyWrapper
#
# Builds a thin Objective-C dylib wrapping UNUserNotificationCenter.
# Produces separate arm64 and x86_64 slices, plus an optional universal binary.
#
# Usage:
# make # build all slices
# make install # copy dylibs into ../../runtimes/
# make universal # also build universal binary
# make clean
SDK := $(shell xcrun --show-sdk-path)
CC := clang
SRC := MacNotifyWrapper.m
CFLAGS := -fobjc-arc -fvisibility=hidden -O2 -Wall -Wextra \
-isysroot $(SDK)
LDFLAGS := -dynamiclib \
-framework Foundation \
-framework AppKit \
-framework UserNotifications \
-install_name @rpath/libMacNotifyWrapper.dylib
ARM64_TARGET := arm64-apple-macos11.0
X64_TARGET := x86_64-apple-macos10.14
OUT_ARM64 := osx-arm64/libMacNotifyWrapper.dylib
OUT_X64 := osx-x64/libMacNotifyWrapper.dylib
OUT_UNIVERSAL := osx-universal/libMacNotifyWrapper.dylib
RUNTIME_ARM64 := ../../runtimes/osx-arm64/native
RUNTIME_X64 := ../../runtimes/osx-x64/native
.PHONY: all universal install clean
all: $(OUT_ARM64) $(OUT_X64)
universal: $(OUT_UNIVERSAL)
$(OUT_ARM64): $(SRC) MacNotifyWrapper.h
mkdir -p osx-arm64
$(CC) $(CFLAGS) -arch arm64 -target $(ARM64_TARGET) $(LDFLAGS) -o $@ $<
$(OUT_X64): $(SRC) MacNotifyWrapper.h
mkdir -p osx-x64
$(CC) $(CFLAGS) -arch x86_64 -target $(X64_TARGET) $(LDFLAGS) -o $@ $<
$(OUT_UNIVERSAL): $(OUT_ARM64) $(OUT_X64)
mkdir -p osx-universal
lipo -create -output $@ $(OUT_ARM64) $(OUT_X64)
install: $(OUT_ARM64) $(OUT_X64)
mkdir -p $(RUNTIME_ARM64) $(RUNTIME_X64)
cp $(OUT_ARM64) $(RUNTIME_ARM64)/
cp $(OUT_X64) $(RUNTIME_X64)/
@echo "Installed to runtimes/"
clean:
rm -rf osx-arm64 osx-x64 osx-universal