main.mk 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. ###############################################################################
  2. # The following macros should be defined before this script is
  3. # invoked:
  4. #
  5. # TOP The toplevel directory of the source tree. This is the
  6. # directory that contains this "Makefile.in" and the
  7. # "configure.in" script.
  8. #
  9. # BCC C Compiler and options for use in building executables that
  10. # will run on the platform that is doing the build.
  11. #
  12. # THREADLIB Specify any extra linker options needed to make the library
  13. # thread safe
  14. #
  15. # OPTS Extra compiler command-line options.
  16. #
  17. # EXE The suffix to add to executable files. ".exe" for windows
  18. # and "" for Unix.
  19. #
  20. # TCC C Compiler and options for use in building executables that
  21. # will run on the target platform. This is usually the same
  22. # as BCC, unless you are cross-compiling.
  23. #
  24. # AR Tools used to build a static library.
  25. # RANLIB
  26. #
  27. # TCL_FLAGS Extra compiler options needed for programs that use the
  28. # TCL library.
  29. #
  30. # LIBTCL Linker options needed to link against the TCL library.
  31. #
  32. # READLINE_FLAGS Compiler options needed for programs that use the
  33. # readline() library.
  34. #
  35. # LIBREADLINE Linker options needed by programs using readline() must
  36. # link against.
  37. #
  38. # NAWK Nawk compatible awk program. Older (obsolete?) solaris
  39. # systems need this to avoid using the original AT&T AWK.
  40. #
  41. # Once the macros above are defined, the rest of this make script will
  42. # build the SQLite library and testing tools.
  43. ################################################################################
  44. # This is how we compile
  45. #
  46. TCCX = $(TCC) $(OPTS) -I. -I$(TOP)/src -I$(TOP)
  47. TCCX += -I$(TOP)/ext/rtree -I$(TOP)/ext/icu -I$(TOP)/ext/fts3
  48. TCCX += -I$(TOP)/ext/async
  49. # Object files for the SQLite library.
  50. #
  51. LIBOBJ+= vdbe.o parse.o \
  52. alter.o analyze.o attach.o auth.o \
  53. backup.o bitvec.o btmutex.o btree.o build.o \
  54. callback.o complete.o ctime.o date.o delete.o expr.o fault.o fkey.o \
  55. fts3.o fts3_aux.o fts3_expr.o fts3_hash.o fts3_icu.o fts3_porter.o \
  56. fts3_snippet.o fts3_tokenizer.o fts3_tokenizer1.o \
  57. fts3_tokenize_vtab.o \
  58. fts3_unicode.o fts3_unicode2.o \
  59. fts3_write.o func.o global.o hash.o \
  60. icu.o insert.o journal.o legacy.o loadext.o \
  61. main.o malloc.o mem0.o mem1.o mem2.o mem3.o mem5.o \
  62. memjournal.o \
  63. mutex.o mutex_noop.o mutex_unix.o mutex_w32.o \
  64. notify.o opcodes.o os.o os_unix.o os_win.o \
  65. pager.o pcache.o pcache1.o pragma.o prepare.o printf.o \
  66. random.o resolve.o rowset.o rtree.o select.o status.o \
  67. table.o tokenize.o trigger.o \
  68. update.o util.o vacuum.o \
  69. vdbeapi.o vdbeaux.o vdbeblob.o vdbemem.o vdbesort.o \
  70. vdbetrace.o wal.o walker.o where.o utf.o vtab.o
  71. # All of the source code files.
  72. #
  73. SRC = \
  74. $(TOP)/src/alter.c \
  75. $(TOP)/src/analyze.c \
  76. $(TOP)/src/attach.c \
  77. $(TOP)/src/auth.c \
  78. $(TOP)/src/backup.c \
  79. $(TOP)/src/bitvec.c \
  80. $(TOP)/src/btmutex.c \
  81. $(TOP)/src/btree.c \
  82. $(TOP)/src/btree.h \
  83. $(TOP)/src/btreeInt.h \
  84. $(TOP)/src/build.c \
  85. $(TOP)/src/callback.c \
  86. $(TOP)/src/complete.c \
  87. $(TOP)/src/ctime.c \
  88. $(TOP)/src/date.c \
  89. $(TOP)/src/delete.c \
  90. $(TOP)/src/expr.c \
  91. $(TOP)/src/fault.c \
  92. $(TOP)/src/fkey.c \
  93. $(TOP)/src/func.c \
  94. $(TOP)/src/global.c \
  95. $(TOP)/src/hash.c \
  96. $(TOP)/src/hash.h \
  97. $(TOP)/src/hwtime.h \
  98. $(TOP)/src/insert.c \
  99. $(TOP)/src/journal.c \
  100. $(TOP)/src/legacy.c \
  101. $(TOP)/src/loadext.c \
  102. $(TOP)/src/main.c \
  103. $(TOP)/src/malloc.c \
  104. $(TOP)/src/mem0.c \
  105. $(TOP)/src/mem1.c \
  106. $(TOP)/src/mem2.c \
  107. $(TOP)/src/mem3.c \
  108. $(TOP)/src/mem5.c \
  109. $(TOP)/src/memjournal.c \
  110. $(TOP)/src/mutex.c \
  111. $(TOP)/src/mutex.h \
  112. $(TOP)/src/mutex_noop.c \
  113. $(TOP)/src/mutex_unix.c \
  114. $(TOP)/src/mutex_w32.c \
  115. $(TOP)/src/notify.c \
  116. $(TOP)/src/os.c \
  117. $(TOP)/src/os.h \
  118. $(TOP)/src/os_common.h \
  119. $(TOP)/src/os_unix.c \
  120. $(TOP)/src/os_win.c \
  121. $(TOP)/src/pager.c \
  122. $(TOP)/src/pager.h \
  123. $(TOP)/src/parse.y \
  124. $(TOP)/src/pcache.c \
  125. $(TOP)/src/pcache.h \
  126. $(TOP)/src/pcache1.c \
  127. $(TOP)/src/pragma.c \
  128. $(TOP)/src/prepare.c \
  129. $(TOP)/src/printf.c \
  130. $(TOP)/src/random.c \
  131. $(TOP)/src/resolve.c \
  132. $(TOP)/src/rowset.c \
  133. $(TOP)/src/select.c \
  134. $(TOP)/src/status.c \
  135. $(TOP)/src/shell.c \
  136. $(TOP)/src/sqlite.h.in \
  137. $(TOP)/src/sqlite3ext.h \
  138. $(TOP)/src/sqliteInt.h \
  139. $(TOP)/src/sqliteLimit.h \
  140. $(TOP)/src/table.c \
  141. $(TOP)/src/tclsqlite.c \
  142. $(TOP)/src/tokenize.c \
  143. $(TOP)/src/trigger.c \
  144. $(TOP)/src/utf.c \
  145. $(TOP)/src/update.c \
  146. $(TOP)/src/util.c \
  147. $(TOP)/src/vacuum.c \
  148. $(TOP)/src/vdbe.c \
  149. $(TOP)/src/vdbe.h \
  150. $(TOP)/src/vdbeapi.c \
  151. $(TOP)/src/vdbeaux.c \
  152. $(TOP)/src/vdbeblob.c \
  153. $(TOP)/src/vdbemem.c \
  154. $(TOP)/src/vdbesort.c \
  155. $(TOP)/src/vdbetrace.c \
  156. $(TOP)/src/vdbeInt.h \
  157. $(TOP)/src/vtab.c \
  158. $(TOP)/src/wal.c \
  159. $(TOP)/src/wal.h \
  160. $(TOP)/src/walker.c \
  161. $(TOP)/src/where.c
  162. # Source code for extensions
  163. #
  164. SRC += \
  165. $(TOP)/ext/fts1/fts1.c \
  166. $(TOP)/ext/fts1/fts1.h \
  167. $(TOP)/ext/fts1/fts1_hash.c \
  168. $(TOP)/ext/fts1/fts1_hash.h \
  169. $(TOP)/ext/fts1/fts1_porter.c \
  170. $(TOP)/ext/fts1/fts1_tokenizer.h \
  171. $(TOP)/ext/fts1/fts1_tokenizer1.c
  172. SRC += \
  173. $(TOP)/ext/fts2/fts2.c \
  174. $(TOP)/ext/fts2/fts2.h \
  175. $(TOP)/ext/fts2/fts2_hash.c \
  176. $(TOP)/ext/fts2/fts2_hash.h \
  177. $(TOP)/ext/fts2/fts2_icu.c \
  178. $(TOP)/ext/fts2/fts2_porter.c \
  179. $(TOP)/ext/fts2/fts2_tokenizer.h \
  180. $(TOP)/ext/fts2/fts2_tokenizer.c \
  181. $(TOP)/ext/fts2/fts2_tokenizer1.c
  182. SRC += \
  183. $(TOP)/ext/fts3/fts3.c \
  184. $(TOP)/ext/fts3/fts3.h \
  185. $(TOP)/ext/fts3/fts3Int.h \
  186. $(TOP)/ext/fts3/fts3_aux.c \
  187. $(TOP)/ext/fts3/fts3_expr.c \
  188. $(TOP)/ext/fts3/fts3_hash.c \
  189. $(TOP)/ext/fts3/fts3_hash.h \
  190. $(TOP)/ext/fts3/fts3_icu.c \
  191. $(TOP)/ext/fts3/fts3_porter.c \
  192. $(TOP)/ext/fts3/fts3_snippet.c \
  193. $(TOP)/ext/fts3/fts3_tokenizer.h \
  194. $(TOP)/ext/fts3/fts3_tokenizer.c \
  195. $(TOP)/ext/fts3/fts3_tokenizer1.c \
  196. $(TOP)/ext/fts3/fts3_tokenize_vtab.c \
  197. $(TOP)/ext/fts3/fts3_unicode.c \
  198. $(TOP)/ext/fts3/fts3_unicode2.c \
  199. $(TOP)/ext/fts3/fts3_write.c
  200. SRC += \
  201. $(TOP)/ext/icu/sqliteicu.h \
  202. $(TOP)/ext/icu/icu.c
  203. SRC += \
  204. $(TOP)/ext/rtree/rtree.h \
  205. $(TOP)/ext/rtree/rtree.c
  206. # Generated source code files
  207. #
  208. SRC += \
  209. keywordhash.h \
  210. opcodes.c \
  211. opcodes.h \
  212. parse.c \
  213. parse.h \
  214. sqlite3.h
  215. # Source code to the test files.
  216. #
  217. TESTSRC = \
  218. $(TOP)/ext/fts3/fts3_term.c \
  219. $(TOP)/ext/fts3/fts3_test.c \
  220. $(TOP)/src/test1.c \
  221. $(TOP)/src/test2.c \
  222. $(TOP)/src/test3.c \
  223. $(TOP)/src/test4.c \
  224. $(TOP)/src/test5.c \
  225. $(TOP)/src/test6.c \
  226. $(TOP)/src/test7.c \
  227. $(TOP)/src/test8.c \
  228. $(TOP)/src/test9.c \
  229. $(TOP)/src/test_autoext.c \
  230. $(TOP)/src/test_async.c \
  231. $(TOP)/src/test_backup.c \
  232. $(TOP)/src/test_btree.c \
  233. $(TOP)/src/test_config.c \
  234. $(TOP)/src/test_demovfs.c \
  235. $(TOP)/src/test_devsym.c \
  236. $(TOP)/src/test_fs.c \
  237. $(TOP)/src/test_func.c \
  238. $(TOP)/src/test_hexio.c \
  239. $(TOP)/src/test_init.c \
  240. $(TOP)/src/test_intarray.c \
  241. $(TOP)/src/test_journal.c \
  242. $(TOP)/src/test_malloc.c \
  243. $(TOP)/src/test_multiplex.c \
  244. $(TOP)/src/test_mutex.c \
  245. $(TOP)/src/test_onefile.c \
  246. $(TOP)/src/test_osinst.c \
  247. $(TOP)/src/test_pcache.c \
  248. $(TOP)/src/test_quota.c \
  249. $(TOP)/src/test_rtree.c \
  250. $(TOP)/src/test_schema.c \
  251. $(TOP)/src/test_server.c \
  252. $(TOP)/src/test_stat.c \
  253. $(TOP)/src/test_sqllog.c \
  254. $(TOP)/src/test_superlock.c \
  255. $(TOP)/src/test_syscall.c \
  256. $(TOP)/src/test_tclvar.c \
  257. $(TOP)/src/test_thread.c \
  258. $(TOP)/src/test_vfs.c \
  259. $(TOP)/src/test_wsd.c
  260. # Extensions to be statically loaded.
  261. #
  262. TESTSRC += \
  263. $(TOP)/ext/misc/amatch.c \
  264. $(TOP)/ext/misc/closure.c \
  265. $(TOP)/ext/misc/fuzzer.c \
  266. $(TOP)/ext/misc/ieee754.c \
  267. $(TOP)/ext/misc/nextchar.c \
  268. $(TOP)/ext/misc/percentile.c \
  269. $(TOP)/ext/misc/regexp.c \
  270. $(TOP)/ext/misc/spellfix.c \
  271. $(TOP)/ext/misc/totype.c \
  272. $(TOP)/ext/misc/wholenumber.c \
  273. $(TOP)/ext/misc/vfslog.c
  274. #TESTSRC += $(TOP)/ext/fts2/fts2_tokenizer.c
  275. #TESTSRC += $(TOP)/ext/fts3/fts3_tokenizer.c
  276. TESTSRC2 = \
  277. $(TOP)/src/attach.c \
  278. $(TOP)/src/backup.c \
  279. $(TOP)/src/btree.c \
  280. $(TOP)/src/build.c \
  281. $(TOP)/src/date.c \
  282. $(TOP)/src/expr.c \
  283. $(TOP)/src/func.c \
  284. $(TOP)/src/insert.c \
  285. $(TOP)/src/wal.c \
  286. $(TOP)/src/main.c \
  287. $(TOP)/src/mem5.c \
  288. $(TOP)/src/os.c \
  289. $(TOP)/src/os_unix.c \
  290. $(TOP)/src/os_win.c \
  291. $(TOP)/src/pager.c \
  292. $(TOP)/src/pragma.c \
  293. $(TOP)/src/prepare.c \
  294. $(TOP)/src/printf.c \
  295. $(TOP)/src/random.c \
  296. $(TOP)/src/pcache.c \
  297. $(TOP)/src/pcache1.c \
  298. $(TOP)/src/select.c \
  299. $(TOP)/src/tokenize.c \
  300. $(TOP)/src/utf.c \
  301. $(TOP)/src/util.c \
  302. $(TOP)/src/vdbeapi.c \
  303. $(TOP)/src/vdbeaux.c \
  304. $(TOP)/src/vdbe.c \
  305. $(TOP)/src/vdbemem.c \
  306. $(TOP)/src/where.c \
  307. parse.c \
  308. $(TOP)/ext/fts3/fts3.c \
  309. $(TOP)/ext/fts3/fts3_aux.c \
  310. $(TOP)/ext/fts3/fts3_expr.c \
  311. $(TOP)/ext/fts3/fts3_tokenizer.c \
  312. $(TOP)/ext/fts3/fts3_write.c \
  313. $(TOP)/ext/async/sqlite3async.c
  314. # Header files used by all library source files.
  315. #
  316. HDR = \
  317. $(TOP)/src/btree.h \
  318. $(TOP)/src/btreeInt.h \
  319. $(TOP)/src/hash.h \
  320. $(TOP)/src/hwtime.h \
  321. keywordhash.h \
  322. $(TOP)/src/mutex.h \
  323. opcodes.h \
  324. $(TOP)/src/os.h \
  325. $(TOP)/src/os_common.h \
  326. $(TOP)/src/pager.h \
  327. $(TOP)/src/pcache.h \
  328. parse.h \
  329. sqlite3.h \
  330. $(TOP)/src/sqlite3ext.h \
  331. $(TOP)/src/sqliteInt.h \
  332. $(TOP)/src/sqliteLimit.h \
  333. $(TOP)/src/vdbe.h \
  334. $(TOP)/src/vdbeInt.h
  335. # Header files used by extensions
  336. #
  337. EXTHDR += \
  338. $(TOP)/ext/fts1/fts1.h \
  339. $(TOP)/ext/fts1/fts1_hash.h \
  340. $(TOP)/ext/fts1/fts1_tokenizer.h
  341. EXTHDR += \
  342. $(TOP)/ext/fts2/fts2.h \
  343. $(TOP)/ext/fts2/fts2_hash.h \
  344. $(TOP)/ext/fts2/fts2_tokenizer.h
  345. EXTHDR += \
  346. $(TOP)/ext/fts3/fts3.h \
  347. $(TOP)/ext/fts3/fts3Int.h \
  348. $(TOP)/ext/fts3/fts3_hash.h \
  349. $(TOP)/ext/fts3/fts3_tokenizer.h
  350. EXTHDR += \
  351. $(TOP)/ext/rtree/rtree.h
  352. EXTHDR += \
  353. $(TOP)/ext/icu/sqliteicu.h
  354. # This is the default Makefile target. The objects listed here
  355. # are what get build when you type just "make" with no arguments.
  356. #
  357. all: sqlite3.h libsqlite3.a sqlite3$(EXE)
  358. libsqlite3.a: $(LIBOBJ)
  359. $(AR) libsqlite3.a $(LIBOBJ)
  360. $(RANLIB) libsqlite3.a
  361. sqlite3$(EXE): $(TOP)/src/shell.c libsqlite3.a sqlite3.h
  362. $(TCCX) $(READLINE_FLAGS) -o sqlite3$(EXE) \
  363. $(TOP)/src/shell.c \
  364. libsqlite3.a $(LIBREADLINE) $(TLIBS) $(THREADLIB)
  365. mptester$(EXE): sqlite3.c $(TOP)/mptest/mptest.c
  366. $(TCCX) -o $@ -I. $(TOP)/mptest/mptest.c sqlite3.c \
  367. $(TLIBS) $(THREADLIB)
  368. sqlite3.o: sqlite3.c
  369. $(TCCX) -c sqlite3.c
  370. # This target creates a directory named "tsrc" and fills it with
  371. # copies of all of the C source code and header files needed to
  372. # build on the target system. Some of the C source code and header
  373. # files are automatically generated. This target takes care of
  374. # all that automatic generation.
  375. #
  376. target_source: $(SRC) $(TOP)/tool/vdbe-compress.tcl
  377. rm -rf tsrc
  378. mkdir tsrc
  379. cp -f $(SRC) tsrc
  380. rm tsrc/sqlite.h.in tsrc/parse.y
  381. tclsh $(TOP)/tool/vdbe-compress.tcl <tsrc/vdbe.c >vdbe.new
  382. mv vdbe.new tsrc/vdbe.c
  383. touch target_source
  384. sqlite3.c: target_source $(TOP)/tool/mksqlite3c.tcl
  385. tclsh $(TOP)/tool/mksqlite3c.tcl
  386. cp tsrc/shell.c tsrc/sqlite3ext.h .
  387. echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c
  388. cat sqlite3.c >>tclsqlite3.c
  389. echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c
  390. cat $(TOP)/src/tclsqlite.c >>tclsqlite3.c
  391. sqlite3.c-debug: target_source $(TOP)/tool/mksqlite3c.tcl
  392. tclsh $(TOP)/tool/mksqlite3c.tcl --linemacros
  393. echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c
  394. cat sqlite3.c >>tclsqlite3.c
  395. echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c
  396. echo '#line 1 "tclsqlite.c"' >>tclsqlite3.c
  397. cat $(TOP)/src/tclsqlite.c >>tclsqlite3.c
  398. sqlite3-all.c: sqlite3.c $(TOP)/tool/split-sqlite3c.tcl
  399. tclsh $(TOP)/tool/split-sqlite3c.tcl
  400. fts2amal.c: target_source $(TOP)/ext/fts2/mkfts2amal.tcl
  401. tclsh $(TOP)/ext/fts2/mkfts2amal.tcl
  402. fts3amal.c: target_source $(TOP)/ext/fts3/mkfts3amal.tcl
  403. tclsh $(TOP)/ext/fts3/mkfts3amal.tcl
  404. # Rules to build the LEMON compiler generator
  405. #
  406. lemon: $(TOP)/tool/lemon.c $(TOP)/src/lempar.c
  407. $(BCC) -o lemon $(TOP)/tool/lemon.c
  408. cp $(TOP)/src/lempar.c .
  409. # Rules to build individual *.o files from generated *.c files. This
  410. # applies to:
  411. #
  412. # parse.o
  413. # opcodes.o
  414. #
  415. %.o: %.c $(HDR)
  416. $(TCCX) -c $<
  417. # Rules to build individual *.o files from files in the src directory.
  418. #
  419. %.o: $(TOP)/src/%.c $(HDR)
  420. $(TCCX) -c $<
  421. tclsqlite.o: $(TOP)/src/tclsqlite.c $(HDR)
  422. $(TCCX) $(TCL_FLAGS) -c $(TOP)/src/tclsqlite.c
  423. # Rules to build opcodes.c and opcodes.h
  424. #
  425. opcodes.c: opcodes.h $(TOP)/mkopcodec.awk
  426. $(NAWK) -f $(TOP)/mkopcodec.awk opcodes.h >opcodes.c
  427. opcodes.h: parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
  428. cat parse.h $(TOP)/src/vdbe.c | \
  429. $(NAWK) -f $(TOP)/mkopcodeh.awk >opcodes.h
  430. # Rules to build parse.c and parse.h - the outputs of lemon.
  431. #
  432. parse.h: parse.c
  433. parse.c: $(TOP)/src/parse.y lemon $(TOP)/addopcodes.awk
  434. cp $(TOP)/src/parse.y .
  435. rm -f parse.h
  436. ./lemon $(OPTS) parse.y
  437. mv parse.h parse.h.temp
  438. $(NAWK) -f $(TOP)/addopcodes.awk parse.h.temp >parse.h
  439. sqlite3.h: $(TOP)/src/sqlite.h.in $(TOP)/manifest.uuid $(TOP)/VERSION
  440. tclsh $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h
  441. keywordhash.h: $(TOP)/tool/mkkeywordhash.c
  442. $(BCC) -o mkkeywordhash $(OPTS) $(TOP)/tool/mkkeywordhash.c
  443. ./mkkeywordhash >keywordhash.h
  444. # Rules to build the extension objects.
  445. #
  446. icu.o: $(TOP)/ext/icu/icu.c $(HDR) $(EXTHDR)
  447. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/icu/icu.c
  448. fts2.o: $(TOP)/ext/fts2/fts2.c $(HDR) $(EXTHDR)
  449. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2.c
  450. fts2_hash.o: $(TOP)/ext/fts2/fts2_hash.c $(HDR) $(EXTHDR)
  451. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_hash.c
  452. fts2_icu.o: $(TOP)/ext/fts2/fts2_icu.c $(HDR) $(EXTHDR)
  453. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_icu.c
  454. fts2_porter.o: $(TOP)/ext/fts2/fts2_porter.c $(HDR) $(EXTHDR)
  455. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_porter.c
  456. fts2_tokenizer.o: $(TOP)/ext/fts2/fts2_tokenizer.c $(HDR) $(EXTHDR)
  457. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_tokenizer.c
  458. fts2_tokenizer1.o: $(TOP)/ext/fts2/fts2_tokenizer1.c $(HDR) $(EXTHDR)
  459. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts2/fts2_tokenizer1.c
  460. fts3.o: $(TOP)/ext/fts3/fts3.c $(HDR) $(EXTHDR)
  461. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3.c
  462. fts3_aux.o: $(TOP)/ext/fts3/fts3_aux.c $(HDR) $(EXTHDR)
  463. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_aux.c
  464. fts3_expr.o: $(TOP)/ext/fts3/fts3_expr.c $(HDR) $(EXTHDR)
  465. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_expr.c
  466. fts3_hash.o: $(TOP)/ext/fts3/fts3_hash.c $(HDR) $(EXTHDR)
  467. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_hash.c
  468. fts3_icu.o: $(TOP)/ext/fts3/fts3_icu.c $(HDR) $(EXTHDR)
  469. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_icu.c
  470. fts3_snippet.o: $(TOP)/ext/fts3/fts3_snippet.c $(HDR) $(EXTHDR)
  471. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_snippet.c
  472. fts3_porter.o: $(TOP)/ext/fts3/fts3_porter.c $(HDR) $(EXTHDR)
  473. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_porter.c
  474. fts3_tokenizer.o: $(TOP)/ext/fts3/fts3_tokenizer.c $(HDR) $(EXTHDR)
  475. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_tokenizer.c
  476. fts3_tokenizer1.o: $(TOP)/ext/fts3/fts3_tokenizer1.c $(HDR) $(EXTHDR)
  477. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_tokenizer1.c
  478. fts3_tokenize_vtab.o: $(TOP)/ext/fts3/fts3_tokenize_vtab.c $(HDR) $(EXTHDR)
  479. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_tokenize_vtab.c
  480. fts3_unicode.o: $(TOP)/ext/fts3/fts3_unicode.c $(HDR) $(EXTHDR)
  481. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_unicode.c
  482. fts3_unicode2.o: $(TOP)/ext/fts3/fts3_unicode2.c $(HDR) $(EXTHDR)
  483. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_unicode2.c
  484. fts3_write.o: $(TOP)/ext/fts3/fts3_write.c $(HDR) $(EXTHDR)
  485. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/fts3/fts3_write.c
  486. rtree.o: $(TOP)/ext/rtree/rtree.c $(HDR) $(EXTHDR)
  487. $(TCCX) -DSQLITE_CORE -c $(TOP)/ext/rtree/rtree.c
  488. # Rules for building test programs and for running tests
  489. #
  490. tclsqlite3: $(TOP)/src/tclsqlite.c libsqlite3.a
  491. $(TCCX) $(TCL_FLAGS) -DTCLSH=1 -o tclsqlite3 \
  492. $(TOP)/src/tclsqlite.c libsqlite3.a $(LIBTCL) $(THREADLIB)
  493. sqlite3_analyzer.c: sqlite3.c $(TOP)/src/test_stat.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl
  494. echo "#define TCLSH 2" > $@
  495. cat sqlite3.c $(TOP)/src/test_stat.c $(TOP)/src/tclsqlite.c >> $@
  496. echo "static const char *tclsh_main_loop(void){" >> $@
  497. echo "static const char *zMainloop = " >> $@
  498. $(NAWK) -f $(TOP)/tool/tostr.awk $(TOP)/tool/spaceanal.tcl >> $@
  499. echo "; return zMainloop; }" >> $@
  500. sqlite3_analyzer$(EXE): sqlite3_analyzer.c
  501. $(TCCX) $(TCL_FLAGS) sqlite3_analyzer.c -o $@ $(LIBTCL) $(THREADLIB)
  502. # Rules to build the 'testfixture' application.
  503. #
  504. TESTFIXTURE_FLAGS = -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1
  505. TESTFIXTURE_FLAGS += -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE
  506. testfixture$(EXE): $(TESTSRC2) libsqlite3.a $(TESTSRC) $(TOP)/src/tclsqlite.c
  507. $(TCCX) $(TCL_FLAGS) -DTCLSH=1 $(TESTFIXTURE_FLAGS) \
  508. $(TESTSRC) $(TESTSRC2) $(TOP)/src/tclsqlite.c \
  509. -o testfixture$(EXE) $(LIBTCL) libsqlite3.a $(THREADLIB)
  510. amalgamation-testfixture$(EXE): sqlite3.c $(TESTSRC) $(TOP)/src/tclsqlite.c
  511. $(TCCX) $(TCL_FLAGS) -DTCLSH=1 $(TESTFIXTURE_FLAGS) \
  512. $(TESTSRC) $(TOP)/src/tclsqlite.c sqlite3.c \
  513. -o testfixture$(EXE) $(LIBTCL) $(THREADLIB)
  514. fts3-testfixture$(EXE): sqlite3.c fts3amal.c $(TESTSRC) $(TOP)/src/tclsqlite.c
  515. $(TCCX) $(TCL_FLAGS) -DTCLSH=1 $(TESTFIXTURE_FLAGS) \
  516. -DSQLITE_ENABLE_FTS3=1 \
  517. $(TESTSRC) $(TOP)/src/tclsqlite.c sqlite3.c fts3amal.c \
  518. -o testfixture$(EXE) $(LIBTCL) $(THREADLIB)
  519. fulltest: testfixture$(EXE) sqlite3$(EXE)
  520. ./testfixture$(EXE) $(TOP)/test/all.test
  521. soaktest: testfixture$(EXE) sqlite3$(EXE)
  522. ./testfixture$(EXE) $(TOP)/test/all.test -soak=1
  523. fulltestonly: testfixture$(EXE) sqlite3$(EXE)
  524. ./testfixture$(EXE) $(TOP)/test/full.test
  525. queryplantest: testfixture$(EXE) sqlite3$(EXE)
  526. ./testfixture$(EXE) $(TOP)/test/permutations.test queryplanner
  527. test: testfixture$(EXE) sqlite3$(EXE)
  528. ./testfixture$(EXE) $(TOP)/test/veryquick.test
  529. # The next two rules are used to support the "threadtest" target. Building
  530. # threadtest runs a few thread-safety tests that are implemented in C. This
  531. # target is invoked by the releasetest.tcl script.
  532. #
  533. threadtest3$(EXE): sqlite3.o $(TOP)/test/threadtest3.c $(TOP)/test/tt3_checkpoint.c
  534. $(TCCX) -O2 sqlite3.o $(TOP)/test/threadtest3.c \
  535. -o threadtest3$(EXE) $(THREADLIB)
  536. threadtest: threadtest3$(EXE)
  537. ./threadtest3$(EXE)
  538. TEST_EXTENSION = $(SHPREFIX)testloadext.$(SO)
  539. $(TEST_EXTENSION): $(TOP)/src/test_loadext.c
  540. $(MKSHLIB) $(TOP)/src/test_loadext.c -o $(TEST_EXTENSION)
  541. extensiontest: testfixture$(EXE) $(TEST_EXTENSION)
  542. ./testfixture$(EXE) $(TOP)/test/loadext.test
  543. showdb: $(TOP)/tool/showdb.c sqlite3.c
  544. $(TCC) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -o showdb \
  545. $(TOP)/tool/showdb.c sqlite3.c
  546. # This target will fail if the SQLite amalgamation contains any exported
  547. # symbols that do not begin with "sqlite3_". It is run as part of the
  548. # releasetest.tcl script.
  549. #
  550. checksymbols: sqlite3.o
  551. nm -g --defined-only sqlite3.o | grep -v " sqlite3_" ; test $$? -ne 0
  552. # Build the amalgamation-autoconf package.
  553. #
  554. dist: sqlite3.c
  555. TOP=$(TOP) sh $(TOP)/tool/mkautoconfamal.sh
  556. # Standard install and cleanup targets
  557. #
  558. install: sqlite3 libsqlite3.a sqlite3.h
  559. mv sqlite3 /usr/bin
  560. mv libsqlite3.a /usr/lib
  561. mv sqlite3.h /usr/include
  562. clean:
  563. rm -f *.o sqlite3 sqlite3.exe libsqlite3.a sqlite3.h opcodes.*
  564. rm -f lemon lemon.exe lempar.c parse.* sqlite*.tar.gz
  565. rm -f mkkeywordhash mkkeywordhash.exe keywordhash.h
  566. rm -f $(PUBLISH)
  567. rm -f *.da *.bb *.bbg gmon.out
  568. rm -rf quota2a quota2b quota2c
  569. rm -rf tsrc target_source
  570. rm -f testloadext.dll libtestloadext.so
  571. rm -f amalgamation-testfixture amalgamation-testfixture.exe
  572. rm -f fts3-testfixture fts3-testfixture.exe
  573. rm -f testfixture testfixture.exe
  574. rm -f threadtest3 threadtest3.exe
  575. rm -f sqlite3.c sqlite3-*.c fts?amal.c tclsqlite3.c
  576. rm -f sqlite3rc.h
  577. rm -f shell.c sqlite3ext.h
  578. rm -f sqlite3_analyzer sqlite3_analyzer.exe sqlite3_analyzer.c
  579. rm -f sqlite-*-output.vsix
  580. rm -f mptester mptester.exe
  581. rm -f showdb