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