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