cosmocc support

This commit is contained in:
Alex Garcia 2024-05-23 11:15:30 -07:00
parent 0a5dcae4c8
commit 0af4e1eaed
3 changed files with 35 additions and 16 deletions

View file

@ -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/*

View file

@ -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

View file

@ -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;