1# 2# nmake Makefile for SQLite 3# 4############################################################################### 5############################## START OF OPTIONS ############################### 6############################################################################### 7 8# The toplevel directory of the source tree. This is the directory 9# that contains this "Makefile.msc". 10# 11TOP = . 12 13# Set this non-0 to create and use the SQLite amalgamation file. 14# 15!IFNDEF USE_AMALGAMATION 16USE_AMALGAMATION = 1 17!ENDIF 18 19# Set this non-0 to use the library paths and other options necessary for 20# Windows Phone 8.1. 21# 22!IFNDEF USE_WP81_OPTS 23USE_WP81_OPTS = 0 24!ENDIF 25 26# Set this non-0 to split the SQLite amalgamation file into chunks to 27# be used for debugging with Visual Studio. 28# 29!IFNDEF SPLIT_AMALGAMATION 30SPLIT_AMALGAMATION = 0 31!ENDIF 32 33# Set this non-0 to use the International Components for Unicode (ICU). 34# 35!IFNDEF USE_ICU 36USE_ICU = 0 37!ENDIF 38 39# Set this non-0 to dynamically link to the MSVC runtime library. 40# 41!IFNDEF USE_CRT_DLL 42USE_CRT_DLL = 0 43!ENDIF 44 45# Set this non-0 to generate assembly code listings for the source code 46# files. 47# 48!IFNDEF USE_LISTINGS 49USE_LISTINGS = 0 50!ENDIF 51 52# Set this non-0 to attempt setting the native compiler automatically 53# for cross-compiling the command line tools needed during the compilation 54# process. 55# 56!IFNDEF XCOMPILE 57XCOMPILE = 0 58!ENDIF 59 60# Set this non-0 to use the native libraries paths for cross-compiling 61# the command line tools needed during the compilation process. 62# 63!IFNDEF USE_NATIVE_LIBPATHS 64USE_NATIVE_LIBPATHS = 0 65!ENDIF 66 67# Set this 0 to skip the compiling and embedding of version resources. 68# 69!IFNDEF USE_RC 70USE_RC = 1 71!ENDIF 72 73# Set this non-0 to compile binaries suitable for the WinRT environment. 74# This setting does not apply to any binaries that require Tcl to operate 75# properly (i.e. the text fixture, etc). 76# 77!IFNDEF FOR_WINRT 78FOR_WINRT = 0 79!ENDIF 80 81# Set this non-0 to skip attempting to look for and/or link with the Tcl 82# runtime library. 83# 84!IFNDEF NO_TCL 85NO_TCL = 0 86!ENDIF 87 88# Set this to non-0 to create and use PDBs. 89# 90!IFNDEF SYMBOLS 91SYMBOLS = 1 92!ENDIF 93 94# Set this to non-0 to use the SQLite debugging heap subsystem. 95# 96!IFNDEF MEMDEBUG 97MEMDEBUG = 0 98!ENDIF 99 100# Set this to non-0 to use the Win32 native heap subsystem. 101# 102!IFNDEF WIN32HEAP 103WIN32HEAP = 0 104!ENDIF 105 106# Set this to one of the following values to enable various debugging 107# features. Each level includes the debugging options from the previous 108# levels. Currently, the recognized values for DEBUG are: 109# 110# 0 == NDEBUG: Disables assert() and other runtime diagnostics. 111# 1 == Disables NDEBUG and all optimizations and then enables PDBs. 112# 2 == SQLITE_DEBUG: Enables various diagnostics messages and code. 113# 3 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call. 114# 4 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros. 115# 5 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros. 116# 117!IFNDEF DEBUG 118DEBUG = 0 119!ENDIF 120 121# Enable use of available compiler optimizations? Normally, this should be 122# non-zero. Setting this to zero, thus disabling all compiler optimizations, 123# can be useful for testing. 124# 125!IFNDEF OPTIMIZATIONS 126OPTIMIZATIONS = 2 127!ENDIF 128 129# These are the "standard" SQLite compilation options used when compiling for 130# the Windows platform. 131# 132!IFNDEF OPT_FEATURE_FLAGS 133OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 134OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1 135OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 136!ENDIF 137 138############################################################################### 139############################### END OF OPTIONS ################################ 140############################################################################### 141 142# This assumes that MSVC is always installed in 32-bit Program Files directory 143# and sets the variable for use in locating other 32-bit installs accordingly. 144# 145PROGRAMFILES_X86 = $(VCINSTALLDIR)\..\.. 146PROGRAMFILES_X86 = $(PROGRAMFILES_X86:\\=\) 147 148# Check for the predefined command macro CC. This should point to the compiler 149# binary for the target platform. If it is not defined, simply define it to 150# the legacy default value 'cl.exe'. 151# 152!IFNDEF CC 153CC = cl.exe 154!ENDIF 155 156# Check for the command macro LD. This should point to the linker binary for 157# the target platform. If it is not defined, simply define it to the legacy 158# default value 'link.exe'. 159# 160!IFNDEF LD 161LD = link.exe 162!ENDIF 163 164# Check for the predefined command macro RC. This should point to the resource 165# compiler binary for the target platform. If it is not defined, simply define 166# it to the legacy default value 'rc.exe'. 167# 168!IFNDEF RC 169RC = rc.exe 170!ENDIF 171 172# Check for the MSVC runtime library path macro. Othertise, this value will 173# default to the 'lib' directory underneath the MSVC installation directory. 174# 175!IFNDEF CRTLIBPATH 176CRTLIBPATH = $(VCINSTALLDIR)\lib 177!ENDIF 178 179CRTLIBPATH = $(CRTLIBPATH:\\=\) 180 181# Check for the command macro NCC. This should point to the compiler binary 182# for the platform the compilation process is taking place on. If it is not 183# defined, simply define it to have the same value as the CC macro. When 184# cross-compiling, it is suggested that this macro be modified via the command 185# line (since nmake itself does not provide a built-in method to guess it). 186# For example, to use the x86 compiler when cross-compiling for x64, a command 187# line similar to the following could be used (all on one line): 188# 189# nmake /f Makefile.msc sqlite3.dll 190# XCOMPILE=1 USE_NATIVE_LIBPATHS=1 191# 192# Alternatively, the full path and file name to the compiler binary for the 193# platform the compilation process is taking place may be specified (all on 194# one line): 195# 196# nmake /f Makefile.msc sqlite3.dll 197# "NCC=""%VCINSTALLDIR%\bin\cl.exe""" 198# USE_NATIVE_LIBPATHS=1 199# 200!IFDEF NCC 201NCC = $(NCC:\\=\) 202!ELSEIF $(XCOMPILE)!=0 203NCC = "$(VCINSTALLDIR)\bin\$(CC)" 204NCC = $(NCC:\\=\) 205!ELSE 206NCC = $(CC) 207!ENDIF 208 209# Check for the MSVC native runtime library path macro. Othertise, 210# this value will default to the 'lib' directory underneath the MSVC 211# installation directory. 212# 213!IFNDEF NCRTLIBPATH 214NCRTLIBPATH = $(VCINSTALLDIR)\lib 215!ENDIF 216 217NCRTLIBPATH = $(NCRTLIBPATH:\\=\) 218 219# Check for the Platform SDK library path macro. Othertise, this 220# value will default to the 'lib' directory underneath the Windows 221# SDK installation directory (the environment variable used appears 222# to be available when using Visual C++ 2008 or later via the 223# command line). 224# 225!IFNDEF NSDKLIBPATH 226NSDKLIBPATH = $(WINDOWSSDKDIR)\lib 227!ENDIF 228 229NSDKLIBPATH = $(NSDKLIBPATH:\\=\) 230 231# C compiler and options for use in building executables that 232# will run on the platform that is doing the build. 233# 234BCC = $(NCC) -W3 235 236# Check if assembly code listings should be generated for the source 237# code files to be compiled. 238# 239!IF $(USE_LISTINGS)!=0 240BCC = $(BCC) -FAcs 241!ENDIF 242 243# Check if the native library paths should be used when compiling 244# the command line tools used during the compilation process. If 245# so, set the necessary macro now. 246# 247!IF $(USE_NATIVE_LIBPATHS)!=0 248NLTLIBPATHS = "/LIBPATH:$(NCRTLIBPATH)" "/LIBPATH:$(NSDKLIBPATH)" 249!ENDIF 250 251# C compiler and options for use in building executables that 252# will run on the target platform. (BCC and TCC are usually the 253# same unless your are cross-compiling.) 254# 255TCC = $(CC) -W3 -DSQLITE_OS_WIN=1 -I. -I$(TOP) -I$(TOP)\src -fp:precise 256RCC = $(RC) -DSQLITE_OS_WIN=1 -I$(TOP) -I$(TOP)\src 257 258# Check if assembly code listings should be generated for the source 259# code files to be compiled. 260# 261!IF $(USE_LISTINGS)!=0 262TCC = $(TCC) -FAcs 263!ENDIF 264 265# When compiling the library for use in the WinRT environment, 266# the following compile-time options must be used as well to 267# disable use of Win32 APIs that are not available and to enable 268# use of Win32 APIs that are specific to Windows 8 and/or WinRT. 269# 270!IF $(FOR_WINRT)!=0 271TCC = $(TCC) -DSQLITE_OS_WINRT=1 272RCC = $(RCC) -DSQLITE_OS_WINRT=1 273TCC = $(TCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP 274RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP 275!ENDIF 276 277# Also, we need to dynamically link to the correct MSVC runtime 278# when compiling for WinRT (e.g. debug or release) OR if the 279# USE_CRT_DLL option is set to force dynamically linking to the 280# MSVC runtime library. 281# 282!IF $(FOR_WINRT)!=0 || $(USE_CRT_DLL)!=0 283!IF $(DEBUG)>0 284TCC = $(TCC) -MDd 285BCC = $(BCC) -MDd 286!ELSE 287TCC = $(TCC) -MD 288BCC = $(BCC) -MD 289!ENDIF 290!ELSE 291!IF $(DEBUG)>0 292TCC = $(TCC) -MTd 293BCC = $(BCC) -MTd 294!ELSE 295TCC = $(TCC) -MT 296BCC = $(BCC) -MT 297!ENDIF 298!ENDIF 299 300# The mksqlite3c.tcl and mksqlite3h.tcl scripts will pull in 301# any extension header files by default. For non-amalgamation 302# builds, we need to make sure the compiler can find these. 303# 304!IF $(USE_AMALGAMATION)==0 305TCC = $(TCC) -I$(TOP)\ext\fts3 306RCC = $(RCC) -I$(TOP)\ext\fts3 307TCC = $(TCC) -I$(TOP)\ext\rtree 308RCC = $(RCC) -I$(TOP)\ext\rtree 309!ENDIF 310 311# The mksqlite3c.tcl script accepts some options on the command 312# line. When compiling with debugging enabled, some of these 313# options are necessary in order to allow debugging symbols to 314# work correctly with Visual Studio when using the amalgamation. 315# 316!IF $(DEBUG)>0 317MKSQLITE3C_ARGS = --linemacros 318!ELSE 319MKSQLITE3C_ARGS = 320!ENDIF 321 322# Define -DNDEBUG to compile without debugging (i.e., for production usage) 323# Omitting the define will cause extra debugging code to be inserted and 324# includes extra comments when "EXPLAIN stmt" is used. 325# 326!IF $(DEBUG)==0 327TCC = $(TCC) -DNDEBUG 328BCC = $(BCC) -DNDEBUG 329RCC = $(RCC) -DNDEBUG 330!ENDIF 331 332!IF $(DEBUG)>1 333TCC = $(TCC) -DSQLITE_DEBUG 334RCC = $(RCC) -DSQLITE_DEBUG 335!ENDIF 336 337!IF $(DEBUG)>3 338TCC = $(TCC) -DSQLITE_DEBUG_OS_TRACE=1 339RCC = $(RCC) -DSQLITE_DEBUG_OS_TRACE=1 340!ENDIF 341 342!IF $(DEBUG)>4 343TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE 344RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE 345!ENDIF 346 347# Prevent warnings about "insecure" MSVC runtime library functions 348# being used. 349# 350TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 351BCC = $(BCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 352RCC = $(RCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 353 354# Prevent warnings about "deprecated" POSIX functions being used. 355# 356TCC = $(TCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 357BCC = $(BCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 358RCC = $(RCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 359 360# Use the SQLite debugging heap subsystem? 361# 362!IF $(MEMDEBUG)!=0 363TCC = $(TCC) -DSQLITE_MEMDEBUG=1 364RCC = $(RCC) -DSQLITE_MEMDEBUG=1 365 366# Use native Win32 heap subsystem instead of malloc/free? 367# 368!ELSEIF $(WIN32HEAP)!=0 369TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1 370RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1 371 372# Validate the heap on every call into the native Win32 heap subsystem? 373# 374!IF $(DEBUG)>2 375TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 376RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 377!ENDIF 378!ENDIF 379 380# The locations of the Tcl header and library files. Also, the library that 381# non-stubs enabled programs using Tcl must link against. These variables 382# (TCLINCDIR, TCLLIBDIR, and LIBTCL) may be overridden via the environment 383# prior to running nmake in order to match the actual installed location and 384# version on this machine. 385# 386!IFNDEF TCLINCDIR 387TCLINCDIR = c:\tcl\include 388!ENDIF 389 390!IFNDEF TCLLIBDIR 391TCLLIBDIR = c:\tcl\lib 392!ENDIF 393 394!IFNDEF LIBTCL 395LIBTCL = tcl85.lib 396!ENDIF 397 398# The locations of the ICU header and library files. These variables 399# (ICUINCDIR, ICULIBDIR, and LIBICU) may be overridden via the environment 400# prior to running nmake in order to match the actual installed location on 401# this machine. 402# 403!IFNDEF ICUINCDIR 404ICUINCDIR = c:\icu\include 405!ENDIF 406 407!IFNDEF ICULIBDIR 408ICULIBDIR = c:\icu\lib 409!ENDIF 410 411!IFNDEF LIBICU 412LIBICU = icuuc.lib icuin.lib 413!ENDIF 414 415# This is the command to use for tclsh - normally just "tclsh", but we may 416# know the specific version we want to use. This variable (TCLSH_CMD) may be 417# overridden via the environment prior to running nmake in order to select a 418# specific Tcl shell to use. 419# 420!IFNDEF TCLSH_CMD 421TCLSH_CMD = tclsh85 422!ENDIF 423 424# Compiler options needed for programs that use the readline() library. 425# 426!IFNDEF READLINE_FLAGS 427READLINE_FLAGS = -DHAVE_READLINE=0 428!ENDIF 429 430# The library that programs using readline() must link against. 431# 432!IFNDEF LIBREADLINE 433LIBREADLINE = 434!ENDIF 435 436# Should the database engine be compiled threadsafe 437# 438TCC = $(TCC) -DSQLITE_THREADSAFE=1 439RCC = $(RCC) -DSQLITE_THREADSAFE=1 440 441# Do threads override each others locks by default (1), or do we test (-1) 442# 443TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 444RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 445 446# Any target libraries which libsqlite must be linked against 447# 448!IFNDEF TLIBS 449TLIBS = 450!ENDIF 451 452# Flags controlling use of the in memory btree implementation 453# 454# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to 455# default to file, 2 to default to memory, and 3 to force temporary 456# tables to always be in memory. 457# 458TCC = $(TCC) -DSQLITE_TEMP_STORE=1 459RCC = $(RCC) -DSQLITE_TEMP_STORE=1 460 461# Enable/disable loadable extensions, and other optional features 462# based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). 463# The same set of OMIT and ENABLE flags should be passed to the 464# LEMON parser generator and the mkkeywordhash tool as well. 465 466# These are the required SQLite compilation options used when compiling for 467# the Windows platform. 468# 469REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100 470 471# Add the required and optional SQLite compilation options into the command 472# lines used to invoke the MSVC code and resource compilers. 473# 474TCC = $(TCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) 475RCC = $(RCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) 476 477# Add in any optional parameters specified on the commane line, e.g. 478# nmake /f Makefile.msc all "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1" 479# 480TCC = $(TCC) $(OPTS) 481RCC = $(RCC) $(OPTS) 482 483# If compiling for debugging, add some defines. 484# 485!IF $(DEBUG)>0 486TCC = $(TCC) -D_DEBUG 487BCC = $(BCC) -D_DEBUG 488RCC = $(RCC) -D_DEBUG 489!ENDIF 490 491# If optimizations are enabled or disabled (either implicitly or 492# explicitly), add the necessary flags. 493# 494!IF $(DEBUG)>0 || $(OPTIMIZATIONS)==0 495TCC = $(TCC) -Od 496BCC = $(BCC) -Od 497!ELSEIF $(OPTIMIZATIONS)>=3 498TCC = $(TCC) -Ox 499BCC = $(BCC) -Ox 500!ELSEIF $(OPTIMIZATIONS)==2 501TCC = $(TCC) -O2 502BCC = $(BCC) -O2 503!ELSEIF $(OPTIMIZATIONS)==1 504TCC = $(TCC) -O1 505BCC = $(BCC) -O1 506!ENDIF 507 508# If symbols are enabled (or compiling for debugging), enable PDBs. 509# 510!IF $(DEBUG)>0 || $(SYMBOLS)!=0 511TCC = $(TCC) -Zi 512BCC = $(BCC) -Zi 513!ENDIF 514 515# If ICU support is enabled, add the compiler options for it. 516# 517!IF $(USE_ICU)!=0 518TCC = $(TCC) -DSQLITE_ENABLE_ICU=1 519RCC = $(RCC) -DSQLITE_ENABLE_ICU=1 520TCC = $(TCC) -I$(TOP)\ext\icu 521RCC = $(RCC) -I$(TOP)\ext\icu 522TCC = $(TCC) -I$(ICUINCDIR) 523RCC = $(RCC) -I$(ICUINCDIR) 524!ENDIF 525 526# Command line prefixes for compiling code, compiling resources, 527# linking, etc. 528# 529LTCOMPILE = $(TCC) -Fo$@ 530LTRCOMPILE = $(RCC) -r 531LTLIB = lib.exe 532LTLINK = $(TCC) -Fe$@ 533 534# If a platform was set, force the linker to target that. 535# Note that the vcvars*.bat family of batch files typically 536# set this for you. Otherwise, the linker will attempt 537# to deduce the binary type based on the object files. 538!IFDEF PLATFORM 539LTLINKOPTS = /MACHINE:$(PLATFORM) 540LTLIBOPTS = /MACHINE:$(PLATFORM) 541!ENDIF 542 543# When compiling for use in the WinRT environment, the following 544# linker option must be used to mark the executable as runnable 545# only in the context of an application container. 546# 547!IF $(FOR_WINRT)!=0 548LTLINKOPTS = $(LTLINKOPTS) /APPCONTAINER 549!IF "$(VISUALSTUDIOVERSION)"=="12.0" 550!IFNDEF STORELIBPATH 551!IF "$(PLATFORM)"=="x86" 552STORELIBPATH = $(CRTLIBPATH)\store 553!ELSEIF "$(PLATFORM)"=="x64" 554STORELIBPATH = $(CRTLIBPATH)\store\amd64 555!ELSEIF "$(PLATFORM)"=="ARM" 556STORELIBPATH = $(CRTLIBPATH)\store\arm 557!ELSE 558STORELIBPATH = $(CRTLIBPATH)\store 559!ENDIF 560!ENDIF 561STORELIBPATH = $(STORELIBPATH:\\=\) 562LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(STORELIBPATH)" 563!ENDIF 564!ENDIF 565 566# When compiling for Windows Phone 8.1, an extra library path is 567# required. 568# 569!IF $(USE_WP81_OPTS)!=0 570!IFNDEF WP81LIBPATH 571!IF "$(PLATFORM)"=="x86" 572WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 573!ELSEIF "$(PLATFORM)"=="ARM" 574WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\ARM 575!ELSE 576WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 577!ENDIF 578!ENDIF 579!ENDIF 580 581# When compiling for Windows Phone 8.1, some extra linker options 582# are also required. 583# 584!IF $(USE_WP81_OPTS)!=0 585!IFDEF WP81LIBPATH 586LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(WP81LIBPATH)" 587!ENDIF 588LTLINKOPTS = $(LTLINKOPTS) /DYNAMICBASE 589LTLINKOPTS = $(LTLINKOPTS) WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib 590LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:ole32.lib 591!ENDIF 592 593# If either debugging or symbols are enabled, enable PDBs. 594# 595!IF $(DEBUG)>0 || $(SYMBOLS)!=0 596LDFLAGS = /DEBUG 597!ENDIF 598 599# Start with the Tcl related linker options. 600# 601!IF $(NO_TCL)==0 602LTLIBPATHS = /LIBPATH:$(TCLLIBDIR) 603LTLIBS = $(LIBTCL) 604!ENDIF 605 606# If ICU support is enabled, add the linker options for it. 607# 608!IF $(USE_ICU)!=0 609LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR) 610LTLIBS = $(LTLIBS) $(LIBICU) 611!ENDIF 612 613# nawk compatible awk. 614# 615!IFNDEF NAWK 616NAWK = gawk.exe 617!ENDIF 618 619# You should not have to change anything below this line 620############################################################################### 621 622# Object files for the SQLite library (non-amalgamation). 623# 624LIBOBJS0 = vdbe.lo parse.lo alter.lo analyze.lo attach.lo auth.lo \ 625 backup.lo bitvec.lo btmutex.lo btree.lo build.lo \ 626 callback.lo complete.lo ctime.lo date.lo delete.lo \ 627 expr.lo fault.lo fkey.lo \ 628 fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \ 629 fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \ 630 fts3_tokenize_vtab.lo fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \ 631 func.lo global.lo hash.lo \ 632 icu.lo insert.lo journal.lo legacy.lo loadext.lo \ 633 main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \ 634 memjournal.lo \ 635 mutex.lo mutex_noop.lo mutex_unix.lo mutex_w32.lo \ 636 notify.lo opcodes.lo os.lo os_unix.lo os_win.lo \ 637 pager.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \ 638 random.lo resolve.lo rowset.lo rtree.lo select.lo status.lo \ 639 table.lo tokenize.lo trigger.lo \ 640 update.lo util.lo vacuum.lo \ 641 vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbesort.lo \ 642 vdbetrace.lo wal.lo walker.lo where.lo utf.lo vtab.lo 643 644# Object files for the amalgamation. 645# 646LIBOBJS1 = sqlite3.lo 647 648# Determine the real value of LIBOBJ based on the 'configure' script 649# 650!IF $(USE_AMALGAMATION)==0 651LIBOBJ = $(LIBOBJS0) 652!ELSE 653LIBOBJ = $(LIBOBJS1) 654!ENDIF 655 656# Determine if embedded resource compilation and usage are enabled. 657# 658!IF $(USE_RC)!=0 659LIBRESOBJS = sqlite3res.lo 660!ELSE 661LIBRESOBJS = 662!ENDIF 663 664# All of the source code files. 665# 666SRC = \ 667 $(TOP)\src\alter.c \ 668 $(TOP)\src\analyze.c \ 669 $(TOP)\src\attach.c \ 670 $(TOP)\src\auth.c \ 671 $(TOP)\src\backup.c \ 672 $(TOP)\src\bitvec.c \ 673 $(TOP)\src\btmutex.c \ 674 $(TOP)\src\btree.c \ 675 $(TOP)\src\btree.h \ 676 $(TOP)\src\btreeInt.h \ 677 $(TOP)\src\build.c \ 678 $(TOP)\src\callback.c \ 679 $(TOP)\src\complete.c \ 680 $(TOP)\src\ctime.c \ 681 $(TOP)\src\date.c \ 682 $(TOP)\src\delete.c \ 683 $(TOP)\src\expr.c \ 684 $(TOP)\src\fault.c \ 685 $(TOP)\src\fkey.c \ 686 $(TOP)\src\func.c \ 687 $(TOP)\src\global.c \ 688 $(TOP)\src\hash.c \ 689 $(TOP)\src\hash.h \ 690 $(TOP)\src\hwtime.h \ 691 $(TOP)\src\insert.c \ 692 $(TOP)\src\journal.c \ 693 $(TOP)\src\legacy.c \ 694 $(TOP)\src\loadext.c \ 695 $(TOP)\src\main.c \ 696 $(TOP)\src\malloc.c \ 697 $(TOP)\src\mem0.c \ 698 $(TOP)\src\mem1.c \ 699 $(TOP)\src\mem2.c \ 700 $(TOP)\src\mem3.c \ 701 $(TOP)\src\mem5.c \ 702 $(TOP)\src\memjournal.c \ 703 $(TOP)\src\mutex.c \ 704 $(TOP)\src\mutex.h \ 705 $(TOP)\src\mutex_noop.c \ 706 $(TOP)\src\mutex_unix.c \ 707 $(TOP)\src\mutex_w32.c \ 708 $(TOP)\src\notify.c \ 709 $(TOP)\src\os.c \ 710 $(TOP)\src\os.h \ 711 $(TOP)\src\os_common.h \ 712 $(TOP)\src\os_setup.h \ 713 $(TOP)\src\os_unix.c \ 714 $(TOP)\src\os_win.c \ 715 $(TOP)\src\os_win.h \ 716 $(TOP)\src\pager.c \ 717 $(TOP)\src\pager.h \ 718 $(TOP)\src\parse.y \ 719 $(TOP)\src\pcache.c \ 720 $(TOP)\src\pcache.h \ 721 $(TOP)\src\pcache1.c \ 722 $(TOP)\src\pragma.c \ 723 $(TOP)\src\prepare.c \ 724 $(TOP)\src\printf.c \ 725 $(TOP)\src\random.c \ 726 $(TOP)\src\resolve.c \ 727 $(TOP)\src\rowset.c \ 728 $(TOP)\src\select.c \ 729 $(TOP)\src\status.c \ 730 $(TOP)\src\shell.c \ 731 $(TOP)\src\sqlite.h.in \ 732 $(TOP)\src\sqlite3ext.h \ 733 $(TOP)\src\sqliteInt.h \ 734 $(TOP)\src\sqliteLimit.h \ 735 $(TOP)\src\table.c \ 736 $(TOP)\src\tclsqlite.c \ 737 $(TOP)\src\tokenize.c \ 738 $(TOP)\src\trigger.c \ 739 $(TOP)\src\utf.c \ 740 $(TOP)\src\update.c \ 741 $(TOP)\src\util.c \ 742 $(TOP)\src\vacuum.c \ 743 $(TOP)\src\vdbe.c \ 744 $(TOP)\src\vdbe.h \ 745 $(TOP)\src\vdbeapi.c \ 746 $(TOP)\src\vdbeaux.c \ 747 $(TOP)\src\vdbeblob.c \ 748 $(TOP)\src\vdbemem.c \ 749 $(TOP)\src\vdbesort.c \ 750 $(TOP)\src\vdbetrace.c \ 751 $(TOP)\src\vdbeInt.h \ 752 $(TOP)\src\vtab.c \ 753 $(TOP)\src\wal.c \ 754 $(TOP)\src\wal.h \ 755 $(TOP)\src\walker.c \ 756 $(TOP)\src\where.c \ 757 $(TOP)\src\whereInt.h 758 759# Source code for extensions 760# 761SRC = $(SRC) \ 762 $(TOP)\ext\fts1\fts1.c \ 763 $(TOP)\ext\fts1\fts1.h \ 764 $(TOP)\ext\fts1\fts1_hash.c \ 765 $(TOP)\ext\fts1\fts1_hash.h \ 766 $(TOP)\ext\fts1\fts1_porter.c \ 767 $(TOP)\ext\fts1\fts1_tokenizer.h \ 768 $(TOP)\ext\fts1\fts1_tokenizer1.c 769SRC = $(SRC) \ 770 $(TOP)\ext\fts2\fts2.c \ 771 $(TOP)\ext\fts2\fts2.h \ 772 $(TOP)\ext\fts2\fts2_hash.c \ 773 $(TOP)\ext\fts2\fts2_hash.h \ 774 $(TOP)\ext\fts2\fts2_icu.c \ 775 $(TOP)\ext\fts2\fts2_porter.c \ 776 $(TOP)\ext\fts2\fts2_tokenizer.h \ 777 $(TOP)\ext\fts2\fts2_tokenizer.c \ 778 $(TOP)\ext\fts2\fts2_tokenizer1.c 779SRC = $(SRC) \ 780 $(TOP)\ext\fts3\fts3.c \ 781 $(TOP)\ext\fts3\fts3.h \ 782 $(TOP)\ext\fts3\fts3Int.h \ 783 $(TOP)\ext\fts3\fts3_aux.c \ 784 $(TOP)\ext\fts3\fts3_expr.c \ 785 $(TOP)\ext\fts3\fts3_hash.c \ 786 $(TOP)\ext\fts3\fts3_hash.h \ 787 $(TOP)\ext\fts3\fts3_icu.c \ 788 $(TOP)\ext\fts3\fts3_porter.c \ 789 $(TOP)\ext\fts3\fts3_snippet.c \ 790 $(TOP)\ext\fts3\fts3_tokenizer.h \ 791 $(TOP)\ext\fts3\fts3_tokenizer.c \ 792 $(TOP)\ext\fts3\fts3_tokenizer1.c \ 793 $(TOP)\ext\fts3\fts3_tokenize_vtab.c \ 794 $(TOP)\ext\fts3\fts3_unicode.c \ 795 $(TOP)\ext\fts3\fts3_unicode2.c \ 796 $(TOP)\ext\fts3\fts3_write.c 797SRC = $(SRC) \ 798 $(TOP)\ext\icu\sqliteicu.h \ 799 $(TOP)\ext\icu\icu.c 800SRC = $(SRC) \ 801 $(TOP)\ext\rtree\rtree.h \ 802 $(TOP)\ext\rtree\rtree.c 803 804 805# Generated source code files 806# 807SRC = $(SRC) \ 808 keywordhash.h \ 809 opcodes.c \ 810 opcodes.h \ 811 parse.c \ 812 parse.h \ 813 sqlite3.h 814 815# Source code to the test files. 816# 817TESTSRC = \ 818 $(TOP)\src\test1.c \ 819 $(TOP)\src\test2.c \ 820 $(TOP)\src\test3.c \ 821 $(TOP)\src\test4.c \ 822 $(TOP)\src\test5.c \ 823 $(TOP)\src\test6.c \ 824 $(TOP)\src\test7.c \ 825 $(TOP)\src\test8.c \ 826 $(TOP)\src\test9.c \ 827 $(TOP)\src\test_autoext.c \ 828 $(TOP)\src\test_async.c \ 829 $(TOP)\src\test_backup.c \ 830 $(TOP)\src\test_btree.c \ 831 $(TOP)\src\test_config.c \ 832 $(TOP)\src\test_demovfs.c \ 833 $(TOP)\src\test_devsym.c \ 834 $(TOP)\src\test_fs.c \ 835 $(TOP)\src\test_func.c \ 836 $(TOP)\src\test_hexio.c \ 837 $(TOP)\src\test_init.c \ 838 $(TOP)\src\test_intarray.c \ 839 $(TOP)\src\test_journal.c \ 840 $(TOP)\src\test_malloc.c \ 841 $(TOP)\src\test_multiplex.c \ 842 $(TOP)\src\test_mutex.c \ 843 $(TOP)\src\test_onefile.c \ 844 $(TOP)\src\test_osinst.c \ 845 $(TOP)\src\test_pcache.c \ 846 $(TOP)\src\test_quota.c \ 847 $(TOP)\src\test_rtree.c \ 848 $(TOP)\src\test_schema.c \ 849 $(TOP)\src\test_server.c \ 850 $(TOP)\src\test_superlock.c \ 851 $(TOP)\src\test_syscall.c \ 852 $(TOP)\src\test_stat.c \ 853 $(TOP)\src\test_tclvar.c \ 854 $(TOP)\src\test_thread.c \ 855 $(TOP)\src\test_vfs.c \ 856 $(TOP)\src\test_wsd.c \ 857 $(TOP)\ext\fts3\fts3_term.c \ 858 $(TOP)\ext\fts3\fts3_test.c 859 860# Statically linked extensions 861# 862TESTEXT = \ 863 $(TOP)\ext\misc\amatch.c \ 864 $(TOP)\ext\misc\closure.c \ 865 $(TOP)\ext\misc\fileio.c \ 866 $(TOP)\ext\misc\fuzzer.c \ 867 $(TOP)\ext\misc\ieee754.c \ 868 $(TOP)\ext\misc\nextchar.c \ 869 $(TOP)\ext\misc\percentile.c \ 870 $(TOP)\ext\misc\regexp.c \ 871 $(TOP)\ext\misc\spellfix.c \ 872 $(TOP)\ext\misc\totype.c \ 873 $(TOP)\ext\misc\wholenumber.c 874 875 876# Source code to the library files needed by the test fixture 877# 878TESTSRC2 = \ 879 $(TOP)\src\attach.c \ 880 $(TOP)\src\backup.c \ 881 $(TOP)\src\bitvec.c \ 882 $(TOP)\src\btree.c \ 883 $(TOP)\src\build.c \ 884 $(TOP)\src\ctime.c \ 885 $(TOP)\src\date.c \ 886 $(TOP)\src\expr.c \ 887 $(TOP)\src\func.c \ 888 $(TOP)\src\insert.c \ 889 $(TOP)\src\wal.c \ 890 $(TOP)\src\main.c \ 891 $(TOP)\src\mem5.c \ 892 $(TOP)\src\os.c \ 893 $(TOP)\src\os_unix.c \ 894 $(TOP)\src\os_win.c \ 895 $(TOP)\src\pager.c \ 896 $(TOP)\src\pragma.c \ 897 $(TOP)\src\prepare.c \ 898 $(TOP)\src\printf.c \ 899 $(TOP)\src\random.c \ 900 $(TOP)\src\pcache.c \ 901 $(TOP)\src\pcache1.c \ 902 $(TOP)\src\select.c \ 903 $(TOP)\src\tokenize.c \ 904 $(TOP)\src\utf.c \ 905 $(TOP)\src\util.c \ 906 $(TOP)\src\vdbeapi.c \ 907 $(TOP)\src\vdbeaux.c \ 908 $(TOP)\src\vdbe.c \ 909 $(TOP)\src\vdbemem.c \ 910 $(TOP)\src\vdbesort.c \ 911 $(TOP)\src\vdbetrace.c \ 912 $(TOP)\src\where.c \ 913 parse.c \ 914 $(TOP)\ext\fts3\fts3.c \ 915 $(TOP)\ext\fts3\fts3_aux.c \ 916 $(TOP)\ext\fts3\fts3_expr.c \ 917 $(TOP)\ext\fts3\fts3_tokenizer.c \ 918 $(TOP)\ext\fts3\fts3_tokenize_vtab.c \ 919 $(TOP)\ext\fts3\fts3_unicode.c \ 920 $(TOP)\ext\fts3\fts3_unicode2.c \ 921 $(TOP)\ext\fts3\fts3_write.c \ 922 $(TOP)\ext\async\sqlite3async.c 923 924# Header files used by all library source files. 925# 926HDR = \ 927 $(TOP)\src\btree.h \ 928 $(TOP)\src\btreeInt.h \ 929 $(TOP)\src\hash.h \ 930 $(TOP)\src\hwtime.h \ 931 keywordhash.h \ 932 $(TOP)\src\mutex.h \ 933 opcodes.h \ 934 $(TOP)\src\os.h \ 935 $(TOP)\src\os_common.h \ 936 $(TOP)\src\os_setup.h \ 937 $(TOP)\src\os_win.h \ 938 $(TOP)\src\pager.h \ 939 $(TOP)\src\pcache.h \ 940 parse.h \ 941 sqlite3.h \ 942 $(TOP)\src\sqlite3ext.h \ 943 $(TOP)\src\sqliteInt.h \ 944 $(TOP)\src\sqliteLimit.h \ 945 $(TOP)\src\vdbe.h \ 946 $(TOP)\src\vdbeInt.h \ 947 $(TOP)\src\whereInt.h 948 949# Header files used by extensions 950# 951EXTHDR = $(EXTHDR) \ 952 $(TOP)\ext\fts1\fts1.h \ 953 $(TOP)\ext\fts1\fts1_hash.h \ 954 $(TOP)\ext\fts1\fts1_tokenizer.h 955EXTHDR = $(EXTHDR) \ 956 $(TOP)\ext\fts2\fts2.h \ 957 $(TOP)\ext\fts2\fts2_hash.h \ 958 $(TOP)\ext\fts2\fts2_tokenizer.h 959EXTHDR = $(EXTHDR) \ 960 $(TOP)\ext\fts3\fts3.h \ 961 $(TOP)\ext\fts3\fts3Int.h \ 962 $(TOP)\ext\fts3\fts3_hash.h \ 963 $(TOP)\ext\fts3\fts3_tokenizer.h 964EXTHDR = $(EXTHDR) \ 965 $(TOP)\ext\rtree\rtree.h 966EXTHDR = $(EXTHDR) \ 967 $(TOP)\ext\icu\sqliteicu.h 968EXTHDR = $(EXTHDR) \ 969 $(TOP)\ext\rtree\sqlite3rtree.h 970 971# This is the default Makefile target. The objects listed here 972# are what get build when you type just "make" with no arguments. 973# 974all: dll libsqlite3.lib sqlite3.exe libtclsqlite3.lib 975 976libsqlite3.lib: $(LIBOBJ) 977 $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS) 978 979libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib 980 $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCL:tcl=tclstub) $(TLIBS) 981 982sqlite3.exe: $(TOP)\src\shell.c libsqlite3.lib $(LIBRESOBJS) sqlite3.h 983 $(LTLINK) $(READLINE_FLAGS) \ 984 $(TOP)\src\shell.c \ 985 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS) 986 987mptester.exe: $(TOP)\mptest\mptest.c libsqlite3.lib $(LIBRESOBJS) sqlite3.h 988 $(LTLINK) $(TOP)\mptest\mptest.c \ 989 /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS) 990 991# This target creates a directory named "tsrc" and fills it with 992# copies of all of the C source code and header files needed to 993# build on the target system. Some of the C source code and header 994# files are automatically generated. This target takes care of 995# all that automatic generation. 996# 997.target_source: $(SRC) $(TOP)\tool\vdbe-compress.tcl 998 -rmdir /S/Q tsrc 999 -mkdir tsrc 1000 for %i in ($(SRC)) do copy /Y %i tsrc 1001 del /Q tsrc\sqlite.h.in tsrc\parse.y 1002 $(TCLSH_CMD) $(TOP)\tool\vdbe-compress.tcl $(OPTS) < tsrc\vdbe.c > vdbe.new 1003 move vdbe.new tsrc\vdbe.c 1004 echo > .target_source 1005 1006sqlite3.c: .target_source $(TOP)\tool\mksqlite3c.tcl 1007 $(TCLSH_CMD) $(TOP)\tool\mksqlite3c.tcl $(MKSQLITE3C_ARGS) 1008 copy tsrc\shell.c . 1009 copy tsrc\sqlite3ext.h . 1010 1011sqlite3-all.c: sqlite3.c $(TOP)\tool\split-sqlite3c.tcl 1012 $(TCLSH_CMD) $(TOP)\tool\split-sqlite3c.tcl 1013 1014# Set the source code file to be used by executables and libraries when 1015# they need the amalgamation. 1016# 1017!IF $(SPLIT_AMALGAMATION)!=0 1018SQLITE3C = sqlite3-all.c 1019!ELSE 1020SQLITE3C = sqlite3.c 1021!ENDIF 1022 1023# Rule to build the amalgamation 1024# 1025sqlite3.lo: $(SQLITE3C) 1026 $(LTCOMPILE) -c $(SQLITE3C) 1027 1028# Rules to build the LEMON compiler generator 1029# 1030lempar.c: $(TOP)\src\lempar.c 1031 copy $(TOP)\src\lempar.c . 1032 1033lemon.exe: $(TOP)\tool\lemon.c lempar.c 1034 $(BCC) -Daccess=_access -Fe$@ $(TOP)\tool\lemon.c /link $(NLTLINKOPTS) $(NLTLIBPATHS) 1035 1036# Rules to build individual *.lo files from generated *.c files. This 1037# applies to: 1038# 1039# parse.lo 1040# opcodes.lo 1041# 1042parse.lo: parse.c $(HDR) 1043 $(LTCOMPILE) -c parse.c 1044 1045opcodes.lo: opcodes.c 1046 $(LTCOMPILE) -c opcodes.c 1047 1048# Rule to build the Win32 resources object file. 1049# 1050!IF $(USE_RC)!=0 1051$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(HDR) 1052 echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h 1053 for /F %%V in ('type "$(TOP)\VERSION"') do ( \ 1054 echo #define SQLITE_RESOURCE_VERSION %%V \ 1055 | $(NAWK) "/.*/ { gsub(/[.]/,\",\");print }" >> sqlite3rc.h \ 1056 ) 1057 echo #endif >> sqlite3rc.h 1058 $(LTRCOMPILE) -fo $(LIBRESOBJS) $(TOP)\src\sqlite3.rc 1059!ENDIF 1060 1061# Rules to build individual *.lo files from files in the src directory. 1062# 1063alter.lo: $(TOP)\src\alter.c $(HDR) 1064 $(LTCOMPILE) -c $(TOP)\src\alter.c 1065 1066analyze.lo: $(TOP)\src\analyze.c $(HDR) 1067 $(LTCOMPILE) -c $(TOP)\src\analyze.c 1068 1069attach.lo: $(TOP)\src\attach.c $(HDR) 1070 $(LTCOMPILE) -c $(TOP)\src\attach.c 1071 1072auth.lo: $(TOP)\src\auth.c $(HDR) 1073 $(LTCOMPILE) -c $(TOP)\src\auth.c 1074 1075backup.lo: $(TOP)\src\backup.c $(HDR) 1076 $(LTCOMPILE) -c $(TOP)\src\backup.c 1077 1078bitvec.lo: $(TOP)\src\bitvec.c $(HDR) 1079 $(LTCOMPILE) -c $(TOP)\src\bitvec.c 1080 1081btmutex.lo: $(TOP)\src\btmutex.c $(HDR) 1082 $(LTCOMPILE) -c $(TOP)\src\btmutex.c 1083 1084btree.lo: $(TOP)\src\btree.c $(HDR) $(TOP)\src\pager.h 1085 $(LTCOMPILE) -c $(TOP)\src\btree.c 1086 1087build.lo: $(TOP)\src\build.c $(HDR) 1088 $(LTCOMPILE) -c $(TOP)\src\build.c 1089 1090callback.lo: $(TOP)\src\callback.c $(HDR) 1091 $(LTCOMPILE) -c $(TOP)\src\callback.c 1092 1093complete.lo: $(TOP)\src\complete.c $(HDR) 1094 $(LTCOMPILE) -c $(TOP)\src\complete.c 1095 1096ctime.lo: $(TOP)\src\ctime.c $(HDR) 1097 $(LTCOMPILE) -c $(TOP)\src\ctime.c 1098 1099date.lo: $(TOP)\src\date.c $(HDR) 1100 $(LTCOMPILE) -c $(TOP)\src\date.c 1101 1102delete.lo: $(TOP)\src\delete.c $(HDR) 1103 $(LTCOMPILE) -c $(TOP)\src\delete.c 1104 1105expr.lo: $(TOP)\src\expr.c $(HDR) 1106 $(LTCOMPILE) -c $(TOP)\src\expr.c 1107 1108fault.lo: $(TOP)\src\fault.c $(HDR) 1109 $(LTCOMPILE) -c $(TOP)\src\fault.c 1110 1111fkey.lo: $(TOP)\src\fkey.c $(HDR) 1112 $(LTCOMPILE) -c $(TOP)\src\fkey.c 1113 1114func.lo: $(TOP)\src\func.c $(HDR) 1115 $(LTCOMPILE) -c $(TOP)\src\func.c 1116 1117global.lo: $(TOP)\src\global.c $(HDR) 1118 $(LTCOMPILE) -c $(TOP)\src\global.c 1119 1120hash.lo: $(TOP)\src\hash.c $(HDR) 1121 $(LTCOMPILE) -c $(TOP)\src\hash.c 1122 1123insert.lo: $(TOP)\src\insert.c $(HDR) 1124 $(LTCOMPILE) -c $(TOP)\src\insert.c 1125 1126journal.lo: $(TOP)\src\journal.c $(HDR) 1127 $(LTCOMPILE) -c $(TOP)\src\journal.c 1128 1129legacy.lo: $(TOP)\src\legacy.c $(HDR) 1130 $(LTCOMPILE) -c $(TOP)\src\legacy.c 1131 1132loadext.lo: $(TOP)\src\loadext.c $(HDR) 1133 $(LTCOMPILE) -c $(TOP)\src\loadext.c 1134 1135main.lo: $(TOP)\src\main.c $(HDR) 1136 $(LTCOMPILE) -c $(TOP)\src\main.c 1137 1138malloc.lo: $(TOP)\src\malloc.c $(HDR) 1139 $(LTCOMPILE) -c $(TOP)\src\malloc.c 1140 1141mem0.lo: $(TOP)\src\mem0.c $(HDR) 1142 $(LTCOMPILE) -c $(TOP)\src\mem0.c 1143 1144mem1.lo: $(TOP)\src\mem1.c $(HDR) 1145 $(LTCOMPILE) -c $(TOP)\src\mem1.c 1146 1147mem2.lo: $(TOP)\src\mem2.c $(HDR) 1148 $(LTCOMPILE) -c $(TOP)\src\mem2.c 1149 1150mem3.lo: $(TOP)\src\mem3.c $(HDR) 1151 $(LTCOMPILE) -c $(TOP)\src\mem3.c 1152 1153mem5.lo: $(TOP)\src\mem5.c $(HDR) 1154 $(LTCOMPILE) -c $(TOP)\src\mem5.c 1155 1156memjournal.lo: $(TOP)\src\memjournal.c $(HDR) 1157 $(LTCOMPILE) -c $(TOP)\src\memjournal.c 1158 1159mutex.lo: $(TOP)\src\mutex.c $(HDR) 1160 $(LTCOMPILE) -c $(TOP)\src\mutex.c 1161 1162mutex_noop.lo: $(TOP)\src\mutex_noop.c $(HDR) 1163 $(LTCOMPILE) -c $(TOP)\src\mutex_noop.c 1164 1165mutex_unix.lo: $(TOP)\src\mutex_unix.c $(HDR) 1166 $(LTCOMPILE) -c $(TOP)\src\mutex_unix.c 1167 1168mutex_w32.lo: $(TOP)\src\mutex_w32.c $(HDR) 1169 $(LTCOMPILE) -c $(TOP)\src\mutex_w32.c 1170 1171notify.lo: $(TOP)\src\notify.c $(HDR) 1172 $(LTCOMPILE) -c $(TOP)\src\notify.c 1173 1174pager.lo: $(TOP)\src\pager.c $(HDR) $(TOP)\src\pager.h 1175 $(LTCOMPILE) -c $(TOP)\src\pager.c 1176 1177pcache.lo: $(TOP)\src\pcache.c $(HDR) $(TOP)\src\pcache.h 1178 $(LTCOMPILE) -c $(TOP)\src\pcache.c 1179 1180pcache1.lo: $(TOP)\src\pcache1.c $(HDR) $(TOP)\src\pcache.h 1181 $(LTCOMPILE) -c $(TOP)\src\pcache1.c 1182 1183os.lo: $(TOP)\src\os.c $(HDR) 1184 $(LTCOMPILE) -c $(TOP)\src\os.c 1185 1186os_unix.lo: $(TOP)\src\os_unix.c $(HDR) 1187 $(LTCOMPILE) -c $(TOP)\src\os_unix.c 1188 1189os_win.lo: $(TOP)\src\os_win.c $(HDR) 1190 $(LTCOMPILE) -c $(TOP)\src\os_win.c 1191 1192pragma.lo: $(TOP)\src\pragma.c $(HDR) 1193 $(LTCOMPILE) -c $(TOP)\src\pragma.c 1194 1195prepare.lo: $(TOP)\src\prepare.c $(HDR) 1196 $(LTCOMPILE) -c $(TOP)\src\prepare.c 1197 1198printf.lo: $(TOP)\src\printf.c $(HDR) 1199 $(LTCOMPILE) -c $(TOP)\src\printf.c 1200 1201random.lo: $(TOP)\src\random.c $(HDR) 1202 $(LTCOMPILE) -c $(TOP)\src\random.c 1203 1204resolve.lo: $(TOP)\src\resolve.c $(HDR) 1205 $(LTCOMPILE) -c $(TOP)\src\resolve.c 1206 1207rowset.lo: $(TOP)\src\rowset.c $(HDR) 1208 $(LTCOMPILE) -c $(TOP)\src\rowset.c 1209 1210select.lo: $(TOP)\src\select.c $(HDR) 1211 $(LTCOMPILE) -c $(TOP)\src\select.c 1212 1213status.lo: $(TOP)\src\status.c $(HDR) 1214 $(LTCOMPILE) -c $(TOP)\src\status.c 1215 1216table.lo: $(TOP)\src\table.c $(HDR) 1217 $(LTCOMPILE) -c $(TOP)\src\table.c 1218 1219tokenize.lo: $(TOP)\src\tokenize.c keywordhash.h $(HDR) 1220 $(LTCOMPILE) -c $(TOP)\src\tokenize.c 1221 1222trigger.lo: $(TOP)\src\trigger.c $(HDR) 1223 $(LTCOMPILE) -c $(TOP)\src\trigger.c 1224 1225update.lo: $(TOP)\src\update.c $(HDR) 1226 $(LTCOMPILE) -c $(TOP)\src\update.c 1227 1228utf.lo: $(TOP)\src\utf.c $(HDR) 1229 $(LTCOMPILE) -c $(TOP)\src\utf.c 1230 1231util.lo: $(TOP)\src\util.c $(HDR) 1232 $(LTCOMPILE) -c $(TOP)\src\util.c 1233 1234vacuum.lo: $(TOP)\src\vacuum.c $(HDR) 1235 $(LTCOMPILE) -c $(TOP)\src\vacuum.c 1236 1237vdbe.lo: $(TOP)\src\vdbe.c $(HDR) 1238 $(LTCOMPILE) -c $(TOP)\src\vdbe.c 1239 1240vdbeapi.lo: $(TOP)\src\vdbeapi.c $(HDR) 1241 $(LTCOMPILE) -c $(TOP)\src\vdbeapi.c 1242 1243vdbeaux.lo: $(TOP)\src\vdbeaux.c $(HDR) 1244 $(LTCOMPILE) -c $(TOP)\src\vdbeaux.c 1245 1246vdbeblob.lo: $(TOP)\src\vdbeblob.c $(HDR) 1247 $(LTCOMPILE) -c $(TOP)\src\vdbeblob.c 1248 1249vdbemem.lo: $(TOP)\src\vdbemem.c $(HDR) 1250 $(LTCOMPILE) -c $(TOP)\src\vdbemem.c 1251 1252vdbesort.lo: $(TOP)\src\vdbesort.c $(HDR) 1253 $(LTCOMPILE) -c $(TOP)\src\vdbesort.c 1254 1255vdbetrace.lo: $(TOP)\src\vdbetrace.c $(HDR) 1256 $(LTCOMPILE) -c $(TOP)\src\vdbetrace.c 1257 1258vtab.lo: $(TOP)\src\vtab.c $(HDR) 1259 $(LTCOMPILE) -c $(TOP)\src\vtab.c 1260 1261wal.lo: $(TOP)\src\wal.c $(HDR) 1262 $(LTCOMPILE) -c $(TOP)\src\wal.c 1263 1264walker.lo: $(TOP)\src\walker.c $(HDR) 1265 $(LTCOMPILE) -c $(TOP)\src\walker.c 1266 1267where.lo: $(TOP)\src\where.c $(HDR) 1268 $(LTCOMPILE) -c $(TOP)\src\where.c 1269 1270tclsqlite.lo: $(TOP)\src\tclsqlite.c $(HDR) 1271 $(LTCOMPILE) -DUSE_TCL_STUBS=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 1272 1273tclsqlite-shell.lo: $(TOP)\src\tclsqlite.c $(HDR) 1274 $(LTCOMPILE) -DTCLSH=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 1275 1276tclsqlite3.exe: tclsqlite-shell.lo libsqlite3.lib $(LIBRESOBJS) 1277 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /OUT:$@ libsqlite3.lib tclsqlite-shell.lo $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1278 1279# Rules to build opcodes.c and opcodes.h 1280# 1281opcodes.c: opcodes.h $(TOP)\mkopcodec.awk 1282 $(NAWK) -f $(TOP)\mkopcodec.awk opcodes.h > opcodes.c 1283 1284opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\mkopcodeh.awk 1285 type parse.h $(TOP)\src\vdbe.c | $(NAWK) -f $(TOP)\mkopcodeh.awk > opcodes.h 1286 1287# Rules to build parse.c and parse.h - the outputs of lemon. 1288# 1289parse.h: parse.c 1290 1291parse.c: $(TOP)\src\parse.y lemon.exe $(TOP)\addopcodes.awk 1292 del /Q parse.y parse.h parse.h.temp 1293 copy $(TOP)\src\parse.y . 1294 .\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) parse.y 1295 move parse.h parse.h.temp 1296 $(NAWK) -f $(TOP)\addopcodes.awk parse.h.temp > parse.h 1297 1298sqlite3.h: $(TOP)\src\sqlite.h.in $(TOP)\manifest.uuid $(TOP)\VERSION 1299 $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP:\=/) > sqlite3.h 1300 1301mkkeywordhash.exe: $(TOP)\tool\mkkeywordhash.c 1302 $(BCC) -Fe$@ $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) $(TOP)\tool\mkkeywordhash.c /link $(NLTLINKOPTS) $(NLTLIBPATHS) 1303 1304keywordhash.h: $(TOP)\tool\mkkeywordhash.c mkkeywordhash.exe 1305 .\mkkeywordhash.exe > keywordhash.h 1306 1307 1308 1309# Rules to build the extension objects. 1310# 1311icu.lo: $(TOP)\ext\icu\icu.c $(HDR) $(EXTHDR) 1312 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\icu\icu.c 1313 1314fts2.lo: $(TOP)\ext\fts2\fts2.c $(HDR) $(EXTHDR) 1315 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2.c 1316 1317fts2_hash.lo: $(TOP)\ext\fts2\fts2_hash.c $(HDR) $(EXTHDR) 1318 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_hash.c 1319 1320fts2_icu.lo: $(TOP)\ext\fts2\fts2_icu.c $(HDR) $(EXTHDR) 1321 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_icu.c 1322 1323fts2_porter.lo: $(TOP)\ext\fts2\fts2_porter.c $(HDR) $(EXTHDR) 1324 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_porter.c 1325 1326fts2_tokenizer.lo: $(TOP)\ext\fts2\fts2_tokenizer.c $(HDR) $(EXTHDR) 1327 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer.c 1328 1329fts2_tokenizer1.lo: $(TOP)\ext\fts2\fts2_tokenizer1.c $(HDR) $(EXTHDR) 1330 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer1.c 1331 1332fts3.lo: $(TOP)\ext\fts3\fts3.c $(HDR) $(EXTHDR) 1333 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3.c 1334 1335fts3_aux.lo: $(TOP)\ext\fts3\fts3_aux.c $(HDR) $(EXTHDR) 1336 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_aux.c 1337 1338fts3_expr.lo: $(TOP)\ext\fts3\fts3_expr.c $(HDR) $(EXTHDR) 1339 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_expr.c 1340 1341fts3_hash.lo: $(TOP)\ext\fts3\fts3_hash.c $(HDR) $(EXTHDR) 1342 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_hash.c 1343 1344fts3_icu.lo: $(TOP)\ext\fts3\fts3_icu.c $(HDR) $(EXTHDR) 1345 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_icu.c 1346 1347fts3_snippet.lo: $(TOP)\ext\fts3\fts3_snippet.c $(HDR) $(EXTHDR) 1348 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_snippet.c 1349 1350fts3_porter.lo: $(TOP)\ext\fts3\fts3_porter.c $(HDR) $(EXTHDR) 1351 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_porter.c 1352 1353fts3_tokenizer.lo: $(TOP)\ext\fts3\fts3_tokenizer.c $(HDR) $(EXTHDR) 1354 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer.c 1355 1356fts3_tokenizer1.lo: $(TOP)\ext\fts3\fts3_tokenizer1.c $(HDR) $(EXTHDR) 1357 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer1.c 1358 1359fts3_tokenize_vtab.lo: $(TOP)\ext\fts3\fts3_tokenize_vtab.c $(HDR) $(EXTHDR) 1360 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenize_vtab.c 1361 1362fts3_unicode.lo: $(TOP)\ext\fts3\fts3_unicode.c $(HDR) $(EXTHDR) 1363 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode.c 1364 1365fts3_unicode2.lo: $(TOP)\ext\fts3\fts3_unicode2.c $(HDR) $(EXTHDR) 1366 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode2.c 1367 1368fts3_write.lo: $(TOP)\ext\fts3\fts3_write.c $(HDR) $(EXTHDR) 1369 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_write.c 1370 1371rtree.lo: $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR) 1372 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c 1373 1374 1375# Rules to build the 'testfixture' application. 1376# 1377# If using the amalgamation, use sqlite3.c directly to build the test 1378# fixture. Otherwise link against libsqlite3.lib. (This distinction is 1379# necessary because the test fixture requires non-API symbols which are 1380# hidden when the library is built via the amalgamation). 1381# 1382TESTFIXTURE_FLAGS = -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 1383TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS) -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" -DSQLITE_CORE 1384 1385TESTFIXTURE_SRC0 = $(TESTEXT) $(TESTSRC2) libsqlite3.lib 1386TESTFIXTURE_SRC1 = $(TESTEXT) $(SQLITE3C) 1387!IF $(USE_AMALGAMATION)==0 1388TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC0) 1389!ELSE 1390TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC1) 1391!ENDIF 1392 1393testfixture.exe: $(TESTFIXTURE_SRC) $(LIBRESOBJS) $(HDR) 1394 $(LTLINK) -DSQLITE_NO_SYNC=1 $(TESTFIXTURE_FLAGS) \ 1395 -DBUILD_sqlite -I$(TCLINCDIR) \ 1396 $(TESTFIXTURE_SRC) \ 1397 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1398 1399extensiontest: testfixture.exe testloadext.dll 1400 .\testfixture.exe $(TOP)\test\loadext.test 1401 1402fulltest: testfixture.exe sqlite3.exe 1403 .\testfixture.exe $(TOP)\test\all.test 1404 1405soaktest: testfixture.exe sqlite3.exe 1406 .\testfixture.exe $(TOP)\test\all.test -soak=1 1407 1408fulltestonly: testfixture.exe sqlite3.exe 1409 .\testfixture.exe $(TOP)\test\full.test 1410 1411queryplantest: testfixture.exe sqlite3.exe 1412 .\testfixture.exe $(TOP)\test\permutations.test queryplanner 1413 1414test: testfixture.exe sqlite3.exe 1415 .\testfixture.exe $(TOP)\test\veryquick.test 1416 1417sqlite3_analyzer.c: $(SQLITE3C) $(TOP)\src\test_stat.c $(TOP)\src\tclsqlite.c $(TOP)\tool\spaceanal.tcl 1418 copy $(SQLITE3C) + $(TOP)\src\test_stat.c + $(TOP)\src\tclsqlite.c $@ 1419 echo static const char *tclsh_main_loop(void){ >> $@ 1420 echo static const char *zMainloop = >> $@ 1421 $(NAWK) -f $(TOP)\tool\tostr.awk $(TOP)\tool\spaceanal.tcl >> $@ 1422 echo ; return zMainloop; } >> $@ 1423 1424sqlite3_analyzer.exe: sqlite3_analyzer.c $(LIBRESOBJS) 1425 $(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \ 1426 /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1427 1428testloadext.lo: $(TOP)\src\test_loadext.c 1429 $(LTCOMPILE) -c $(TOP)\src\test_loadext.c 1430 1431testloadext.dll: testloadext.lo 1432 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /OUT:$@ testloadext.lo 1433 1434showdb.exe: $(TOP)\tool\showdb.c $(SQLITE3C) 1435 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1436 $(TOP)\tool\showdb.c $(SQLITE3C) 1437 1438showstat4.exe: $(TOP)\tool\showstat4.c $(SQLITE3C) 1439 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1440 $(TOP)\tool\showstat4.c $(SQLITE3C) 1441 1442showjournal.exe: $(TOP)\tool\showjournal.c $(SQLITE3C) 1443 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1444 $(TOP)\tool\showjournal.c $(SQLITE3C) 1445 1446showwal.exe: $(TOP)\tool\showwal.c $(SQLITE3C) 1447 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1448 $(TOP)\tool\showwal.c $(SQLITE3C) 1449 1450fts3view.exe: $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) 1451 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1452 $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) 1453 1454rollback-test.exe: $(TOP)\tool\rollback-test.c $(SQLITE3C) 1455 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1456 $(TOP)\tool\rollback-test.c $(SQLITE3C) 1457 1458LogEst.exe: $(TOP)\tool\logest.c sqlite3.h 1459 $(LTLINK) -Fe$@ $(TOP)\tool\LogEst.c 1460 1461wordcount.exe: $(TOP)\test\wordcount.c $(SQLITE3C) 1462 $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1463 $(TOP)\test\wordcount.c $(SQLITE3C) 1464 1465speedtest1.exe: $(TOP)\test\speedtest1.c $(SQLITE3C) 1466 $(LTLINK) -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1467 $(TOP)\test\speedtest1.c $(SQLITE3C) 1468 1469clean: 1470 del /Q *.lo *.ilk *.lib *.obj *.pdb sqlite3.exe libsqlite3.lib 1471 del /Q *.cod *.da *.bb *.bbg gmon.out 1472 del /Q sqlite3.h opcodes.c opcodes.h 1473 del /Q lemon.* lempar.c parse.* 1474 del /Q mkkeywordhash.* keywordhash.h 1475 del /Q notasharedlib.* 1476 -rmdir /Q/S .deps 1477 -rmdir /Q/S .libs 1478 -rmdir /Q/S quota2a 1479 -rmdir /Q/S quota2b 1480 -rmdir /Q/S quota2c 1481 -rmdir /Q/S tsrc 1482 del /Q .target_source 1483 del /Q tclsqlite3.exe tclsqlite3.exp 1484 del /Q testloadext.dll testloadext.exp 1485 del /Q testfixture.exe testfixture.exp test.db 1486 del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe 1487 del /Q showjournal.exe showstat4.exe showwal.exe speedtest1.exe 1488 del /Q wordcount.exe 1489 del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def 1490 del /Q sqlite3.c sqlite3-*.c 1491 del /Q sqlite3rc.h 1492 del /Q shell.c sqlite3ext.h 1493 del /Q sqlite3_analyzer.exe sqlite3_analyzer.exp sqlite3_analyzer.c 1494 del /Q sqlite-*-output.vsix 1495 del /Q mptester.exe 1496 1497# Dynamic link library section. 1498# 1499dll: sqlite3.dll 1500 1501sqlite3.def: libsqlite3.lib 1502 echo EXPORTS > sqlite3.def 1503 dumpbin /all libsqlite3.lib \ 1504 | $(NAWK) "/ 1 _?sqlite3_/ { sub(/^.* _?/,\"\");print }" \ 1505 | sort >> sqlite3.def 1506 1507sqlite3.dll: $(LIBOBJ) $(LIBRESOBJS) sqlite3.def 1508 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:sqlite3.def /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1509