@@ -226,23 +226,19 @@ else ifeq ($(PLATFORM),android)
226226 STRIP = $(BIN)/llvm-strip --strip-unneeded $@
227227else ifeq ($(PLATFORM),ios)
228228 TARGET := $(DIST_DIR)/ai.dylib
229- SDK := -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=14.0
229+ # Build universal binary for both device (arm64) and simulator (x86_64+arm64)
230+ DEVICE_SDK := $(shell xcrun --sdk iphoneos --show-sdk-path)
231+ SIMULATOR_SDK := $(shell xcrun --sdk iphonesimulator --show-sdk-path)
230232 LLAMA_LIBS += $(BUILD_LLAMA)/ggml/src/ggml-metal/libggml-metal.a $(BUILD_LLAMA)/ggml/src/ggml-blas/libggml-blas.a
231233 WHISPER_LDFLAGS += -lwhisper.coreml
232- LDFLAGS += -L./$(BUILD_LLAMA)/ggml/src/ggml-metal -lggml-metal -L./$(BUILD_LLAMA)/ggml/src/ggml-blas -lggml-blas -framework Accelerate -framework Metal -framework Foundation -framework CoreML -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework Security -ldl -dynamiclib $(SDK)
233- CFLAGS += -arch arm64 -x objective-c $(SDK)
234- LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
235- WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DWHISPER_COREML=ON
234+ # Universal binary supporting both device and simulator
235+ LDFLAGS += -arch arm64 -arch x86_64 -L./$(BUILD_LLAMA)/ggml/src/ggml-metal -lggml-metal -L./$(BUILD_LLAMA)/ggml/src/ggml-blas -lggml-blas -framework Accelerate -framework Metal -framework Foundation -framework CoreML -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework Security -ldl -dynamiclib -miphoneos-version-min=14.0 -miphonesimulator-version-min=14.0
236+ CFLAGS += -arch arm64 -arch x86_64 -x objective-c -miphoneos-version-min=14.0 -miphonesimulator-version-min=14.0
237+ # Configure for universal iOS build (device + simulator)
238+ LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS="iphoneos iphonesimulator"
239+ WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS="iphoneos iphonesimulator" -DWHISPER_COREML=ON
240+ MINIAUDIO_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS="iphoneos iphonesimulator"
236241 STRIP = strip -x -S $@
237- else ifeq ($(PLATFORM),isim)
238- TARGET := $(DIST_DIR)/ai.dylib
239- SDK := -isysroot $(shell xcrun --sdk iphonesimulator --show-sdk-path) -miphonesimulator-version-min=14.0
240- LLAMA_LIBS += $(BUILD_LLAMA)/ggml/src/ggml-metal/libggml-metal.a $(BUILD_LLAMA)/ggml/src/ggml-blas/libggml-blas.a
241- WHISPER_LDFLAGS += -lwhisper.coreml
242- LDFLAGS += -arch x86_64 -arch arm64 -L./$(BUILD_LLAMA)/ggml/src/ggml-metal -lggml-metal -L./$(BUILD_LLAMA)/ggml/src/ggml-blas -lggml-blas -framework Accelerate -framework Metal -framework Foundation -framework CoreML -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework Security -ldl -dynamiclib $(SDK)
243- CFLAGS += -arch x86_64 -arch arm64 -x objective-c $(SDK)
244- LLAMA_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
245- WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DWHISPER_COREML=ON
246242else # linux
247243 TARGET := $(DIST_DIR)/ai.so
248244 LDFLAGS += -shared
@@ -448,8 +444,7 @@ help:
448444 @echo " macos (default on macOS)"
449445 @echo " windows (default on Windows)"
450446 @echo " android (needs ARCH to be set to x86_64 or arm64-v8a and ANDROID_NDK to be set)"
451- @echo " ios (only on macOS)"
452- @echo " isim (only on macOS)"
447+ @echo " ios (universal binary for device and simulator, only on macOS)"
453448 @echo " "
454449 @echo " Targets:"
455450 @echo " all - Build the extension (default)"
0 commit comments