# You should not have to change anything below this line
###############################################################################
+USE_AMALGAMATION = @USE_AMALGAMATION@
+
# Object files for the SQLite library (non-amalgamation).
#
-OBJS0 = alter.lo analyze.lo attach.lo auth.lo backup.lo bitvec.lo btmutex.lo \
- btree.lo build.lo callback.lo complete.lo ctime.lo date.lo \
- delete.lo expr.lo fault.lo fkey.lo func.lo global.lo \
- hash.lo journal.lo insert.lo legacy.lo loadext.lo \
- main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \
- memjournal.lo \
- mutex.lo mutex_noop.lo mutex_os2.lo mutex_unix.lo mutex_w32.lo \
- notify.lo opcodes.lo os.lo os_unix.lo os_win.lo os_os2.lo \
- pager.lo parse.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \
- random.lo resolve.lo rowset.lo select.lo status.lo \
- table.lo tokenize.lo trigger.lo update.lo \
- util.lo vacuum.lo \
- vdbe.lo vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbetrace.lo \
- wal.lo walker.lo where.lo utf.lo vtab.lo
+LIBOBJS0 = alter.lo analyze.lo attach.lo auth.lo \
+ backup.lo bitvec.lo btmutex.lo btree.lo build.lo \
+ callback.lo complete.lo ctime.lo date.lo delete.lo expr.lo fault.lo fkey.lo \
+ fts3.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo fts3_porter.lo \
+ fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo fts3_write.lo \
+ func.lo global.lo hash.lo \
+ icu.lo insert.lo journal.lo legacy.lo loadext.lo \
+ main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \
+ memjournal.lo \
+ mutex.lo mutex_noop.lo mutex_os2.lo mutex_unix.lo mutex_w32.lo \
+ notify.lo opcodes.lo os.lo os_os2.lo os_unix.lo os_win.lo \
+ pager.lo parse.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \
+ random.lo resolve.lo rowset.lo rtree.lo select.lo status.lo \
+ table.lo tokenize.lo trigger.lo \
+ update.lo util.lo vacuum.lo \
+ vdbe.lo vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbetrace.lo \
+ wal.lo walker.lo where.lo utf.o vtab.lo
# Object files for the amalgamation.
#
-OBJS1 = sqlite3.lo
+LIBOBJS1 = sqlite3.lo
# Determine the real value of LIBOBJ based on the 'configure' script
#
-USE_AMALGAMATION = @USE_AMALGAMATION@
-LIBOBJ = $(OBJS$(USE_AMALGAMATION))
+LIBOBJ = $(LIBOBJS$(USE_AMALGAMATION))
# All of the source code files.
$(TOP)/src/walker.c \
$(TOP)/src/where.c
-# Generated source code files
-#
-SRC += \
- keywordhash.h \
- opcodes.c \
- opcodes.h \
- parse.c \
- parse.h \
- config.h \
- sqlite3.h
-
# Source code for extensions
#
SRC += \
$(TOP)/ext/rtree/rtree.h \
$(TOP)/ext/rtree/rtree.c
-# Source code to the library files needed by the test fixture
+
+# Generated source code files
#
-TESTSRC2 = \
- $(TOP)/src/attach.c \
- $(TOP)/src/backup.c \
- $(TOP)/src/bitvec.c \
- $(TOP)/src/btree.c \
- $(TOP)/src/build.c \
- $(TOP)/src/ctime.c \
- $(TOP)/src/date.c \
- $(TOP)/src/expr.c \
- $(TOP)/src/func.c \
- $(TOP)/src/insert.c \
- $(TOP)/src/mem5.c \
- $(TOP)/src/os.c \
- $(TOP)/src/os_os2.c \
- $(TOP)/src/os_unix.c \
- $(TOP)/src/os_win.c \
- $(TOP)/src/pager.c \
- $(TOP)/src/pcache.c \
- $(TOP)/src/pcache1.c \
- $(TOP)/src/pragma.c \
- $(TOP)/src/prepare.c \
- $(TOP)/src/printf.c \
- $(TOP)/src/random.c \
- $(TOP)/src/select.c \
- $(TOP)/src/tokenize.c \
- $(TOP)/src/utf.c \
- $(TOP)/src/util.c \
- $(TOP)/src/vdbe.c \
- $(TOP)/src/vdbeapi.c \
- $(TOP)/src/vdbeaux.c \
- $(TOP)/src/vdbemem.c \
- $(TOP)/src/vdbetrace.c \
- $(TOP)/src/wal.c \
- $(TOP)/src/wal.h \
- $(TOP)/src/where.c \
- parse.c
+SRC += \
+ keywordhash.h \
+ opcodes.c \
+ opcodes.h \
+ parse.c \
+ parse.h \
+ config.h \
+ sqlite3.h
-# Source code to the actual test files.
+# Source code to the test files.
#
TESTSRC = \
$(TOP)/src/test1.c \
$(TOP)/src/test_vfs.c \
$(TOP)/src/test_wsd.c
+# Source code to the library files needed by the test fixture
+#
+TESTSRC2 = \
+ $(TOP)/src/attach.c \
+ $(TOP)/src/backup.c \
+ $(TOP)/src/bitvec.c \
+ $(TOP)/src/btree.c \
+ $(TOP)/src/build.c \
+ $(TOP)/src/ctime.c \
+ $(TOP)/src/date.c \
+ $(TOP)/src/expr.c \
+ $(TOP)/src/func.c \
+ $(TOP)/src/insert.c \
+ $(TOP)/src/wal.c \
+ $(TOP)/src/mem5.c \
+ $(TOP)/src/os.c \
+ $(TOP)/src/os_os2.c \
+ $(TOP)/src/os_unix.c \
+ $(TOP)/src/os_win.c \
+ $(TOP)/src/pager.c \
+ $(TOP)/src/pragma.c \
+ $(TOP)/src/prepare.c \
+ $(TOP)/src/printf.c \
+ $(TOP)/src/random.c \
+ $(TOP)/src/pcache.c \
+ $(TOP)/src/pcache1.c \
+ $(TOP)/src/select.c \
+ $(TOP)/src/tokenize.c \
+ $(TOP)/src/utf.c \
+ $(TOP)/src/util.c \
+ $(TOP)/src/vdbeapi.c \
+ $(TOP)/src/vdbeaux.c \
+ $(TOP)/src/vdbe.c \
+ $(TOP)/src/vdbemem.c \
+ $(TOP)/src/vdbetrace.c \
+ $(TOP)/src/where.c \
+ parse.c \
+ $(TOP)/ext/fts3/fts3.c \
+ $(TOP)/ext/fts3/fts3_expr.c \
+ $(TOP)/ext/fts3/fts3_tokenizer.c \
+ $(TOP)/ext/fts3/fts3_write.c \
+ $(TOP)/ext/async/sqlite3async.c
+
# Header files used by all library source files.
#
HDR = \
- sqlite3.h \
$(TOP)/src/btree.h \
$(TOP)/src/btreeInt.h \
$(TOP)/src/hash.h \
$(TOP)/src/hwtime.h \
- $(TOP)/src/sqliteLimit.h \
+ keywordhash.h \
$(TOP)/src/mutex.h \
opcodes.h \
$(TOP)/src/os.h \
$(TOP)/src/os_common.h \
+ $(TOP)/src/pager.h \
+ $(TOP)/src/pcache.h \
+ parse.h \
+ sqlite3.h \
$(TOP)/src/sqlite3ext.h \
$(TOP)/src/sqliteInt.h \
+ $(TOP)/src/sqliteLimit.h \
$(TOP)/src/vdbe.h \
$(TOP)/src/vdbeInt.h \
- parse.h \
config.h
# Header files used by extensions
#
-HDR += \
+EXTHDR += \
$(TOP)/ext/fts1/fts1.h \
$(TOP)/ext/fts1/fts1_hash.h \
$(TOP)/ext/fts1/fts1_tokenizer.h
-HDR += \
+EXTHDR += \
$(TOP)/ext/fts2/fts2.h \
$(TOP)/ext/fts2/fts2_hash.h \
$(TOP)/ext/fts2/fts2_tokenizer.h
-HDR += \
+EXTHDR += \
$(TOP)/ext/fts3/fts3.h \
$(TOP)/ext/fts3/fts3Int.h \
$(TOP)/ext/fts3/fts3_hash.h \
$(TOP)/ext/fts3/fts3_tokenizer.h
-HDR += \
+EXTHDR += \
$(TOP)/ext/rtree/rtree.h
-HDR += \
+EXTHDR += \
$(TOP)/ext/icu/sqliteicu.h
-# If using the amalgamation, use sqlite3.c directly to build the test
-# fixture. Otherwise link against libsqlite3.la. (This distinction is
-# necessary because the test fixture requires non-API symbols which are
-# hidden when the library is built via the amalgamation).
-#
-TESTFIXTURE_SRC0 = $(TESTSRC2) libsqlite3.la
-TESTFIXTURE_SRC1 = sqlite3.c
-TESTFIXTURE_SRC = $(TESTSRC) $(TOP)/src/tclsqlite.c $(TESTFIXTURE_SRC$(USE_AMALGAMATION))
-
-
# This is the default Makefile target. The objects listed here
# are what get build when you type just "make" with no arguments.
#
# files are automatically generated. This target takes care of
# all that automatic generation.
#
-.target_source: $(SRC)
+.target_source: $(SRC) $(TOP)/tool/vdbe-compress.tcl
rm -rf tsrc
- mkdir -p tsrc
- cp $(SRC) tsrc
+ mkdir tsrc
+ cp -f $(SRC) tsrc
rm tsrc/sqlite.h.in tsrc/parse.y
$(TCLSH_CMD) $(TOP)/tool/vdbe-compress.tcl <tsrc/vdbe.c >vdbe.new
mv vdbe.new tsrc/vdbe.c
sqlite3.c: .target_source $(TOP)/tool/mksqlite3c.tcl
$(TCLSH_CMD) $(TOP)/tool/mksqlite3c.tcl
+# Rule to build the amalgamation
+#
+sqlite3.lo: sqlite3.c
+ $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
+
# Rules to build the LEMON compiler generator
#
lemon$(BEXE): $(TOP)/tool/lemon.c $(TOP)/src/lempar.c
$(BCC) -o $@ $(TOP)/tool/lemon.c
cp $(TOP)/src/lempar.c .
-
-# Rule to build the amalgamation
+# Rules to build individual *.o files from generated *.c files. This
+# applies to:
#
-sqlite3.lo: sqlite3.c
- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
+# parse.o
+# opcodes.o
+#
+parse.lo: parse.c $(HDR)
+ $(LTCOMPILE) $(TEMP_STORE) -c parse.c
-# Rules to build individual files
+opcodes.lo: opcodes.c
+ $(LTCOMPILE) $(TEMP_STORE) -c opcodes.c
+
+# Rules to build individual *.o files from files in the src directory.
#
alter.lo: $(TOP)/src/alter.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/alter.c
pcache1.lo: $(TOP)/src/pcache1.c $(HDR) $(TOP)/src/pcache.h
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/pcache1.c
-opcodes.lo: opcodes.c
- $(LTCOMPILE) $(TEMP_STORE) -c opcodes.c
-
-opcodes.c: opcodes.h $(TOP)/mkopcodec.awk
- sort -n -b -k 3 opcodes.h | $(NAWK) -f $(TOP)/mkopcodec.awk >opcodes.c
-
-opcodes.h: parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
- cat parse.h $(TOP)/src/vdbe.c | $(NAWK) -f $(TOP)/mkopcodeh.awk >opcodes.h
-
os.lo: $(TOP)/src/os.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/os.c
os_os2.lo: $(TOP)/src/os_os2.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/os_os2.c
-parse.lo: parse.c $(HDR)
- $(LTCOMPILE) $(TEMP_STORE) -c parse.c
-
-parse.h: parse.c
-
-parse.c: $(TOP)/src/parse.y lemon$(BEXE) $(TOP)/addopcodes.awk
- cp $(TOP)/src/parse.y .
- ./lemon$(BEXE) $(OPT_FEATURE_FLAGS) $(OPTS) parse.y
- mv parse.h parse.h.temp
- $(NAWK) -f $(TOP)/addopcodes.awk parse.h.temp >parse.h
-
pragma.lo: $(TOP)/src/pragma.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/pragma.c
status.lo: $(TOP)/src/status.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/status.c
-sqlite3.h: $(TOP)/src/sqlite.h.in $(TOP)/manifest.uuid $(TOP)/VERSION
- tclsh $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h
-
table.lo: $(TOP)/src/table.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/table.c
-tclsqlite.lo: $(TOP)/src/tclsqlite.c $(HDR)
- $(LTCOMPILE) -DUSE_TCL_STUBS=1 -c $(TOP)/src/tclsqlite.c
-
tokenize.lo: $(TOP)/src/tokenize.c keywordhash.h $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/tokenize.c
-keywordhash.h: $(TOP)/tool/mkkeywordhash.c
- $(BCC) -o mkkeywordhash$(BEXE) $(OPT_FEATURE_FLAGS) $(OPTS) $(TOP)/tool/mkkeywordhash.c
- ./mkkeywordhash$(BEXE) >keywordhash.h
-
trigger.lo: $(TOP)/src/trigger.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/trigger.c
where.lo: $(TOP)/src/where.c $(HDR)
$(LTCOMPILE) $(TEMP_STORE) -c $(TOP)/src/where.c
+tclsqlite.lo: $(TOP)/src/tclsqlite.c $(HDR)
+ $(LTCOMPILE) -DUSE_TCL_STUBS=1 -c $(TOP)/src/tclsqlite.c
+
tclsqlite-shell.lo: $(TOP)/src/tclsqlite.c $(HDR)
$(LTCOMPILE) -DTCLSH=1 -o $@ -c $(TOP)/src/tclsqlite.c
$(LTLINK) -o $@ tclsqlite-shell.lo \
libsqlite3.la $(LIBTCL)
+# Rules to build opcodes.c and opcodes.h
+#
+opcodes.c: opcodes.h $(TOP)/mkopcodec.awk
+ sort -n -b -k 3 opcodes.h | $(NAWK) -f $(TOP)/mkopcodec.awk >opcodes.c
+
+opcodes.h: parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
+ cat parse.h $(TOP)/src/vdbe.c | $(NAWK) -f $(TOP)/mkopcodeh.awk >opcodes.h
+
+# Rules to build parse.c and parse.h - the outputs of lemon.
+#
+parse.h: parse.c
+
+parse.c: $(TOP)/src/parse.y lemon$(BEXE) $(TOP)/addopcodes.awk
+ cp $(TOP)/src/parse.y .
+ rm -f parse.h
+ ./lemon$(BEXE) $(OPT_FEATURE_FLAGS) $(OPTS) parse.y
+ mv parse.h parse.h.temp
+ $(NAWK) -f $(TOP)/addopcodes.awk parse.h.temp >parse.h
+
+sqlite3.h: $(TOP)/src/sqlite.h.in $(TOP)/manifest.uuid $(TOP)/VERSION
+ tclsh $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h
+
+keywordhash.h: $(TOP)/tool/mkkeywordhash.c
+ $(BCC) -o mkkeywordhash$(BEXE) $(OPT_FEATURE_FLAGS) $(OPTS) $(TOP)/tool/mkkeywordhash.c
+ ./mkkeywordhash$(BEXE) >keywordhash.h
+
+
+
+# Rules to build the extension objects.
+#
+icu.lo: $(TOP)/ext/icu/icu.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/icu/icu.c
+
+fts2.lo: $(TOP)/ext/fts2/fts2.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2.c
+
+fts2_hash.lo: $(TOP)/ext/fts2/fts2_hash.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_hash.c
+
+fts2_icu.lo: $(TOP)/ext/fts2/fts2_icu.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_icu.c
+
+fts2_porter.lo: $(TOP)/ext/fts2/fts2_porter.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_porter.c
+
+fts2_tokenizer.lo: $(TOP)/ext/fts2/fts2_tokenizer.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_tokenizer.c
+
+fts2_tokenizer1.lo: $(TOP)/ext/fts2/fts2_tokenizer1.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_tokenizer1.c
+
+fts3.lo: $(TOP)/ext/fts3/fts3.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3.c
+
+fts3_expr.lo: $(TOP)/ext/fts3/fts3_expr.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_expr.c
+
+fts3_hash.lo: $(TOP)/ext/fts3/fts3_hash.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_hash.c
+
+fts3_icu.lo: $(TOP)/ext/fts3/fts3_icu.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_icu.c
+
+fts3_snippet.lo: $(TOP)/ext/fts3/fts3_snippet.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_snippet.c
+
+fts3_porter.lo: $(TOP)/ext/fts3/fts3_porter.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_porter.c
+
+fts3_tokenizer.lo: $(TOP)/ext/fts3/fts3_tokenizer.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_tokenizer.c
+
+fts3_tokenizer1.lo: $(TOP)/ext/fts3/fts3_tokenizer1.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_tokenizer1.c
+
+fts3_write.lo: $(TOP)/ext/fts3/fts3_write.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_write.c
+
+rtree.lo: $(TOP)/ext/rtree/rtree.c $(HDR) $(EXTHDR)
+ $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/rtree/rtree.c
+
+
+# Rules to build the 'testfixture' application.
+#
+# If using the amalgamation, use sqlite3.c directly to build the test
+# fixture. Otherwise link against libsqlite3.la. (This distinction is
+# necessary because the test fixture requires non-API symbols which are
+# hidden when the library is built via the amalgamation).
+#
+TESTFIXTURE_FLAGS = -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1
+TESTFIXTURE_FLAGS += -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE
+
+TESTFIXTURE_SRC0 = $(TESTSRC2) libsqlite3.la
+TESTFIXTURE_SRC1 = sqlite3.c
+TESTFIXTURE_SRC = $(TESTSRC) $(TOP)/src/tclsqlite.c $(TESTFIXTURE_SRC$(USE_AMALGAMATION))
+
testfixture$(TEXE): $(TESTFIXTURE_SRC)
- $(LTLINK) -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_NO_SYNC=1\
- -DSQLITE_CRASH_TEST=1 \
- -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE $(TEMP_STORE) \
+ $(LTLINK) -DSQLITE_NO_SYNC=1 $(TEMP_STORE) $(TESTFIXTURE_FLAGS) \
-o $@ $(TESTFIXTURE_SRC) $(LIBTCL) $(TLIBS)
fulltest: testfixture$(TEXE) sqlite3$(TEXE)
./testfixture$(TEXE) $(TOP)/test/all.test
+soaktest: testfixture$(TEXE) sqlite3$(TEXE)
+ ./testfixture$(TEXE) $(TOP)/test/all.test -soak=1
+
test: testfixture$(TEXE) sqlite3$(TEXE)
./testfixture$(TEXE) $(TOP)/test/veryquick.test
$(TEMP_STORE) -o $@ $(TESTFIXTURE_SRC) $(LIBTCL)
+# Standard install and cleanup targets
+#
lib_install: libsqlite3.la
$(INSTALL) -d $(DESTDIR)$(libdir)
$(LTINSTALL) libsqlite3.la $(DESTDIR)$(libdir)
clean:
rm -f *.lo *.la *.o sqlite3$(TEXE) libsqlite3.la
rm -f sqlite3.h opcodes.*
- rm -rf .libs .deps tsrc
+ rm -rf .libs .deps
rm -f lemon$(BEXE) lempar.c parse.* sqlite*.tar.gz
rm -f mkkeywordhash$(BEXE) keywordhash.h
rm -f $(PUBLISH)
rm -f *.da *.bb *.bbg gmon.out
+ rm -rf tsrc .target_source
rm -f testfixture$(TEXE) test.db
- rm -f common.tcl
rm -f sqlite3.dll sqlite3.lib sqlite3.def
- rm -f sqlite3.c .target_source
+ rm -f sqlite3.c
distclean: clean
rm -f config.log config.status libtool Makefile sqlite3.pc