1# 2# nmake Makefile for SQLite 3# 4 5# The toplevel directory of the source tree. This is the directory 6# that contains this "Makefile.msc". 7# 8TOP = . 9 10# Set this non-0 to create and use the SQLite amalgamation file. 11# 12USE_AMALGAMATION = 1 13 14# Set this non-0 to use the International Components for Unicode (ICU). 15# 16USE_ICU = 0 17 18# Set this to non-0 to create and use PDBs. 19# 20SYMBOLS = 1 21 22# Set this to one of the following values to enable various debugging 23# features. Each level includes the debugging options from the previous 24# levels. Currently, the recognized values for DEBUG are: 25# 26# 0 == NDEBUG: Disables assert() and other runtime diagnostics. 27# 1 == Disables NDEBUG and all optimizations and then enables PDBs. 28# 2 == SQLITE_DEBUG: Enables various diagnostics messages and code. 29# 3 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call. 30# 4 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros. 31# 5 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros. 32# 33DEBUG = 0 34 35# Version numbers and release number for the SQLite being compiled. 36# 37VERSION = 3.7 38VERSION_NUMBER = 3007009 39RELEASE = 3.7.9 40 41# C Compiler and options for use in building executables that 42# will run on the platform that is doing the build. 43# 44BCC = cl.exe 45 46# C Compile and options for use in building executables that 47# will run on the target platform. (BCC and TCC are usually the 48# same unless your are cross-compiling.) 49# 50TCC = cl.exe -W3 -DSQLITE_OS_WIN=1 -I. -I$(TOP)\src -fp:precise 51 52# The mksqlite3c.tcl and mksqlite3h.tcl scripts will pull in 53# any extension header files by default. For non-amalgamation 54# builds, we need to make sure the compiler can find these. 55# 56!IF $(USE_AMALGAMATION)==0 57TCC = $(TCC) -I$(TOP)\ext\fts3 58TCC = $(TCC) -I$(TOP)\ext\rtree 59!ENDIF 60 61# Define -DNDEBUG to compile without debugging (i.e., for production usage) 62# Omitting the define will cause extra debugging code to be inserted and 63# includes extra comments when "EXPLAIN stmt" is used. 64# 65!IF $(DEBUG)==0 66TCC = $(TCC) -DNDEBUG 67!ENDIF 68 69!IF $(DEBUG)>1 70TCC = $(TCC) -DSQLITE_DEBUG 71!ENDIF 72 73!IF $(DEBUG)>3 74TCC = $(TCC) -DSQLITE_DEBUG_OS_TRACE=1 75!ENDIF 76 77!IF $(DEBUG)>4 78TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE 79!ENDIF 80 81# 82# Prevent warnings about "insecure" runtime library functions being used. 83# 84TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 85 86# 87# Use native Win32 heap instead of malloc/free? 88# 89# TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1 90 91# 92# Validate the heap on every call into the native Win32 heap subsystem? 93# 94!IF $(DEBUG)>2 95TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 96!ENDIF 97 98# The locations of the Tcl header and library files. Also, the library that 99# non-stubs enabled programs using Tcl must link against. These variables 100# (TCLINCDIR, TCLLIBDIR, and LIBTCL) may be overridden via the environment 101# prior to running nmake in order to match the actual installed location and 102# version on this machine. 103# 104!if "$(TCLINCDIR)" == "" 105TCLINCDIR = c:\tcl\include 106!endif 107 108!if "$(TCLLIBDIR)" == "" 109TCLLIBDIR = c:\tcl\lib 110!endif 111 112!if "$(LIBTCL)" == "" 113LIBTCL = tcl85.lib 114!endif 115 116# The locations of the ICU header and library files. These variables 117# (ICUINCDIR, ICULIBDIR, and LIBICU) may be overridden via the environment 118# prior to running nmake in order to match the actual installed location on 119# this machine. 120# 121!if "$(ICUINCDIR)" == "" 122ICUINCDIR = c:\icu\include 123!endif 124 125!if "$(ICULIBDIR)" == "" 126ICULIBDIR = c:\icu\lib 127!endif 128 129!if "$(LIBICU)" == "" 130LIBICU = icuuc.lib icuin.lib 131!endif 132 133# This is the command to use for tclsh - normally just "tclsh", but we may 134# know the specific version we want to use. This variable (TCLSH_CMD) may be 135# overridden via the environment prior to running nmake in order to select a 136# specific Tcl shell to use. 137# 138!if "$(TCLSH_CMD)" == "" 139TCLSH_CMD = tclsh85 140!endif 141 142# Compiler options needed for programs that use the readline() library. 143# 144READLINE_FLAGS = -DHAVE_READLINE=0 145 146# The library that programs using readline() must link against. 147# 148LIBREADLINE = 149 150# Should the database engine be compiled threadsafe 151# 152TCC = $(TCC) -DSQLITE_THREADSAFE=1 153 154# Do threads override each others locks by default (1), or do we test (-1) 155# 156TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 157 158# Any target libraries which libsqlite must be linked against 159# 160!if "$(TLIBS)" == "" 161TLIBS = 162!endif 163 164# Flags controlling use of the in memory btree implementation 165# 166# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to 167# default to file, 2 to default to memory, and 3 to force temporary 168# tables to always be in memory. 169# 170TCC = $(TCC) -DSQLITE_TEMP_STORE=1 171 172# Enable/disable loadable extensions, and other optional features 173# based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). 174# The same set of OMIT and ENABLE flags should be passed to the 175# LEMON parser generator and the mkkeywordhash tool as well. 176 177# BEGIN standard options 178OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 179OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1 180OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 181# END standard options 182 183# BEGIN required Windows option 184OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100 185# END required Windows option 186 187TCC = $(TCC) $(OPT_FEATURE_FLAGS) 188 189# Add in any optional parameters specified on the make commane line 190# ie. make "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1". 191TCC = $(TCC) $(OPTS) 192 193# If symbols are enabled, enable PDBs. 194# If debugging is enabled, disable all optimizations and enable PDBs. 195!IF $(DEBUG)>0 196TCC = $(TCC) -Od -D_DEBUG 197!ELSE 198TCC = $(TCC) -O2 199!ENDIF 200 201!IF $(DEBUG)>0 || $(SYMBOLS)!=0 202TCC = $(TCC) -Zi 203!ENDIF 204 205# If ICU support is enabled, add the compiler options for it. 206!IF $(USE_ICU)!=0 207TCC = $(TCC) -DSQLITE_ENABLE_ICU=1 208TCC = $(TCC) -I$(TOP)\ext\icu 209TCC = $(TCC) -I$(ICUINCDIR) 210!ENDIF 211 212# libtool compile/link 213LTCOMPILE = $(TCC) -Fo$@ 214LTLIB = lib.exe 215LTLINK = $(TCC) -Fe$@ 216 217# If a platform was set, force the linker to target that. 218# Note that the vcvars*.bat family of batch files typically 219# set this for you. Otherwise, the linker will attempt 220# to deduce the binary type based on the object files. 221!IF "$(PLATFORM)"!="" 222LTLINKOPTS = /MACHINE:$(PLATFORM) 223LTLIBOPTS = /MACHINE:$(PLATFORM) 224!ENDIF 225 226# If debugging is enabled, enable PDBs. 227!IF $(DEBUG)>0 || $(SYMBOLS)!=0 228LTLINKOPTS = $(LTLINKOPTS) /DEBUG 229!ENDIF 230 231# Start with the Tcl related linker options. 232LTLIBPATHS = /LIBPATH:$(TCLLIBDIR) 233LTLIBS = $(LIBTCL) 234 235# If ICU support is enabled, add the linker options for it. 236!IF $(USE_ICU)!=0 237LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR) 238LTLIBS = $(LTLIBS) $(LIBICU) 239!ENDIF 240 241# nawk compatible awk. 242NAWK = gawk.exe 243 244# You should not have to change anything below this line 245############################################################################### 246 247# Object files for the SQLite library (non-amalgamation). 248# 249LIBOBJS0 = alter.lo analyze.lo attach.lo auth.lo \ 250 backup.lo bitvec.lo btmutex.lo btree.lo build.lo \ 251 callback.lo complete.lo ctime.lo date.lo delete.lo \ 252 expr.lo fault.lo fkey.lo \ 253 fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \ 254 fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \ 255 fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \ 256 func.lo global.lo hash.lo \ 257 icu.lo insert.lo journal.lo legacy.lo loadext.lo \ 258 main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \ 259 memjournal.lo \ 260 mutex.lo mutex_noop.lo mutex_os2.lo mutex_unix.lo mutex_w32.lo \ 261 notify.lo opcodes.lo os.lo os_os2.lo os_unix.lo os_win.lo \ 262 pager.lo parse.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \ 263 random.lo resolve.lo rowset.lo rtree.lo select.lo status.lo \ 264 table.lo tokenize.lo trigger.lo \ 265 update.lo util.lo vacuum.lo \ 266 vdbe.lo vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbesort.lo \ 267 vdbetrace.lo wal.lo walker.lo where.lo utf.lo vtab.lo 268 269# Object files for the amalgamation. 270# 271LIBOBJS1 = sqlite3.lo 272 273# Determine the real value of LIBOBJ based on the 'configure' script 274# 275!IF $(USE_AMALGAMATION)==0 276LIBOBJ = $(LIBOBJS0) 277!ELSE 278LIBOBJ = $(LIBOBJS1) 279!ENDIF 280 281# All of the source code files. 282# 283SRC = \ 284 $(TOP)\src\alter.c \ 285 $(TOP)\src\analyze.c \ 286 $(TOP)\src\attach.c \ 287 $(TOP)\src\auth.c \ 288 $(TOP)\src\backup.c \ 289 $(TOP)\src\bitvec.c \ 290 $(TOP)\src\btmutex.c \ 291 $(TOP)\src\btree.c \ 292 $(TOP)\src\btree.h \ 293 $(TOP)\src\btreeInt.h \ 294 $(TOP)\src\build.c \ 295 $(TOP)\src\callback.c \ 296 $(TOP)\src\complete.c \ 297 $(TOP)\src\ctime.c \ 298 $(TOP)\src\date.c \ 299 $(TOP)\src\delete.c \ 300 $(TOP)\src\expr.c \ 301 $(TOP)\src\fault.c \ 302 $(TOP)\src\fkey.c \ 303 $(TOP)\src\func.c \ 304 $(TOP)\src\global.c \ 305 $(TOP)\src\hash.c \ 306 $(TOP)\src\hash.h \ 307 $(TOP)\src\hwtime.h \ 308 $(TOP)\src\insert.c \ 309 $(TOP)\src\journal.c \ 310 $(TOP)\src\legacy.c \ 311 $(TOP)\src\loadext.c \ 312 $(TOP)\src\main.c \ 313 $(TOP)\src\malloc.c \ 314 $(TOP)\src\mem0.c \ 315 $(TOP)\src\mem1.c \ 316 $(TOP)\src\mem2.c \ 317 $(TOP)\src\mem3.c \ 318 $(TOP)\src\mem5.c \ 319 $(TOP)\src\memjournal.c \ 320 $(TOP)\src\mutex.c \ 321 $(TOP)\src\mutex.h \ 322 $(TOP)\src\mutex_noop.c \ 323 $(TOP)\src\mutex_os2.c \ 324 $(TOP)\src\mutex_unix.c \ 325 $(TOP)\src\mutex_w32.c \ 326 $(TOP)\src\notify.c \ 327 $(TOP)\src\os.c \ 328 $(TOP)\src\os.h \ 329 $(TOP)\src\os_common.h \ 330 $(TOP)\src\os_os2.c \ 331 $(TOP)\src\os_unix.c \ 332 $(TOP)\src\os_win.c \ 333 $(TOP)\src\pager.c \ 334 $(TOP)\src\pager.h \ 335 $(TOP)\src\parse.y \ 336 $(TOP)\src\pcache.c \ 337 $(TOP)\src\pcache.h \ 338 $(TOP)\src\pcache1.c \ 339 $(TOP)\src\pragma.c \ 340 $(TOP)\src\prepare.c \ 341 $(TOP)\src\printf.c \ 342 $(TOP)\src\random.c \ 343 $(TOP)\src\resolve.c \ 344 $(TOP)\src\rowset.c \ 345 $(TOP)\src\select.c \ 346 $(TOP)\src\status.c \ 347 $(TOP)\src\shell.c \ 348 $(TOP)\src\sqlite.h.in \ 349 $(TOP)\src\sqlite3ext.h \ 350 $(TOP)\src\sqliteInt.h \ 351 $(TOP)\src\sqliteLimit.h \ 352 $(TOP)\src\table.c \ 353 $(TOP)\src\tclsqlite.c \ 354 $(TOP)\src\tokenize.c \ 355 $(TOP)\src\trigger.c \ 356 $(TOP)\src\utf.c \ 357 $(TOP)\src\update.c \ 358 $(TOP)\src\util.c \ 359 $(TOP)\src\vacuum.c \ 360 $(TOP)\src\vdbe.c \ 361 $(TOP)\src\vdbe.h \ 362 $(TOP)\src\vdbeapi.c \ 363 $(TOP)\src\vdbeaux.c \ 364 $(TOP)\src\vdbeblob.c \ 365 $(TOP)\src\vdbemem.c \ 366 $(TOP)\src\vdbesort.c \ 367 $(TOP)\src\vdbetrace.c \ 368 $(TOP)\src\vdbeInt.h \ 369 $(TOP)\src\vtab.c \ 370 $(TOP)\src\wal.c \ 371 $(TOP)\src\wal.h \ 372 $(TOP)\src\walker.c \ 373 $(TOP)\src\where.c 374 375# Source code for extensions 376# 377SRC = $(SRC) \ 378 $(TOP)\ext\fts1\fts1.c \ 379 $(TOP)\ext\fts1\fts1.h \ 380 $(TOP)\ext\fts1\fts1_hash.c \ 381 $(TOP)\ext\fts1\fts1_hash.h \ 382 $(TOP)\ext\fts1\fts1_porter.c \ 383 $(TOP)\ext\fts1\fts1_tokenizer.h \ 384 $(TOP)\ext\fts1\fts1_tokenizer1.c 385SRC = $(SRC) \ 386 $(TOP)\ext\fts2\fts2.c \ 387 $(TOP)\ext\fts2\fts2.h \ 388 $(TOP)\ext\fts2\fts2_hash.c \ 389 $(TOP)\ext\fts2\fts2_hash.h \ 390 $(TOP)\ext\fts2\fts2_icu.c \ 391 $(TOP)\ext\fts2\fts2_porter.c \ 392 $(TOP)\ext\fts2\fts2_tokenizer.h \ 393 $(TOP)\ext\fts2\fts2_tokenizer.c \ 394 $(TOP)\ext\fts2\fts2_tokenizer1.c 395SRC = $(SRC) \ 396 $(TOP)\ext\fts3\fts3.c \ 397 $(TOP)\ext\fts3\fts3.h \ 398 $(TOP)\ext\fts3\fts3Int.h \ 399 $(TOP)\ext\fts3\fts3_aux.c \ 400 $(TOP)\ext\fts3\fts3_expr.c \ 401 $(TOP)\ext\fts3\fts3_hash.c \ 402 $(TOP)\ext\fts3\fts3_hash.h \ 403 $(TOP)\ext\fts3\fts3_icu.c \ 404 $(TOP)\ext\fts3\fts3_porter.c \ 405 $(TOP)\ext\fts3\fts3_snippet.c \ 406 $(TOP)\ext\fts3\fts3_tokenizer.h \ 407 $(TOP)\ext\fts3\fts3_tokenizer.c \ 408 $(TOP)\ext\fts3\fts3_tokenizer1.c \ 409 $(TOP)\ext\fts3\fts3_unicode.c \ 410 $(TOP)\ext\fts3\fts3_unicode2.c \ 411 $(TOP)\ext\fts3\fts3_write.c 412SRC = $(SRC) \ 413 $(TOP)\ext\icu\sqliteicu.h \ 414 $(TOP)\ext\icu\icu.c 415SRC = $(SRC) \ 416 $(TOP)\ext\rtree\rtree.h \ 417 $(TOP)\ext\rtree\rtree.c 418 419 420# Generated source code files 421# 422SRC = $(SRC) \ 423 keywordhash.h \ 424 opcodes.c \ 425 opcodes.h \ 426 parse.c \ 427 parse.h \ 428 sqlite3.h 429 430# Source code to the test files. 431# 432TESTSRC = \ 433 $(TOP)\src\test1.c \ 434 $(TOP)\src\test2.c \ 435 $(TOP)\src\test3.c \ 436 $(TOP)\src\test4.c \ 437 $(TOP)\src\test5.c \ 438 $(TOP)\src\test6.c \ 439 $(TOP)\src\test7.c \ 440 $(TOP)\src\test8.c \ 441 $(TOP)\src\test9.c \ 442 $(TOP)\src\test_autoext.c \ 443 $(TOP)\src\test_async.c \ 444 $(TOP)\src\test_backup.c \ 445 $(TOP)\src\test_btree.c \ 446 $(TOP)\src\test_config.c \ 447 $(TOP)\src\test_demovfs.c \ 448 $(TOP)\src\test_devsym.c \ 449 $(TOP)\src\test_func.c \ 450 $(TOP)\src\test_fuzzer.c \ 451 $(TOP)\src\test_hexio.c \ 452 $(TOP)\src\test_init.c \ 453 $(TOP)\src\test_intarray.c \ 454 $(TOP)\src\test_journal.c \ 455 $(TOP)\src\test_malloc.c \ 456 $(TOP)\src\test_multiplex.c \ 457 $(TOP)\src\test_mutex.c \ 458 $(TOP)\src\test_onefile.c \ 459 $(TOP)\src\test_osinst.c \ 460 $(TOP)\src\test_pcache.c \ 461 $(TOP)\src\test_quota.c \ 462 $(TOP)\src\test_rtree.c \ 463 $(TOP)\src\test_schema.c \ 464 $(TOP)\src\test_server.c \ 465 $(TOP)\src\test_superlock.c \ 466 $(TOP)\src\test_syscall.c \ 467 $(TOP)\src\test_stat.c \ 468 $(TOP)\src\test_tclvar.c \ 469 $(TOP)\src\test_thread.c \ 470 $(TOP)\src\test_vfs.c \ 471 $(TOP)\src\test_wholenumber.c \ 472 $(TOP)\src\test_wsd.c \ 473 $(TOP)\ext\fts3\fts3_term.c \ 474 $(TOP)\ext\fts3\fts3_test.c 475 476# Source code to the library files needed by the test fixture 477# 478TESTSRC2 = \ 479 $(TOP)\src\attach.c \ 480 $(TOP)\src\backup.c \ 481 $(TOP)\src\bitvec.c \ 482 $(TOP)\src\btree.c \ 483 $(TOP)\src\build.c \ 484 $(TOP)\src\ctime.c \ 485 $(TOP)\src\date.c \ 486 $(TOP)\src\expr.c \ 487 $(TOP)\src\func.c \ 488 $(TOP)\src\insert.c \ 489 $(TOP)\src\wal.c \ 490 $(TOP)\src\mem5.c \ 491 $(TOP)\src\os.c \ 492 $(TOP)\src\os_os2.c \ 493 $(TOP)\src\os_unix.c \ 494 $(TOP)\src\os_win.c \ 495 $(TOP)\src\pager.c \ 496 $(TOP)\src\pragma.c \ 497 $(TOP)\src\prepare.c \ 498 $(TOP)\src\printf.c \ 499 $(TOP)\src\random.c \ 500 $(TOP)\src\pcache.c \ 501 $(TOP)\src\pcache1.c \ 502 $(TOP)\src\select.c \ 503 $(TOP)\src\tokenize.c \ 504 $(TOP)\src\utf.c \ 505 $(TOP)\src\util.c \ 506 $(TOP)\src\vdbeapi.c \ 507 $(TOP)\src\vdbeaux.c \ 508 $(TOP)\src\vdbe.c \ 509 $(TOP)\src\vdbemem.c \ 510 $(TOP)\src\vdbesort.c \ 511 $(TOP)\src\vdbetrace.c \ 512 $(TOP)\src\where.c \ 513 parse.c \ 514 $(TOP)\ext\fts3\fts3.c \ 515 $(TOP)\ext\fts3\fts3_aux.c \ 516 $(TOP)\ext\fts3\fts3_expr.c \ 517 $(TOP)\ext\fts3\fts3_tokenizer.c \ 518 $(TOP)\ext\fts3\fts3_unicode.c \ 519 $(TOP)\ext\fts3\fts3_unicode2.c \ 520 $(TOP)\ext\fts3\fts3_write.c \ 521 $(TOP)\ext\async\sqlite3async.c 522 523# Header files used by all library source files. 524# 525HDR = \ 526 $(TOP)\src\btree.h \ 527 $(TOP)\src\btreeInt.h \ 528 $(TOP)\src\hash.h \ 529 $(TOP)\src\hwtime.h \ 530 keywordhash.h \ 531 $(TOP)\src\mutex.h \ 532 opcodes.h \ 533 $(TOP)\src\os.h \ 534 $(TOP)\src\os_common.h \ 535 $(TOP)\src\pager.h \ 536 $(TOP)\src\pcache.h \ 537 parse.h \ 538 sqlite3.h \ 539 $(TOP)\src\sqlite3ext.h \ 540 $(TOP)\src\sqliteInt.h \ 541 $(TOP)\src\sqliteLimit.h \ 542 $(TOP)\src\vdbe.h \ 543 $(TOP)\src\vdbeInt.h 544 545# Header files used by extensions 546# 547EXTHDR = $(EXTHDR) \ 548 $(TOP)\ext\fts1\fts1.h \ 549 $(TOP)\ext\fts1\fts1_hash.h \ 550 $(TOP)\ext\fts1\fts1_tokenizer.h 551EXTHDR = $(EXTHDR) \ 552 $(TOP)\ext\fts2\fts2.h \ 553 $(TOP)\ext\fts2\fts2_hash.h \ 554 $(TOP)\ext\fts2\fts2_tokenizer.h 555EXTHDR = $(EXTHDR) \ 556 $(TOP)\ext\fts3\fts3.h \ 557 $(TOP)\ext\fts3\fts3Int.h \ 558 $(TOP)\ext\fts3\fts3_hash.h \ 559 $(TOP)\ext\fts3\fts3_tokenizer.h 560EXTHDR = $(EXTHDR) \ 561 $(TOP)\ext\rtree\rtree.h 562EXTHDR = $(EXTHDR) \ 563 $(TOP)\ext\icu\sqliteicu.h 564EXTHDR = $(EXTHDR) \ 565 $(TOP)\ext\rtree\sqlite3rtree.h 566 567# This is the default Makefile target. The objects listed here 568# are what get build when you type just "make" with no arguments. 569# 570all: dll libsqlite3.lib sqlite3.exe libtclsqlite3.lib 571 572libsqlite3.lib: $(LIBOBJ) 573 $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS) 574 575libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib 576 $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCL:tcl=tclstub) $(TLIBS) 577 578sqlite3.exe: $(TOP)\src\shell.c libsqlite3.lib sqlite3.h 579 $(LTLINK) $(READLINE_FLAGS) \ 580 $(TOP)\src\shell.c \ 581 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBREADLINE) $(LTLIBS) $(TLIBS) 582 583# This target creates a directory named "tsrc" and fills it with 584# copies of all of the C source code and header files needed to 585# build on the target system. Some of the C source code and header 586# files are automatically generated. This target takes care of 587# all that automatic generation. 588# 589.target_source: $(SRC) $(TOP)\tool\vdbe-compress.tcl 590 -rmdir /S/Q tsrc 591 -mkdir tsrc 592 for %i in ($(SRC)) do copy /Y %i tsrc 593 del /Q tsrc\sqlite.h.in tsrc\parse.y 594 $(TCLSH_CMD) $(TOP)\tool\vdbe-compress.tcl < tsrc\vdbe.c > vdbe.new 595 move vdbe.new tsrc\vdbe.c 596 echo > .target_source 597 598sqlite3.c: .target_source $(TOP)\tool\mksqlite3c.tcl 599 $(TCLSH_CMD) $(TOP)\tool\mksqlite3c.tcl 600 601sqlite3-all.c: sqlite3.c $(TOP)/tool/split-sqlite3c.tcl 602 $(TCLSH_CMD) $(TOP)/tool/split-sqlite3c.tcl 603 604# Rule to build the amalgamation 605# 606sqlite3.lo: sqlite3.c 607 $(LTCOMPILE) -c sqlite3.c 608 609# Rules to build the LEMON compiler generator 610# 611lempar.c: $(TOP)\src\lempar.c 612 copy $(TOP)\src\lempar.c . 613 614lemon.exe: $(TOP)\tool\lemon.c lempar.c 615 $(BCC) -Fe$@ $(TOP)\tool\lemon.c 616 617# Rules to build individual *.lo files from generated *.c files. This 618# applies to: 619# 620# parse.lo 621# opcodes.lo 622# 623parse.lo: parse.c $(HDR) 624 $(LTCOMPILE) -c parse.c 625 626opcodes.lo: opcodes.c 627 $(LTCOMPILE) -c opcodes.c 628 629# Rules to build individual *.lo files from files in the src directory. 630# 631alter.lo: $(TOP)\src\alter.c $(HDR) 632 $(LTCOMPILE) -c $(TOP)\src\alter.c 633 634analyze.lo: $(TOP)\src\analyze.c $(HDR) 635 $(LTCOMPILE) -c $(TOP)\src\analyze.c 636 637attach.lo: $(TOP)\src\attach.c $(HDR) 638 $(LTCOMPILE) -c $(TOP)\src\attach.c 639 640auth.lo: $(TOP)\src\auth.c $(HDR) 641 $(LTCOMPILE) -c $(TOP)\src\auth.c 642 643backup.lo: $(TOP)\src\backup.c $(HDR) 644 $(LTCOMPILE) -c $(TOP)\src\backup.c 645 646bitvec.lo: $(TOP)\src\bitvec.c $(HDR) 647 $(LTCOMPILE) -c $(TOP)\src\bitvec.c 648 649btmutex.lo: $(TOP)\src\btmutex.c $(HDR) 650 $(LTCOMPILE) -c $(TOP)\src\btmutex.c 651 652btree.lo: $(TOP)\src\btree.c $(HDR) $(TOP)\src\pager.h 653 $(LTCOMPILE) -c $(TOP)\src\btree.c 654 655build.lo: $(TOP)\src\build.c $(HDR) 656 $(LTCOMPILE) -c $(TOP)\src\build.c 657 658callback.lo: $(TOP)\src\callback.c $(HDR) 659 $(LTCOMPILE) -c $(TOP)\src\callback.c 660 661complete.lo: $(TOP)\src\complete.c $(HDR) 662 $(LTCOMPILE) -c $(TOP)\src\complete.c 663 664ctime.lo: $(TOP)\src\ctime.c $(HDR) 665 $(LTCOMPILE) -c $(TOP)\src\ctime.c 666 667date.lo: $(TOP)\src\date.c $(HDR) 668 $(LTCOMPILE) -c $(TOP)\src\date.c 669 670delete.lo: $(TOP)\src\delete.c $(HDR) 671 $(LTCOMPILE) -c $(TOP)\src\delete.c 672 673expr.lo: $(TOP)\src\expr.c $(HDR) 674 $(LTCOMPILE) -c $(TOP)\src\expr.c 675 676fault.lo: $(TOP)\src\fault.c $(HDR) 677 $(LTCOMPILE) -c $(TOP)\src\fault.c 678 679fkey.lo: $(TOP)\src\fkey.c $(HDR) 680 $(LTCOMPILE) -c $(TOP)\src\fkey.c 681 682func.lo: $(TOP)\src\func.c $(HDR) 683 $(LTCOMPILE) -c $(TOP)\src\func.c 684 685global.lo: $(TOP)\src\global.c $(HDR) 686 $(LTCOMPILE) -c $(TOP)\src\global.c 687 688hash.lo: $(TOP)\src\hash.c $(HDR) 689 $(LTCOMPILE) -c $(TOP)\src\hash.c 690 691insert.lo: $(TOP)\src\insert.c $(HDR) 692 $(LTCOMPILE) -c $(TOP)\src\insert.c 693 694journal.lo: $(TOP)\src\journal.c $(HDR) 695 $(LTCOMPILE) -c $(TOP)\src\journal.c 696 697legacy.lo: $(TOP)\src\legacy.c $(HDR) 698 $(LTCOMPILE) -c $(TOP)\src\legacy.c 699 700loadext.lo: $(TOP)\src\loadext.c $(HDR) 701 $(LTCOMPILE) -c $(TOP)\src\loadext.c 702 703main.lo: $(TOP)\src\main.c $(HDR) 704 $(LTCOMPILE) -c $(TOP)\src\main.c 705 706malloc.lo: $(TOP)\src\malloc.c $(HDR) 707 $(LTCOMPILE) -c $(TOP)\src\malloc.c 708 709mem0.lo: $(TOP)\src\mem0.c $(HDR) 710 $(LTCOMPILE) -c $(TOP)\src\mem0.c 711 712mem1.lo: $(TOP)\src\mem1.c $(HDR) 713 $(LTCOMPILE) -c $(TOP)\src\mem1.c 714 715mem2.lo: $(TOP)\src\mem2.c $(HDR) 716 $(LTCOMPILE) -c $(TOP)\src\mem2.c 717 718mem3.lo: $(TOP)\src\mem3.c $(HDR) 719 $(LTCOMPILE) -c $(TOP)\src\mem3.c 720 721mem5.lo: $(TOP)\src\mem5.c $(HDR) 722 $(LTCOMPILE) -c $(TOP)\src\mem5.c 723 724memjournal.lo: $(TOP)\src\memjournal.c $(HDR) 725 $(LTCOMPILE) -c $(TOP)\src\memjournal.c 726 727mutex.lo: $(TOP)\src\mutex.c $(HDR) 728 $(LTCOMPILE) -c $(TOP)\src\mutex.c 729 730mutex_noop.lo: $(TOP)\src\mutex_noop.c $(HDR) 731 $(LTCOMPILE) -c $(TOP)\src\mutex_noop.c 732 733mutex_os2.lo: $(TOP)\src\mutex_os2.c $(HDR) 734 $(LTCOMPILE) -c $(TOP)\src\mutex_os2.c 735 736mutex_unix.lo: $(TOP)\src\mutex_unix.c $(HDR) 737 $(LTCOMPILE) -c $(TOP)\src\mutex_unix.c 738 739mutex_w32.lo: $(TOP)\src\mutex_w32.c $(HDR) 740 $(LTCOMPILE) -c $(TOP)\src\mutex_w32.c 741 742notify.lo: $(TOP)\src\notify.c $(HDR) 743 $(LTCOMPILE) -c $(TOP)\src\notify.c 744 745pager.lo: $(TOP)\src\pager.c $(HDR) $(TOP)\src\pager.h 746 $(LTCOMPILE) -c $(TOP)\src\pager.c 747 748pcache.lo: $(TOP)\src\pcache.c $(HDR) $(TOP)\src\pcache.h 749 $(LTCOMPILE) -c $(TOP)\src\pcache.c 750 751pcache1.lo: $(TOP)\src\pcache1.c $(HDR) $(TOP)\src\pcache.h 752 $(LTCOMPILE) -c $(TOP)\src\pcache1.c 753 754os.lo: $(TOP)\src\os.c $(HDR) 755 $(LTCOMPILE) -c $(TOP)\src\os.c 756 757os_unix.lo: $(TOP)\src\os_unix.c $(HDR) 758 $(LTCOMPILE) -c $(TOP)\src\os_unix.c 759 760os_win.lo: $(TOP)\src\os_win.c $(HDR) 761 $(LTCOMPILE) -c $(TOP)\src\os_win.c 762 763os_os2.lo: $(TOP)\src\os_os2.c $(HDR) 764 $(LTCOMPILE) -c $(TOP)\src\os_os2.c 765 766pragma.lo: $(TOP)\src\pragma.c $(HDR) 767 $(LTCOMPILE) -c $(TOP)\src\pragma.c 768 769prepare.lo: $(TOP)\src\prepare.c $(HDR) 770 $(LTCOMPILE) -c $(TOP)\src\prepare.c 771 772printf.lo: $(TOP)\src\printf.c $(HDR) 773 $(LTCOMPILE) -c $(TOP)\src\printf.c 774 775random.lo: $(TOP)\src\random.c $(HDR) 776 $(LTCOMPILE) -c $(TOP)\src\random.c 777 778resolve.lo: $(TOP)\src\resolve.c $(HDR) 779 $(LTCOMPILE) -c $(TOP)\src\resolve.c 780 781rowset.lo: $(TOP)\src\rowset.c $(HDR) 782 $(LTCOMPILE) -c $(TOP)\src\rowset.c 783 784select.lo: $(TOP)\src\select.c $(HDR) 785 $(LTCOMPILE) -c $(TOP)\src\select.c 786 787status.lo: $(TOP)\src\status.c $(HDR) 788 $(LTCOMPILE) -c $(TOP)\src\status.c 789 790table.lo: $(TOP)\src\table.c $(HDR) 791 $(LTCOMPILE) -c $(TOP)\src\table.c 792 793tokenize.lo: $(TOP)\src\tokenize.c keywordhash.h $(HDR) 794 $(LTCOMPILE) -c $(TOP)\src\tokenize.c 795 796trigger.lo: $(TOP)\src\trigger.c $(HDR) 797 $(LTCOMPILE) -c $(TOP)\src\trigger.c 798 799update.lo: $(TOP)\src\update.c $(HDR) 800 $(LTCOMPILE) -c $(TOP)\src\update.c 801 802utf.lo: $(TOP)\src\utf.c $(HDR) 803 $(LTCOMPILE) -c $(TOP)\src\utf.c 804 805util.lo: $(TOP)\src\util.c $(HDR) 806 $(LTCOMPILE) -c $(TOP)\src\util.c 807 808vacuum.lo: $(TOP)\src\vacuum.c $(HDR) 809 $(LTCOMPILE) -c $(TOP)\src\vacuum.c 810 811vdbe.lo: $(TOP)\src\vdbe.c $(HDR) 812 $(LTCOMPILE) -c $(TOP)\src\vdbe.c 813 814vdbeapi.lo: $(TOP)\src\vdbeapi.c $(HDR) 815 $(LTCOMPILE) -c $(TOP)\src\vdbeapi.c 816 817vdbeaux.lo: $(TOP)\src\vdbeaux.c $(HDR) 818 $(LTCOMPILE) -c $(TOP)\src\vdbeaux.c 819 820vdbeblob.lo: $(TOP)\src\vdbeblob.c $(HDR) 821 $(LTCOMPILE) -c $(TOP)\src\vdbeblob.c 822 823vdbemem.lo: $(TOP)\src\vdbemem.c $(HDR) 824 $(LTCOMPILE) -c $(TOP)\src\vdbemem.c 825 826vdbesort.lo: $(TOP)\src\vdbesort.c $(HDR) 827 $(LTCOMPILE) -c $(TOP)\src\vdbesort.c 828 829vdbetrace.lo: $(TOP)\src\vdbetrace.c $(HDR) 830 $(LTCOMPILE) -c $(TOP)\src\vdbetrace.c 831 832vtab.lo: $(TOP)\src\vtab.c $(HDR) 833 $(LTCOMPILE) -c $(TOP)\src\vtab.c 834 835wal.lo: $(TOP)\src\wal.c $(HDR) 836 $(LTCOMPILE) -c $(TOP)\src\wal.c 837 838walker.lo: $(TOP)\src\walker.c $(HDR) 839 $(LTCOMPILE) -c $(TOP)\src\walker.c 840 841where.lo: $(TOP)\src\where.c $(HDR) 842 $(LTCOMPILE) -c $(TOP)\src\where.c 843 844tclsqlite.lo: $(TOP)\src\tclsqlite.c $(HDR) 845 $(LTCOMPILE) -DUSE_TCL_STUBS=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 846 847tclsqlite-shell.lo: $(TOP)\src\tclsqlite.c $(HDR) 848 $(LTCOMPILE) -DTCLSH=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 849 850tclsqlite3.exe: tclsqlite-shell.lo libsqlite3.lib 851 $(LTLINK) tclsqlite-shell.lo \ 852 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LTLIBS) $(TLIBS) 853 854# Rules to build opcodes.c and opcodes.h 855# 856opcodes.c: opcodes.h $(TOP)\mkopcodec.awk 857 $(NAWK) -f $(TOP)\mkopcodec.awk opcodes.h > opcodes.c 858 859opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\mkopcodeh.awk 860 type parse.h $(TOP)\src\vdbe.c | $(NAWK) -f $(TOP)\mkopcodeh.awk > opcodes.h 861 862# Rules to build parse.c and parse.h - the outputs of lemon. 863# 864parse.h: parse.c 865 866parse.c: $(TOP)\src\parse.y lemon.exe $(TOP)\addopcodes.awk 867 del /Q parse.y parse.h parse.h.temp 868 copy $(TOP)\src\parse.y . 869 .\lemon.exe $(OPT_FEATURE_FLAGS) $(OPTS) parse.y 870 move parse.h parse.h.temp 871 $(NAWK) -f $(TOP)\addopcodes.awk parse.h.temp > parse.h 872 873sqlite3.h: $(TOP)\src\sqlite.h.in $(TOP)\manifest.uuid $(TOP)\VERSION 874 $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP) > sqlite3.h 875 876mkkeywordhash.exe: $(TOP)\tool\mkkeywordhash.c 877 $(BCC) -Femkkeywordhash.exe $(OPT_FEATURE_FLAGS) $(OPTS) $(TOP)\tool\mkkeywordhash.c 878 879keywordhash.h: $(TOP)\tool\mkkeywordhash.c mkkeywordhash.exe 880 .\mkkeywordhash.exe > keywordhash.h 881 882 883 884# Rules to build the extension objects. 885# 886icu.lo: $(TOP)\ext\icu\icu.c $(HDR) $(EXTHDR) 887 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\icu\icu.c 888 889fts2.lo: $(TOP)\ext\fts2\fts2.c $(HDR) $(EXTHDR) 890 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2.c 891 892fts2_hash.lo: $(TOP)\ext\fts2\fts2_hash.c $(HDR) $(EXTHDR) 893 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_hash.c 894 895fts2_icu.lo: $(TOP)\ext\fts2\fts2_icu.c $(HDR) $(EXTHDR) 896 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_icu.c 897 898fts2_porter.lo: $(TOP)\ext\fts2\fts2_porter.c $(HDR) $(EXTHDR) 899 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_porter.c 900 901fts2_tokenizer.lo: $(TOP)\ext\fts2\fts2_tokenizer.c $(HDR) $(EXTHDR) 902 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer.c 903 904fts2_tokenizer1.lo: $(TOP)\ext\fts2\fts2_tokenizer1.c $(HDR) $(EXTHDR) 905 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer1.c 906 907fts3.lo: $(TOP)\ext\fts3\fts3.c $(HDR) $(EXTHDR) 908 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3.c 909 910fts3_aux.lo: $(TOP)\ext\fts3\fts3_aux.c $(HDR) $(EXTHDR) 911 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_aux.c 912 913fts3_expr.lo: $(TOP)\ext\fts3\fts3_expr.c $(HDR) $(EXTHDR) 914 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_expr.c 915 916fts3_hash.lo: $(TOP)\ext\fts3\fts3_hash.c $(HDR) $(EXTHDR) 917 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_hash.c 918 919fts3_icu.lo: $(TOP)\ext\fts3\fts3_icu.c $(HDR) $(EXTHDR) 920 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_icu.c 921 922fts3_snippet.lo: $(TOP)\ext\fts3\fts3_snippet.c $(HDR) $(EXTHDR) 923 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_snippet.c 924 925fts3_porter.lo: $(TOP)\ext\fts3\fts3_porter.c $(HDR) $(EXTHDR) 926 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_porter.c 927 928fts3_tokenizer.lo: $(TOP)\ext\fts3\fts3_tokenizer.c $(HDR) $(EXTHDR) 929 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer.c 930 931fts3_tokenizer1.lo: $(TOP)\ext\fts3\fts3_tokenizer1.c $(HDR) $(EXTHDR) 932 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer1.c 933 934fts3_unicode.lo: $(TOP)\ext\fts3\fts3_unicode.c $(HDR) $(EXTHDR) 935 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode.c 936 937fts3_unicode2.lo: $(TOP)\ext\fts3\fts3_unicode2.c $(HDR) $(EXTHDR) 938 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode2.c 939 940fts3_write.lo: $(TOP)\ext\fts3\fts3_write.c $(HDR) $(EXTHDR) 941 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_write.c 942 943rtree.lo: $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR) 944 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c 945 946 947# Rules to build the 'testfixture' application. 948# 949# If using the amalgamation, use sqlite3.c directly to build the test 950# fixture. Otherwise link against libsqlite3.lib. (This distinction is 951# necessary because the test fixture requires non-API symbols which are 952# hidden when the library is built via the amalgamation). 953# 954TESTFIXTURE_FLAGS = -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 955TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS) -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE 956 957TESTFIXTURE_SRC0 = $(TESTSRC2) libsqlite3.lib 958TESTFIXTURE_SRC1 = sqlite3.c 959!IF $(USE_AMALGAMATION)==0 960TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC0) 961!ELSE 962TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC1) 963!ENDIF 964 965testfixture.exe: $(TESTFIXTURE_SRC) $(HDR) 966 $(LTLINK) -DSQLITE_NO_SYNC=1 $(TESTFIXTURE_FLAGS) \ 967 -DBUILD_sqlite -I$(TCLINCDIR) \ 968 $(TESTFIXTURE_SRC) \ 969 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LTLIBS) $(TLIBS) 970 971fulltest: testfixture.exe sqlite3.exe 972 .\testfixture.exe $(TOP)\test\all.test 973 974soaktest: testfixture.exe sqlite3.exe 975 .\testfixture.exe $(TOP)\test\all.test -soak=1 976 977test: testfixture.exe sqlite3.exe 978 .\testfixture.exe $(TOP)\test\veryquick.test 979 980sqlite3_analyzer.c: sqlite3.c $(TOP)\src\test_stat.c $(TOP)\src\tclsqlite.c $(TOP)\tool\spaceanal.tcl 981 copy sqlite3.c + $(TOP)\src\test_stat.c + $(TOP)\src\tclsqlite.c $@ 982 echo static const char *tclsh_main_loop(void){ >> $@ 983 echo static const char *zMainloop = >> $@ 984 $(NAWK) -f $(TOP)\tool\tostr.awk $(TOP)\tool\spaceanal.tcl >> $@ 985 echo ; return zMainloop; } >> $@ 986 987sqlite3_analyzer.exe: sqlite3_analyzer.c 988 $(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \ 989 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LTLIBS) $(TLIBS) 990 991clean: 992 del /Q *.lo *.ilk *.lib *.obj *.pdb sqlite3.exe libsqlite3.lib 993 del /Q *.da *.bb *.bbg gmon.out 994 del /Q sqlite3.h opcodes.c opcodes.h 995 del /Q lemon.exe lempar.c parse.* 996 del /Q mkkeywordhash.exe keywordhash.h 997 -rmdir /Q/S .deps 998 -rmdir /Q/S .libs 999 -rmdir /Q/S quota2a 1000 -rmdir /Q/S quota2b 1001 -rmdir /Q/S quota2c 1002 -rmdir /Q/S tsrc 1003 del /Q .target_source 1004 del /Q tclsqlite3.exe 1005 del /Q testfixture.exe testfixture.exp test.db 1006 del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def 1007 del /Q sqlite3.c 1008 del /Q sqlite3_analyzer.exe sqlite3_analyzer.exp sqlite3_analyzer.c 1009 1010# 1011# Windows section 1012# 1013dll: sqlite3.dll 1014 1015sqlite3.def: libsqlite3.lib 1016 echo EXPORTS > sqlite3.def 1017 dumpbin /all libsqlite3.lib \ 1018 | $(NAWK) "/ 1 _?sqlite3_/ { sub(/^.* _?/,\"\");print }" \ 1019 | sort >> sqlite3.def 1020 1021sqlite3.dll: $(LIBOBJ) sqlite3.def 1022 link $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:sqlite3.def /OUT:$@ $(LIBOBJ) $(LTLIBS) $(TLIBS) 1023