55OMIT_LOCAL_ENGINE ?= 0
66OMIT_REMOTE_ENGINE ?= 0
77OMIT_IO ?= 0
8+ OMIT_CURL ?= 0
89LLAMA ?=
910CURL_VERSION ?= 8.12.1
1011MBEDTLS_VERSION ?= 3.6.5
@@ -268,30 +269,38 @@ ifeq ($(OMIT_LOCAL_ENGINE),0)
268269 LINKER := $(CXX )
269270 BUILD_DEPS := llama
270271else
271- DEFINES += -DDBMEM_OMIT_LOCAL_ENGINE
272+ override DEFINES += -DDBMEM_OMIT_LOCAL_ENGINE
272273 LLAMA_LIBS :=
273274 LINKER := $(CC )
274275 BUILD_DEPS :=
275276endif
276277
277278ifeq ($(OMIT_REMOTE_ENGINE ) ,0)
278279 C_SOURCES += $(SRC_DIR ) /dbmem-rembed.c
279- INCLUDES += -I$(CURL_DIR ) /include
280- CURL_DEPS := $(CURL_LIB )
281- LDFLAGS += $(CURL_SSL_LIBS )
282- ifeq ($(PLATFORM),windows)
283- CFLAGS += -DCURL_STATICLIB
280+ ifeq ($(OMIT_CURL),1)
281+ override DEFINES += -DDBMEM_OMIT_CURL
282+ OBJC_SOURCES := $(SRC_DIR ) /dbmem-http.m
283+ LDFLAGS += -framework Foundation
284+ CURL_DEPS :=
285+ else
286+ INCLUDES += -I$(CURL_DIR ) /include
287+ CURL_DEPS := $(CURL_LIB )
288+ LDFLAGS += $(CURL_SSL_LIBS )
289+ ifeq ($(PLATFORM),windows)
290+ CFLAGS += -DCURL_STATICLIB
291+ endif
284292 endif
285293else
286- DEFINES += -DDBMEM_OMIT_REMOTE_ENGINE
294+ override DEFINES += -DDBMEM_OMIT_REMOTE_ENGINE
287295 CURL_DEPS :=
288296endif
289297
290298ifeq ($(OMIT_IO ) ,1)
291- DEFINES += -DDBMEM_OMIT_IO
299+ override DEFINES += -DDBMEM_OMIT_IO
292300endif
293301
294302C_OBJECTS := $(patsubst $(SRC_DIR ) /% .c,$(BUILD_DIR ) /% .o,$(C_SOURCES ) )
303+ OBJC_OBJECTS := $(patsubst $(SRC_DIR ) /% .m,$(BUILD_DIR ) /% .o,$(OBJC_SOURCES ) )
295304
296305TARGET := $(DIST_DIR ) /$(OUTPUT_NAME ) .$(EXT )
297306
@@ -342,9 +351,13 @@ $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
342351 @echo " Compiling $<..."
343352 @$(CC ) $(CFLAGS ) $(DEFINES ) $(INCLUDES ) -c $< -o $@
344353
345- $(TARGET ) : $(C_OBJECTS ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(DIST_DIR )
354+ $(BUILD_DIR ) /% .o : $(SRC_DIR ) /% .m | $(BUILD_DIR )
355+ @echo " Compiling $<..."
356+ @$(CC ) $(CFLAGS ) $(DEFINES ) $(INCLUDES ) -fobjc-arc -c $< -o $@
357+
358+ $(TARGET ) : $(C_OBJECTS ) $(OBJC_OBJECTS ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(DIST_DIR )
346359 @echo " Linking $( TARGET) ..."
347- @$(LINKER ) $(C_OBJECTS ) $(LLAMA_LIBS ) $(CURL_DEPS ) $(LDFLAGS ) -o $(TARGET )
360+ @$(LINKER ) $(C_OBJECTS ) $(OBJC_OBJECTS ) $( LLAMA_LIBS ) $(CURL_DEPS ) $(LDFLAGS ) -o $(TARGET )
348361 $(STRIP_CMD )
349362 @echo " Build complete: $( TARGET) "
350363
@@ -375,7 +388,11 @@ ifeq ($(OMIT_LOCAL_ENGINE),0)
375388 endif
376389endif
377390ifeq ($(OMIT_REMOTE_ENGINE ) ,0)
378- TEST_LINK_EXTRAS += $(CURL_LIB ) $(CURL_SSL_LIBS )
391+ ifneq ($(OMIT_CURL),1)
392+ TEST_LINK_EXTRAS += $(CURL_LIB ) $(CURL_SSL_LIBS )
393+ else
394+ TEST_LINK_EXTRAS += -framework Foundation
395+ endif
379396endif
380397
381398# Android: compile SQLite amalgamation into unittest (set SQLITE_AMALGAM=path/to/sqlite3.c)
@@ -393,25 +410,30 @@ $(BUILD_DIR)/test-%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
393410 @echo " Compiling $< (for test)..."
394411 @$(CC ) $(CFLAGS ) $(TEST_DEFINES ) $(DEFINES ) $(INCLUDES ) -c $< -o $@
395412
413+ $(BUILD_DIR ) /test-% .o : $(SRC_DIR ) /% .m | $(BUILD_DIR )
414+ @echo " Compiling $< (for test)..."
415+ @$(CC ) $(CFLAGS ) $(TEST_DEFINES ) $(DEFINES ) $(INCLUDES ) -fobjc-arc -c $< -o $@
416+
396417$(BUILD_DIR ) /test-sqlite3.o : $(SQLITE_AMALGAM ) | $(BUILD_DIR )
397418 @echo " Compiling sqlite3.c (amalgamation)..."
398419 @$(CC ) $(CFLAGS ) -DSQLITE_ENABLE_FTS5 -c $< -o $@
399420
400421TEST_C_OBJECTS := $(patsubst $(SRC_DIR ) /% .c,$(BUILD_DIR ) /test-% .o,$(C_SOURCES ) )
422+ TEST_OBJC_OBJECTS := $(patsubst $(SRC_DIR ) /% .m,$(BUILD_DIR ) /test-% .o,$(OBJC_SOURCES ) )
401423
402- $(BUILD_DIR ) /unittest : $(BUILD_DIR ) /unittest.o $(TEST_C_OBJECTS ) $(TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(BUILD_DIR )
424+ $(BUILD_DIR ) /unittest : $(BUILD_DIR ) /unittest.o $(TEST_C_OBJECTS ) $(TEST_OBJC_OBJECTS ) $( TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(BUILD_DIR )
403425 @echo " Linking unittest..."
404- @$(LINKER ) $(BUILD_DIR ) /unittest.o $(TEST_C_OBJECTS ) $(TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) \
426+ @$(LINKER ) $(BUILD_DIR ) /unittest.o $(TEST_C_OBJECTS ) $(TEST_OBJC_OBJECTS ) $( TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) \
405427 $(TEST_LDFLAGS ) $(FRAMEWORKS ) $(TEST_LINK_EXTRAS ) \
406428 -o $@
407429
408430$(BUILD_DIR ) /e2e.o : $(TEST_DIR ) /e2e.c | $(BUILD_DIR )
409431 @echo " Compiling e2e.c..."
410432 @$(CC ) $(CFLAGS ) $(TEST_DEFINES ) $(DEFINES ) $(INCLUDES ) -c $< -o $@
411433
412- $(BUILD_DIR ) /e2e : $(BUILD_DIR ) /e2e.o $(TEST_C_OBJECTS ) $(TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(BUILD_DIR )
434+ $(BUILD_DIR ) /e2e : $(BUILD_DIR ) /e2e.o $(TEST_C_OBJECTS ) $(TEST_OBJC_OBJECTS ) $( TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) $(CURL_DEPS ) | $(BUILD_DIR )
413435 @echo " Linking e2e..."
414- @$(LINKER ) $(BUILD_DIR ) /e2e.o $(TEST_C_OBJECTS ) $(TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) \
436+ @$(LINKER ) $(BUILD_DIR ) /e2e.o $(TEST_C_OBJECTS ) $(TEST_OBJC_OBJECTS ) $( TEST_SQLITE_OBJ ) $(LLAMA_LIBS ) \
415437 $(TEST_LDFLAGS ) $(FRAMEWORKS ) $(TEST_LINK_EXTRAS ) \
416438 -o $@
417439
0 commit comments