diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c1e6682..9dc3f22 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -71,3 +71,18 @@ jobs: with: name: sqlite-vec-wasm32-emscripten path: dist/* + build-cosmopolitan: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: | + mkdir $HOME/cosmo + curl -o cosmocc-3.3.6.zip https://github.com/jart/cosmopolitan/releases/download/3.3.6/cosmocc-3.3.6.zip + unzip cosmocc-3.3.6.zip -d $HOME/cosmo + echo "$HOME/cosmo/bin" >> $GITHUB_PATH + - run: ./scripts/vendor.sh + - run: make cli CC=cosmocc AR=cosmoar OMIT_SIMD=1 + - uses: actions/upload-artifact@v4 + with: + name: sqlite-vec-cosmopolitan + path: dist/* diff --git a/Makefile b/Makefile index 092fd99..4e0aaf7 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ COMMIT=$(shell git rev-parse HEAD) VERSION=$(shell cat VERSION) DATE=$(shell date +'%FT%TZ%z') +CC ?= gcc +AR ?= ar ifeq ($(shell uname -s),Darwin) CONFIG_DARWIN=y @@ -62,7 +64,7 @@ cli: $(TARGET_CLI) all: loadable static cli $(TARGET_LOADABLE): sqlite-vec.c sqlite-vec.h $(prefix) - gcc \ + $(CC) \ -fPIC -shared \ -Wall -Wextra \ -Ivendor/ \ @@ -71,9 +73,9 @@ $(TARGET_LOADABLE): sqlite-vec.c sqlite-vec.h $(prefix) $< -o $@ $(TARGET_STATIC): sqlite-vec.c sqlite-vec.h $(prefix) - gcc -Ivendor/sqlite -Ivendor/vec $(CFLAGS) -DSQLITE_CORE \ + $(CC) -Ivendor/ -Ivendor/vec $(CFLAGS) -DSQLITE_CORE \ -O3 -c $< -o $(prefix)/.objs/vec.o - ar rcs $@ $(prefix)/.objs/vec.o + $(AR) rcs $@ $(prefix)/.objs/vec.o $(TARGET_STATIC_H): sqlite-vec.h $(prefix) cp $< $@ @@ -93,41 +95,41 @@ $(BUILD_DIR): $(prefix) mkdir -p $@ $(OBJS_DIR)/sqlite3.o: vendor/sqlite3.c $(OBJS_DIR) - gcc -c -g3 -O3 -DSQLITE_EXTRA_INIT=core_init -DSQLITE_CORE -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -I./vendor $< -o $@ + $(CC) -c -g3 -O3 -DSQLITE_EXTRA_INIT=core_init -DSQLITE_CORE -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -I./vendor $< -o $@ $(LIBS_DIR)/sqlite3.a: $(OBJS_DIR)/sqlite3.o $(LIBS_DIR) - ar rcs $@ $< + $(AR) rcs $@ $< $(BUILD_DIR)/shell-new.c: vendor/shell.c $(BUILD_DIR) sed 's/\/\*extra-version-info\*\//EXTRA_TODO/g' $< > $@ $(OBJS_DIR)/shell.o: $(BUILD_DIR)/shell-new.c $(OBJS_DIR) - gcc -c -g3 -O3 \ - -DHAVE_EDITLINE=1 -I./vendor \ + $(CC) -c -g3 -O3 \ + -I./vendor \ -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS \ - -DEXTRA_TODO="\"CUSTOM BUILD: sqlite-vec\n\"" \ + -DEXTRA_TODO="\"CUSTOMBUILD:sqlite-vec\n\"" \ $< -o $@ $(LIBS_DIR)/shell.a: $(OBJS_DIR)/shell.o $(LIBS_DIR) - ar rcs $@ $< + $(AR) rcs $@ $< $(OBJS_DIR)/sqlite-vec.o: sqlite-vec.c $(OBJS_DIR) - gcc -c -g3 -I./vendor $(CFLAGS) $< -o $@ + $(CC) -c -g3 -Ivendor/ -I./ $(CFLAGS) $< -o $@ $(LIBS_DIR)/sqlite-vec.a: $(OBJS_DIR)/sqlite-vec.o $(LIBS_DIR) - ar rcs $@ $< + $(AR) rcs $@ $< + $(TARGET_CLI): $(LIBS_DIR)/sqlite-vec.a $(LIBS_DIR)/shell.a $(LIBS_DIR)/sqlite3.a examples/sqlite3-cli/core_init.c $(prefix) - gcc -g3 \ - -Ivendor/sqlite -I./ \ + $(CC) -g3 \ + -Ivendor/ -I./ \ -DSQLITE_CORE \ -DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS4 \ -DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS \ -DSQLITE_EXTRA_INIT=core_init \ $(CFLAGS) \ - -lreadline -DHAVE_EDITLINE=1 \ - -ldl -lm -lreadline \ - $(LIBS_DIR)/shell.a $(LIBS_DIR)/sqlite3.a $(LIBS_DIR)/sqlite-vec.a examples/sqlite3-cli/core_init.c -o $@ + -ldl -lm \ + examples/sqlite3-cli/core_init.c $(LIBS_DIR)/shell.a $(LIBS_DIR)/sqlite3.a $(LIBS_DIR)/sqlite-vec.a -o $@ sqlite-vec.h: sqlite-vec.h.tmpl VERSION diff --git a/sqlite-vec.c b/sqlite-vec.c index 06e9719..58e096c 100644 --- a/sqlite-vec.c +++ b/sqlite-vec.c @@ -54,11 +54,13 @@ SQLITE_EXTENSION_INIT1 #ifndef _WIN32 #ifndef __EMSCRIPTEN__ +#ifndef __COSMOPOLITAN__ typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int64_t uint64_t; #endif #endif +#endif typedef int8_t i8; typedef uint8_t u8;