Skip to content

Commit e8f156b

Browse files
vlaskyHarry-Chenclaude
committed
Improve shared library build and installation
- Add configurable install paths via INSTALL_PREFIX, INSTALL_LIB_DIR, INSTALL_INCLUDE_DIR, and INSTALL_BIN_DIR variables - Add EXT_CFLAGS to capture user-provided CFLAGS and CPPFLAGS - Hide internal symbols with -fvisibility=hidden, exposing only the public API (sqlite3_vec_init, sqlite3_vec_numpy_init, sqlite3_vec_static_blobs_init) - Remove sudo from install target (users run sudo make install if needed) Inspired by asg017#149 Co-Authored-By: Harry-Chen <cjc-2008@hotmail.com> Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 03f2b2f commit e8f156b

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

Makefile

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ COMMIT=$(shell git rev-parse HEAD)
33
VERSION=$(shell cat VERSION)
44
DATE=$(shell date +'%FT%TZ%z')
55

6-
INSTALL_LIB_DIR = /usr/local/lib
7-
INSTALL_INCLUDE_DIR = /usr/local/include
8-
INSTALL_BIN_DIR = /usr/local/bin
6+
INSTALL_PREFIX ?= /usr/local
7+
INSTALL_LIB_DIR ?= $(INSTALL_PREFIX)/lib
8+
INSTALL_INCLUDE_DIR ?= $(INSTALL_PREFIX)/include
9+
INSTALL_BIN_DIR ?= $(INSTALL_PREFIX)/bin
910

1011
ifndef CC
1112
CC=gcc
@@ -14,6 +15,9 @@ ifndef AR
1415
AR=ar
1516
endif
1617

18+
# Capture user-provided flags
19+
EXT_CFLAGS := $(CFLAGS) $(CPPFLAGS)
20+
1721
ifeq ($(shell uname -s),Darwin)
1822
CONFIG_DARWIN=y
1923
else ifeq ($(OS),Windows_NT)
@@ -98,15 +102,16 @@ $(BUILD_DIR): $(prefix)
98102
$(TARGET_LOADABLE): sqlite-vec.c sqlite-vec.h $(prefix)
99103
$(CC) \
100104
-fPIC -shared \
105+
-fvisibility=hidden \
101106
-Wall -Wextra \
102107
-Ivendor/ \
103108
-O3 \
104-
$(CFLAGS) \
109+
$(CFLAGS) $(EXT_CFLAGS) \
105110
$< -o $@ \
106111
$(LDLIBS)
107112

108113
$(TARGET_STATIC): sqlite-vec.c sqlite-vec.h $(prefix) $(OBJS_DIR)
109-
$(CC) -Ivendor/ $(CFLAGS) -DSQLITE_CORE -DSQLITE_VEC_STATIC \
114+
$(CC) -Ivendor/ -fvisibility=hidden $(CFLAGS) $(EXT_CFLAGS) -DSQLITE_CORE -DSQLITE_VEC_STATIC \
110115
-O3 -c $< -o $(OBJS_DIR)/vec.o
111116
$(AR) rcs $@ $(OBJS_DIR)/vec.o
112117

@@ -134,21 +139,22 @@ $(LIBS_DIR)/shell.a: $(OBJS_DIR)/shell.o $(LIBS_DIR)
134139
$(AR) rcs $@ $<
135140

136141
$(OBJS_DIR)/sqlite-vec.o: sqlite-vec.c $(OBJS_DIR)
137-
$(CC) -c -g3 -Ivendor/ -I./ $(CFLAGS) $< -o $@
142+
$(CC) -c -g3 -fvisibility=hidden -Ivendor/ -I./ $(CFLAGS) $(EXT_CFLAGS) $< -o $@
138143

139144
$(LIBS_DIR)/sqlite-vec.a: $(OBJS_DIR)/sqlite-vec.o $(LIBS_DIR)
140145
$(AR) rcs $@ $<
141146

142147

143148
$(TARGET_CLI): sqlite-vec.h $(LIBS_DIR)/sqlite-vec.a $(LIBS_DIR)/shell.a $(LIBS_DIR)/sqlite3.a examples/sqlite3-cli/core_init.c $(prefix)
144149
$(CC) -g3 \
150+
-fvisibility=hidden \
145151
-Ivendor/ -I./ \
146152
-DSQLITE_CORE \
147153
-DSQLITE_VEC_STATIC \
148154
-DSQLITE_THREADSAFE=0 -DSQLITE_ENABLE_FTS4 \
149155
-DSQLITE_ENABLE_STMT_SCANSTATUS -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
150156
-DSQLITE_EXTRA_INIT=core_init \
151-
$(CFLAGS) \
157+
$(CFLAGS) $(EXT_CFLAGS) \
152158
-ldl -lm \
153159
examples/sqlite3-cli/core_init.c $(LIBS_DIR)/shell.a $(LIBS_DIR)/sqlite3.a $(LIBS_DIR)/sqlite-vec.a -o $@
154160

@@ -224,7 +230,7 @@ install:
224230
install -m 644 $(TARGET_STATIC) $(INSTALL_LIB_DIR); \
225231
fi
226232
@if [ -f $(TARGET_CLI) ]; then \
227-
sudo install -m 755 $(TARGET_CLI) $(INSTALL_BIN_DIR); \
233+
install -m 755 $(TARGET_CLI) $(INSTALL_BIN_DIR); \
228234
fi
229235
ldconfig
230236

sqlite-vec.h.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
#endif
99

1010
#ifdef SQLITE_VEC_STATIC
11-
#define SQLITE_VEC_API
11+
#define SQLITE_VEC_API __attribute__((visibility("default")))
1212
#else
1313
#ifdef _WIN32
1414
#define SQLITE_VEC_API __declspec(dllexport)
1515
#else
16-
#define SQLITE_VEC_API
16+
#define SQLITE_VEC_API __attribute__((visibility("default")))
1717
#endif
1818
#endif
1919

0 commit comments

Comments
 (0)