@@ -2,19 +2,39 @@ ifeq ($(ERL_EI_INCLUDE_DIR),)
22$(error ERL_EI_INCLUDE_DIR not set. Invoke via mix)
33endif
44
5+ ifeq ($(ERL_EI_LIBDIR ) ,)
6+ $(error ERL_EI_LIBDIR not set. Invoke via mix)
7+ endif
8+
9+
510# Set Erlang-specific compile and linker flags
611ERL_CFLAGS ?= -I$(ERL_EI_INCLUDE_DIR )
7- ERL_LDFLAGS ?= -L$(ERL_EI_LIBDIR )
12+ ERL_LDFLAGS ?= -L$(ERL_EI_LIBDIR ) -lei
813
9- SRC =$(wildcard c_src/* .c)
10- OBJ=$(SRC:.c =.o)
14+ SRC = $(wildcard c_src/* .c)
1115
1216LDFLAGS ?= -fPIC -shared -pedantic
17+
1318CFLAGS ?= -fPIC -O2
1419SQLITE_CFLAGS = -DSQLITE_THREADSAFE=1 -DSQLITE_USE_URI -DSQLITE_ENABLE_FTS3 \
1520-DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 \
1621-DSQLITE_ENABLE_RTREE
1722
23+ # ESQLITE_USE_SYSTEM - Use the system sqlite3 library
24+ # Set this ENV var to compile/link against the system sqlite3 library.
25+ # This is necessary if other applications are accessing the same sqlite db
26+ # as the versions must match exactly
27+
28+ ifdef ESQLITE_USE_SYSTEM
29+ CFLAGS += -fPIC
30+ LDFLAGS += -fPIC -shared -pedantic -lsqlite3
31+ else
32+ SRC += $(wildcard c_src/sqlite3/*.c)
33+ CFLAGS += $(SQLITE_CFLAGS) -fPIC -Ic_src/sqlite3
34+ endif
35+
36+ OBJ = $(SRC:.c=.o )
37+
1838NIF =priv/esqlite3_nif.so
1939
2040all : priv $(NIF )
2343 mkdir -p priv
2444
2545% .o : % .c
26- $(CC ) -c $(ERL_CFLAGS ) $(CFLAGS ) $( SQLITE_CFLAGS ) -o $@ $<
46+ $(CC ) -c $(ERL_CFLAGS ) $(CFLAGS ) -o $@ $<
2747
2848$(NIF ) : $(OBJ )
2949 $(CC ) $^ $(ERL_LDFLAGS ) $(LDFLAGS ) -o $@
0 commit comments