@@ -24,6 +24,13 @@ ARCH ?= $(shell uname -m)
2424ifeq ($(PLATFORM ) ,darwin)
2525 PLATFORM := macos
2626endif
27+ # Handle MINGW/MSYS detection (Git Bash, MSYS2, etc.)
28+ ifneq (,$(findstring mingw,$(PLATFORM ) ) )
29+ PLATFORM := windows
30+ endif
31+ ifneq (,$(findstring msys,$(PLATFORM ) ) )
32+ PLATFORM := windows
33+ endif
2734
2835# Directories
2936SRC_DIR := src
@@ -93,9 +100,9 @@ else ifeq ($(PLATFORM),windows)
93100 EXT := dll
94101 CC := gcc
95102 CXX := g++
96- LDFLAGS := -shared -static-libgcc
103+ LDFLAGS := -shared -static-libgcc -lbcrypt
97104 OUTPUT_NAME := memory
98- TEST_LDFLAGS := -lsqlite3
105+ TEST_LDFLAGS := -lsqlite3 -lbcrypt
99106
100107else ifeq ($(PLATFORM),android)
101108 EXT := so
@@ -169,7 +176,7 @@ ifeq ($(OMIT_LOCAL_ENGINE),0)
169176
170177 # Platform-specific llama.cpp settings
171178 ifeq ($(PLATFORM),macos)
172- LLAMA_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
179+ LLAMA_OPTIONS += -DGGML_NATIVE=OFF - DGGML_OPENMP=OFF -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
173180 # Add Metal and BLAS libraries for macOS (cmake auto-detects and builds these)
174181 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-metal/libggml-metal.a
175182 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-blas/libggml-blas.a
@@ -189,32 +196,34 @@ ifeq ($(OMIT_LOCAL_ENGINE),0)
189196 LDFLAGS += -arch arm64 -arch x86_64
190197 endif
191198 else ifeq ($(PLATFORM),linux)
192- LLAMA_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
199+ LLAMA_OPTIONS += -DGGML_NATIVE=OFF - DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
193200 else ifeq ($(PLATFORM),windows)
194- LLAMA_OPTIONS += -DGGML_OPENMP=OFF
201+ # Target Windows 8+ for CreateFile2 support in cpp-httplib
202+ LLAMA_OPTIONS += -DGGML_NATIVE=OFF -DGGML_OPENMP=OFF -DCMAKE_CXX_FLAGS="-D_WIN32_WINNT=0x0602"
195203 LDFLAGS := -shared -lbcrypt -static-libgcc -Wl,--push-state,-Bstatic,-lstdc++,-lwinpthread,--pop-state
196204 else ifeq ($(PLATFORM),android)
197205 # Android NDK cmake toolchain
198206 ANDROID_OPTIONS := -DCMAKE_TOOLCHAIN_FILE=$(ANDROID_NDK ) /build/cmake/android.toolchain.cmake \
199207 -DANDROID_ABI=$(ARCH ) \
200208 -DANDROID_PLATFORM=android-26 \
201209 -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
210+ -DGGML_NATIVE=OFF \
202211 -DGGML_OPENMP=OFF \
203212 -DGGML_LLAMAFILE=OFF
204213 ifeq ($(ARCH),arm64-v8a)
205214 ANDROID_OPTIONS += -DGGML_CPU_ARM_ARCH=armv8.2-a+dotprod
206215 endif
207216 LLAMA_OPTIONS += $(ANDROID_OPTIONS )
208217 else ifeq ($(PLATFORM),ios)
209- LLAMA_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
218+ LLAMA_OPTIONS += -DGGML_NATIVE=OFF - DGGML_OPENMP=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
210219 # Add Metal and BLAS libraries for iOS
211220 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-metal/libggml-metal.a
212221 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-blas/libggml-blas.a
213222 LDFLAGS := -dynamiclib -isysroot $(SDK ) -arch arm64 -miphoneos-version-min=14.0 \
214223 -framework Metal -framework Foundation -framework Accelerate -framework CoreFoundation -framework Security \
215224 -ldl -lpthread -lm -headerpad_max_install_names
216225 else ifeq ($(PLATFORM),ios-sim)
217- LLAMA_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'
226+ LLAMA_OPTIONS += -DGGML_NATIVE=OFF - DGGML_OPENMP=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 '-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'
218227 # Add Metal and BLAS libraries for iOS simulator
219228 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-metal/libggml-metal.a
220229 LLAMA_LIBS += $(LLAMA_BUILD ) /ggml/src/ggml-blas/libggml-blas.a
@@ -328,12 +337,11 @@ test: $(BUILD_DEPS) $(TARGET) $(BUILD_DIR)/unittest
328337TEST_DEFINES := -DSQLITE_CORE
329338
330339# Test-specific link flags (includes all frameworks/libs needed for llama.cpp)
340+ TEST_LINK_EXTRAS :=
331341ifeq ($(OMIT_LOCAL_ENGINE ) ,0)
332342 ifeq ($(PLATFORM),macos)
333343 TEST_LINK_EXTRAS := -framework Metal -framework Foundation -framework Accelerate -lobjc
334344 endif
335- else
336- TEST_LINK_EXTRAS :=
337345endif
338346
339347# Compile test sources with SQLITE_CORE
@@ -431,17 +439,17 @@ XCFRAMEWORK_LLAMA = LLAMA="-DGGML_NATIVE=OFF -DGGML_METAL=ON -DGGML_ACCELERATE=O
431439# Helper function to create xcframework from 3 dylibs
432440# Usage: $(call create_xcframework,variant_suffix,output_name)
433441define create_xcframework
434- @$( foreach pair, ios:ios-arm64 ios-sim:ios-arm64_x86_64-simulator macos:macos-arm64_x86_64, \
435- platform=$( word 1, $( subst :, , $( pair ) ) ) ; \
436- fmwk=$( word 2, $( subst :, , $( pair ) ) ) ; \
442+ @for pair in " ios:ios-arm64" " ios-sim:ios-arm64_x86_64-simulator" " macos:macos-arm64_x86_64"; do \
443+ platform=$${ pair%%:*} ; \
444+ fmwk=$${ pair# #*:} ; \
437445 mkdir -p $(DIST_DIR)/$$fmwk/memory.framework/Headers; \
438446 mkdir -p $(DIST_DIR)/$$fmwk/memory.framework/Modules; \
439447 cp src/sqlite-memory.h $(DIST_DIR)/$$fmwk/memory.framework/Headers; \
440448 printf "$(PLIST)" > $(DIST_DIR)/$$fmwk/memory.framework/Info.plist; \
441449 printf "$(MODULEMAP)" > $(DIST_DIR)/$$fmwk/memory.framework/Modules/module.modulemap; \
442- mv $(DIST_DIR ) /$$platform$(1 ) .dylib $(DIST_DIR ) /$$fmwk/memory.framework/memory; \
450+ mv $(DIST_DIR)/$${ platform} $(1).dylib $(DIST_DIR)/$$fmwk/memory.framework/memory; \
443451 install_name_tool -id "@rpath/memory.framework/memory" $(DIST_DIR)/$$fmwk/memory.framework/memory; \
444- )
452+ done
445453 xcodebuild -create-xcframework $(foreach fmwk,$(FMWK_NAMES ) ,-framework $(DIST_DIR ) /$(fmwk ) /memory.framework) -output $(DIST_DIR ) /$(2 ) .xcframework
446454 rm -rf $(foreach fmwk,$(FMWK_NAMES ) ,$(DIST_DIR ) /$(fmwk ) )
447455endef
0 commit comments