@@ -435,51 +435,51 @@ framework module memory {\
435435}
436436endef
437437
438+ LIB_PREFIXES = ios ios-sim macos
438439FMWK_NAMES = ios-arm64 ios-arm64_x86_64-simulator macos-arm64_x86_64
439440XCFRAMEWORK_LLAMA = LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple"
440441
441442# Helper function to create xcframework from 3 dylibs
442- # Usage: $(call create_xcframework,variant_suffix,output_name)
443443define create_xcframework
444- @for pair in "ios:ios-arm64" "ios-sim:ios-arm64_x86_64-simulator" "macos:macos-arm64_x86_64"; do \
445- platform=$${pair%%:*} ; \
446- fmwk=$${pair # #*:} ; \
444+ @$( foreach i,1 2 3, \
445+ prefix= $( word $( i ) , $( LIB_PREFIXES ) ) ; \
446+ fmwk=$( word $( i ) , $( FMWK_NAMES ) ) ; \
447447 mkdir -p $(DIST_DIR ) /$$fmwk/memory.framework/Headers; \
448448 mkdir -p $(DIST_DIR ) /$$fmwk/memory.framework/Modules; \
449449 cp src/sqlite-memory.h $(DIST_DIR ) /$$fmwk/memory.framework/Headers; \
450450 printf "$(PLIST ) " > $(DIST_DIR ) /$$fmwk/memory.framework/Info.plist; \
451451 printf "$(MODULEMAP ) " > $(DIST_DIR ) /$$fmwk/memory.framework/Modules/module.modulemap; \
452- mv $(DIST_DIR)/$${platform }$(1).dylib $(DIST_DIR)/$$fmwk/memory.framework/memory; \
452+ mv $(DIST_DIR ) /$${prefix }$(1 ) .dylib $(DIST_DIR ) /$$fmwk/memory.framework/memory; \
453453 install_name_tool -id "@rpath/memory.framework/memory" $(DIST_DIR ) /$$fmwk/memory.framework/memory; \
454- done
454+ )
455455 xcodebuild -create-xcframework $(foreach fmwk,$(FMWK_NAMES ) ,-framework $(DIST_DIR ) /$(fmwk ) /memory.framework) -output $(DIST_DIR ) /$(2 ) .xcframework
456456 rm -rf $(foreach fmwk,$(FMWK_NAMES ) ,$(DIST_DIR ) /$(fmwk ) )
457457endef
458458
459459.PHONY : xcframework
460460xcframework :
461- @# Build remote variant (no llama.cpp)
462- $(MAKE ) -j1 distclean && $(MAKE ) PLATFORM=ios OMIT_LOCAL_ENGINE=1 && \
461+ @# Build remote variant (no llama.cpp) - use rm -rf build to preserve dist between builds
462+ MAKEFLAGS= $(MAKE ) distclean && MAKEFLAGS= $(MAKE ) PLATFORM=ios OMIT_LOCAL_ENGINE=1 && \
463463 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios_remote.dylib && \
464- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=ios-sim OMIT_LOCAL_ENGINE=1 && \
464+ rm -rf $( BUILD_DIR ) && MAKEFLAGS= $(MAKE ) PLATFORM=ios-sim OMIT_LOCAL_ENGINE=1 && \
465465 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios-sim_remote.dylib && \
466- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=macos OMIT_LOCAL_ENGINE=1 && \
466+ rm -rf $( BUILD_DIR ) && MAKEFLAGS= $(MAKE ) PLATFORM=macos OMIT_LOCAL_ENGINE=1 && \
467467 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /macos_remote.dylib
468468 $(call create_xcframework,_remote,memory-remote)
469- @# Build local variant (llama.cpp only)
470- $( MAKE ) -j1 distclean && $(MAKE ) PLATFORM=ios OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
469+ @# Build local variant (llama.cpp only) - need distclean between platforms to rebuild llama.cpp
470+ rm -rf $( DIST_DIR ) && MAKEFLAGS= $( MAKE ) distclean && MAKEFLAGS= $(MAKE ) PLATFORM=ios OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
471471 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios_local.dylib && \
472- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=ios-sim OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
472+ rm -rf $( BUILD_DIR ) $( LLAMA_BUILD ) && MAKEFLAGS= $(MAKE ) PLATFORM=ios-sim OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
473473 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios-sim_local.dylib && \
474- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=macos OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
474+ rm -rf $( BUILD_DIR ) $( LLAMA_BUILD ) && MAKEFLAGS= $(MAKE ) PLATFORM=macos OMIT_REMOTE_ENGINE=1 $(XCFRAMEWORK_LLAMA ) && \
475475 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /macos_local.dylib
476476 $(call create_xcframework,_local,memory-local)
477- @# Build full variant (both)
478- $( MAKE ) -j1 distclean && $(MAKE ) PLATFORM=ios $(XCFRAMEWORK_LLAMA ) && \
477+ @# Build full variant (both) - need distclean between platforms to rebuild llama.cpp
478+ rm -rf $( DIST_DIR ) && MAKEFLAGS= $( MAKE ) distclean && MAKEFLAGS= $(MAKE ) PLATFORM=ios $(XCFRAMEWORK_LLAMA ) && \
479479 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios_full.dylib && \
480- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=ios-sim $(XCFRAMEWORK_LLAMA ) && \
480+ rm -rf $( BUILD_DIR ) $( LLAMA_BUILD ) && MAKEFLAGS= $(MAKE ) PLATFORM=ios-sim $(XCFRAMEWORK_LLAMA ) && \
481481 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /ios-sim_full.dylib && \
482- $( MAKE ) -j1 clean && $(MAKE ) PLATFORM=macos $(XCFRAMEWORK_LLAMA ) && \
482+ rm -rf $( BUILD_DIR ) $( LLAMA_BUILD ) && MAKEFLAGS= $(MAKE ) PLATFORM=macos $(XCFRAMEWORK_LLAMA ) && \
483483 mv $(DIST_DIR ) /memory.dylib $(DIST_DIR ) /macos_full.dylib
484484 $(call create_xcframework,_full,memory-full)
485485
0 commit comments