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 enable full warnings (-W4, etc) when compiling. 20# 21!IFNDEF USE_FULLWARN 22USE_FULLWARN = 0 23!ENDIF 24 25# Set this non-0 to use "stdcall" calling convention for the core library 26# and shell executable. 27# 28!IFNDEF USE_STDCALL 29USE_STDCALL = 0 30!ENDIF 31 32# Set this non-0 to have the shell executable link against the core dynamic 33# link library. 34# 35!IFNDEF DYNAMIC_SHELL 36DYNAMIC_SHELL = 0 37!ENDIF 38 39# Set this non-0 to enable extra code that attempts to detect misuse of the 40# SQLite API. 41# 42!IFNDEF API_ARMOR 43API_ARMOR = 0 44!ENDIF 45 46# If necessary, create a list of harmless compiler warnings to disable when 47# compiling the various tools. For the SQLite source code itself, warnings, 48# if any, will be disabled from within it. 49# 50!IFNDEF NO_WARN 51!IF $(USE_FULLWARN)!=0 52NO_WARN = -wd4054 -wd4055 -wd4100 -wd4127 -wd4130 -wd4152 -wd4189 -wd4206 53NO_WARN = $(NO_WARN) -wd4210 -wd4232 -wd4305 -wd4306 -wd4702 -wd4706 54!ENDIF 55!ENDIF 56 57# Set this non-0 to use the library paths and other options necessary for 58# Windows Phone 8.1. 59# 60!IFNDEF USE_WP81_OPTS 61USE_WP81_OPTS = 0 62!ENDIF 63 64# Set this non-0 to split the SQLite amalgamation file into chunks to 65# be used for debugging with Visual Studio. 66# 67!IFNDEF SPLIT_AMALGAMATION 68SPLIT_AMALGAMATION = 0 69!ENDIF 70 71# Set this non-0 to use the International Components for Unicode (ICU). 72# 73!IFNDEF USE_ICU 74USE_ICU = 0 75!ENDIF 76 77# Set this non-0 to dynamically link to the MSVC runtime library. 78# 79!IFNDEF USE_CRT_DLL 80USE_CRT_DLL = 0 81!ENDIF 82 83# Set this non-0 to link to the RPCRT4 library. 84# 85!IFNDEF USE_RPCRT4_LIB 86USE_RPCRT4_LIB = 0 87!ENDIF 88 89# Set this non-0 to generate assembly code listings for the source code 90# files. 91# 92!IFNDEF USE_LISTINGS 93USE_LISTINGS = 0 94!ENDIF 95 96# Set this non-0 to attempt setting the native compiler automatically 97# for cross-compiling the command line tools needed during the compilation 98# process. 99# 100!IFNDEF XCOMPILE 101XCOMPILE = 0 102!ENDIF 103 104# Set this non-0 to use the native libraries paths for cross-compiling 105# the command line tools needed during the compilation process. 106# 107!IFNDEF USE_NATIVE_LIBPATHS 108USE_NATIVE_LIBPATHS = 0 109!ENDIF 110 111# Set this 0 to skip the compiling and embedding of version resources. 112# 113!IFNDEF USE_RC 114USE_RC = 1 115!ENDIF 116 117# Set this non-0 to compile binaries suitable for the WinRT environment. 118# This setting does not apply to any binaries that require Tcl to operate 119# properly (i.e. the text fixture, etc). 120# 121!IFNDEF FOR_WINRT 122FOR_WINRT = 0 123!ENDIF 124 125# Set this non-0 to compile binaries suitable for the UAP environment. 126# This setting does not apply to any binaries that require Tcl to operate 127# properly (i.e. the text fixture, etc). 128# 129!IFNDEF FOR_UAP 130FOR_UAP = 0 131!ENDIF 132 133# Set this non-0 to skip attempting to look for and/or link with the Tcl 134# runtime library. 135# 136!IFNDEF NO_TCL 137NO_TCL = 0 138!ENDIF 139 140# Set this to non-0 to create and use PDBs. 141# 142!IFNDEF SYMBOLS 143SYMBOLS = 1 144!ENDIF 145 146# Set this to non-0 to use the SQLite debugging heap subsystem. 147# 148!IFNDEF MEMDEBUG 149MEMDEBUG = 0 150!ENDIF 151 152# Set this to non-0 to use the Win32 native heap subsystem. 153# 154!IFNDEF WIN32HEAP 155WIN32HEAP = 0 156!ENDIF 157 158# Set this to non-0 to enable OSTRACE() macros, which can be useful when 159# debugging. 160# 161!IFNDEF OSTRACE 162OSTRACE = 0 163!ENDIF 164 165# Set this to one of the following values to enable various debugging 166# features. Each level includes the debugging options from the previous 167# levels. Currently, the recognized values for DEBUG are: 168# 169# 0 == NDEBUG: Disables assert() and other runtime diagnostics. 170# 1 == SQLITE_ENABLE_API_ARMOR: extra attempts to detect misuse of the API. 171# 2 == Disables NDEBUG and all optimizations and then enables PDBs. 172# 3 == SQLITE_DEBUG: Enables various diagnostics messages and code. 173# 4 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call. 174# 5 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros. 175# 6 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros. 176# 177!IFNDEF DEBUG 178DEBUG = 0 179!ENDIF 180 181# Enable use of available compiler optimizations? Normally, this should be 182# non-zero. Setting this to zero, thus disabling all compiler optimizations, 183# can be useful for testing. 184# 185!IFNDEF OPTIMIZATIONS 186OPTIMIZATIONS = 2 187!ENDIF 188 189# These are the "standard" SQLite compilation options used when compiling for 190# the Windows platform. 191# 192!IFNDEF OPT_FEATURE_FLAGS 193OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 194OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1 195OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 196!ENDIF 197 198############################################################################### 199############################### END OF OPTIONS ################################ 200############################################################################### 201 202# This assumes that MSVC is always installed in 32-bit Program Files directory 203# and sets the variable for use in locating other 32-bit installs accordingly. 204# 205PROGRAMFILES_X86 = $(VCINSTALLDIR)\..\.. 206PROGRAMFILES_X86 = $(PROGRAMFILES_X86:\\=\) 207 208# Check for the predefined command macro CC. This should point to the compiler 209# binary for the target platform. If it is not defined, simply define it to 210# the legacy default value 'cl.exe'. 211# 212!IFNDEF CC 213CC = cl.exe 214!ENDIF 215 216# Check for the command macro LD. This should point to the linker binary for 217# the target platform. If it is not defined, simply define it to the legacy 218# default value 'link.exe'. 219# 220!IFNDEF LD 221LD = link.exe 222!ENDIF 223 224# Check for the predefined command macro RC. This should point to the resource 225# compiler binary for the target platform. If it is not defined, simply define 226# it to the legacy default value 'rc.exe'. 227# 228!IFNDEF RC 229RC = rc.exe 230!ENDIF 231 232# Check for the MSVC runtime library path macro. Othertise, this value will 233# default to the 'lib' directory underneath the MSVC installation directory. 234# 235!IFNDEF CRTLIBPATH 236CRTLIBPATH = $(VCINSTALLDIR)\lib 237!ENDIF 238 239CRTLIBPATH = $(CRTLIBPATH:\\=\) 240 241# Check for the command macro NCC. This should point to the compiler binary 242# for the platform the compilation process is taking place on. If it is not 243# defined, simply define it to have the same value as the CC macro. When 244# cross-compiling, it is suggested that this macro be modified via the command 245# line (since nmake itself does not provide a built-in method to guess it). 246# For example, to use the x86 compiler when cross-compiling for x64, a command 247# line similar to the following could be used (all on one line): 248# 249# nmake /f Makefile.msc sqlite3.dll 250# XCOMPILE=1 USE_NATIVE_LIBPATHS=1 251# 252# Alternatively, the full path and file name to the compiler binary for the 253# platform the compilation process is taking place may be specified (all on 254# one line): 255# 256# nmake /f Makefile.msc sqlite3.dll 257# "NCC=""%VCINSTALLDIR%\bin\cl.exe""" 258# USE_NATIVE_LIBPATHS=1 259# 260!IFDEF NCC 261NCC = $(NCC:\\=\) 262!ELSEIF $(XCOMPILE)!=0 263NCC = "$(VCINSTALLDIR)\bin\$(CC)" 264NCC = $(NCC:\\=\) 265!ELSE 266NCC = $(CC) 267!ENDIF 268 269# Check for the MSVC native runtime library path macro. Othertise, 270# this value will default to the 'lib' directory underneath the MSVC 271# installation directory. 272# 273!IFNDEF NCRTLIBPATH 274NCRTLIBPATH = $(VCINSTALLDIR)\lib 275!ENDIF 276 277NCRTLIBPATH = $(NCRTLIBPATH:\\=\) 278 279# Check for the Platform SDK library path macro. Othertise, this 280# value will default to the 'lib' directory underneath the Windows 281# SDK installation directory (the environment variable used appears 282# to be available when using Visual C++ 2008 or later via the 283# command line). 284# 285!IFNDEF NSDKLIBPATH 286NSDKLIBPATH = $(WINDOWSSDKDIR)\lib 287!ENDIF 288 289NSDKLIBPATH = $(NSDKLIBPATH:\\=\) 290 291# C compiler and options for use in building executables that 292# will run on the platform that is doing the build. 293# 294!IF $(USE_FULLWARN)!=0 295BCC = $(NCC) -nologo -W4 $(CCOPTS) $(BCCOPTS) 296!ELSE 297BCC = $(NCC) -nologo -W3 $(CCOPTS) $(BCCOPTS) 298!ENDIF 299 300# Check if assembly code listings should be generated for the source 301# code files to be compiled. 302# 303!IF $(USE_LISTINGS)!=0 304BCC = $(BCC) -FAcs 305!ENDIF 306 307# Check if the native library paths should be used when compiling 308# the command line tools used during the compilation process. If 309# so, set the necessary macro now. 310# 311!IF $(USE_NATIVE_LIBPATHS)!=0 312NLTLIBPATHS = "/LIBPATH:$(NCRTLIBPATH)" "/LIBPATH:$(NSDKLIBPATH)" 313 314!IFDEF NUCRTLIBPATH 315NUCRTLIBPATH = $(NUCRTLIBPATH:\\=\) 316NLTLIBPATHS = $(NLTLIBPATHS) "/LIBPATH:$(NUCRTLIBPATH)" 317!ENDIF 318!ENDIF 319 320# C compiler and options for use in building executables that 321# will run on the target platform. (BCC and TCC are usually the 322# same unless your are cross-compiling.) 323# 324!IF $(USE_FULLWARN)!=0 325TCC = $(CC) -nologo -W4 -DINCLUDE_MSVC_H=1 $(CCOPTS) $(TCCOPTS) 326!ELSE 327TCC = $(CC) -nologo -W3 $(CCOPTS) $(TCCOPTS) 328!ENDIF 329 330TCC = $(TCC) -DSQLITE_OS_WIN=1 -I. -I$(TOP) -I$(TOP)\src -fp:precise 331RCC = $(RC) -DSQLITE_OS_WIN=1 -I$(TOP) -I$(TOP)\src $(RCOPTS) $(RCCOPTS) 332 333# Check if we want to use the "stdcall" calling convention when compiling. 334# This is not supported by the compilers for non-x86 platforms. It should 335# also be noted here that building any target with these "stdcall" options 336# will most likely fail if the Tcl library is also required. This is due 337# to how the Tcl library functions are declared and exported (i.e. without 338# an explicit calling convention, which results in "cdecl"). 339# 340!IF $(USE_STDCALL)!=0 341!IF "$(PLATFORM)"=="x86" 342CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall 343SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall 344!ELSE 345!IFNDEF PLATFORM 346CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall 347SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall 348!ELSE 349CORE_CCONV_OPTS = 350SHELL_CCONV_OPTS = 351!ENDIF 352!ENDIF 353!ELSE 354CORE_CCONV_OPTS = 355SHELL_CCONV_OPTS = 356!ENDIF 357 358# These are additional compiler options used for the core library. 359# 360!IFNDEF CORE_COMPILE_OPTS 361!IF $(DYNAMIC_SHELL)!=0 362CORE_COMPILE_OPTS = $(CORE_CCONV_OPTS) -DSQLITE_API=__declspec(dllexport) 363!ELSE 364CORE_COMPILE_OPTS = $(CORE_CCONV_OPTS) 365!ENDIF 366!ENDIF 367 368# These are the additional targets that the core library should depend on 369# when linking. 370# 371!IFNDEF CORE_LINK_DEP 372!IF $(DYNAMIC_SHELL)!=0 373CORE_LINK_DEP = 374!ELSE 375CORE_LINK_DEP = sqlite3.def 376!ENDIF 377!ENDIF 378 379# These are additional linker options used for the core library. 380# 381!IFNDEF CORE_LINK_OPTS 382!IF $(DYNAMIC_SHELL)!=0 383CORE_LINK_OPTS = 384!ELSE 385CORE_LINK_OPTS = /DEF:sqlite3.def 386!ENDIF 387!ENDIF 388 389# These are additional compiler options used for the shell executable. 390# 391!IFNDEF SHELL_COMPILE_OPTS 392!IF $(DYNAMIC_SHELL)!=0 393SHELL_COMPILE_OPTS = -DSQLITE_SHELL_JSON1 $(SHELL_CCONV_OPTS) -DSQLITE_API=__declspec(dllimport) 394!ELSE 395SHELL_COMPILE_OPTS = -DSQLITE_SHELL_JSON1 $(SHELL_CCONV_OPTS) 396!ENDIF 397!ENDIF 398 399# This is the core library that the shell executable should depend on. 400# 401!IFNDEF SHELL_CORE_DEP 402!IF $(DYNAMIC_SHELL)!=0 403SHELL_CORE_DEP = sqlite3.dll 404!ELSE 405SHELL_CORE_DEP = libsqlite3.lib 406!ENDIF 407!ENDIF 408 409# This is the core library that the shell executable should link with. 410# 411!IFNDEF SHELL_CORE_LIB 412!IF $(DYNAMIC_SHELL)!=0 413SHELL_CORE_LIB = sqlite3.lib 414!ELSE 415SHELL_CORE_LIB = libsqlite3.lib 416!ENDIF 417!ENDIF 418 419# These are additional linker options used for the shell executable. 420# 421!IFNDEF SHELL_LINK_OPTS 422SHELL_LINK_OPTS = $(SHELL_CORE_LIB) 423!ENDIF 424 425# Check if assembly code listings should be generated for the source 426# code files to be compiled. 427# 428!IF $(USE_LISTINGS)!=0 429TCC = $(TCC) -FAcs 430!ENDIF 431 432# When compiling the library for use in the WinRT environment, 433# the following compile-time options must be used as well to 434# disable use of Win32 APIs that are not available and to enable 435# use of Win32 APIs that are specific to Windows 8 and/or WinRT. 436# 437!IF $(FOR_WINRT)!=0 438TCC = $(TCC) -DSQLITE_OS_WINRT=1 439RCC = $(RCC) -DSQLITE_OS_WINRT=1 440TCC = $(TCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP 441RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP 442!ENDIF 443 444# Also, we need to dynamically link to the correct MSVC runtime 445# when compiling for WinRT (e.g. debug or release) OR if the 446# USE_CRT_DLL option is set to force dynamically linking to the 447# MSVC runtime library. 448# 449!IF $(FOR_WINRT)!=0 || $(USE_CRT_DLL)!=0 450!IF $(DEBUG)>1 451TCC = $(TCC) -MDd 452BCC = $(BCC) -MDd 453!ELSE 454TCC = $(TCC) -MD 455BCC = $(BCC) -MD 456!ENDIF 457!ELSE 458!IF $(DEBUG)>1 459TCC = $(TCC) -MTd 460BCC = $(BCC) -MTd 461!ELSE 462TCC = $(TCC) -MT 463BCC = $(BCC) -MT 464!ENDIF 465!ENDIF 466 467# The mksqlite3c.tcl and mksqlite3h.tcl scripts will pull in 468# any extension header files by default. For non-amalgamation 469# builds, we need to make sure the compiler can find these. 470# 471!IF $(USE_AMALGAMATION)==0 472TCC = $(TCC) -I$(TOP)\ext\fts3 473RCC = $(RCC) -I$(TOP)\ext\fts3 474TCC = $(TCC) -I$(TOP)\ext\rtree 475RCC = $(RCC) -I$(TOP)\ext\rtree 476!ENDIF 477 478# The mksqlite3c.tcl script accepts some options on the command 479# line. When compiling with debugging enabled, some of these 480# options are necessary in order to allow debugging symbols to 481# work correctly with Visual Studio when using the amalgamation. 482# 483!IFNDEF MKSQLITE3C_ARGS 484!IF $(DEBUG)>1 485MKSQLITE3C_ARGS = --linemacros 486!ELSE 487MKSQLITE3C_ARGS = 488!ENDIF 489!ENDIF 490 491# Define -DNDEBUG to compile without debugging (i.e., for production usage) 492# Omitting the define will cause extra debugging code to be inserted and 493# includes extra comments when "EXPLAIN stmt" is used. 494# 495!IF $(DEBUG)==0 496TCC = $(TCC) -DNDEBUG 497BCC = $(BCC) -DNDEBUG 498RCC = $(RCC) -DNDEBUG 499!ENDIF 500 501!IF $(DEBUG)>0 || $(API_ARMOR)!=0 502TCC = $(TCC) -DSQLITE_ENABLE_API_ARMOR=1 503RCC = $(RCC) -DSQLITE_ENABLE_API_ARMOR=1 504!ENDIF 505 506!IF $(DEBUG)>2 507TCC = $(TCC) -DSQLITE_DEBUG=1 508RCC = $(RCC) -DSQLITE_DEBUG=1 509!ENDIF 510 511!IF $(DEBUG)>4 || $(OSTRACE)!=0 512TCC = $(TCC) -DSQLITE_FORCE_OS_TRACE=1 -DSQLITE_DEBUG_OS_TRACE=1 513RCC = $(RCC) -DSQLITE_FORCE_OS_TRACE=1 -DSQLITE_DEBUG_OS_TRACE=1 514!ENDIF 515 516!IF $(DEBUG)>5 517TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE=1 518RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE=1 519!ENDIF 520 521# Prevent warnings about "insecure" MSVC runtime library functions 522# being used. 523# 524TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 525BCC = $(BCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 526RCC = $(RCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 527 528# Prevent warnings about "deprecated" POSIX functions being used. 529# 530TCC = $(TCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 531BCC = $(BCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 532RCC = $(RCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 533 534# Use the SQLite debugging heap subsystem? 535# 536!IF $(MEMDEBUG)!=0 537TCC = $(TCC) -DSQLITE_MEMDEBUG=1 538RCC = $(RCC) -DSQLITE_MEMDEBUG=1 539 540# Use native Win32 heap subsystem instead of malloc/free? 541# 542!ELSEIF $(WIN32HEAP)!=0 543TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1 544RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1 545 546# Validate the heap on every call into the native Win32 heap subsystem? 547# 548!IF $(DEBUG)>3 549TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 550RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 551!ENDIF 552!ENDIF 553 554# The locations of the Tcl header and library files. Also, the library that 555# non-stubs enabled programs using Tcl must link against. These variables 556# (TCLINCDIR, TCLLIBDIR, and LIBTCL) may be overridden via the environment 557# prior to running nmake in order to match the actual installed location and 558# version on this machine. 559# 560!IFNDEF TCLINCDIR 561TCLINCDIR = c:\tcl\include 562!ENDIF 563 564!IFNDEF TCLLIBDIR 565TCLLIBDIR = c:\tcl\lib 566!ENDIF 567 568!IFNDEF LIBTCL 569LIBTCL = tcl85.lib 570!ENDIF 571 572!IFNDEF LIBTCLSTUB 573LIBTCLSTUB = tclstub85.lib 574!ENDIF 575 576!IFNDEF LIBTCLPATH 577LIBTCLPATH = c:\tcl\bin 578!ENDIF 579 580# The locations of the ICU header and library files. These variables 581# (ICUINCDIR, ICULIBDIR, and LIBICU) may be overridden via the environment 582# prior to running nmake in order to match the actual installed location on 583# this machine. 584# 585!IFNDEF ICUINCDIR 586ICUINCDIR = c:\icu\include 587!ENDIF 588 589!IFNDEF ICULIBDIR 590ICULIBDIR = c:\icu\lib 591!ENDIF 592 593!IFNDEF LIBICU 594LIBICU = icuuc.lib icuin.lib 595!ENDIF 596 597# This is the command to use for tclsh - normally just "tclsh", but we may 598# know the specific version we want to use. This variable (TCLSH_CMD) may be 599# overridden via the environment prior to running nmake in order to select a 600# specific Tcl shell to use. 601# 602!IFNDEF TCLSH_CMD 603TCLSH_CMD = tclsh85 604!ENDIF 605 606# Compiler options needed for programs that use the readline() library. 607# 608!IFNDEF READLINE_FLAGS 609READLINE_FLAGS = -DHAVE_READLINE=0 610!ENDIF 611 612# The library that programs using readline() must link against. 613# 614!IFNDEF LIBREADLINE 615LIBREADLINE = 616!ENDIF 617 618# Should the database engine be compiled threadsafe 619# 620TCC = $(TCC) -DSQLITE_THREADSAFE=1 621RCC = $(RCC) -DSQLITE_THREADSAFE=1 622 623# Do threads override each others locks by default (1), or do we test (-1) 624# 625TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 626RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 627 628# Any target libraries which libsqlite must be linked against 629# 630!IFNDEF TLIBS 631TLIBS = 632!ENDIF 633 634# Flags controlling use of the in memory btree implementation 635# 636# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to 637# default to file, 2 to default to memory, and 3 to force temporary 638# tables to always be in memory. 639# 640TCC = $(TCC) -DSQLITE_TEMP_STORE=1 641RCC = $(RCC) -DSQLITE_TEMP_STORE=1 642 643# Enable/disable loadable extensions, and other optional features 644# based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). 645# The same set of OMIT and ENABLE flags should be passed to the 646# LEMON parser generator and the mkkeywordhash tool as well. 647 648# These are the required SQLite compilation options used when compiling for 649# the Windows platform. 650# 651REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100 652 653# If we are linking to the RPCRT4 library, enable features that need it. 654# 655!IF $(USE_RPCRT4_LIB)!=0 656REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_WIN32_USE_UUID=1 657!ENDIF 658 659# Add the required and optional SQLite compilation options into the command 660# lines used to invoke the MSVC code and resource compilers. 661# 662TCC = $(TCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) 663RCC = $(RCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) 664 665# Add in any optional parameters specified on the commane line, e.g. 666# nmake /f Makefile.msc all "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1" 667# 668TCC = $(TCC) $(OPTS) 669RCC = $(RCC) $(OPTS) 670 671# If compiling for debugging, add some defines. 672# 673!IF $(DEBUG)>1 674TCC = $(TCC) -D_DEBUG 675BCC = $(BCC) -D_DEBUG 676RCC = $(RCC) -D_DEBUG 677!ENDIF 678 679# If optimizations are enabled or disabled (either implicitly or 680# explicitly), add the necessary flags. 681# 682!IF $(DEBUG)>1 || $(OPTIMIZATIONS)==0 683TCC = $(TCC) -Od 684BCC = $(BCC) -Od 685!ELSEIF $(OPTIMIZATIONS)>=3 686TCC = $(TCC) -Ox 687BCC = $(BCC) -Ox 688!ELSEIF $(OPTIMIZATIONS)==2 689TCC = $(TCC) -O2 690BCC = $(BCC) -O2 691!ELSEIF $(OPTIMIZATIONS)==1 692TCC = $(TCC) -O1 693BCC = $(BCC) -O1 694!ENDIF 695 696# If symbols are enabled (or compiling for debugging), enable PDBs. 697# 698!IF $(DEBUG)>1 || $(SYMBOLS)!=0 699TCC = $(TCC) -Zi 700BCC = $(BCC) -Zi 701!ENDIF 702 703# If ICU support is enabled, add the compiler options for it. 704# 705!IF $(USE_ICU)!=0 706TCC = $(TCC) -DSQLITE_ENABLE_ICU=1 707RCC = $(RCC) -DSQLITE_ENABLE_ICU=1 708TCC = $(TCC) -I$(TOP)\ext\icu 709RCC = $(RCC) -I$(TOP)\ext\icu 710TCC = $(TCC) -I$(ICUINCDIR) 711RCC = $(RCC) -I$(ICUINCDIR) 712!ENDIF 713 714# Command line prefixes for compiling code, compiling resources, 715# linking, etc. 716# 717LTCOMPILE = $(TCC) -Fo$@ 718LTRCOMPILE = $(RCC) -r 719LTLIB = lib.exe 720LTLINK = $(TCC) -Fe$@ 721 722# If requested, link to the RPCRT4 library. 723# 724!IF $(USE_RPCRT4_LIB)!=0 725LTLINK = $(LTLINK) rpcrt4.lib 726!ENDIF 727 728# If a platform was set, force the linker to target that. 729# Note that the vcvars*.bat family of batch files typically 730# set this for you. Otherwise, the linker will attempt 731# to deduce the binary type based on the object files. 732!IFDEF PLATFORM 733LTLINKOPTS = /NOLOGO /MACHINE:$(PLATFORM) 734LTLIBOPTS = /NOLOGO /MACHINE:$(PLATFORM) 735!ELSE 736LTLINKOPTS = /NOLOGO 737LTLIBOPTS = /NOLOGO 738!ENDIF 739 740# When compiling for use in the WinRT environment, the following 741# linker option must be used to mark the executable as runnable 742# only in the context of an application container. 743# 744!IF $(FOR_WINRT)!=0 745LTLINKOPTS = $(LTLINKOPTS) /APPCONTAINER 746!IF "$(VISUALSTUDIOVERSION)"=="12.0" || "$(VISUALSTUDIOVERSION)"=="14.0" 747!IFNDEF STORELIBPATH 748!IF "$(PLATFORM)"=="x86" 749STORELIBPATH = $(CRTLIBPATH)\store 750!ELSEIF "$(PLATFORM)"=="x64" 751STORELIBPATH = $(CRTLIBPATH)\store\amd64 752!ELSEIF "$(PLATFORM)"=="ARM" 753STORELIBPATH = $(CRTLIBPATH)\store\arm 754!ELSE 755STORELIBPATH = $(CRTLIBPATH)\store 756!ENDIF 757!ENDIF 758STORELIBPATH = $(STORELIBPATH:\\=\) 759LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(STORELIBPATH)" 760!ENDIF 761!ENDIF 762 763# When compiling for Windows Phone 8.1, an extra library path is 764# required. 765# 766!IF $(USE_WP81_OPTS)!=0 767!IFNDEF WP81LIBPATH 768!IF "$(PLATFORM)"=="x86" 769WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 770!ELSEIF "$(PLATFORM)"=="ARM" 771WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\ARM 772!ELSE 773WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 774!ENDIF 775!ENDIF 776!ENDIF 777 778# When compiling for Windows Phone 8.1, some extra linker options 779# are also required. 780# 781!IF $(USE_WP81_OPTS)!=0 782!IFDEF WP81LIBPATH 783LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(WP81LIBPATH)" 784!ENDIF 785LTLINKOPTS = $(LTLINKOPTS) /DYNAMICBASE 786LTLINKOPTS = $(LTLINKOPTS) WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib 787LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:ole32.lib 788!ENDIF 789 790# When compiling for UAP, some extra linker options are also required. 791# 792!IF $(FOR_UAP)!=0 793LTLINKOPTS = $(LTLINKOPTS) /DYNAMICBASE /NODEFAULTLIB:kernel32.lib 794LTLINKOPTS = $(LTLINKOPTS) mincore.lib 795!IFDEF PSDKLIBPATH 796LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(PSDKLIBPATH)" 797!ENDIF 798!ENDIF 799 800# If either debugging or symbols are enabled, enable PDBs. 801# 802!IF $(DEBUG)>1 || $(SYMBOLS)!=0 803LDFLAGS = /DEBUG $(LDOPTS) 804!ELSE 805LDFLAGS = $(LDOPTS) 806!ENDIF 807 808# Start with the Tcl related linker options. 809# 810!IF $(NO_TCL)==0 811LTLIBPATHS = /LIBPATH:$(TCLLIBDIR) 812LTLIBS = $(LIBTCL) 813!ENDIF 814 815# If ICU support is enabled, add the linker options for it. 816# 817!IF $(USE_ICU)!=0 818LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR) 819LTLIBS = $(LTLIBS) $(LIBICU) 820!ENDIF 821 822# You should not have to change anything below this line 823############################################################################### 824 825# Object files for the SQLite library (non-amalgamation). 826# 827LIBOBJS0 = vdbe.lo parse.lo alter.lo analyze.lo attach.lo auth.lo \ 828 backup.lo bitvec.lo btmutex.lo btree.lo build.lo \ 829 callback.lo complete.lo ctime.lo date.lo dbstat.lo delete.lo \ 830 expr.lo fault.lo fkey.lo \ 831 fts3.lo fts3_aux.lo fts3_expr.lo fts3_hash.lo fts3_icu.lo \ 832 fts3_porter.lo fts3_snippet.lo fts3_tokenizer.lo fts3_tokenizer1.lo \ 833 fts3_tokenize_vtab.lo fts3_unicode.lo fts3_unicode2.lo fts3_write.lo \ 834 fts5.lo \ 835 func.lo global.lo hash.lo \ 836 icu.lo insert.lo journal.lo legacy.lo loadext.lo \ 837 main.lo malloc.lo mem0.lo mem1.lo mem2.lo mem3.lo mem5.lo \ 838 memjournal.lo \ 839 mutex.lo mutex_noop.lo mutex_unix.lo mutex_w32.lo \ 840 notify.lo opcodes.lo os.lo os_unix.lo os_win.lo \ 841 pager.lo pcache.lo pcache1.lo pragma.lo prepare.lo printf.lo \ 842 random.lo resolve.lo rowset.lo rtree.lo select.lo sqlite3rbu.lo status.lo \ 843 table.lo threads.lo tokenize.lo treeview.lo trigger.lo \ 844 update.lo util.lo vacuum.lo \ 845 vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbemem.lo vdbesort.lo \ 846 vdbetrace.lo wal.lo walker.lo where.lo wherecode.lo whereexpr.lo \ 847 utf.lo vtab.lo 848 849# Object files for the amalgamation. 850# 851LIBOBJS1 = sqlite3.lo 852 853# Determine the real value of LIBOBJ based on the 'configure' script 854# 855!IF $(USE_AMALGAMATION)==0 856LIBOBJ = $(LIBOBJS0) 857!ELSE 858LIBOBJ = $(LIBOBJS1) 859!ENDIF 860 861# Determine if embedded resource compilation and usage are enabled. 862# 863!IF $(USE_RC)!=0 864LIBRESOBJS = sqlite3res.lo 865!ELSE 866LIBRESOBJS = 867!ENDIF 868 869# All of the source code files. 870# 871SRC1 = \ 872 $(TOP)\src\alter.c \ 873 $(TOP)\src\analyze.c \ 874 $(TOP)\src\attach.c \ 875 $(TOP)\src\auth.c \ 876 $(TOP)\src\backup.c \ 877 $(TOP)\src\bitvec.c \ 878 $(TOP)\src\btmutex.c \ 879 $(TOP)\src\btree.c \ 880 $(TOP)\src\btree.h \ 881 $(TOP)\src\btreeInt.h \ 882 $(TOP)\src\build.c \ 883 $(TOP)\src\callback.c \ 884 $(TOP)\src\complete.c \ 885 $(TOP)\src\ctime.c \ 886 $(TOP)\src\date.c \ 887 $(TOP)\src\dbstat.c \ 888 $(TOP)\src\delete.c \ 889 $(TOP)\src\expr.c \ 890 $(TOP)\src\fault.c \ 891 $(TOP)\src\fkey.c \ 892 $(TOP)\src\func.c \ 893 $(TOP)\src\global.c \ 894 $(TOP)\src\hash.c \ 895 $(TOP)\src\hash.h \ 896 $(TOP)\src\hwtime.h \ 897 $(TOP)\src\insert.c \ 898 $(TOP)\src\journal.c \ 899 $(TOP)\src\legacy.c \ 900 $(TOP)\src\loadext.c \ 901 $(TOP)\src\main.c \ 902 $(TOP)\src\malloc.c \ 903 $(TOP)\src\mem0.c \ 904 $(TOP)\src\mem1.c \ 905 $(TOP)\src\mem2.c \ 906 $(TOP)\src\mem3.c \ 907 $(TOP)\src\mem5.c \ 908 $(TOP)\src\memjournal.c \ 909 $(TOP)\src\msvc.h \ 910 $(TOP)\src\mutex.c \ 911 $(TOP)\src\mutex.h \ 912 $(TOP)\src\mutex_noop.c \ 913 $(TOP)\src\mutex_unix.c \ 914 $(TOP)\src\mutex_w32.c \ 915 $(TOP)\src\notify.c \ 916 $(TOP)\src\os.c \ 917 $(TOP)\src\os.h \ 918 $(TOP)\src\os_common.h \ 919 $(TOP)\src\os_setup.h \ 920 $(TOP)\src\os_unix.c \ 921 $(TOP)\src\os_win.c \ 922 $(TOP)\src\os_win.h 923SRC2 = \ 924 $(TOP)\src\pager.c \ 925 $(TOP)\src\pager.h \ 926 $(TOP)\src\parse.y \ 927 $(TOP)\src\pcache.c \ 928 $(TOP)\src\pcache.h \ 929 $(TOP)\src\pcache1.c \ 930 $(TOP)\src\pragma.c \ 931 $(TOP)\src\pragma.h \ 932 $(TOP)\src\prepare.c \ 933 $(TOP)\src\printf.c \ 934 $(TOP)\src\random.c \ 935 $(TOP)\src\resolve.c \ 936 $(TOP)\src\rowset.c \ 937 $(TOP)\src\select.c \ 938 $(TOP)\src\status.c \ 939 $(TOP)\src\shell.c \ 940 $(TOP)\src\sqlite.h.in \ 941 $(TOP)\src\sqlite3ext.h \ 942 $(TOP)\src\sqliteInt.h \ 943 $(TOP)\src\sqliteLimit.h \ 944 $(TOP)\src\table.c \ 945 $(TOP)\src\threads.c \ 946 $(TOP)\src\tclsqlite.c \ 947 $(TOP)\src\tokenize.c \ 948 $(TOP)\src\treeview.c \ 949 $(TOP)\src\trigger.c \ 950 $(TOP)\src\utf.c \ 951 $(TOP)\src\update.c \ 952 $(TOP)\src\util.c \ 953 $(TOP)\src\vacuum.c \ 954 $(TOP)\src\vdbe.c \ 955 $(TOP)\src\vdbe.h \ 956 $(TOP)\src\vdbeapi.c \ 957 $(TOP)\src\vdbeaux.c \ 958 $(TOP)\src\vdbeblob.c \ 959 $(TOP)\src\vdbemem.c \ 960 $(TOP)\src\vdbesort.c \ 961 $(TOP)\src\vdbetrace.c \ 962 $(TOP)\src\vdbeInt.h \ 963 $(TOP)\src\vtab.c \ 964 $(TOP)\src\vxworks.h \ 965 $(TOP)\src\wal.c \ 966 $(TOP)\src\wal.h \ 967 $(TOP)\src\walker.c \ 968 $(TOP)\src\where.c \ 969 $(TOP)\src\wherecode.c \ 970 $(TOP)\src\whereexpr.c \ 971 $(TOP)\src\whereInt.h 972 973# Source code for extensions 974# 975SRC3 = \ 976 $(TOP)\ext\fts1\fts1.c \ 977 $(TOP)\ext\fts1\fts1.h \ 978 $(TOP)\ext\fts1\fts1_hash.c \ 979 $(TOP)\ext\fts1\fts1_hash.h \ 980 $(TOP)\ext\fts1\fts1_porter.c \ 981 $(TOP)\ext\fts1\fts1_tokenizer.h \ 982 $(TOP)\ext\fts1\fts1_tokenizer1.c \ 983 $(TOP)\ext\fts2\fts2.c \ 984 $(TOP)\ext\fts2\fts2.h \ 985 $(TOP)\ext\fts2\fts2_hash.c \ 986 $(TOP)\ext\fts2\fts2_hash.h \ 987 $(TOP)\ext\fts2\fts2_icu.c \ 988 $(TOP)\ext\fts2\fts2_porter.c \ 989 $(TOP)\ext\fts2\fts2_tokenizer.h \ 990 $(TOP)\ext\fts2\fts2_tokenizer.c \ 991 $(TOP)\ext\fts2\fts2_tokenizer1.c 992SRC4 = \ 993 $(TOP)\ext\fts3\fts3.c \ 994 $(TOP)\ext\fts3\fts3.h \ 995 $(TOP)\ext\fts3\fts3Int.h \ 996 $(TOP)\ext\fts3\fts3_aux.c \ 997 $(TOP)\ext\fts3\fts3_expr.c \ 998 $(TOP)\ext\fts3\fts3_hash.c \ 999 $(TOP)\ext\fts3\fts3_hash.h \ 1000 $(TOP)\ext\fts3\fts3_icu.c \ 1001 $(TOP)\ext\fts3\fts3_porter.c \ 1002 $(TOP)\ext\fts3\fts3_snippet.c \ 1003 $(TOP)\ext\fts3\fts3_tokenizer.h \ 1004 $(TOP)\ext\fts3\fts3_tokenizer.c \ 1005 $(TOP)\ext\fts3\fts3_tokenizer1.c \ 1006 $(TOP)\ext\fts3\fts3_tokenize_vtab.c \ 1007 $(TOP)\ext\fts3\fts3_unicode.c \ 1008 $(TOP)\ext\fts3\fts3_unicode2.c \ 1009 $(TOP)\ext\fts3\fts3_write.c \ 1010 $(TOP)\ext\icu\sqliteicu.h \ 1011 $(TOP)\ext\icu\icu.c \ 1012 $(TOP)\ext\rtree\rtree.h \ 1013 $(TOP)\ext\rtree\rtree.c \ 1014 $(TOP)\ext\rbu\sqlite3rbu.h \ 1015 $(TOP)\ext\rbu\sqlite3rbu.c \ 1016 $(TOP)\ext\misc\json1.c 1017 1018 1019# Generated source code files 1020# 1021SRC5 = \ 1022 keywordhash.h \ 1023 opcodes.c \ 1024 opcodes.h \ 1025 parse.c \ 1026 parse.h \ 1027 sqlite3.h 1028 1029# All source code files. 1030# 1031SRC = $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) 1032 1033# Source code to the test files. 1034# 1035TESTSRC = \ 1036 $(TOP)\src\test1.c \ 1037 $(TOP)\src\test2.c \ 1038 $(TOP)\src\test3.c \ 1039 $(TOP)\src\test4.c \ 1040 $(TOP)\src\test5.c \ 1041 $(TOP)\src\test6.c \ 1042 $(TOP)\src\test7.c \ 1043 $(TOP)\src\test8.c \ 1044 $(TOP)\src\test9.c \ 1045 $(TOP)\src\test_autoext.c \ 1046 $(TOP)\src\test_async.c \ 1047 $(TOP)\src\test_backup.c \ 1048 $(TOP)\src\test_blob.c \ 1049 $(TOP)\src\test_btree.c \ 1050 $(TOP)\src\test_config.c \ 1051 $(TOP)\src\test_demovfs.c \ 1052 $(TOP)\src\test_devsym.c \ 1053 $(TOP)\src\test_fs.c \ 1054 $(TOP)\src\test_func.c \ 1055 $(TOP)\src\test_hexio.c \ 1056 $(TOP)\src\test_init.c \ 1057 $(TOP)\src\test_intarray.c \ 1058 $(TOP)\src\test_journal.c \ 1059 $(TOP)\src\test_malloc.c \ 1060 $(TOP)\src\test_multiplex.c \ 1061 $(TOP)\src\test_mutex.c \ 1062 $(TOP)\src\test_onefile.c \ 1063 $(TOP)\src\test_osinst.c \ 1064 $(TOP)\src\test_pcache.c \ 1065 $(TOP)\src\test_quota.c \ 1066 $(TOP)\src\test_rtree.c \ 1067 $(TOP)\src\test_schema.c \ 1068 $(TOP)\src\test_server.c \ 1069 $(TOP)\src\test_superlock.c \ 1070 $(TOP)\src\test_syscall.c \ 1071 $(TOP)\src\test_tclvar.c \ 1072 $(TOP)\src\test_thread.c \ 1073 $(TOP)\src\test_vfs.c \ 1074 $(TOP)\src\test_windirent.c \ 1075 $(TOP)\src\test_wsd.c \ 1076 $(TOP)\ext\fts3\fts3_term.c \ 1077 $(TOP)\ext\fts3\fts3_test.c \ 1078 $(TOP)\ext\rbu\test_rbu.c 1079 1080# Statically linked extensions 1081# 1082TESTEXT = \ 1083 $(TOP)\ext\misc\amatch.c \ 1084 $(TOP)\ext\misc\closure.c \ 1085 $(TOP)\ext\misc\eval.c \ 1086 $(TOP)\ext\misc\fileio.c \ 1087 $(TOP)\ext\misc\fuzzer.c \ 1088 $(TOP)\ext\fts5\fts5_tcl.c \ 1089 $(TOP)\ext\fts5\fts5_test_mi.c \ 1090 $(TOP)\ext\fts5\fts5_test_tok.c \ 1091 $(TOP)\ext\misc\ieee754.c \ 1092 $(TOP)\ext\misc\nextchar.c \ 1093 $(TOP)\ext\misc\percentile.c \ 1094 $(TOP)\ext\misc\regexp.c \ 1095 $(TOP)\ext\misc\series.c \ 1096 $(TOP)\ext\misc\spellfix.c \ 1097 $(TOP)\ext\misc\totype.c \ 1098 $(TOP)\ext\misc\wholenumber.c 1099 1100 1101# Source code to the library files needed by the test fixture 1102# 1103TESTSRC2 = \ 1104 $(TOP)\src\attach.c \ 1105 $(TOP)\src\backup.c \ 1106 $(TOP)\src\bitvec.c \ 1107 $(TOP)\src\btree.c \ 1108 $(TOP)\src\build.c \ 1109 $(TOP)\src\ctime.c \ 1110 $(TOP)\src\date.c \ 1111 $(TOP)\src\dbstat.c \ 1112 $(TOP)\src\expr.c \ 1113 $(TOP)\src\func.c \ 1114 $(TOP)\src\insert.c \ 1115 $(TOP)\src\wal.c \ 1116 $(TOP)\src\main.c \ 1117 $(TOP)\src\mem5.c \ 1118 $(TOP)\src\os.c \ 1119 $(TOP)\src\os_unix.c \ 1120 $(TOP)\src\os_win.c \ 1121 $(TOP)\src\pager.c \ 1122 $(TOP)\src\pragma.c \ 1123 $(TOP)\src\prepare.c \ 1124 $(TOP)\src\printf.c \ 1125 $(TOP)\src\random.c \ 1126 $(TOP)\src\pcache.c \ 1127 $(TOP)\src\pcache1.c \ 1128 $(TOP)\src\select.c \ 1129 $(TOP)\src\tokenize.c \ 1130 $(TOP)\src\utf.c \ 1131 $(TOP)\src\util.c \ 1132 $(TOP)\src\vdbeapi.c \ 1133 $(TOP)\src\vdbeaux.c \ 1134 $(TOP)\src\vdbe.c \ 1135 $(TOP)\src\vdbemem.c \ 1136 $(TOP)\src\vdbesort.c \ 1137 $(TOP)\src\vdbetrace.c \ 1138 $(TOP)\src\where.c \ 1139 $(TOP)\src\wherecode.c \ 1140 $(TOP)\src\whereexpr.c \ 1141 parse.c \ 1142 $(TOP)\ext\fts3\fts3.c \ 1143 $(TOP)\ext\fts3\fts3_aux.c \ 1144 $(TOP)\ext\fts3\fts3_expr.c \ 1145 $(TOP)\ext\fts3\fts3_tokenizer.c \ 1146 $(TOP)\ext\fts3\fts3_tokenize_vtab.c \ 1147 $(TOP)\ext\fts3\fts3_unicode.c \ 1148 $(TOP)\ext\fts3\fts3_unicode2.c \ 1149 $(TOP)\ext\fts3\fts3_write.c \ 1150 $(TOP)\ext\async\sqlite3async.c 1151 1152# Header files used by all library source files. 1153# 1154HDR = \ 1155 $(TOP)\src\btree.h \ 1156 $(TOP)\src\btreeInt.h \ 1157 $(TOP)\src\hash.h \ 1158 $(TOP)\src\hwtime.h \ 1159 keywordhash.h \ 1160 $(TOP)\src\msvc.h \ 1161 $(TOP)\src\mutex.h \ 1162 opcodes.h \ 1163 $(TOP)\src\os.h \ 1164 $(TOP)\src\os_common.h \ 1165 $(TOP)\src\os_setup.h \ 1166 $(TOP)\src\os_win.h \ 1167 $(TOP)\src\pager.h \ 1168 $(TOP)\src\pcache.h \ 1169 parse.h \ 1170 $(TOP)\src\pragma.h \ 1171 sqlite3.h \ 1172 $(TOP)\src\sqlite3ext.h \ 1173 $(TOP)\src\sqliteInt.h \ 1174 $(TOP)\src\sqliteLimit.h \ 1175 $(TOP)\src\vdbe.h \ 1176 $(TOP)\src\vdbeInt.h \ 1177 $(TOP)\src\vxworks.h \ 1178 $(TOP)\src\whereInt.h 1179 1180# Header files used by extensions 1181# 1182EXTHDR = $(EXTHDR) \ 1183 $(TOP)\ext\fts1\fts1.h \ 1184 $(TOP)\ext\fts1\fts1_hash.h \ 1185 $(TOP)\ext\fts1\fts1_tokenizer.h 1186EXTHDR = $(EXTHDR) \ 1187 $(TOP)\ext\fts2\fts2.h \ 1188 $(TOP)\ext\fts2\fts2_hash.h \ 1189 $(TOP)\ext\fts2\fts2_tokenizer.h 1190EXTHDR = $(EXTHDR) \ 1191 $(TOP)\ext\fts3\fts3.h \ 1192 $(TOP)\ext\fts3\fts3Int.h \ 1193 $(TOP)\ext\fts3\fts3_hash.h \ 1194 $(TOP)\ext\fts3\fts3_tokenizer.h 1195EXTHDR = $(EXTHDR) \ 1196 $(TOP)\ext\rtree\rtree.h 1197EXTHDR = $(EXTHDR) \ 1198 $(TOP)\ext\icu\sqliteicu.h 1199EXTHDR = $(EXTHDR) \ 1200 $(TOP)\ext\rtree\sqlite3rtree.h 1201 1202# executables needed for testing 1203# 1204TESTPROGS = \ 1205 testfixture.exe \ 1206 sqlite3.exe \ 1207 sqlite3_analyzer.exe \ 1208 sqldiff.exe 1209 1210# Databases containing fuzzer test cases 1211# 1212FUZZDATA = \ 1213 $(TOP)\test\fuzzdata1.db \ 1214 $(TOP)\test\fuzzdata2.db \ 1215 $(TOP)\test\fuzzdata3.db \ 1216 $(TOP)\test\fuzzdata4.db 1217 1218# Extra compiler options for various shell tools 1219# 1220SHELL_COMPILE_OPTS = -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 1221FUZZERSHELL_COMPILE_OPTS = -DSQLITE_ENABLE_JSON1 1222FUZZCHECK_COMPILE_OPTS = -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_MEMSYS5 1223 1224# Standard options to testfixture 1225# 1226TESTOPTS = --verbose=file --output=test-out.txt 1227 1228# This is the default Makefile target. The objects listed here 1229# are what get build when you type just "make" with no arguments. 1230# 1231all: dll libsqlite3.lib sqlite3.exe libtclsqlite3.lib 1232 1233libsqlite3.lib: $(LIBOBJ) 1234 $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS) 1235 1236libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib 1237 $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCLSTUB) $(TLIBS) 1238 1239sqlite3.exe: $(TOP)\src\shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) sqlite3.h 1240 $(LTLINK) $(SHELL_COMPILE_OPTS) $(SHELL_COMPILE_OPTS) $(READLINE_FLAGS) $(TOP)\src\shell.c \ 1241 /link /pdb:sqlite3sh.pdb $(LDFLAGS) $(LTLINKOPTS) $(SHELL_LINK_OPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS) 1242 1243sqldiff.exe: $(TOP)\tool\sqldiff.c sqlite3.c sqlite3.h 1244 $(LTLINK) $(NO_WARN) $(TOP)\tool\sqldiff.c sqlite3.c /link $(LDFLAGS) $(LTLINKOPTS) 1245 1246fuzzershell.exe: $(TOP)\tool\fuzzershell.c sqlite3.c sqlite3.h 1247 $(LTLINK) $(NO_WARN) $(FUZZERSHELL_COMPILE_OPTS) \ 1248 $(TOP)\tool\fuzzershell.c sqlite3.c /link $(LDFLAGS) $(LTLINKOPTS) 1249 1250fuzzcheck.exe: $(TOP)\test\fuzzcheck.c sqlite3.c sqlite3.h 1251 $(LTLINK) $(NO_WARN) $(FUZZCHECK_COMPILE_OPTS) $(TOP)\test\fuzzcheck.c sqlite3.c /link $(LDFLAGS) $(LTLINKOPTS) 1252 1253mptester.exe: $(TOP)\mptest\mptest.c $(SHELL_CORE_DEP) $(LIBRESOBJS) sqlite3.h 1254 $(LTLINK) $(NO_WARN) $(SHELL_COMPILE_OPTS) $(TOP)\mptest\mptest.c \ 1255 /link $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) $(SHELL_LINK_OPTS) $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS) 1256 1257MPTEST1 = mptester mptest.db $(TOP)\mptest\crash01.test --repeat 20 1258MPTEST2 = mptester mptest.db $(TOP)\mptest\multiwrite01.test --repeat 20 1259 1260mptest: mptester.exe 1261 del /Q mptest.db 2>NUL 1262 $(MPTEST1) --journalmode DELETE 1263 $(MPTEST2) --journalmode WAL 1264 $(MPTEST1) --journalmode WAL 1265 $(MPTEST2) --journalmode PERSIST 1266 $(MPTEST1) --journalmode PERSIST 1267 $(MPTEST2) --journalmode TRUNCATE 1268 $(MPTEST1) --journalmode TRUNCATE 1269 $(MPTEST2) --journalmode DELETE 1270 1271# This target creates a directory named "tsrc" and fills it with 1272# copies of all of the C source code and header files needed to 1273# build on the target system. Some of the C source code and header 1274# files are automatically generated. This target takes care of 1275# all that automatic generation. 1276# 1277.target_source: $(SRC) $(TOP)\tool\vdbe-compress.tcl fts5.c 1278 -rmdir /Q/S tsrc 2>NUL 1279 -mkdir tsrc 1280 for %i in ($(SRC1)) do copy /Y %i tsrc 1281 for %i in ($(SRC2)) do copy /Y %i tsrc 1282 for %i in ($(SRC3)) do copy /Y %i tsrc 1283 for %i in ($(SRC4)) do copy /Y %i tsrc 1284 for %i in ($(SRC5)) do copy /Y %i tsrc 1285 copy /Y fts5.c tsrc 1286 copy /Y fts5.h tsrc 1287 del /Q tsrc\sqlite.h.in tsrc\parse.y 2>NUL 1288 $(TCLSH_CMD) $(TOP)\tool\vdbe-compress.tcl $(OPTS) < tsrc\vdbe.c > vdbe.new 1289 move vdbe.new tsrc\vdbe.c 1290 echo > .target_source 1291 1292sqlite3.c: .target_source sqlite3ext.h $(TOP)\tool\mksqlite3c.tcl 1293 $(TCLSH_CMD) $(TOP)\tool\mksqlite3c.tcl $(MKSQLITE3C_ARGS) 1294 copy tsrc\shell.c . 1295 1296sqlite3-all.c: sqlite3.c $(TOP)\tool\split-sqlite3c.tcl 1297 $(TCLSH_CMD) $(TOP)\tool\split-sqlite3c.tcl 1298 1299# Set the source code file to be used by executables and libraries when 1300# they need the amalgamation. 1301# 1302!IF $(SPLIT_AMALGAMATION)!=0 1303SQLITE3C = sqlite3-all.c 1304!ELSE 1305SQLITE3C = sqlite3.c 1306!ENDIF 1307 1308# Rule to build the amalgamation 1309# 1310sqlite3.lo: $(SQLITE3C) 1311 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(SQLITE3C) 1312 1313# Rules to build the LEMON compiler generator 1314# 1315lempar.c: $(TOP)\tool\lempar.c 1316 copy $(TOP)\tool\lempar.c . 1317 1318lemon.exe: $(TOP)\tool\lemon.c lempar.c 1319 $(BCC) $(NO_WARN) -Daccess=_access \ 1320 -Fe$@ $(TOP)\tool\lemon.c /link $(LDFLAGS) $(NLTLINKOPTS) $(NLTLIBPATHS) 1321 1322# Rules to build individual *.lo files from generated *.c files. This 1323# applies to: 1324# 1325# parse.lo 1326# opcodes.lo 1327# 1328parse.lo: parse.c $(HDR) 1329 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c parse.c 1330 1331opcodes.lo: opcodes.c 1332 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c opcodes.c 1333 1334# Rule to build the Win32 resources object file. 1335# 1336!IF $(USE_RC)!=0 1337$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(HDR) 1338 echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h 1339 for /F %%V in ('type "$(TOP)\VERSION"') do ( \ 1340 echo #define SQLITE_RESOURCE_VERSION %%V \ 1341 | $(TCLSH_CMD) $(TOP)\tool\replace.tcl exact . ^, >> sqlite3rc.h \ 1342 ) 1343 echo #endif >> sqlite3rc.h 1344 $(LTRCOMPILE) -fo $(LIBRESOBJS) $(TOP)\src\sqlite3.rc 1345!ENDIF 1346 1347# Rules to build individual *.lo files from files in the src directory. 1348# 1349alter.lo: $(TOP)\src\alter.c $(HDR) 1350 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\alter.c 1351 1352analyze.lo: $(TOP)\src\analyze.c $(HDR) 1353 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\analyze.c 1354 1355attach.lo: $(TOP)\src\attach.c $(HDR) 1356 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\attach.c 1357 1358auth.lo: $(TOP)\src\auth.c $(HDR) 1359 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\auth.c 1360 1361backup.lo: $(TOP)\src\backup.c $(HDR) 1362 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\backup.c 1363 1364bitvec.lo: $(TOP)\src\bitvec.c $(HDR) 1365 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\bitvec.c 1366 1367btmutex.lo: $(TOP)\src\btmutex.c $(HDR) 1368 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\btmutex.c 1369 1370btree.lo: $(TOP)\src\btree.c $(HDR) $(TOP)\src\pager.h 1371 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\btree.c 1372 1373build.lo: $(TOP)\src\build.c $(HDR) 1374 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\build.c 1375 1376callback.lo: $(TOP)\src\callback.c $(HDR) 1377 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\callback.c 1378 1379complete.lo: $(TOP)\src\complete.c $(HDR) 1380 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\complete.c 1381 1382ctime.lo: $(TOP)\src\ctime.c $(HDR) 1383 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\ctime.c 1384 1385date.lo: $(TOP)\src\date.c $(HDR) 1386 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\date.c 1387 1388dbstat.lo: $(TOP)\src\date.c $(HDR) 1389 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\dbstat.c 1390 1391delete.lo: $(TOP)\src\delete.c $(HDR) 1392 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\delete.c 1393 1394expr.lo: $(TOP)\src\expr.c $(HDR) 1395 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\expr.c 1396 1397fault.lo: $(TOP)\src\fault.c $(HDR) 1398 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\fault.c 1399 1400fkey.lo: $(TOP)\src\fkey.c $(HDR) 1401 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\fkey.c 1402 1403func.lo: $(TOP)\src\func.c $(HDR) 1404 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\func.c 1405 1406global.lo: $(TOP)\src\global.c $(HDR) 1407 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\global.c 1408 1409hash.lo: $(TOP)\src\hash.c $(HDR) 1410 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\hash.c 1411 1412insert.lo: $(TOP)\src\insert.c $(HDR) 1413 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\insert.c 1414 1415journal.lo: $(TOP)\src\journal.c $(HDR) 1416 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\journal.c 1417 1418legacy.lo: $(TOP)\src\legacy.c $(HDR) 1419 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\legacy.c 1420 1421loadext.lo: $(TOP)\src\loadext.c $(HDR) 1422 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\loadext.c 1423 1424main.lo: $(TOP)\src\main.c $(HDR) 1425 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\main.c 1426 1427malloc.lo: $(TOP)\src\malloc.c $(HDR) 1428 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\malloc.c 1429 1430mem0.lo: $(TOP)\src\mem0.c $(HDR) 1431 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mem0.c 1432 1433mem1.lo: $(TOP)\src\mem1.c $(HDR) 1434 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mem1.c 1435 1436mem2.lo: $(TOP)\src\mem2.c $(HDR) 1437 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mem2.c 1438 1439mem3.lo: $(TOP)\src\mem3.c $(HDR) 1440 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mem3.c 1441 1442mem5.lo: $(TOP)\src\mem5.c $(HDR) 1443 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mem5.c 1444 1445memjournal.lo: $(TOP)\src\memjournal.c $(HDR) 1446 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\memjournal.c 1447 1448mutex.lo: $(TOP)\src\mutex.c $(HDR) 1449 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mutex.c 1450 1451mutex_noop.lo: $(TOP)\src\mutex_noop.c $(HDR) 1452 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mutex_noop.c 1453 1454mutex_unix.lo: $(TOP)\src\mutex_unix.c $(HDR) 1455 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mutex_unix.c 1456 1457mutex_w32.lo: $(TOP)\src\mutex_w32.c $(HDR) 1458 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\mutex_w32.c 1459 1460notify.lo: $(TOP)\src\notify.c $(HDR) 1461 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\notify.c 1462 1463pager.lo: $(TOP)\src\pager.c $(HDR) $(TOP)\src\pager.h 1464 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\pager.c 1465 1466pcache.lo: $(TOP)\src\pcache.c $(HDR) $(TOP)\src\pcache.h 1467 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\pcache.c 1468 1469pcache1.lo: $(TOP)\src\pcache1.c $(HDR) $(TOP)\src\pcache.h 1470 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\pcache1.c 1471 1472os.lo: $(TOP)\src\os.c $(HDR) 1473 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\os.c 1474 1475os_unix.lo: $(TOP)\src\os_unix.c $(HDR) 1476 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\os_unix.c 1477 1478os_win.lo: $(TOP)\src\os_win.c $(HDR) 1479 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\os_win.c 1480 1481pragma.lo: $(TOP)\src\pragma.c $(HDR) 1482 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\pragma.c 1483 1484prepare.lo: $(TOP)\src\prepare.c $(HDR) 1485 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\prepare.c 1486 1487printf.lo: $(TOP)\src\printf.c $(HDR) 1488 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\printf.c 1489 1490random.lo: $(TOP)\src\random.c $(HDR) 1491 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\random.c 1492 1493resolve.lo: $(TOP)\src\resolve.c $(HDR) 1494 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\resolve.c 1495 1496rowset.lo: $(TOP)\src\rowset.c $(HDR) 1497 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\rowset.c 1498 1499select.lo: $(TOP)\src\select.c $(HDR) 1500 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\select.c 1501 1502status.lo: $(TOP)\src\status.c $(HDR) 1503 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\status.c 1504 1505table.lo: $(TOP)\src\table.c $(HDR) 1506 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\table.c 1507 1508threads.lo: $(TOP)\src\threads.c $(HDR) 1509 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\threads.c 1510 1511tokenize.lo: $(TOP)\src\tokenize.c keywordhash.h $(HDR) 1512 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\tokenize.c 1513 1514treeview.lo: $(TOP)\src\treeview.c $(HDR) 1515 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\treeview.c 1516 1517trigger.lo: $(TOP)\src\trigger.c $(HDR) 1518 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\trigger.c 1519 1520update.lo: $(TOP)\src\update.c $(HDR) 1521 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\update.c 1522 1523utf.lo: $(TOP)\src\utf.c $(HDR) 1524 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\utf.c 1525 1526util.lo: $(TOP)\src\util.c $(HDR) 1527 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\util.c 1528 1529vacuum.lo: $(TOP)\src\vacuum.c $(HDR) 1530 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vacuum.c 1531 1532vdbe.lo: $(TOP)\src\vdbe.c $(HDR) 1533 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbe.c 1534 1535vdbeapi.lo: $(TOP)\src\vdbeapi.c $(HDR) 1536 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbeapi.c 1537 1538vdbeaux.lo: $(TOP)\src\vdbeaux.c $(HDR) 1539 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbeaux.c 1540 1541vdbeblob.lo: $(TOP)\src\vdbeblob.c $(HDR) 1542 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbeblob.c 1543 1544vdbemem.lo: $(TOP)\src\vdbemem.c $(HDR) 1545 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbemem.c 1546 1547vdbesort.lo: $(TOP)\src\vdbesort.c $(HDR) 1548 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbesort.c 1549 1550vdbetrace.lo: $(TOP)\src\vdbetrace.c $(HDR) 1551 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vdbetrace.c 1552 1553vtab.lo: $(TOP)\src\vtab.c $(HDR) 1554 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\vtab.c 1555 1556wal.lo: $(TOP)\src\wal.c $(HDR) 1557 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\wal.c 1558 1559walker.lo: $(TOP)\src\walker.c $(HDR) 1560 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\walker.c 1561 1562where.lo: $(TOP)\src\where.c $(HDR) 1563 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\where.c 1564 1565wherecode.lo: $(TOP)\src\wherecode.c $(HDR) 1566 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\wherecode.c 1567 1568whereexpr.lo: $(TOP)\src\whereexpr.c $(HDR) 1569 $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(TOP)\src\whereexpr.c 1570 1571tclsqlite.lo: $(TOP)\src\tclsqlite.c $(HDR) 1572 $(LTCOMPILE) $(NO_WARN) -DUSE_TCL_STUBS=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 1573 1574tclsqlite-shell.lo: $(TOP)\src\tclsqlite.c $(HDR) 1575 $(LTCOMPILE) $(NO_WARN) -DTCLSH=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 1576 1577tclsqlite3.exe: tclsqlite-shell.lo $(SQLITE3C) $(LIBRESOBJS) 1578 $(LTLINK) $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite-shell.lo $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1579 1580# Rules to build opcodes.c and opcodes.h 1581# 1582opcodes.c: opcodes.h $(TOP)\tool\mkopcodec.tcl 1583 $(TCLSH_CMD) $(TOP)\tool\mkopcodec.tcl opcodes.h > opcodes.c 1584 1585opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\tool\mkopcodeh.tcl 1586 type parse.h $(TOP)\src\vdbe.c | $(TCLSH_CMD) $(TOP)\tool\mkopcodeh.tcl > opcodes.h 1587 1588# Rules to build parse.c and parse.h - the outputs of lemon. 1589# 1590parse.h: parse.c 1591 1592parse.c: $(TOP)\src\parse.y lemon.exe $(TOP)\tool\addopcodes.tcl 1593 del /Q parse.y parse.h parse.h.temp 2>NUL 1594 copy $(TOP)\src\parse.y . 1595 .\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) parse.y 1596 move parse.h parse.h.temp 1597 $(TCLSH_CMD) $(TOP)\tool\addopcodes.tcl parse.h.temp > parse.h 1598 1599sqlite3.h: $(TOP)\src\sqlite.h.in $(TOP)\manifest.uuid $(TOP)\VERSION 1600 $(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP:\=/) > sqlite3.h 1601 1602sqlite3ext.h: .target_source 1603 copy tsrc\sqlite3ext.h . 1604 1605mkkeywordhash.exe: $(TOP)\tool\mkkeywordhash.c 1606 $(BCC) $(NO_WARN) -Fe$@ $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) \ 1607 $(TOP)\tool\mkkeywordhash.c /link $(LDFLAGS) $(NLTLINKOPTS) $(NLTLIBPATHS) 1608 1609keywordhash.h: $(TOP)\tool\mkkeywordhash.c mkkeywordhash.exe 1610 .\mkkeywordhash.exe > keywordhash.h 1611 1612 1613 1614# Rules to build the extension objects. 1615# 1616icu.lo: $(TOP)\ext\icu\icu.c $(HDR) $(EXTHDR) 1617 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\icu\icu.c 1618 1619fts2.lo: $(TOP)\ext\fts2\fts2.c $(HDR) $(EXTHDR) 1620 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2.c 1621 1622fts2_hash.lo: $(TOP)\ext\fts2\fts2_hash.c $(HDR) $(EXTHDR) 1623 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_hash.c 1624 1625fts2_icu.lo: $(TOP)\ext\fts2\fts2_icu.c $(HDR) $(EXTHDR) 1626 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_icu.c 1627 1628fts2_porter.lo: $(TOP)\ext\fts2\fts2_porter.c $(HDR) $(EXTHDR) 1629 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_porter.c 1630 1631fts2_tokenizer.lo: $(TOP)\ext\fts2\fts2_tokenizer.c $(HDR) $(EXTHDR) 1632 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer.c 1633 1634fts2_tokenizer1.lo: $(TOP)\ext\fts2\fts2_tokenizer1.c $(HDR) $(EXTHDR) 1635 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts2\fts2_tokenizer1.c 1636 1637fts3.lo: $(TOP)\ext\fts3\fts3.c $(HDR) $(EXTHDR) 1638 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3.c 1639 1640fts3_aux.lo: $(TOP)\ext\fts3\fts3_aux.c $(HDR) $(EXTHDR) 1641 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_aux.c 1642 1643fts3_expr.lo: $(TOP)\ext\fts3\fts3_expr.c $(HDR) $(EXTHDR) 1644 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_expr.c 1645 1646fts3_hash.lo: $(TOP)\ext\fts3\fts3_hash.c $(HDR) $(EXTHDR) 1647 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_hash.c 1648 1649fts3_icu.lo: $(TOP)\ext\fts3\fts3_icu.c $(HDR) $(EXTHDR) 1650 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_icu.c 1651 1652fts3_snippet.lo: $(TOP)\ext\fts3\fts3_snippet.c $(HDR) $(EXTHDR) 1653 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_snippet.c 1654 1655fts3_porter.lo: $(TOP)\ext\fts3\fts3_porter.c $(HDR) $(EXTHDR) 1656 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_porter.c 1657 1658fts3_tokenizer.lo: $(TOP)\ext\fts3\fts3_tokenizer.c $(HDR) $(EXTHDR) 1659 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer.c 1660 1661fts3_tokenizer1.lo: $(TOP)\ext\fts3\fts3_tokenizer1.c $(HDR) $(EXTHDR) 1662 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenizer1.c 1663 1664fts3_tokenize_vtab.lo: $(TOP)\ext\fts3\fts3_tokenize_vtab.c $(HDR) $(EXTHDR) 1665 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_tokenize_vtab.c 1666 1667fts3_unicode.lo: $(TOP)\ext\fts3\fts3_unicode.c $(HDR) $(EXTHDR) 1668 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode.c 1669 1670fts3_unicode2.lo: $(TOP)\ext\fts3\fts3_unicode2.c $(HDR) $(EXTHDR) 1671 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_unicode2.c 1672 1673fts3_write.lo: $(TOP)\ext\fts3\fts3_write.c $(HDR) $(EXTHDR) 1674 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\fts3\fts3_write.c 1675 1676rtree.lo: $(TOP)\ext\rtree\rtree.c $(HDR) $(EXTHDR) 1677 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c $(TOP)\ext\rtree\rtree.c 1678 1679# FTS5 things 1680# 1681FTS5_SRC = \ 1682 $(TOP)\ext\fts5\fts5.h \ 1683 $(TOP)\ext\fts5\fts5Int.h \ 1684 $(TOP)\ext\fts5\fts5_aux.c \ 1685 $(TOP)\ext\fts5\fts5_buffer.c \ 1686 $(TOP)\ext\fts5\fts5_main.c \ 1687 $(TOP)\ext\fts5\fts5_config.c \ 1688 $(TOP)\ext\fts5\fts5_expr.c \ 1689 $(TOP)\ext\fts5\fts5_hash.c \ 1690 $(TOP)\ext\fts5\fts5_index.c \ 1691 fts5parse.c fts5parse.h \ 1692 $(TOP)\ext\fts5\fts5_storage.c \ 1693 $(TOP)\ext\fts5\fts5_tokenize.c \ 1694 $(TOP)\ext\fts5\fts5_unicode2.c \ 1695 $(TOP)\ext\fts5\fts5_varint.c \ 1696 $(TOP)\ext\fts5\fts5_vocab.c 1697 1698fts5parse.c: $(TOP)\ext\fts5\fts5parse.y lemon.exe 1699 copy $(TOP)\ext\fts5\fts5parse.y . 1700 del /Q fts5parse.h 2>NUL 1701 .\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(OPTS) fts5parse.y 1702 1703fts5parse.h: fts5parse.c 1704 1705fts5.c: $(FTS5_SRC) 1706 $(TCLSH_CMD) $(TOP)\ext\fts5\tool\mkfts5c.tcl 1707 copy $(TOP)\ext\fts5\fts5.h . 1708 1709fts5.lo: fts5.c $(HDR) $(EXTHDR) 1710 $(LTCOMPILE) $(CORE_COMPILE_OPTS) $(NO_WARN) -DSQLITE_CORE -c fts5.c 1711 1712fts5_ext.lo: fts5.c $(HDR) $(EXTHDR) 1713 $(LTCOMPILE) $(NO_WARN) -c fts5.c 1714 1715fts5.dll: fts5_ext.lo 1716 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /OUT:$@ fts5_ext.lo 1717 1718sqlite3rbu.lo: $(TOP)\ext\rbu\sqlite3rbu.c $(HDR) $(EXTHDR) 1719 $(LTCOMPILE) -DSQLITE_CORE -c $(TOP)\ext\rbu\sqlite3rbu.c 1720 1721# Rules to build the 'testfixture' application. 1722# 1723# If using the amalgamation, use sqlite3.c directly to build the test 1724# fixture. Otherwise link against libsqlite3.lib. (This distinction is 1725# necessary because the test fixture requires non-API symbols which are 1726# hidden when the library is built via the amalgamation). 1727# 1728TESTFIXTURE_FLAGS = -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 1729TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS) -DSQLITE_SERVER=1 -DSQLITE_PRIVATE="" 1730TESTFIXTURE_FLAGS = $(TESTFIXTURE_FLAGS) -DSQLITE_CORE $(NO_WARN) 1731 1732TESTFIXTURE_SRC0 = $(TESTEXT) $(TESTSRC2) $(SHELL_CORE_DEP) 1733TESTFIXTURE_SRC1 = $(TESTEXT) $(SQLITE3C) 1734!IF $(USE_AMALGAMATION)==0 1735TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC0) 1736!ELSE 1737TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC1) 1738!ENDIF 1739 1740testfixture.exe: $(TESTFIXTURE_SRC) $(LIBRESOBJS) $(HDR) 1741 $(LTLINK) -DSQLITE_NO_SYNC=1 $(TESTFIXTURE_FLAGS) \ 1742 -DBUILD_sqlite -I$(TCLINCDIR) \ 1743 $(TESTFIXTURE_SRC) \ 1744 /link $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1745 1746extensiontest: testfixture.exe testloadext.dll 1747 @set PATH=$(LIBTCLPATH);$(PATH) 1748 .\testfixture.exe $(TOP)\test\loadext.test $(TESTOPTS) 1749 1750fulltest: $(TESTPROGS) fuzztest 1751 @set PATH=$(LIBTCLPATH);$(PATH) 1752 .\testfixture.exe $(TOP)\test\all.test $(TESTOPTS) 1753 1754soaktest: $(TESTPROGS) 1755 @set PATH=$(LIBTCLPATH);$(PATH) 1756 .\testfixture.exe $(TOP)\test\all.test -soak=1 $(TESTOPTS) 1757 1758fulltestonly: $(TESTPROGS) fuzztest 1759 @set PATH=$(LIBTCLPATH);$(PATH) 1760 .\testfixture.exe $(TOP)\test\full.test 1761 1762queryplantest: testfixture.exe sqlite3.exe 1763 @set PATH=$(LIBTCLPATH);$(PATH) 1764 .\testfixture.exe $(TOP)\test\permutations.test queryplanner $(TESTOPTS) 1765 1766fuzztest: fuzzcheck.exe 1767 .\fuzzcheck.exe $(FUZZDATA) 1768 1769fastfuzztest: fuzzcheck.exe 1770 .\fuzzcheck.exe --limit-mem 100M $(FUZZDATA) 1771 1772# Minimal testing that runs in less than 3 minutes (on a fast machine) 1773# 1774quicktest: testfixture.exe 1775 @set PATH=$(LIBTCLPATH);$(PATH) 1776 .\testfixture.exe $(TOP)\test\extraquick.test $(TESTOPTS) 1777 1778# This is the common case. Run many tests that do not take too long, 1779# including fuzzcheck, sqlite3_analyzer, and sqldiff tests. 1780# 1781test: $(TESTPROGS) fastfuzztest 1782 @set PATH=$(LIBTCLPATH);$(PATH) 1783 .\testfixture.exe $(TOP)\test\veryquick.test $(TESTOPTS) 1784 1785smoketest: $(TESTPROGS) 1786 @set PATH=$(LIBTCLPATH);$(PATH) 1787 .\testfixture.exe $(TOP)\test\main.test $(TESTOPTS) 1788 1789sqlite3_analyzer.c: $(SQLITE3C) $(TOP)\src\tclsqlite.c $(TOP)\tool\spaceanal.tcl 1790 echo #define TCLSH 2 > $@ 1791 echo #define SQLITE_ENABLE_DBSTAT_VTAB 1 >> $@ 1792 copy $@ + $(SQLITE3C) + $(TOP)\src\tclsqlite.c $@ 1793 echo static const char *tclsh_main_loop(void){ >> $@ 1794 echo static const char *zMainloop = >> $@ 1795 $(TCLSH_CMD) $(TOP)\tool\tostr.tcl $(TOP)\tool\spaceanal.tcl >> $@ 1796 echo ; return zMainloop; } >> $@ 1797 1798sqlite3_analyzer.exe: sqlite3_analyzer.c $(LIBRESOBJS) 1799 $(LTLINK) $(NO_WARN) -DBUILD_sqlite -I$(TCLINCDIR) sqlite3_analyzer.c \ 1800 /link $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1801 1802testloadext.lo: $(TOP)\src\test_loadext.c 1803 $(LTCOMPILE) $(NO_WARN) -c $(TOP)\src\test_loadext.c 1804 1805testloadext.dll: testloadext.lo 1806 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /OUT:$@ testloadext.lo 1807 1808showdb.exe: $(TOP)\tool\showdb.c $(SQLITE3C) 1809 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1810 $(TOP)\tool\showdb.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1811 1812showstat4.exe: $(TOP)\tool\showstat4.c $(SQLITE3C) 1813 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1814 $(TOP)\tool\showstat4.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1815 1816showjournal.exe: $(TOP)\tool\showjournal.c $(SQLITE3C) 1817 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1818 $(TOP)\tool\showjournal.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1819 1820showwal.exe: $(TOP)\tool\showwal.c $(SQLITE3C) 1821 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1822 $(TOP)\tool\showwal.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1823 1824fts3view.exe: $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) 1825 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1826 $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1827 1828rollback-test.exe: $(TOP)\tool\rollback-test.c $(SQLITE3C) 1829 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1830 $(TOP)\tool\rollback-test.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1831 1832LogEst.exe: $(TOP)\tool\logest.c sqlite3.h 1833 $(LTLINK) $(NO_WARN) -Fe$@ $(TOP)\tool\LogEst.c /link $(LDFLAGS) $(LTLINKOPTS) 1834 1835wordcount.exe: $(TOP)\test\wordcount.c $(SQLITE3C) 1836 $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1837 $(TOP)\test\wordcount.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1838 1839speedtest1.exe: $(TOP)\test\speedtest1.c $(SQLITE3C) 1840 $(LTLINK) $(NO_WARN) -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ 1841 $(TOP)\test\speedtest1.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) 1842 1843rbu.exe: $(TOP)\ext\rbu\rbu.c $(TOP)\ext\rbu\sqlite3rbu.c $(SQLITE3C) 1844 $(LTLINK) $(NO_WARN) -DSQLITE_ENABLE_RBU -Fe$@ $(TOP)\ext\rbu\rbu.c $(SQLITE3C) \ 1845 /link $(LDFLAGS) $(LTLINKOPTS) 1846 1847clean: 1848 del /Q *.exp *.lo *.ilk *.lib *.obj *.ncb *.pdb *.sdf *.suo 2>NUL 1849 del /Q *.bsc *.cod *.da *.bb *.bbg gmon.out 2>NUL 1850 del /Q sqlite3.h opcodes.c opcodes.h 2>NUL 1851 del /Q lemon.* lempar.c parse.* 2>NUL 1852 del /Q mkkeywordhash.* keywordhash.h 2>NUL 1853 del /Q notasharedlib.* 2>NUL 1854 -rmdir /Q/S .deps 2>NUL 1855 -rmdir /Q/S .libs 2>NUL 1856 -rmdir /Q/S quota2a 2>NUL 1857 -rmdir /Q/S quota2b 2>NUL 1858 -rmdir /Q/S quota2c 2>NUL 1859 -rmdir /Q/S tsrc 2>NUL 1860 del /Q .target_source 2>NUL 1861 del /Q tclsqlite3.exe 2>NUL 1862 del /Q testloadext.dll 2>NUL 1863 del /Q testfixture.exe test.db 2>NUL 1864 del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe 2>NUL 1865 del /Q showjournal.exe showstat4.exe showwal.exe speedtest1.exe 2>NUL 1866 del /Q mptester.exe wordcount.exe 2>NUL 1867 del /Q sqlite3.exe sqlite3.dll sqlite3.def 2>NUL 1868 del /Q sqlite3.c sqlite3-*.c 2>NUL 1869 del /Q sqlite3rc.h 2>NUL 1870 del /Q shell.c sqlite3ext.h 2>NUL 1871 del /Q sqlite3_analyzer.exe sqlite3_analyzer.c 2>NUL 1872 del /Q sqlite-*-output.vsix 2>NUL 1873 del /Q fuzzershell.exe fuzzcheck.exe sqldiff.exe 2>NUL 1874 del /Q fts5.* fts5parse.* 2>NUL 1875 1876# Dynamic link library section. 1877# 1878dll: sqlite3.dll 1879 1880sqlite3.def: libsqlite3.lib 1881 echo EXPORTS > sqlite3.def 1882 dumpbin /all libsqlite3.lib \ 1883 | $(TCLSH_CMD) $(TOP)\tool\replace.tcl include "^\s+1 _?(sqlite3_.*)$$" \1 \ 1884 | sort >> sqlite3.def 1885 1886sqlite3.dll: $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP) 1887 $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL $(CORE_LINK_OPTS) /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) 1888