/ Hex Artifact Content
Login

Artifact 7a909aa9b538138a21c0626e3ffc4b1f4519f50e:


0000: 23 23 23 23 20 44 4f 20 4e 4f 54 20 45 44 49 54  #### DO NOT EDIT
0010: 20 23 23 23 23 0a 23 20 54 68 69 73 20 6d 61 6b   ####.# This mak
0020: 65 66 69 6c 65 20 69 73 20 61 75 74 6f 6d 61 74  efile is automat
0030: 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64  ically generated
0040: 20 66 72 6f 6d 20 74 68 65 20 4d 61 6b 65 66 69   from the Makefi
0050: 6c 65 2e 6d 73 63 20 61 74 0a 23 20 74 68 65 20  le.msc at.# the 
0060: 72 6f 6f 74 20 6f 66 20 74 68 65 20 63 61 6e 6f  root of the cano
0070: 6e 69 63 61 6c 20 53 51 4c 69 74 65 20 73 6f 75  nical SQLite sou
0080: 72 63 65 20 74 72 65 65 20 28 6e 6f 74 20 74 68  rce tree (not th
0090: 65 0a 23 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e  e.# amalgamation
00a0: 20 74 61 72 62 61 6c 6c 29 20 75 73 69 6e 67 20   tarball) using 
00b0: 74 68 65 20 74 6f 6f 6c 2f 6d 6b 6d 73 76 63 6d  the tool/mkmsvcm
00c0: 69 6e 2e 74 63 6c 0a 23 20 73 63 72 69 70 74 2e  in.tcl.# script.
00d0: 0a 23 0a 0a 23 0a 23 20 6e 6d 61 6b 65 20 4d 61  .#..#.# nmake Ma
00e0: 6b 65 66 69 6c 65 20 66 6f 72 20 53 51 4c 69 74  kefile for SQLit
00f0: 65 0a 23 0a 23 23 23 23 23 23 23 23 23 23 23 23  e.#.############
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0140: 23 23 23 0a 23 23 23 23 23 23 23 23 23 23 23 23  ###.############
0150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0160: 23 23 20 53 54 41 52 54 20 4f 46 20 4f 50 54 49  ## START OF OPTI
0170: 4f 4e 53 20 23 23 23 23 23 23 23 23 23 23 23 23  ONS ############
0180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0190: 23 23 23 0a 23 23 23 23 23 23 23 23 23 23 23 23  ###.############
01a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01e0: 23 23 23 0a 0a 23 20 54 68 65 20 74 6f 70 6c 65  ###..# The tople
01f0: 76 65 6c 20 64 69 72 65 63 74 6f 72 79 20 6f 66  vel directory of
0200: 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65 65   the source tree
0210: 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64  .  This is the d
0220: 69 72 65 63 74 6f 72 79 0a 23 20 74 68 61 74 20  irectory.# that 
0230: 63 6f 6e 74 61 69 6e 73 20 74 68 69 73 20 22 4d  contains this "M
0240: 61 6b 65 66 69 6c 65 2e 6d 73 63 22 2e 0a 23 0a  akefile.msc"..#.
0250: 54 4f 50 20 3d 20 2e 0a 0a 0a 23 20 53 65 74 20  TOP = ....# Set 
0260: 74 68 69 73 20 6e 6f 6e 2d 30 20 74 6f 20 65 6e  this non-0 to en
0270: 61 62 6c 65 20 66 75 6c 6c 20 77 61 72 6e 69 6e  able full warnin
0280: 67 73 20 28 2d 57 34 2c 20 65 74 63 29 20 77 68  gs (-W4, etc) wh
0290: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 2e 0a 23 0a  en compiling..#.
02a0: 21 49 46 4e 44 45 46 20 55 53 45 5f 46 55 4c 4c  !IFNDEF USE_FULL
02b0: 57 41 52 4e 0a 55 53 45 5f 46 55 4c 4c 57 41 52  WARN.USE_FULLWAR
02c0: 4e 20 3d 20 30 0a 21 45 4e 44 49 46 0a 0a 23 20  N = 0.!ENDIF..# 
02d0: 53 65 74 20 74 68 69 73 20 6e 6f 6e 2d 30 20 74  Set this non-0 t
02e0: 6f 20 65 6e 61 62 6c 65 20 66 75 6c 6c 20 72 75  o enable full ru
02f0: 6e 74 69 6d 65 20 65 72 72 6f 72 20 63 68 65 63  ntime error chec
0300: 6b 73 20 28 2d 52 54 43 31 2c 20 65 74 63 29 2e  ks (-RTC1, etc).
0310: 20 20 54 68 69 73 0a 23 20 68 61 73 20 6e 6f 20    This.# has no 
0320: 65 66 66 65 63 74 20 69 66 20 28 61 6e 79 29 20  effect if (any) 
0330: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 61 72  optimizations ar
0340: 65 20 65 6e 61 62 6c 65 64 2e 0a 23 0a 21 49 46  e enabled..#.!IF
0350: 4e 44 45 46 20 55 53 45 5f 52 55 4e 54 49 4d 45  NDEF USE_RUNTIME
0360: 5f 43 48 45 43 4b 53 0a 55 53 45 5f 52 55 4e 54  _CHECKS.USE_RUNT
0370: 49 4d 45 5f 43 48 45 43 4b 53 20 3d 20 30 0a 21  IME_CHECKS = 0.!
0380: 45 4e 44 49 46 0a 0a 23 20 53 65 74 20 74 68 69  ENDIF..# Set thi
0390: 73 20 6e 6f 6e 2d 30 20 74 6f 20 75 73 65 20 22  s non-0 to use "
03a0: 73 74 64 63 61 6c 6c 22 20 63 61 6c 6c 69 6e 67  stdcall" calling
03b0: 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 66 6f 72 20   convention for 
03c0: 74 68 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  the core library
03d0: 0a 23 20 61 6e 64 20 73 68 65 6c 6c 20 65 78 65  .# and shell exe
03e0: 63 75 74 61 62 6c 65 2e 0a 23 0a 21 49 46 4e 44  cutable..#.!IFND
03f0: 45 46 20 55 53 45 5f 53 54 44 43 41 4c 4c 0a 55  EF USE_STDCALL.U
0400: 53 45 5f 53 54 44 43 41 4c 4c 20 3d 20 30 0a 21  SE_STDCALL = 0.!
0410: 45 4e 44 49 46 0a 0a 23 20 53 65 74 20 74 68 69  ENDIF..# Set thi
0420: 73 20 6e 6f 6e 2d 30 20 74 6f 20 68 61 76 65 20  s non-0 to have 
0430: 74 68 65 20 73 68 65 6c 6c 20 65 78 65 63 75 74  the shell execut
0440: 61 62 6c 65 20 6c 69 6e 6b 20 61 67 61 69 6e 73  able link agains
0450: 74 20 74 68 65 20 63 6f 72 65 20 64 79 6e 61 6d  t the core dynam
0460: 69 63 0a 23 20 6c 69 6e 6b 20 6c 69 62 72 61 72  ic.# link librar
0470: 79 2e 0a 23 0a 21 49 46 4e 44 45 46 20 44 59 4e  y..#.!IFNDEF DYN
0480: 41 4d 49 43 5f 53 48 45 4c 4c 0a 44 59 4e 41 4d  AMIC_SHELL.DYNAM
0490: 49 43 5f 53 48 45 4c 4c 20 3d 20 30 0a 21 45 4e  IC_SHELL = 0.!EN
04a0: 44 49 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20  DIF..# Set this 
04b0: 6e 6f 6e 2d 30 20 74 6f 20 65 6e 61 62 6c 65 20  non-0 to enable 
04c0: 65 78 74 72 61 20 63 6f 64 65 20 74 68 61 74 20  extra code that 
04d0: 61 74 74 65 6d 70 74 73 20 74 6f 20 64 65 74 65  attempts to dete
04e0: 63 74 20 6d 69 73 75 73 65 20 6f 66 20 74 68 65  ct misuse of the
04f0: 0a 23 20 53 51 4c 69 74 65 20 41 50 49 2e 0a 23  .# SQLite API..#
0500: 0a 21 49 46 4e 44 45 46 20 41 50 49 5f 41 52 4d  .!IFNDEF API_ARM
0510: 4f 52 0a 41 50 49 5f 41 52 4d 4f 52 20 3d 20 30  OR.API_ARMOR = 0
0520: 0a 21 45 4e 44 49 46 0a 0a 23 20 49 66 20 6e 65  .!ENDIF..# If ne
0530: 63 65 73 73 61 72 79 2c 20 63 72 65 61 74 65 20  cessary, create 
0540: 61 20 6c 69 73 74 20 6f 66 20 68 61 72 6d 6c 65  a list of harmle
0550: 73 73 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e  ss compiler warn
0560: 69 6e 67 73 20 74 6f 20 64 69 73 61 62 6c 65 20  ings to disable 
0570: 77 68 65 6e 0a 23 20 63 6f 6d 70 69 6c 69 6e 67  when.# compiling
0580: 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 6f 6f   the various too
0590: 6c 73 2e 20 20 46 6f 72 20 74 68 65 20 53 51 4c  ls.  For the SQL
05a0: 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  ite source code 
05b0: 69 74 73 65 6c 66 2c 20 77 61 72 6e 69 6e 67 73  itself, warnings
05c0: 2c 0a 23 20 69 66 20 61 6e 79 2c 20 77 69 6c 6c  ,.# if any, will
05d0: 20 62 65 20 64 69 73 61 62 6c 65 64 20 66 72 6f   be disabled fro
05e0: 6d 20 77 69 74 68 69 6e 20 69 74 2e 0a 23 0a 21  m within it..#.!
05f0: 49 46 4e 44 45 46 20 4e 4f 5f 57 41 52 4e 0a 21  IFNDEF NO_WARN.!
0600: 49 46 20 24 28 55 53 45 5f 46 55 4c 4c 57 41 52  IF $(USE_FULLWAR
0610: 4e 29 21 3d 30 0a 4e 4f 5f 57 41 52 4e 20 3d 20  N)!=0.NO_WARN = 
0620: 2d 77 64 34 30 35 34 20 2d 77 64 34 30 35 35 20  -wd4054 -wd4055 
0630: 2d 77 64 34 31 30 30 20 2d 77 64 34 31 32 37 20  -wd4100 -wd4127 
0640: 2d 77 64 34 31 33 30 20 2d 77 64 34 31 35 32 20  -wd4130 -wd4152 
0650: 2d 77 64 34 31 38 39 20 2d 77 64 34 32 30 36 0a  -wd4189 -wd4206.
0660: 4e 4f 5f 57 41 52 4e 20 3d 20 24 28 4e 4f 5f 57  NO_WARN = $(NO_W
0670: 41 52 4e 29 20 2d 77 64 34 32 31 30 20 2d 77 64  ARN) -wd4210 -wd
0680: 34 32 33 32 20 2d 77 64 34 33 30 35 20 2d 77 64  4232 -wd4305 -wd
0690: 34 33 30 36 20 2d 77 64 34 37 30 32 20 2d 77 64  4306 -wd4702 -wd
06a0: 34 37 30 36 0a 21 45 4e 44 49 46 0a 21 45 4e 44  4706.!ENDIF.!END
06b0: 49 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20 6e  IF..# Set this n
06c0: 6f 6e 2d 30 20 74 6f 20 75 73 65 20 74 68 65 20  on-0 to use the 
06d0: 6c 69 62 72 61 72 79 20 70 61 74 68 73 20 61 6e  library paths an
06e0: 64 20 6f 74 68 65 72 20 6f 70 74 69 6f 6e 73 20  d other options 
06f0: 6e 65 63 65 73 73 61 72 79 20 66 6f 72 0a 23 20  necessary for.# 
0700: 57 69 6e 64 6f 77 73 20 50 68 6f 6e 65 20 38 2e  Windows Phone 8.
0710: 31 2e 0a 23 0a 21 49 46 4e 44 45 46 20 55 53 45  1..#.!IFNDEF USE
0720: 5f 57 50 38 31 5f 4f 50 54 53 0a 55 53 45 5f 57  _WP81_OPTS.USE_W
0730: 50 38 31 5f 4f 50 54 53 20 3d 20 30 0a 21 45 4e  P81_OPTS = 0.!EN
0740: 44 49 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20  DIF..# Set this 
0750: 6e 6f 6e 2d 30 20 74 6f 20 73 70 6c 69 74 20 74  non-0 to split t
0760: 68 65 20 53 51 4c 69 74 65 20 61 6d 61 6c 67 61  he SQLite amalga
0770: 6d 61 74 69 6f 6e 20 66 69 6c 65 20 69 6e 74 6f  mation file into
0780: 20 63 68 75 6e 6b 73 20 74 6f 0a 23 20 62 65 20   chunks to.# be 
0790: 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69  used for debuggi
07a0: 6e 67 20 77 69 74 68 20 56 69 73 75 61 6c 20 53  ng with Visual S
07b0: 74 75 64 69 6f 2e 0a 23 0a 21 49 46 4e 44 45 46  tudio..#.!IFNDEF
07c0: 20 53 50 4c 49 54 5f 41 4d 41 4c 47 41 4d 41 54   SPLIT_AMALGAMAT
07d0: 49 4f 4e 0a 53 50 4c 49 54 5f 41 4d 41 4c 47 41  ION.SPLIT_AMALGA
07e0: 4d 41 54 49 4f 4e 20 3d 20 30 0a 21 45 4e 44 49  MATION = 0.!ENDI
07f0: 46 0a 0a 0a 23 20 53 65 74 20 74 68 69 73 20 6e  F...# Set this n
0800: 6f 6e 2d 30 20 74 6f 20 64 79 6e 61 6d 69 63 61  on-0 to dynamica
0810: 6c 6c 79 20 6c 69 6e 6b 20 74 6f 20 74 68 65 20  lly link to the 
0820: 4d 53 56 43 20 72 75 6e 74 69 6d 65 20 6c 69 62  MSVC runtime lib
0830: 72 61 72 79 2e 0a 23 0a 21 49 46 4e 44 45 46 20  rary..#.!IFNDEF 
0840: 55 53 45 5f 43 52 54 5f 44 4c 4c 0a 55 53 45 5f  USE_CRT_DLL.USE_
0850: 43 52 54 5f 44 4c 4c 20 3d 20 30 0a 21 45 4e 44  CRT_DLL = 0.!END
0860: 49 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20 6e  IF..# Set this n
0870: 6f 6e 2d 30 20 74 6f 20 6c 69 6e 6b 20 74 6f 20  on-0 to link to 
0880: 74 68 65 20 52 50 43 52 54 34 20 6c 69 62 72 61  the RPCRT4 libra
0890: 72 79 2e 0a 23 0a 21 49 46 4e 44 45 46 20 55 53  ry..#.!IFNDEF US
08a0: 45 5f 52 50 43 52 54 34 5f 4c 49 42 0a 55 53 45  E_RPCRT4_LIB.USE
08b0: 5f 52 50 43 52 54 34 5f 4c 49 42 20 3d 20 30 0a  _RPCRT4_LIB = 0.
08c0: 21 45 4e 44 49 46 0a 0a 23 20 53 65 74 20 74 68  !ENDIF..# Set th
08d0: 69 73 20 6e 6f 6e 2d 30 20 74 6f 20 67 65 6e 65  is non-0 to gene
08e0: 72 61 74 65 20 61 73 73 65 6d 62 6c 79 20 63 6f  rate assembly co
08f0: 64 65 20 6c 69 73 74 69 6e 67 73 20 66 6f 72 20  de listings for 
0900: 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 0a  the source code.
0910: 23 20 66 69 6c 65 73 2e 0a 23 0a 21 49 46 4e 44  # files..#.!IFND
0920: 45 46 20 55 53 45 5f 4c 49 53 54 49 4e 47 53 0a  EF USE_LISTINGS.
0930: 55 53 45 5f 4c 49 53 54 49 4e 47 53 20 3d 20 30  USE_LISTINGS = 0
0940: 0a 21 45 4e 44 49 46 0a 0a 23 20 53 65 74 20 74  .!ENDIF..# Set t
0950: 68 69 73 20 6e 6f 6e 2d 30 20 74 6f 20 61 74 74  his non-0 to att
0960: 65 6d 70 74 20 73 65 74 74 69 6e 67 20 74 68 65  empt setting the
0970: 20 6e 61 74 69 76 65 20 63 6f 6d 70 69 6c 65 72   native compiler
0980: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 23   automatically.#
0990: 20 66 6f 72 20 63 72 6f 73 73 2d 63 6f 6d 70 69   for cross-compi
09a0: 6c 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64  ling the command
09b0: 20 6c 69 6e 65 20 74 6f 6f 6c 73 20 6e 65 65 64   line tools need
09c0: 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f  ed during the co
09d0: 6d 70 69 6c 61 74 69 6f 6e 0a 23 20 70 72 6f 63  mpilation.# proc
09e0: 65 73 73 2e 0a 23 0a 21 49 46 4e 44 45 46 20 58  ess..#.!IFNDEF X
09f0: 43 4f 4d 50 49 4c 45 0a 58 43 4f 4d 50 49 4c 45  COMPILE.XCOMPILE
0a00: 20 3d 20 30 0a 21 45 4e 44 49 46 0a 0a 23 20 53   = 0.!ENDIF..# S
0a10: 65 74 20 74 68 69 73 20 6e 6f 6e 2d 30 20 74 6f  et this non-0 to
0a20: 20 75 73 65 20 74 68 65 20 6e 61 74 69 76 65 20   use the native 
0a30: 6c 69 62 72 61 72 69 65 73 20 70 61 74 68 73 20  libraries paths 
0a40: 66 6f 72 20 63 72 6f 73 73 2d 63 6f 6d 70 69 6c  for cross-compil
0a50: 69 6e 67 0a 23 20 74 68 65 20 63 6f 6d 6d 61 6e  ing.# the comman
0a60: 64 20 6c 69 6e 65 20 74 6f 6f 6c 73 20 6e 65 65  d line tools nee
0a70: 64 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 63  ded during the c
0a80: 6f 6d 70 69 6c 61 74 69 6f 6e 20 70 72 6f 63 65  ompilation proce
0a90: 73 73 2e 0a 23 0a 21 49 46 4e 44 45 46 20 55 53  ss..#.!IFNDEF US
0aa0: 45 5f 4e 41 54 49 56 45 5f 4c 49 42 50 41 54 48  E_NATIVE_LIBPATH
0ab0: 53 0a 55 53 45 5f 4e 41 54 49 56 45 5f 4c 49 42  S.USE_NATIVE_LIB
0ac0: 50 41 54 48 53 20 3d 20 30 0a 21 45 4e 44 49 46  PATHS = 0.!ENDIF
0ad0: 0a 0a 23 20 53 65 74 20 74 68 69 73 20 30 20 74  ..# Set this 0 t
0ae0: 6f 20 73 6b 69 70 20 74 68 65 20 63 6f 6d 70 69  o skip the compi
0af0: 6c 69 6e 67 20 61 6e 64 20 65 6d 62 65 64 64 69  ling and embeddi
0b00: 6e 67 20 6f 66 20 76 65 72 73 69 6f 6e 20 72 65  ng of version re
0b10: 73 6f 75 72 63 65 73 2e 0a 23 0a 21 49 46 4e 44  sources..#.!IFND
0b20: 45 46 20 55 53 45 5f 52 43 0a 55 53 45 5f 52 43  EF USE_RC.USE_RC
0b30: 20 3d 20 31 0a 21 45 4e 44 49 46 0a 0a 23 20 53   = 1.!ENDIF..# S
0b40: 65 74 20 74 68 69 73 20 6e 6f 6e 2d 30 20 74 6f  et this non-0 to
0b50: 20 63 6f 6d 70 69 6c 65 20 62 69 6e 61 72 69 65   compile binarie
0b60: 73 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 74  s suitable for t
0b70: 68 65 20 57 69 6e 52 54 20 65 6e 76 69 72 6f 6e  he WinRT environ
0b80: 6d 65 6e 74 2e 0a 23 20 54 68 69 73 20 73 65 74  ment..# This set
0b90: 74 69 6e 67 20 64 6f 65 73 20 6e 6f 74 20 61 70  ting does not ap
0ba0: 70 6c 79 20 74 6f 20 61 6e 79 20 62 69 6e 61 72  ply to any binar
0bb0: 69 65 73 20 74 68 61 74 20 72 65 71 75 69 72 65  ies that require
0bc0: 20 54 63 6c 20 74 6f 20 6f 70 65 72 61 74 65 0a   Tcl to operate.
0bd0: 23 20 70 72 6f 70 65 72 6c 79 20 28 69 2e 65 2e  # properly (i.e.
0be0: 20 74 68 65 20 74 65 78 74 20 66 69 78 74 75 72   the text fixtur
0bf0: 65 2c 20 65 74 63 29 2e 0a 23 0a 21 49 46 4e 44  e, etc)..#.!IFND
0c00: 45 46 20 46 4f 52 5f 57 49 4e 52 54 0a 46 4f 52  EF FOR_WINRT.FOR
0c10: 5f 57 49 4e 52 54 20 3d 20 30 0a 21 45 4e 44 49  _WINRT = 0.!ENDI
0c20: 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20 6e 6f  F..# Set this no
0c30: 6e 2d 30 20 74 6f 20 63 6f 6d 70 69 6c 65 20 62  n-0 to compile b
0c40: 69 6e 61 72 69 65 73 20 73 75 69 74 61 62 6c 65  inaries suitable
0c50: 20 66 6f 72 20 74 68 65 20 55 57 50 20 65 6e 76   for the UWP env
0c60: 69 72 6f 6e 6d 65 6e 74 2e 0a 23 20 54 68 69 73  ironment..# This
0c70: 20 73 65 74 74 69 6e 67 20 64 6f 65 73 20 6e 6f   setting does no
0c80: 74 20 61 70 70 6c 79 20 74 6f 20 61 6e 79 20 62  t apply to any b
0c90: 69 6e 61 72 69 65 73 20 74 68 61 74 20 72 65 71  inaries that req
0ca0: 75 69 72 65 20 54 63 6c 20 74 6f 20 6f 70 65 72  uire Tcl to oper
0cb0: 61 74 65 0a 23 20 70 72 6f 70 65 72 6c 79 20 28  ate.# properly (
0cc0: 69 2e 65 2e 20 74 68 65 20 74 65 78 74 20 66 69  i.e. the text fi
0cd0: 78 74 75 72 65 2c 20 65 74 63 29 2e 0a 23 0a 21  xture, etc)..#.!
0ce0: 49 46 4e 44 45 46 20 46 4f 52 5f 55 57 50 0a 46  IFNDEF FOR_UWP.F
0cf0: 4f 52 5f 55 57 50 20 3d 20 30 0a 21 45 4e 44 49  OR_UWP = 0.!ENDI
0d00: 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20 6e 6f  F..# Set this no
0d10: 6e 2d 30 20 74 6f 20 63 6f 6d 70 69 6c 65 20 62  n-0 to compile b
0d20: 69 6e 61 72 69 65 73 20 73 75 69 74 61 62 6c 65  inaries suitable
0d30: 20 66 6f 72 20 74 68 65 20 57 69 6e 64 6f 77 73   for the Windows
0d40: 20 31 30 20 70 6c 61 74 66 6f 72 6d 2e 0a 23 0a   10 platform..#.
0d50: 21 49 46 4e 44 45 46 20 46 4f 52 5f 57 49 4e 31  !IFNDEF FOR_WIN1
0d60: 30 0a 46 4f 52 5f 57 49 4e 31 30 20 3d 20 30 0a  0.FOR_WIN10 = 0.
0d70: 21 45 4e 44 49 46 0a 0a 0a 23 20 53 65 74 20 74  !ENDIF...# Set t
0d80: 68 69 73 20 74 6f 20 6e 6f 6e 2d 30 20 74 6f 20  his to non-0 to 
0d90: 63 72 65 61 74 65 20 61 6e 64 20 75 73 65 20 50  create and use P
0da0: 44 42 73 2e 0a 23 0a 21 49 46 4e 44 45 46 20 53  DBs..#.!IFNDEF S
0db0: 59 4d 42 4f 4c 53 0a 53 59 4d 42 4f 4c 53 20 3d  YMBOLS.SYMBOLS =
0dc0: 20 31 0a 21 45 4e 44 49 46 0a 0a 23 20 53 65 74   1.!ENDIF..# Set
0dd0: 20 74 68 69 73 20 74 6f 20 6e 6f 6e 2d 30 20 74   this to non-0 t
0de0: 6f 20 75 73 65 20 74 68 65 20 53 51 4c 69 74 65  o use the SQLite
0df0: 20 64 65 62 75 67 67 69 6e 67 20 68 65 61 70 20   debugging heap 
0e00: 73 75 62 73 79 73 74 65 6d 2e 0a 23 0a 21 49 46  subsystem..#.!IF
0e10: 4e 44 45 46 20 4d 45 4d 44 45 42 55 47 0a 4d 45  NDEF MEMDEBUG.ME
0e20: 4d 44 45 42 55 47 20 3d 20 30 0a 21 45 4e 44 49  MDEBUG = 0.!ENDI
0e30: 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20 74 6f  F..# Set this to
0e40: 20 6e 6f 6e 2d 30 20 74 6f 20 75 73 65 20 74 68   non-0 to use th
0e50: 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 68  e Win32 native h
0e60: 65 61 70 20 73 75 62 73 79 73 74 65 6d 2e 0a 23  eap subsystem..#
0e70: 0a 21 49 46 4e 44 45 46 20 57 49 4e 33 32 48 45  .!IFNDEF WIN32HE
0e80: 41 50 0a 57 49 4e 33 32 48 45 41 50 20 3d 20 30  AP.WIN32HEAP = 0
0e90: 0a 21 45 4e 44 49 46 0a 0a 23 20 53 65 74 20 74  .!ENDIF..# Set t
0ea0: 68 69 73 20 74 6f 20 6e 6f 6e 2d 30 20 74 6f 20  his to non-0 to 
0eb0: 65 6e 61 62 6c 65 20 4f 53 54 52 41 43 45 28 29  enable OSTRACE()
0ec0: 20 6d 61 63 72 6f 73 2c 20 77 68 69 63 68 20 63   macros, which c
0ed0: 61 6e 20 62 65 20 75 73 65 66 75 6c 20 77 68 65  an be useful whe
0ee0: 6e 0a 23 20 64 65 62 75 67 67 69 6e 67 2e 0a 23  n.# debugging..#
0ef0: 0a 21 49 46 4e 44 45 46 20 4f 53 54 52 41 43 45  .!IFNDEF OSTRACE
0f00: 0a 4f 53 54 52 41 43 45 20 3d 20 30 0a 21 45 4e  .OSTRACE = 0.!EN
0f10: 44 49 46 0a 0a 23 20 53 65 74 20 74 68 69 73 20  DIF..# Set this 
0f20: 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  to one of the fo
0f30: 6c 6c 6f 77 69 6e 67 20 76 61 6c 75 65 73 20 74  llowing values t
0f40: 6f 20 65 6e 61 62 6c 65 20 76 61 72 69 6f 75 73  o enable various
0f50: 20 64 65 62 75 67 67 69 6e 67 0a 23 20 66 65 61   debugging.# fea
0f60: 74 75 72 65 73 2e 20 20 45 61 63 68 20 6c 65 76  tures.  Each lev
0f70: 65 6c 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20  el includes the 
0f80: 64 65 62 75 67 67 69 6e 67 20 6f 70 74 69 6f 6e  debugging option
0f90: 73 20 66 72 6f 6d 20 74 68 65 20 70 72 65 76 69  s from the previ
0fa0: 6f 75 73 0a 23 20 6c 65 76 65 6c 73 2e 20 20 43  ous.# levels.  C
0fb0: 75 72 72 65 6e 74 6c 79 2c 20 74 68 65 20 72 65  urrently, the re
0fc0: 63 6f 67 6e 69 7a 65 64 20 76 61 6c 75 65 73 20  cognized values 
0fd0: 66 6f 72 20 44 45 42 55 47 20 61 72 65 3a 0a 23  for DEBUG are:.#
0fe0: 0a 23 20 30 20 3d 3d 20 4e 44 45 42 55 47 3a 20  .# 0 == NDEBUG: 
0ff0: 44 69 73 61 62 6c 65 73 20 61 73 73 65 72 74 28  Disables assert(
1000: 29 20 61 6e 64 20 6f 74 68 65 72 20 72 75 6e 74  ) and other runt
1010: 69 6d 65 20 64 69 61 67 6e 6f 73 74 69 63 73 2e  ime diagnostics.
1020: 0a 23 20 31 20 3d 3d 20 53 51 4c 49 54 45 5f 45  .# 1 == SQLITE_E
1030: 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d 4f 52 3a  NABLE_API_ARMOR:
1040: 20 65 78 74 72 61 20 61 74 74 65 6d 70 74 73 20   extra attempts 
1050: 74 6f 20 64 65 74 65 63 74 20 6d 69 73 75 73 65  to detect misuse
1060: 20 6f 66 20 74 68 65 20 41 50 49 2e 0a 23 20 32   of the API..# 2
1070: 20 3d 3d 20 44 69 73 61 62 6c 65 73 20 4e 44 45   == Disables NDE
1080: 42 55 47 20 61 6e 64 20 61 6c 6c 20 6f 70 74 69  BUG and all opti
1090: 6d 69 7a 61 74 69 6f 6e 73 20 61 6e 64 20 74 68  mizations and th
10a0: 65 6e 20 65 6e 61 62 6c 65 73 20 50 44 42 73 2e  en enables PDBs.
10b0: 0a 23 20 33 20 3d 3d 20 53 51 4c 49 54 45 5f 44  .# 3 == SQLITE_D
10c0: 45 42 55 47 3a 20 45 6e 61 62 6c 65 73 20 76 61  EBUG: Enables va
10d0: 72 69 6f 75 73 20 64 69 61 67 6e 6f 73 74 69 63  rious diagnostic
10e0: 73 20 6d 65 73 73 61 67 65 73 20 61 6e 64 20 63  s messages and c
10f0: 6f 64 65 2e 0a 23 20 34 20 3d 3d 20 53 51 4c 49  ode..# 4 == SQLI
1100: 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f  TE_WIN32_MALLOC_
1110: 56 41 4c 49 44 41 54 45 3a 20 56 61 6c 69 64 61  VALIDATE: Valida
1120: 74 65 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74  te the Win32 nat
1130: 69 76 65 20 68 65 61 70 20 70 65 72 20 63 61 6c  ive heap per cal
1140: 6c 2e 0a 23 20 35 20 3d 3d 20 53 51 4c 49 54 45  l..# 5 == SQLITE
1150: 5f 44 45 42 55 47 5f 4f 53 5f 54 52 41 43 45 3a  _DEBUG_OS_TRACE:
1160: 20 45 6e 61 62 6c 65 73 20 6f 75 74 70 75 74 20   Enables output 
1170: 66 72 6f 6d 20 74 68 65 20 4f 53 54 52 41 43 45  from the OSTRACE
1180: 28 29 20 6d 61 63 72 6f 73 2e 0a 23 20 36 20 3d  () macros..# 6 =
1190: 3d 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  = SQLITE_ENABLE_
11a0: 49 4f 54 52 41 43 45 3a 20 45 6e 61 62 6c 65 73  IOTRACE: Enables
11b0: 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 74 68 65   output from the
11c0: 20 49 4f 54 52 41 43 45 28 29 20 6d 61 63 72 6f   IOTRACE() macro
11d0: 73 2e 0a 23 0a 21 49 46 4e 44 45 46 20 44 45 42  s..#.!IFNDEF DEB
11e0: 55 47 0a 44 45 42 55 47 20 3d 20 30 0a 21 45 4e  UG.DEBUG = 0.!EN
11f0: 44 49 46 0a 0a 23 20 45 6e 61 62 6c 65 20 75 73  DIF..# Enable us
1200: 65 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 63  e of available c
1210: 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6d 69 7a 61  ompiler optimiza
1220: 74 69 6f 6e 73 3f 20 20 4e 6f 72 6d 61 6c 6c 79  tions?  Normally
1230: 2c 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65  , this should be
1240: 0a 23 20 6e 6f 6e 2d 7a 65 72 6f 2e 20 20 53 65  .# non-zero.  Se
1250: 74 74 69 6e 67 20 74 68 69 73 20 74 6f 20 7a 65  tting this to ze
1260: 72 6f 2c 20 74 68 75 73 20 64 69 73 61 62 6c 69  ro, thus disabli
1270: 6e 67 20 61 6c 6c 20 63 6f 6d 70 69 6c 65 72 20  ng all compiler 
1280: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2c 0a 23  optimizations,.#
1290: 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66   can be useful f
12a0: 6f 72 20 74 65 73 74 69 6e 67 2e 0a 23 0a 21 49  or testing..#.!I
12b0: 46 4e 44 45 46 20 4f 50 54 49 4d 49 5a 41 54 49  FNDEF OPTIMIZATI
12c0: 4f 4e 53 0a 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  ONS.OPTIMIZATION
12d0: 53 20 3d 20 32 0a 21 45 4e 44 49 46 0a 0a 23 20  S = 2.!ENDIF..# 
12e0: 53 65 74 20 74 68 69 73 20 74 6f 20 6e 6f 6e 2d  Set this to non-
12f0: 30 20 74 6f 20 65 6e 61 62 6c 65 20 73 75 70 70  0 to enable supp
1300: 6f 72 74 20 66 6f 72 20 74 68 65 20 73 65 73 73  ort for the sess
1310: 69 6f 6e 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 23  ion extension..#
1320: 0a 21 49 46 4e 44 45 46 20 53 45 53 53 49 4f 4e  .!IFNDEF SESSION
1330: 0a 53 45 53 53 49 4f 4e 20 3d 20 30 0a 21 45 4e  .SESSION = 0.!EN
1340: 44 49 46 0a 0a 23 20 53 65 74 20 74 68 65 20 73  DIF..# Set the s
1350: 6f 75 72 63 65 20 63 6f 64 65 20 66 69 6c 65 20  ource code file 
1360: 74 6f 20 62 65 20 75 73 65 64 20 62 79 20 65 78  to be used by ex
1370: 65 63 75 74 61 62 6c 65 73 20 61 6e 64 20 6c 69  ecutables and li
1380: 62 72 61 72 69 65 73 20 77 68 65 6e 0a 23 20 74  braries when.# t
1390: 68 65 79 20 6e 65 65 64 20 74 68 65 20 61 6d 61  hey need the ama
13a0: 6c 67 61 6d 61 74 69 6f 6e 2e 0a 23 0a 21 49 46  lgamation..#.!IF
13b0: 4e 44 45 46 20 53 51 4c 49 54 45 33 43 0a 21 49  NDEF SQLITE3C.!I
13c0: 46 20 24 28 53 50 4c 49 54 5f 41 4d 41 4c 47 41  F $(SPLIT_AMALGA
13d0: 4d 41 54 49 4f 4e 29 21 3d 30 0a 53 51 4c 49 54  MATION)!=0.SQLIT
13e0: 45 33 43 20 3d 20 73 71 6c 69 74 65 33 2d 61 6c  E3C = sqlite3-al
13f0: 6c 2e 63 0a 21 45 4c 53 45 0a 53 51 4c 49 54 45  l.c.!ELSE.SQLITE
1400: 33 43 20 3d 20 73 71 6c 69 74 65 33 2e 63 0a 21  3C = sqlite3.c.!
1410: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23 20  ENDIF.!ENDIF..# 
1420: 53 65 74 20 74 68 65 20 69 6e 63 6c 75 64 65 20  Set the include 
1430: 63 6f 64 65 20 66 69 6c 65 20 74 6f 20 62 65 20  code file to be 
1440: 75 73 65 64 20 62 79 20 65 78 65 63 75 74 61 62  used by executab
1450: 6c 65 73 20 61 6e 64 20 6c 69 62 72 61 72 69 65  les and librarie
1460: 73 20 77 68 65 6e 0a 23 20 74 68 65 79 20 6e 65  s when.# they ne
1470: 65 64 20 53 51 4c 69 74 65 2e 0a 23 0a 21 49 46  ed SQLite..#.!IF
1480: 4e 44 45 46 20 53 51 4c 49 54 45 33 48 0a 53 51  NDEF SQLITE3H.SQ
1490: 4c 49 54 45 33 48 20 3d 20 73 71 6c 69 74 65 33  LITE3H = sqlite3
14a0: 2e 68 0a 21 45 4e 44 49 46 0a 0a 23 20 54 68 69  .h.!ENDIF..# Thi
14b0: 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20 74 6f  s is the name to
14c0: 20 75 73 65 20 66 6f 72 20 74 68 65 20 53 51 4c   use for the SQL
14d0: 69 74 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  ite dynamic link
14e0: 20 6c 69 62 72 61 72 79 20 28 44 4c 4c 29 2e 0a   library (DLL)..
14f0: 23 0a 21 49 46 4e 44 45 46 20 53 51 4c 49 54 45  #.!IFNDEF SQLITE
1500: 33 44 4c 4c 0a 21 49 46 20 24 28 46 4f 52 5f 57  3DLL.!IF $(FOR_W
1510: 49 4e 31 30 29 21 3d 30 0a 53 51 4c 49 54 45 33  IN10)!=0.SQLITE3
1520: 44 4c 4c 20 3d 20 77 69 6e 73 71 6c 69 74 65 33  DLL = winsqlite3
1530: 2e 64 6c 6c 0a 21 45 4c 53 45 0a 53 51 4c 49 54  .dll.!ELSE.SQLIT
1540: 45 33 44 4c 4c 20 3d 20 73 71 6c 69 74 65 33 2e  E3DLL = sqlite3.
1550: 64 6c 6c 0a 21 45 4e 44 49 46 0a 21 45 4e 44 49  dll.!ENDIF.!ENDI
1560: 46 0a 0a 23 20 54 68 69 73 20 69 73 20 74 68 65  F..# This is the
1570: 20 6e 61 6d 65 20 74 6f 20 75 73 65 20 66 6f 72   name to use for
1580: 20 74 68 65 20 53 51 4c 69 74 65 20 69 6d 70 6f   the SQLite impo
1590: 72 74 20 6c 69 62 72 61 72 79 20 28 4c 49 42 29  rt library (LIB)
15a0: 2e 0a 23 0a 21 49 46 4e 44 45 46 20 53 51 4c 49  ..#.!IFNDEF SQLI
15b0: 54 45 33 4c 49 42 0a 21 49 46 20 24 28 46 4f 52  TE3LIB.!IF $(FOR
15c0: 5f 57 49 4e 31 30 29 21 3d 30 0a 53 51 4c 49 54  _WIN10)!=0.SQLIT
15d0: 45 33 4c 49 42 20 3d 20 77 69 6e 73 71 6c 69 74  E3LIB = winsqlit
15e0: 65 33 2e 6c 69 62 0a 21 45 4c 53 45 0a 53 51 4c  e3.lib.!ELSE.SQL
15f0: 49 54 45 33 4c 49 42 20 3d 20 73 71 6c 69 74 65  ITE3LIB = sqlite
1600: 33 2e 6c 69 62 0a 21 45 4e 44 49 46 0a 21 45 4e  3.lib.!ENDIF.!EN
1610: 44 49 46 0a 0a 23 20 54 68 69 73 20 69 73 20 74  DIF..# This is t
1620: 68 65 20 6e 61 6d 65 20 74 6f 20 75 73 65 20 66  he name to use f
1630: 6f 72 20 74 68 65 20 53 51 4c 69 74 65 20 73 68  or the SQLite sh
1640: 65 6c 6c 20 65 78 65 63 75 74 61 62 6c 65 20 28  ell executable (
1650: 45 58 45 29 2e 0a 23 0a 21 49 46 4e 44 45 46 20  EXE)..#.!IFNDEF 
1660: 53 51 4c 49 54 45 33 45 58 45 0a 21 49 46 20 24  SQLITE3EXE.!IF $
1670: 28 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30 0a 53  (FOR_WIN10)!=0.S
1680: 51 4c 49 54 45 33 45 58 45 20 3d 20 77 69 6e 73  QLITE3EXE = wins
1690: 71 6c 69 74 65 33 73 68 65 6c 6c 2e 65 78 65 0a  qlite3shell.exe.
16a0: 21 45 4c 53 45 0a 53 51 4c 49 54 45 33 45 58 45  !ELSE.SQLITE3EXE
16b0: 20 3d 20 73 71 6c 69 74 65 33 2e 65 78 65 0a 21   = sqlite3.exe.!
16c0: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23 20  ENDIF.!ENDIF..# 
16d0: 54 68 69 73 20 69 73 20 74 68 65 20 61 72 67 75  This is the argu
16e0: 6d 65 6e 74 20 75 73 65 64 20 74 6f 20 73 65 74  ment used to set
16f0: 20 74 68 65 20 70 72 6f 67 72 61 6d 20 64 61 74   the program dat
1700: 61 62 61 73 65 20 28 50 44 42 29 20 66 69 6c 65  abase (PDB) file
1710: 20 66 6f 72 20 74 68 65 0a 23 20 53 51 4c 69 74   for the.# SQLit
1720: 65 20 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62  e shell executab
1730: 6c 65 20 28 45 58 45 29 2e 0a 23 0a 21 49 46 4e  le (EXE)..#.!IFN
1740: 44 45 46 20 53 51 4c 49 54 45 33 45 58 45 50 44  DEF SQLITE3EXEPD
1750: 42 0a 21 49 46 20 24 28 46 4f 52 5f 57 49 4e 31  B.!IF $(FOR_WIN1
1760: 30 29 21 3d 30 0a 53 51 4c 49 54 45 33 45 58 45  0)!=0.SQLITE3EXE
1770: 50 44 42 20 3d 0a 21 45 4c 53 45 0a 53 51 4c 49  PDB =.!ELSE.SQLI
1780: 54 45 33 45 58 45 50 44 42 20 3d 20 2f 70 64 62  TE3EXEPDB = /pdb
1790: 3a 73 71 6c 69 74 65 33 73 68 2e 70 64 62 0a 21  :sqlite3sh.pdb.!
17a0: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23 20  ENDIF.!ENDIF..# 
17b0: 54 68 65 73 65 20 61 72 65 20 74 68 65 20 22 73  These are the "s
17c0: 74 61 6e 64 61 72 64 22 20 53 51 4c 69 74 65 20  tandard" SQLite 
17d0: 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74 69  compilation opti
17e0: 6f 6e 73 20 75 73 65 64 20 77 68 65 6e 20 63 6f  ons used when co
17f0: 6d 70 69 6c 69 6e 67 20 66 6f 72 0a 23 20 74 68  mpiling for.# th
1800: 65 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f  e Windows platfo
1810: 72 6d 2e 0a 23 0a 21 49 46 4e 44 45 46 20 4f 50  rm..#.!IFNDEF OP
1820: 54 5f 46 45 41 54 55 52 45 5f 46 4c 41 47 53 0a  T_FEATURE_FLAGS.
1830: 4f 50 54 5f 46 45 41 54 55 52 45 5f 46 4c 41 47  OPT_FEATURE_FLAG
1840: 53 20 3d 20 24 28 4f 50 54 5f 46 45 41 54 55 52  S = $(OPT_FEATUR
1850: 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49 54  E_FLAGS) -DSQLIT
1860: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 3d 31 0a  E_ENABLE_FTS3=1.
1870: 4f 50 54 5f 46 45 41 54 55 52 45 5f 46 4c 41 47  OPT_FEATURE_FLAG
1880: 53 20 3d 20 24 28 4f 50 54 5f 46 45 41 54 55 52  S = $(OPT_FEATUR
1890: 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49 54  E_FLAGS) -DSQLIT
18a0: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 3d 31  E_ENABLE_RTREE=1
18b0: 0a 4f 50 54 5f 46 45 41 54 55 52 45 5f 46 4c 41  .OPT_FEATURE_FLA
18c0: 47 53 20 3d 20 24 28 4f 50 54 5f 46 45 41 54 55  GS = $(OPT_FEATU
18d0: 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49  RE_FLAGS) -DSQLI
18e0: 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e  TE_ENABLE_COLUMN
18f0: 5f 4d 45 54 41 44 41 54 41 3d 31 0a 21 45 4e 44  _METADATA=1.!END
1900: 49 46 0a 0a 23 20 53 68 6f 75 6c 64 20 74 68 65  IF..# Should the
1910: 20 73 65 73 73 69 6f 6e 20 65 78 74 65 6e 73 69   session extensi
1920: 6f 6e 20 62 65 20 65 6e 61 62 6c 65 64 3f 20 20  on be enabled?  
1930: 49 66 20 73 6f 2c 20 61 64 64 20 63 6f 6d 70 69  If so, add compi
1940: 6c 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 0a 23  lation options.#
1950: 20 74 6f 20 65 6e 61 62 6c 65 20 69 74 2e 0a 23   to enable it..#
1960: 0a 21 49 46 20 24 28 53 45 53 53 49 4f 4e 29 21  .!IF $(SESSION)!
1970: 3d 30 0a 4f 50 54 5f 46 45 41 54 55 52 45 5f 46  =0.OPT_FEATURE_F
1980: 4c 41 47 53 20 3d 20 24 28 4f 50 54 5f 46 45 41  LAGS = $(OPT_FEA
1990: 54 55 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51  TURE_FLAGS) -DSQ
19a0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 45 53 53  LITE_ENABLE_SESS
19b0: 49 4f 4e 3d 31 0a 4f 50 54 5f 46 45 41 54 55 52  ION=1.OPT_FEATUR
19c0: 45 5f 46 4c 41 47 53 20 3d 20 24 28 4f 50 54 5f  E_FLAGS = $(OPT_
19d0: 46 45 41 54 55 52 45 5f 46 4c 41 47 53 29 20 2d  FEATURE_FLAGS) -
19e0: 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 50  DSQLITE_ENABLE_P
19f0: 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 3d 31 0a  REUPDATE_HOOK=1.
1a00: 21 45 4e 44 49 46 0a 0a 23 20 54 68 65 73 65 20  !ENDIF..# These 
1a10: 61 72 65 20 74 68 65 20 22 65 78 74 65 6e 64 65  are the "extende
1a20: 64 22 20 53 51 4c 69 74 65 20 63 6f 6d 70 69 6c  d" SQLite compil
1a30: 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 75 73  ation options us
1a40: 65 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e  ed when compilin
1a50: 67 20 66 6f 72 0a 23 20 74 68 65 20 57 69 6e 64  g for.# the Wind
1a60: 6f 77 73 20 31 30 20 70 6c 61 74 66 6f 72 6d 2e  ows 10 platform.
1a70: 0a 23 0a 21 49 46 4e 44 45 46 20 45 58 54 5f 46  .#.!IFNDEF EXT_F
1a80: 45 41 54 55 52 45 5f 46 4c 41 47 53 0a 21 49 46  EATURE_FLAGS.!IF
1a90: 20 24 28 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30   $(FOR_WIN10)!=0
1aa0: 0a 45 58 54 5f 46 45 41 54 55 52 45 5f 46 4c 41  .EXT_FEATURE_FLA
1ab0: 47 53 20 3d 20 24 28 45 58 54 5f 46 45 41 54 55  GS = $(EXT_FEATU
1ac0: 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49  RE_FLAGS) -DSQLI
1ad0: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 3d 31  TE_ENABLE_FTS4=1
1ae0: 0a 45 58 54 5f 46 45 41 54 55 52 45 5f 46 4c 41  .EXT_FEATURE_FLA
1af0: 47 53 20 3d 20 24 28 45 58 54 5f 46 45 41 54 55  GS = $(EXT_FEATU
1b00: 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49  RE_FLAGS) -DSQLI
1b10: 54 45 5f 53 59 53 54 45 4d 5f 4d 41 4c 4c 4f 43  TE_SYSTEM_MALLOC
1b20: 3d 31 0a 45 58 54 5f 46 45 41 54 55 52 45 5f 46  =1.EXT_FEATURE_F
1b30: 4c 41 47 53 20 3d 20 24 28 45 58 54 5f 46 45 41  LAGS = $(EXT_FEA
1b40: 54 55 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51  TURE_FLAGS) -DSQ
1b50: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54  LITE_OMIT_LOCALT
1b60: 49 4d 45 3d 31 0a 21 45 4c 53 45 0a 45 58 54 5f  IME=1.!ELSE.EXT_
1b70: 46 45 41 54 55 52 45 5f 46 4c 41 47 53 20 3d 0a  FEATURE_FLAGS =.
1b80: 21 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23  !ENDIF.!ENDIF..#
1b90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23  ##############.#
1be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 20 45  ############## E
1c00: 4e 44 20 4f 46 20 4f 50 54 49 4f 4e 53 20 23 23  ND OF OPTIONS ##
1c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23  ##############.#
1c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a  ##############..
1c80: 23 20 57 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67  # When compiling
1c90: 20 66 6f 72 20 74 68 65 20 57 69 6e 64 6f 77 73   for the Windows
1ca0: 20 31 30 20 70 6c 61 74 66 6f 72 6d 2c 20 74 68   10 platform, th
1cb0: 65 20 50 4c 41 54 46 4f 52 4d 20 6d 61 63 72 6f  e PLATFORM macro
1cc0: 20 6d 75 73 74 20 62 65 20 73 65 74 0a 23 20 74   must be set.# t
1cd0: 6f 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  o an appropriate
1ce0: 20 76 61 6c 75 65 20 28 65 2e 67 2e 20 78 38 36   value (e.g. x86
1cf0: 2c 20 78 36 34 2c 20 61 72 6d 2c 20 61 72 6d 36  , x64, arm, arm6
1d00: 34 2c 20 65 74 63 29 2e 0a 23 0a 21 49 46 20 24  4, etc)..#.!IF $
1d10: 28 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30 0a 21  (FOR_WIN10)!=0.!
1d20: 49 46 4e 44 45 46 20 50 4c 41 54 46 4f 52 4d 0a  IFNDEF PLATFORM.
1d30: 21 45 52 52 4f 52 20 55 73 69 6e 67 20 74 68 65  !ERROR Using the
1d40: 20 46 4f 52 5f 57 49 4e 31 30 20 6f 70 74 69 6f   FOR_WIN10 optio
1d50: 6e 20 72 65 71 75 69 72 65 73 20 61 20 76 61 6c  n requires a val
1d60: 75 65 20 66 6f 72 20 50 4c 41 54 46 4f 52 4d 2e  ue for PLATFORM.
1d70: 0a 21 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a  .!ENDIF.!ENDIF..
1d80: 23 20 54 68 69 73 20 61 73 73 75 6d 65 73 20 74  # This assumes t
1d90: 68 61 74 20 4d 53 56 43 20 69 73 20 61 6c 77 61  hat MSVC is alwa
1da0: 79 73 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 20  ys installed in 
1db0: 33 32 2d 62 69 74 20 50 72 6f 67 72 61 6d 20 46  32-bit Program F
1dc0: 69 6c 65 73 20 64 69 72 65 63 74 6f 72 79 0a 23  iles directory.#
1dd0: 20 61 6e 64 20 73 65 74 73 20 74 68 65 20 76 61   and sets the va
1de0: 72 69 61 62 6c 65 20 66 6f 72 20 75 73 65 20 69  riable for use i
1df0: 6e 20 6c 6f 63 61 74 69 6e 67 20 6f 74 68 65 72  n locating other
1e00: 20 33 32 2d 62 69 74 20 69 6e 73 74 61 6c 6c 73   32-bit installs
1e10: 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 23 0a   accordingly..#.
1e20: 50 52 4f 47 52 41 4d 46 49 4c 45 53 5f 58 38 36  PROGRAMFILES_X86
1e30: 20 3d 20 24 28 56 43 49 4e 53 54 41 4c 4c 44 49   = $(VCINSTALLDI
1e40: 52 29 5c 2e 2e 5c 2e 2e 0a 50 52 4f 47 52 41 4d  R)\..\...PROGRAM
1e50: 46 49 4c 45 53 5f 58 38 36 20 3d 20 24 28 50 52  FILES_X86 = $(PR
1e60: 4f 47 52 41 4d 46 49 4c 45 53 5f 58 38 36 3a 5c  OGRAMFILES_X86:\
1e70: 5c 3d 5c 29 0a 0a 23 20 43 68 65 63 6b 20 66 6f  \=\)..# Check fo
1e80: 72 20 74 68 65 20 70 72 65 64 65 66 69 6e 65 64  r the predefined
1e90: 20 63 6f 6d 6d 61 6e 64 20 6d 61 63 72 6f 20 43   command macro C
1ea0: 43 2e 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20  C.  This should 
1eb0: 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 63 6f 6d  point to the com
1ec0: 70 69 6c 65 72 0a 23 20 62 69 6e 61 72 79 20 66  piler.# binary f
1ed0: 6f 72 20 74 68 65 20 74 61 72 67 65 74 20 70 6c  or the target pl
1ee0: 61 74 66 6f 72 6d 2e 20 20 49 66 20 69 74 20 69  atform.  If it i
1ef0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 2c 20 73  s not defined, s
1f00: 69 6d 70 6c 79 20 64 65 66 69 6e 65 20 69 74 20  imply define it 
1f10: 74 6f 0a 23 20 74 68 65 20 6c 65 67 61 63 79 20  to.# the legacy 
1f20: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 27 63  default value 'c
1f30: 6c 2e 65 78 65 27 2e 0a 23 0a 21 49 46 4e 44 45  l.exe'..#.!IFNDE
1f40: 46 20 43 43 0a 43 43 20 3d 20 63 6c 2e 65 78 65  F CC.CC = cl.exe
1f50: 0a 21 45 4e 44 49 46 0a 0a 23 20 43 68 65 63 6b  .!ENDIF..# Check
1f60: 20 66 6f 72 20 74 68 65 20 70 72 65 64 65 66 69   for the predefi
1f70: 6e 65 64 20 63 6f 6d 6d 61 6e 64 20 6d 61 63 72  ned command macr
1f80: 6f 20 43 53 43 2e 20 20 54 68 69 73 20 73 68 6f  o CSC.  This sho
1f90: 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 61 20 77  uld point to a w
1fa0: 6f 72 6b 69 6e 67 0a 23 20 43 20 53 68 61 72 70  orking.# C Sharp
1fb0: 20 63 6f 6d 70 69 6c 65 72 20 62 69 6e 61 72 79   compiler binary
1fc0: 2e 20 20 49 66 20 69 74 20 69 73 20 6e 6f 74 20  .  If it is not 
1fd0: 64 65 66 69 6e 65 64 2c 20 73 69 6d 70 6c 79 20  defined, simply 
1fe0: 64 65 66 69 6e 65 20 69 74 20 74 6f 20 74 68 65  define it to the
1ff0: 0a 23 20 6c 65 67 61 63 79 20 64 65 66 61 75 6c  .# legacy defaul
2000: 74 20 76 61 6c 75 65 20 27 63 73 63 2e 65 78 65  t value 'csc.exe
2010: 27 2e 0a 23 0a 21 49 46 4e 44 45 46 20 43 53 43  '..#.!IFNDEF CSC
2020: 0a 43 53 43 20 3d 20 63 73 63 2e 65 78 65 0a 21  .CSC = csc.exe.!
2030: 45 4e 44 49 46 0a 0a 23 20 43 68 65 63 6b 20 66  ENDIF..# Check f
2040: 6f 72 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d  or the command m
2050: 61 63 72 6f 20 4c 44 2e 20 20 54 68 69 73 20 73  acro LD.  This s
2060: 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 74  hould point to t
2070: 68 65 20 6c 69 6e 6b 65 72 20 62 69 6e 61 72 79  he linker binary
2080: 20 66 6f 72 0a 23 20 74 68 65 20 74 61 72 67 65   for.# the targe
2090: 74 20 70 6c 61 74 66 6f 72 6d 2e 20 20 49 66 20  t platform.  If 
20a0: 69 74 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65  it is not define
20b0: 64 2c 20 73 69 6d 70 6c 79 20 64 65 66 69 6e 65  d, simply define
20c0: 20 69 74 20 74 6f 20 74 68 65 20 6c 65 67 61 63   it to the legac
20d0: 79 0a 23 20 64 65 66 61 75 6c 74 20 76 61 6c 75  y.# default valu
20e0: 65 20 27 6c 69 6e 6b 2e 65 78 65 27 2e 0a 23 0a  e 'link.exe'..#.
20f0: 21 49 46 4e 44 45 46 20 4c 44 0a 4c 44 20 3d 20  !IFNDEF LD.LD = 
2100: 6c 69 6e 6b 2e 65 78 65 0a 21 45 4e 44 49 46 0a  link.exe.!ENDIF.
2110: 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 74 68 65  .# Check for the
2120: 20 70 72 65 64 65 66 69 6e 65 64 20 63 6f 6d 6d   predefined comm
2130: 61 6e 64 20 6d 61 63 72 6f 20 52 43 2e 20 20 54  and macro RC.  T
2140: 68 69 73 20 73 68 6f 75 6c 64 20 70 6f 69 6e 74  his should point
2150: 20 74 6f 20 74 68 65 20 72 65 73 6f 75 72 63 65   to the resource
2160: 0a 23 20 63 6f 6d 70 69 6c 65 72 20 62 69 6e 61  .# compiler bina
2170: 72 79 20 66 6f 72 20 74 68 65 20 74 61 72 67 65  ry for the targe
2180: 74 20 70 6c 61 74 66 6f 72 6d 2e 20 20 49 66 20  t platform.  If 
2190: 69 74 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65  it is not define
21a0: 64 2c 20 73 69 6d 70 6c 79 20 64 65 66 69 6e 65  d, simply define
21b0: 0a 23 20 69 74 20 74 6f 20 74 68 65 20 6c 65 67  .# it to the leg
21c0: 61 63 79 20 64 65 66 61 75 6c 74 20 76 61 6c 75  acy default valu
21d0: 65 20 27 72 63 2e 65 78 65 27 2e 0a 23 0a 21 49  e 'rc.exe'..#.!I
21e0: 46 4e 44 45 46 20 52 43 0a 52 43 20 3d 20 72 63  FNDEF RC.RC = rc
21f0: 2e 65 78 65 0a 21 45 4e 44 49 46 0a 0a 23 20 43  .exe.!ENDIF..# C
2200: 68 65 63 6b 20 66 6f 72 20 74 68 65 20 4d 53 56  heck for the MSV
2210: 43 20 72 75 6e 74 69 6d 65 20 6c 69 62 72 61 72  C runtime librar
2220: 79 20 70 61 74 68 20 6d 61 63 72 6f 2e 20 20 4f  y path macro.  O
2230: 74 68 65 72 77 69 73 65 2c 20 74 68 69 73 20 76  therwise, this v
2240: 61 6c 75 65 20 77 69 6c 6c 0a 23 20 64 65 66 61  alue will.# defa
2250: 75 6c 74 20 74 6f 20 74 68 65 20 27 6c 69 62 27  ult to the 'lib'
2260: 20 64 69 72 65 63 74 6f 72 79 20 75 6e 64 65 72   directory under
2270: 6e 65 61 74 68 20 74 68 65 20 4d 53 56 43 20 69  neath the MSVC i
2280: 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 64 69 72 65  nstallation dire
2290: 63 74 6f 72 79 2e 0a 23 0a 21 49 46 4e 44 45 46  ctory..#.!IFNDEF
22a0: 20 43 52 54 4c 49 42 50 41 54 48 0a 43 52 54 4c   CRTLIBPATH.CRTL
22b0: 49 42 50 41 54 48 20 3d 20 24 28 56 43 49 4e 53  IBPATH = $(VCINS
22c0: 54 41 4c 4c 44 49 52 29 5c 6c 69 62 0a 21 45 4e  TALLDIR)\lib.!EN
22d0: 44 49 46 0a 0a 43 52 54 4c 49 42 50 41 54 48 20  DIF..CRTLIBPATH 
22e0: 3d 20 24 28 43 52 54 4c 49 42 50 41 54 48 3a 5c  = $(CRTLIBPATH:\
22f0: 5c 3d 5c 29 0a 0a 23 20 43 68 65 63 6b 20 66 6f  \=\)..# Check fo
2300: 72 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61  r the command ma
2310: 63 72 6f 20 4e 43 43 2e 20 20 54 68 69 73 20 73  cro NCC.  This s
2320: 68 6f 75 6c 64 20 70 6f 69 6e 74 20 74 6f 20 74  hould point to t
2330: 68 65 20 63 6f 6d 70 69 6c 65 72 20 62 69 6e 61  he compiler bina
2340: 72 79 0a 23 20 66 6f 72 20 74 68 65 20 70 6c 61  ry.# for the pla
2350: 74 66 6f 72 6d 20 74 68 65 20 63 6f 6d 70 69 6c  tform the compil
2360: 61 74 69 6f 6e 20 70 72 6f 63 65 73 73 20 69 73  ation process is
2370: 20 74 61 6b 69 6e 67 20 70 6c 61 63 65 20 6f 6e   taking place on
2380: 2e 20 20 49 66 20 69 74 20 69 73 20 6e 6f 74 0a  .  If it is not.
2390: 23 20 64 65 66 69 6e 65 64 2c 20 73 69 6d 70 6c  # defined, simpl
23a0: 79 20 64 65 66 69 6e 65 20 69 74 20 74 6f 20 68  y define it to h
23b0: 61 76 65 20 74 68 65 20 73 61 6d 65 20 76 61 6c  ave the same val
23c0: 75 65 20 61 73 20 74 68 65 20 43 43 20 6d 61 63  ue as the CC mac
23d0: 72 6f 2e 20 20 57 68 65 6e 0a 23 20 63 72 6f 73  ro.  When.# cros
23e0: 73 2d 63 6f 6d 70 69 6c 69 6e 67 2c 20 69 74 20  s-compiling, it 
23f0: 69 73 20 73 75 67 67 65 73 74 65 64 20 74 68 61  is suggested tha
2400: 74 20 74 68 69 73 20 6d 61 63 72 6f 20 62 65 20  t this macro be 
2410: 6d 6f 64 69 66 69 65 64 20 76 69 61 20 74 68 65  modified via the
2420: 20 63 6f 6d 6d 61 6e 64 0a 23 20 6c 69 6e 65 20   command.# line 
2430: 28 73 69 6e 63 65 20 6e 6d 61 6b 65 20 69 74 73  (since nmake its
2440: 65 6c 66 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f  elf does not pro
2450: 76 69 64 65 20 61 20 62 75 69 6c 74 2d 69 6e 20  vide a built-in 
2460: 6d 65 74 68 6f 64 20 74 6f 20 67 75 65 73 73 20  method to guess 
2470: 69 74 29 2e 0a 23 20 46 6f 72 20 65 78 61 6d 70  it)..# For examp
2480: 6c 65 2c 20 74 6f 20 75 73 65 20 74 68 65 20 78  le, to use the x
2490: 38 36 20 63 6f 6d 70 69 6c 65 72 20 77 68 65 6e  86 compiler when
24a0: 20 63 72 6f 73 73 2d 63 6f 6d 70 69 6c 69 6e 67   cross-compiling
24b0: 20 66 6f 72 20 78 36 34 2c 20 61 20 63 6f 6d 6d   for x64, a comm
24c0: 61 6e 64 0a 23 20 6c 69 6e 65 20 73 69 6d 69 6c  and.# line simil
24d0: 61 72 20 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77  ar to the follow
24e0: 69 6e 67 20 63 6f 75 6c 64 20 62 65 20 75 73 65  ing could be use
24f0: 64 20 28 61 6c 6c 20 6f 6e 20 6f 6e 65 20 6c 69  d (all on one li
2500: 6e 65 29 3a 0a 23 0a 23 20 20 20 20 20 6e 6d 61  ne):.#.#     nma
2510: 6b 65 20 2f 66 20 4d 61 6b 65 66 69 6c 65 2e 6d  ke /f Makefile.m
2520: 73 63 20 73 71 6c 69 74 65 33 2e 64 6c 6c 0a 23  sc sqlite3.dll.#
2530: 20 20 20 20 20 20 20 20 20 20 20 58 43 4f 4d 50             XCOMP
2540: 49 4c 45 3d 31 20 55 53 45 5f 4e 41 54 49 56 45  ILE=1 USE_NATIVE
2550: 5f 4c 49 42 50 41 54 48 53 3d 31 0a 23 0a 23 20  _LIBPATHS=1.#.# 
2560: 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 2c 20 74  Alternatively, t
2570: 68 65 20 66 75 6c 6c 20 70 61 74 68 20 61 6e 64  he full path and
2580: 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 74 68   file name to th
2590: 65 20 63 6f 6d 70 69 6c 65 72 20 62 69 6e 61 72  e compiler binar
25a0: 79 20 66 6f 72 20 74 68 65 0a 23 20 70 6c 61 74  y for the.# plat
25b0: 66 6f 72 6d 20 74 68 65 20 63 6f 6d 70 69 6c 61  form the compila
25c0: 74 69 6f 6e 20 70 72 6f 63 65 73 73 20 69 73 20  tion process is 
25d0: 74 61 6b 69 6e 67 20 70 6c 61 63 65 20 6d 61 79  taking place may
25e0: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 28 61   be specified (a
25f0: 6c 6c 20 6f 6e 0a 23 20 6f 6e 65 20 6c 69 6e 65  ll on.# one line
2600: 29 3a 0a 23 0a 23 20 20 20 20 20 6e 6d 61 6b 65  ):.#.#     nmake
2610: 20 2f 66 20 4d 61 6b 65 66 69 6c 65 2e 6d 73 63   /f Makefile.msc
2620: 20 73 71 6c 69 74 65 33 2e 64 6c 6c 0a 23 20 20   sqlite3.dll.#  
2630: 20 20 20 20 20 20 20 20 20 22 4e 43 43 3d 22 22           "NCC=""
2640: 25 56 43 49 4e 53 54 41 4c 4c 44 49 52 25 5c 62  %VCINSTALLDIR%\b
2650: 69 6e 5c 63 6c 2e 65 78 65 22 22 22 0a 23 20 20  in\cl.exe""".#  
2660: 20 20 20 20 20 20 20 20 20 55 53 45 5f 4e 41 54           USE_NAT
2670: 49 56 45 5f 4c 49 42 50 41 54 48 53 3d 31 0a 23  IVE_LIBPATHS=1.#
2680: 0a 21 49 46 44 45 46 20 4e 43 43 0a 4e 43 43 20  .!IFDEF NCC.NCC 
2690: 3d 20 24 28 4e 43 43 3a 5c 5c 3d 5c 29 0a 21 45  = $(NCC:\\=\).!E
26a0: 4c 53 45 49 46 20 24 28 58 43 4f 4d 50 49 4c 45  LSEIF $(XCOMPILE
26b0: 29 21 3d 30 0a 4e 43 43 20 3d 20 22 24 28 56 43  )!=0.NCC = "$(VC
26c0: 49 4e 53 54 41 4c 4c 44 49 52 29 5c 62 69 6e 5c  INSTALLDIR)\bin\
26d0: 24 28 43 43 29 22 0a 4e 43 43 20 3d 20 24 28 4e  $(CC)".NCC = $(N
26e0: 43 43 3a 5c 5c 3d 5c 29 0a 21 45 4c 53 45 0a 4e  CC:\\=\).!ELSE.N
26f0: 43 43 20 3d 20 24 28 43 43 29 0a 21 45 4e 44 49  CC = $(CC).!ENDI
2700: 46 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 74  F..# Check for t
2710: 68 65 20 4d 53 56 43 20 6e 61 74 69 76 65 20 72  he MSVC native r
2720: 75 6e 74 69 6d 65 20 6c 69 62 72 61 72 79 20 70  untime library p
2730: 61 74 68 20 6d 61 63 72 6f 2e 20 20 4f 74 68 65  ath macro.  Othe
2740: 72 77 69 73 65 2c 0a 23 20 74 68 69 73 20 76 61  rwise,.# this va
2750: 6c 75 65 20 77 69 6c 6c 20 64 65 66 61 75 6c 74  lue will default
2760: 20 74 6f 20 74 68 65 20 27 6c 69 62 27 20 64 69   to the 'lib' di
2770: 72 65 63 74 6f 72 79 20 75 6e 64 65 72 6e 65 61  rectory undernea
2780: 74 68 20 74 68 65 20 4d 53 56 43 0a 23 20 69 6e  th the MSVC.# in
2790: 73 74 61 6c 6c 61 74 69 6f 6e 20 64 69 72 65 63  stallation direc
27a0: 74 6f 72 79 2e 0a 23 0a 21 49 46 4e 44 45 46 20  tory..#.!IFNDEF 
27b0: 4e 43 52 54 4c 49 42 50 41 54 48 0a 4e 43 52 54  NCRTLIBPATH.NCRT
27c0: 4c 49 42 50 41 54 48 20 3d 20 24 28 56 43 49 4e  LIBPATH = $(VCIN
27d0: 53 54 41 4c 4c 44 49 52 29 5c 6c 69 62 0a 21 45  STALLDIR)\lib.!E
27e0: 4e 44 49 46 0a 0a 4e 43 52 54 4c 49 42 50 41 54  NDIF..NCRTLIBPAT
27f0: 48 20 3d 20 24 28 4e 43 52 54 4c 49 42 50 41 54  H = $(NCRTLIBPAT
2800: 48 3a 5c 5c 3d 5c 29 0a 0a 23 20 43 68 65 63 6b  H:\\=\)..# Check
2810: 20 66 6f 72 20 74 68 65 20 50 6c 61 74 66 6f 72   for the Platfor
2820: 6d 20 53 44 4b 20 6c 69 62 72 61 72 79 20 70 61  m SDK library pa
2830: 74 68 20 6d 61 63 72 6f 2e 20 20 4f 74 68 65 72  th macro.  Other
2840: 77 69 73 65 2c 20 74 68 69 73 0a 23 20 76 61 6c  wise, this.# val
2850: 75 65 20 77 69 6c 6c 20 64 65 66 61 75 6c 74 20  ue will default 
2860: 74 6f 20 74 68 65 20 27 6c 69 62 27 20 64 69 72  to the 'lib' dir
2870: 65 63 74 6f 72 79 20 75 6e 64 65 72 6e 65 61 74  ectory underneat
2880: 68 20 74 68 65 20 57 69 6e 64 6f 77 73 0a 23 20  h the Windows.# 
2890: 53 44 4b 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e  SDK installation
28a0: 20 64 69 72 65 63 74 6f 72 79 20 28 74 68 65 20   directory (the 
28b0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
28c0: 61 62 6c 65 20 75 73 65 64 20 61 70 70 65 61 72  able used appear
28d0: 73 0a 23 20 74 6f 20 62 65 20 61 76 61 69 6c 61  s.# to be availa
28e0: 62 6c 65 20 77 68 65 6e 20 75 73 69 6e 67 20 56  ble when using V
28f0: 69 73 75 61 6c 20 43 2b 2b 20 32 30 30 38 20 6f  isual C++ 2008 o
2900: 72 20 6c 61 74 65 72 20 76 69 61 20 74 68 65 0a  r later via the.
2910: 23 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 29 2e  # command line).
2920: 0a 23 0a 21 49 46 4e 44 45 46 20 4e 53 44 4b 4c  .#.!IFNDEF NSDKL
2930: 49 42 50 41 54 48 0a 4e 53 44 4b 4c 49 42 50 41  IBPATH.NSDKLIBPA
2940: 54 48 20 3d 20 24 28 57 49 4e 44 4f 57 53 53 44  TH = $(WINDOWSSD
2950: 4b 44 49 52 29 5c 6c 69 62 0a 21 45 4e 44 49 46  KDIR)\lib.!ENDIF
2960: 0a 0a 4e 53 44 4b 4c 49 42 50 41 54 48 20 3d 20  ..NSDKLIBPATH = 
2970: 24 28 4e 53 44 4b 4c 49 42 50 41 54 48 3a 5c 5c  $(NSDKLIBPATH:\\
2980: 3d 5c 29 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72  =\)..# Check for
2990: 20 74 68 65 20 55 43 52 54 20 6c 69 62 72 61 72   the UCRT librar
29a0: 79 20 70 61 74 68 20 6d 61 63 72 6f 2e 20 20 4f  y path macro.  O
29b0: 74 68 65 72 77 69 73 65 2c 20 74 68 69 73 20 76  therwise, this v
29c0: 61 6c 75 65 20 77 69 6c 6c 0a 23 20 64 65 66 61  alue will.# defa
29d0: 75 6c 74 20 74 6f 20 74 68 65 20 76 65 72 73 69  ult to the versi
29e0: 6f 6e 2d 73 70 65 63 69 66 69 63 2c 20 70 6c 61  on-specific, pla
29f0: 74 66 6f 72 6d 2d 73 70 65 63 69 66 69 63 20 27  tform-specific '
2a00: 6c 69 62 27 20 64 69 72 65 63 74 6f 72 79 0a 23  lib' directory.#
2a10: 20 75 6e 64 65 72 6e 65 61 74 68 20 74 68 65 20   underneath the 
2a20: 57 69 6e 64 6f 77 73 20 53 44 4b 20 69 6e 73 74  Windows SDK inst
2a30: 61 6c 6c 61 74 69 6f 6e 20 64 69 72 65 63 74 6f  allation directo
2a40: 72 79 2e 0a 23 0a 21 49 46 4e 44 45 46 20 55 43  ry..#.!IFNDEF UC
2a50: 52 54 4c 49 42 50 41 54 48 0a 55 43 52 54 4c 49  RTLIBPATH.UCRTLI
2a60: 42 50 41 54 48 20 3d 20 24 28 57 49 4e 44 4f 57  BPATH = $(WINDOW
2a70: 53 53 44 4b 44 49 52 29 5c 6c 69 62 5c 24 28 57  SSDKDIR)\lib\$(W
2a80: 49 4e 44 4f 57 53 53 44 4b 4c 49 42 56 45 52 53  INDOWSSDKLIBVERS
2a90: 49 4f 4e 29 5c 75 63 72 74 5c 24 28 50 4c 41 54  ION)\ucrt\$(PLAT
2aa0: 46 4f 52 4d 29 0a 21 45 4e 44 49 46 0a 0a 55 43  FORM).!ENDIF..UC
2ab0: 52 54 4c 49 42 50 41 54 48 20 3d 20 24 28 55 43  RTLIBPATH = $(UC
2ac0: 52 54 4c 49 42 50 41 54 48 3a 5c 5c 3d 5c 29 0a  RTLIBPATH:\\=\).
2ad0: 0a 23 20 43 20 63 6f 6d 70 69 6c 65 72 20 61 6e  .# C compiler an
2ae0: 64 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 75 73  d options for us
2af0: 65 20 69 6e 20 62 75 69 6c 64 69 6e 67 20 65 78  e in building ex
2b00: 65 63 75 74 61 62 6c 65 73 20 74 68 61 74 0a 23  ecutables that.#
2b10: 20 77 69 6c 6c 20 72 75 6e 20 6f 6e 20 74 68 65   will run on the
2b20: 20 70 6c 61 74 66 6f 72 6d 20 74 68 61 74 20 69   platform that i
2b30: 73 20 64 6f 69 6e 67 20 74 68 65 20 62 75 69 6c  s doing the buil
2b40: 64 2e 0a 23 0a 21 49 46 20 24 28 55 53 45 5f 46  d..#.!IF $(USE_F
2b50: 55 4c 4c 57 41 52 4e 29 21 3d 30 0a 42 43 43 20  ULLWARN)!=0.BCC 
2b60: 3d 20 24 28 4e 43 43 29 20 2d 6e 6f 6c 6f 67 6f  = $(NCC) -nologo
2b70: 20 2d 57 34 20 24 28 43 43 4f 50 54 53 29 20 24   -W4 $(CCOPTS) $
2b80: 28 42 43 43 4f 50 54 53 29 0a 21 45 4c 53 45 0a  (BCCOPTS).!ELSE.
2b90: 42 43 43 20 3d 20 24 28 4e 43 43 29 20 2d 6e 6f  BCC = $(NCC) -no
2ba0: 6c 6f 67 6f 20 2d 57 33 20 24 28 43 43 4f 50 54  logo -W3 $(CCOPT
2bb0: 53 29 20 24 28 42 43 43 4f 50 54 53 29 0a 21 45  S) $(BCCOPTS).!E
2bc0: 4e 44 49 46 0a 0a 23 20 43 68 65 63 6b 20 69 66  NDIF..# Check if
2bd0: 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 20 6c   assembly code l
2be0: 69 73 74 69 6e 67 73 20 73 68 6f 75 6c 64 20 62  istings should b
2bf0: 65 20 67 65 6e 65 72 61 74 65 64 20 66 6f 72 20  e generated for 
2c00: 74 68 65 20 73 6f 75 72 63 65 0a 23 20 63 6f 64  the source.# cod
2c10: 65 20 66 69 6c 65 73 20 74 6f 20 62 65 20 63 6f  e files to be co
2c20: 6d 70 69 6c 65 64 2e 0a 23 0a 21 49 46 20 24 28  mpiled..#.!IF $(
2c30: 55 53 45 5f 4c 49 53 54 49 4e 47 53 29 21 3d 30  USE_LISTINGS)!=0
2c40: 0a 42 43 43 20 3d 20 24 28 42 43 43 29 20 2d 46  .BCC = $(BCC) -F
2c50: 41 63 73 0a 21 45 4e 44 49 46 0a 0a 23 20 43 68  Acs.!ENDIF..# Ch
2c60: 65 63 6b 20 69 66 20 74 68 65 20 6e 61 74 69 76  eck if the nativ
2c70: 65 20 6c 69 62 72 61 72 79 20 70 61 74 68 73 20  e library paths 
2c80: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77  should be used w
2c90: 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 0a 23 20  hen compiling.# 
2ca0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  the command line
2cb0: 20 74 6f 6f 6c 73 20 75 73 65 64 20 64 75 72 69   tools used duri
2cc0: 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69  ng the compilati
2cd0: 6f 6e 20 70 72 6f 63 65 73 73 2e 20 20 49 66 0a  on process.  If.
2ce0: 23 20 73 6f 2c 20 73 65 74 20 74 68 65 20 6e 65  # so, set the ne
2cf0: 63 65 73 73 61 72 79 20 6d 61 63 72 6f 20 6e 6f  cessary macro no
2d00: 77 2e 0a 23 0a 21 49 46 20 24 28 55 53 45 5f 4e  w..#.!IF $(USE_N
2d10: 41 54 49 56 45 5f 4c 49 42 50 41 54 48 53 29 21  ATIVE_LIBPATHS)!
2d20: 3d 30 0a 4e 4c 54 4c 49 42 50 41 54 48 53 20 3d  =0.NLTLIBPATHS =
2d30: 20 22 2f 4c 49 42 50 41 54 48 3a 24 28 4e 43 52   "/LIBPATH:$(NCR
2d40: 54 4c 49 42 50 41 54 48 29 22 20 22 2f 4c 49 42  TLIBPATH)" "/LIB
2d50: 50 41 54 48 3a 24 28 4e 53 44 4b 4c 49 42 50 41  PATH:$(NSDKLIBPA
2d60: 54 48 29 22 0a 0a 21 49 46 44 45 46 20 4e 55 43  TH)"..!IFDEF NUC
2d70: 52 54 4c 49 42 50 41 54 48 0a 4e 55 43 52 54 4c  RTLIBPATH.NUCRTL
2d80: 49 42 50 41 54 48 20 3d 20 24 28 4e 55 43 52 54  IBPATH = $(NUCRT
2d90: 4c 49 42 50 41 54 48 3a 5c 5c 3d 5c 29 0a 4e 4c  LIBPATH:\\=\).NL
2da0: 54 4c 49 42 50 41 54 48 53 20 3d 20 24 28 4e 4c  TLIBPATHS = $(NL
2db0: 54 4c 49 42 50 41 54 48 53 29 20 22 2f 4c 49 42  TLIBPATHS) "/LIB
2dc0: 50 41 54 48 3a 24 28 4e 55 43 52 54 4c 49 42 50  PATH:$(NUCRTLIBP
2dd0: 41 54 48 29 22 0a 21 45 4e 44 49 46 0a 21 45 4e  ATH)".!ENDIF.!EN
2de0: 44 49 46 0a 0a 23 20 43 20 63 6f 6d 70 69 6c 65  DIF..# C compile
2df0: 72 20 61 6e 64 20 6f 70 74 69 6f 6e 73 20 66 6f  r and options fo
2e00: 72 20 75 73 65 20 69 6e 20 62 75 69 6c 64 69 6e  r use in buildin
2e10: 67 20 65 78 65 63 75 74 61 62 6c 65 73 20 74 68  g executables th
2e20: 61 74 0a 23 20 77 69 6c 6c 20 72 75 6e 20 6f 6e  at.# will run on
2e30: 20 74 68 65 20 74 61 72 67 65 74 20 70 6c 61 74   the target plat
2e40: 66 6f 72 6d 2e 20 20 28 42 43 43 20 61 6e 64 20  form.  (BCC and 
2e50: 54 43 43 20 61 72 65 20 75 73 75 61 6c 6c 79 20  TCC are usually 
2e60: 74 68 65 0a 23 20 73 61 6d 65 20 75 6e 6c 65 73  the.# same unles
2e70: 73 20 79 6f 75 72 20 61 72 65 20 63 72 6f 73 73  s your are cross
2e80: 2d 63 6f 6d 70 69 6c 69 6e 67 2e 29 0a 23 0a 21  -compiling.).#.!
2e90: 49 46 20 24 28 55 53 45 5f 46 55 4c 4c 57 41 52  IF $(USE_FULLWAR
2ea0: 4e 29 21 3d 30 0a 54 43 43 20 3d 20 24 28 43 43  N)!=0.TCC = $(CC
2eb0: 29 20 2d 6e 6f 6c 6f 67 6f 20 2d 57 34 20 2d 44  ) -nologo -W4 -D
2ec0: 49 4e 43 4c 55 44 45 5f 4d 53 56 43 5f 48 3d 31  INCLUDE_MSVC_H=1
2ed0: 20 24 28 43 43 4f 50 54 53 29 20 24 28 54 43 43   $(CCOPTS) $(TCC
2ee0: 4f 50 54 53 29 0a 21 45 4c 53 45 0a 54 43 43 20  OPTS).!ELSE.TCC 
2ef0: 3d 20 24 28 43 43 29 20 2d 6e 6f 6c 6f 67 6f 20  = $(CC) -nologo 
2f00: 2d 57 33 20 24 28 43 43 4f 50 54 53 29 20 24 28  -W3 $(CCOPTS) $(
2f10: 54 43 43 4f 50 54 53 29 0a 21 45 4e 44 49 46 0a  TCCOPTS).!ENDIF.
2f20: 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20 2d 44  .TCC = $(TCC) -D
2f30: 53 51 4c 49 54 45 5f 4f 53 5f 57 49 4e 3d 31 20  SQLITE_OS_WIN=1 
2f40: 2d 49 2e 20 2d 49 24 28 54 4f 50 29 20 2d 66 70  -I. -I$(TOP) -fp
2f50: 3a 70 72 65 63 69 73 65 0a 52 43 43 20 3d 20 24  :precise.RCC = $
2f60: 28 52 43 29 20 2d 44 53 51 4c 49 54 45 5f 4f 53  (RC) -DSQLITE_OS
2f70: 5f 57 49 4e 3d 31 20 2d 49 2e 20 2d 49 24 28 54  _WIN=1 -I. -I$(T
2f80: 4f 50 29 20 24 28 52 43 4f 50 54 53 29 20 24 28  OP) $(RCOPTS) $(
2f90: 52 43 43 4f 50 54 53 29 0a 0a 23 20 43 68 65 63  RCCOPTS)..# Chec
2fa0: 6b 20 69 66 20 77 65 20 77 61 6e 74 20 74 6f 20  k if we want to 
2fb0: 75 73 65 20 74 68 65 20 22 73 74 64 63 61 6c 6c  use the "stdcall
2fc0: 22 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e  " calling conven
2fd0: 74 69 6f 6e 20 77 68 65 6e 20 63 6f 6d 70 69 6c  tion when compil
2fe0: 69 6e 67 2e 0a 23 20 54 68 69 73 20 69 73 20 6e  ing..# This is n
2ff0: 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  ot supported by 
3000: 74 68 65 20 63 6f 6d 70 69 6c 65 72 73 20 66 6f  the compilers fo
3010: 72 20 6e 6f 6e 2d 78 38 36 20 70 6c 61 74 66 6f  r non-x86 platfo
3020: 72 6d 73 2e 20 20 49 74 20 73 68 6f 75 6c 64 0a  rms.  It should.
3030: 23 20 61 6c 73 6f 20 62 65 20 6e 6f 74 65 64 20  # also be noted 
3040: 68 65 72 65 20 74 68 61 74 20 62 75 69 6c 64 69  here that buildi
3050: 6e 67 20 61 6e 79 20 74 61 72 67 65 74 20 77 69  ng any target wi
3060: 74 68 20 74 68 65 73 65 20 22 73 74 64 63 61 6c  th these "stdcal
3070: 6c 22 20 6f 70 74 69 6f 6e 73 0a 23 20 77 69 6c  l" options.# wil
3080: 6c 20 6d 6f 73 74 20 6c 69 6b 65 6c 79 20 66 61  l most likely fa
3090: 69 6c 20 69 66 20 74 68 65 20 54 63 6c 20 6c 69  il if the Tcl li
30a0: 62 72 61 72 79 20 69 73 20 61 6c 73 6f 20 72 65  brary is also re
30b0: 71 75 69 72 65 64 2e 20 20 54 68 69 73 20 69 73  quired.  This is
30c0: 20 64 75 65 0a 23 20 74 6f 20 68 6f 77 20 74 68   due.# to how th
30d0: 65 20 54 63 6c 20 6c 69 62 72 61 72 79 20 66 75  e Tcl library fu
30e0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 64 65 63 6c  nctions are decl
30f0: 61 72 65 64 20 61 6e 64 20 65 78 70 6f 72 74 65  ared and exporte
3100: 64 20 28 69 2e 65 2e 20 77 69 74 68 6f 75 74 0a  d (i.e. without.
3110: 23 20 61 6e 20 65 78 70 6c 69 63 69 74 20 63 61  # an explicit ca
3120: 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e  lling convention
3130: 2c 20 77 68 69 63 68 20 72 65 73 75 6c 74 73 20  , which results 
3140: 69 6e 20 22 63 64 65 63 6c 22 29 2e 0a 23 0a 21  in "cdecl")..#.!
3150: 49 46 20 24 28 55 53 45 5f 53 54 44 43 41 4c 4c  IF $(USE_STDCALL
3160: 29 21 3d 30 20 7c 7c 20 24 28 46 4f 52 5f 57 49  )!=0 || $(FOR_WI
3170: 4e 31 30 29 21 3d 30 0a 21 49 46 20 22 24 28 50  N10)!=0.!IF "$(P
3180: 4c 41 54 46 4f 52 4d 29 22 3d 3d 22 78 38 36 22  LATFORM)"=="x86"
3190: 0a 43 4f 52 45 5f 43 43 4f 4e 56 5f 4f 50 54 53  .CORE_CCONV_OPTS
31a0: 20 3d 20 2d 47 7a 20 2d 44 53 51 4c 49 54 45 5f   = -Gz -DSQLITE_
31b0: 43 44 45 43 4c 3d 5f 5f 63 64 65 63 6c 20 2d 44  CDECL=__cdecl -D
31c0: 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 3d 5f  SQLITE_APICALL=_
31d0: 5f 73 74 64 63 61 6c 6c 20 2d 44 53 51 4c 49 54  _stdcall -DSQLIT
31e0: 45 5f 43 41 4c 4c 42 41 43 4b 3d 5f 5f 73 74 64  E_CALLBACK=__std
31f0: 63 61 6c 6c 20 2d 44 53 51 4c 49 54 45 5f 53 59  call -DSQLITE_SY
3200: 53 41 50 49 3d 5f 5f 73 74 64 63 61 6c 6c 0a 53  SAPI=__stdcall.S
3210: 48 45 4c 4c 5f 43 43 4f 4e 56 5f 4f 50 54 53 20  HELL_CCONV_OPTS 
3220: 3d 20 2d 47 7a 20 2d 44 53 51 4c 49 54 45 5f 43  = -Gz -DSQLITE_C
3230: 44 45 43 4c 3d 5f 5f 63 64 65 63 6c 20 2d 44 53  DECL=__cdecl -DS
3240: 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 3d 5f 5f  QLITE_APICALL=__
3250: 73 74 64 63 61 6c 6c 20 2d 44 53 51 4c 49 54 45  stdcall -DSQLITE
3260: 5f 43 41 4c 4c 42 41 43 4b 3d 5f 5f 73 74 64 63  _CALLBACK=__stdc
3270: 61 6c 6c 20 2d 44 53 51 4c 49 54 45 5f 53 59 53  all -DSQLITE_SYS
3280: 41 50 49 3d 5f 5f 73 74 64 63 61 6c 6c 0a 21 45  API=__stdcall.!E
3290: 4c 53 45 0a 21 49 46 4e 44 45 46 20 50 4c 41 54  LSE.!IFNDEF PLAT
32a0: 46 4f 52 4d 0a 43 4f 52 45 5f 43 43 4f 4e 56 5f  FORM.CORE_CCONV_
32b0: 4f 50 54 53 20 3d 20 2d 47 7a 20 2d 44 53 51 4c  OPTS = -Gz -DSQL
32c0: 49 54 45 5f 43 44 45 43 4c 3d 5f 5f 63 64 65 63  ITE_CDECL=__cdec
32d0: 6c 20 2d 44 53 51 4c 49 54 45 5f 41 50 49 43 41  l -DSQLITE_APICA
32e0: 4c 4c 3d 5f 5f 73 74 64 63 61 6c 6c 20 2d 44 53  LL=__stdcall -DS
32f0: 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 3d 5f  QLITE_CALLBACK=_
3300: 5f 73 74 64 63 61 6c 6c 20 2d 44 53 51 4c 49 54  _stdcall -DSQLIT
3310: 45 5f 53 59 53 41 50 49 3d 5f 5f 73 74 64 63 61  E_SYSAPI=__stdca
3320: 6c 6c 0a 53 48 45 4c 4c 5f 43 43 4f 4e 56 5f 4f  ll.SHELL_CCONV_O
3330: 50 54 53 20 3d 20 2d 47 7a 20 2d 44 53 51 4c 49  PTS = -Gz -DSQLI
3340: 54 45 5f 43 44 45 43 4c 3d 5f 5f 63 64 65 63 6c  TE_CDECL=__cdecl
3350: 20 2d 44 53 51 4c 49 54 45 5f 41 50 49 43 41 4c   -DSQLITE_APICAL
3360: 4c 3d 5f 5f 73 74 64 63 61 6c 6c 20 2d 44 53 51  L=__stdcall -DSQ
3370: 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 3d 5f 5f  LITE_CALLBACK=__
3380: 73 74 64 63 61 6c 6c 20 2d 44 53 51 4c 49 54 45  stdcall -DSQLITE
3390: 5f 53 59 53 41 50 49 3d 5f 5f 73 74 64 63 61 6c  _SYSAPI=__stdcal
33a0: 6c 0a 21 45 4c 53 45 0a 43 4f 52 45 5f 43 43 4f  l.!ELSE.CORE_CCO
33b0: 4e 56 5f 4f 50 54 53 20 3d 0a 53 48 45 4c 4c 5f  NV_OPTS =.SHELL_
33c0: 43 43 4f 4e 56 5f 4f 50 54 53 20 3d 0a 21 45 4e  CCONV_OPTS =.!EN
33d0: 44 49 46 0a 21 45 4e 44 49 46 0a 21 45 4c 53 45  DIF.!ENDIF.!ELSE
33e0: 0a 43 4f 52 45 5f 43 43 4f 4e 56 5f 4f 50 54 53  .CORE_CCONV_OPTS
33f0: 20 3d 0a 53 48 45 4c 4c 5f 43 43 4f 4e 56 5f 4f   =.SHELL_CCONV_O
3400: 50 54 53 20 3d 0a 21 45 4e 44 49 46 0a 0a 23 20  PTS =.!ENDIF..# 
3410: 54 68 65 73 65 20 61 72 65 20 61 64 64 69 74 69  These are additi
3420: 6f 6e 61 6c 20 63 6f 6d 70 69 6c 65 72 20 6f 70  onal compiler op
3430: 74 69 6f 6e 73 20 75 73 65 64 20 66 6f 72 20 74  tions used for t
3440: 68 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  he core library.
3450: 0a 23 0a 21 49 46 4e 44 45 46 20 43 4f 52 45 5f  .#.!IFNDEF CORE_
3460: 43 4f 4d 50 49 4c 45 5f 4f 50 54 53 0a 21 49 46  COMPILE_OPTS.!IF
3470: 20 24 28 44 59 4e 41 4d 49 43 5f 53 48 45 4c 4c   $(DYNAMIC_SHELL
3480: 29 21 3d 30 20 7c 7c 20 24 28 46 4f 52 5f 57 49  )!=0 || $(FOR_WI
3490: 4e 31 30 29 21 3d 30 0a 43 4f 52 45 5f 43 4f 4d  N10)!=0.CORE_COM
34a0: 50 49 4c 45 5f 4f 50 54 53 20 3d 20 24 28 43 4f  PILE_OPTS = $(CO
34b0: 52 45 5f 43 43 4f 4e 56 5f 4f 50 54 53 29 20 2d  RE_CCONV_OPTS) -
34c0: 44 53 51 4c 49 54 45 5f 41 50 49 3d 5f 5f 64 65  DSQLITE_API=__de
34d0: 63 6c 73 70 65 63 28 64 6c 6c 65 78 70 6f 72 74  clspec(dllexport
34e0: 29 0a 21 45 4c 53 45 0a 43 4f 52 45 5f 43 4f 4d  ).!ELSE.CORE_COM
34f0: 50 49 4c 45 5f 4f 50 54 53 20 3d 20 24 28 43 4f  PILE_OPTS = $(CO
3500: 52 45 5f 43 43 4f 4e 56 5f 4f 50 54 53 29 0a 21  RE_CCONV_OPTS).!
3510: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23 20  ENDIF.!ENDIF..# 
3520: 54 68 65 73 65 20 61 72 65 20 74 68 65 20 61 64  These are the ad
3530: 64 69 74 69 6f 6e 61 6c 20 74 61 72 67 65 74 73  ditional targets
3540: 20 74 68 61 74 20 74 68 65 20 63 6f 72 65 20 6c   that the core l
3550: 69 62 72 61 72 79 20 73 68 6f 75 6c 64 20 64 65  ibrary should de
3560: 70 65 6e 64 20 6f 6e 0a 23 20 77 68 65 6e 20 6c  pend on.# when l
3570: 69 6e 6b 69 6e 67 2e 0a 23 0a 21 49 46 4e 44 45  inking..#.!IFNDE
3580: 46 20 43 4f 52 45 5f 4c 49 4e 4b 5f 44 45 50 0a  F CORE_LINK_DEP.
3590: 21 49 46 20 24 28 44 59 4e 41 4d 49 43 5f 53 48  !IF $(DYNAMIC_SH
35a0: 45 4c 4c 29 21 3d 30 0a 43 4f 52 45 5f 4c 49 4e  ELL)!=0.CORE_LIN
35b0: 4b 5f 44 45 50 20 3d 0a 21 45 4c 53 45 49 46 20  K_DEP =.!ELSEIF 
35c0: 24 28 46 4f 52 5f 57 49 4e 31 30 29 3d 3d 30 20  $(FOR_WIN10)==0 
35d0: 7c 7c 20 22 24 28 50 4c 41 54 46 4f 52 4d 29 22  || "$(PLATFORM)"
35e0: 3d 3d 22 78 38 36 22 0a 43 4f 52 45 5f 4c 49 4e  =="x86".CORE_LIN
35f0: 4b 5f 44 45 50 20 3d 20 73 71 6c 69 74 65 33 2e  K_DEP = sqlite3.
3600: 64 65 66 0a 21 45 4c 53 45 0a 43 4f 52 45 5f 4c  def.!ELSE.CORE_L
3610: 49 4e 4b 5f 44 45 50 20 3d 0a 21 45 4e 44 49 46  INK_DEP =.!ENDIF
3620: 0a 21 45 4e 44 49 46 0a 0a 23 20 54 68 65 73 65  .!ENDIF..# These
3630: 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   are additional 
3640: 6c 69 6e 6b 65 72 20 6f 70 74 69 6f 6e 73 20 75  linker options u
3650: 73 65 64 20 66 6f 72 20 74 68 65 20 63 6f 72 65  sed for the core
3660: 20 6c 69 62 72 61 72 79 2e 0a 23 0a 21 49 46 4e   library..#.!IFN
3670: 44 45 46 20 43 4f 52 45 5f 4c 49 4e 4b 5f 4f 50  DEF CORE_LINK_OP
3680: 54 53 0a 21 49 46 20 24 28 44 59 4e 41 4d 49 43  TS.!IF $(DYNAMIC
3690: 5f 53 48 45 4c 4c 29 21 3d 30 0a 43 4f 52 45 5f  _SHELL)!=0.CORE_
36a0: 4c 49 4e 4b 5f 4f 50 54 53 20 3d 0a 21 45 4c 53  LINK_OPTS =.!ELS
36b0: 45 49 46 20 24 28 46 4f 52 5f 57 49 4e 31 30 29  EIF $(FOR_WIN10)
36c0: 3d 3d 30 20 7c 7c 20 22 24 28 50 4c 41 54 46 4f  ==0 || "$(PLATFO
36d0: 52 4d 29 22 3d 3d 22 78 38 36 22 0a 43 4f 52 45  RM)"=="x86".CORE
36e0: 5f 4c 49 4e 4b 5f 4f 50 54 53 20 3d 20 2f 44 45  _LINK_OPTS = /DE
36f0: 46 3a 73 71 6c 69 74 65 33 2e 64 65 66 0a 21 45  F:sqlite3.def.!E
3700: 4c 53 45 0a 43 4f 52 45 5f 4c 49 4e 4b 5f 4f 50  LSE.CORE_LINK_OP
3710: 54 53 20 3d 0a 21 45 4e 44 49 46 0a 21 45 4e 44  TS =.!ENDIF.!END
3720: 49 46 0a 0a 23 20 54 68 65 73 65 20 61 72 65 20  IF..# These are 
3730: 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6d 70 69  additional compi
3740: 6c 65 72 20 6f 70 74 69 6f 6e 73 20 75 73 65 64  ler options used
3750: 20 66 6f 72 20 74 68 65 20 73 68 65 6c 6c 20 65   for the shell e
3760: 78 65 63 75 74 61 62 6c 65 2e 0a 23 0a 21 49 46  xecutable..#.!IF
3770: 4e 44 45 46 20 53 48 45 4c 4c 5f 43 4f 4d 50 49  NDEF SHELL_COMPI
3780: 4c 45 5f 4f 50 54 53 0a 21 49 46 20 24 28 44 59  LE_OPTS.!IF $(DY
3790: 4e 41 4d 49 43 5f 53 48 45 4c 4c 29 21 3d 30 20  NAMIC_SHELL)!=0 
37a0: 7c 7c 20 24 28 46 4f 52 5f 57 49 4e 31 30 29 21  || $(FOR_WIN10)!
37b0: 3d 30 0a 53 48 45 4c 4c 5f 43 4f 4d 50 49 4c 45  =0.SHELL_COMPILE
37c0: 5f 4f 50 54 53 20 3d 20 24 28 53 48 45 4c 4c 5f  _OPTS = $(SHELL_
37d0: 43 43 4f 4e 56 5f 4f 50 54 53 29 20 2d 44 53 51  CCONV_OPTS) -DSQ
37e0: 4c 49 54 45 5f 41 50 49 3d 5f 5f 64 65 63 6c 73  LITE_API=__decls
37f0: 70 65 63 28 64 6c 6c 69 6d 70 6f 72 74 29 0a 21  pec(dllimport).!
3800: 45 4c 53 45 0a 53 48 45 4c 4c 5f 43 4f 4d 50 49  ELSE.SHELL_COMPI
3810: 4c 45 5f 4f 50 54 53 20 3d 20 24 28 53 48 45 4c  LE_OPTS = $(SHEL
3820: 4c 5f 43 43 4f 4e 56 5f 4f 50 54 53 29 0a 21 45  L_CCONV_OPTS).!E
3830: 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 23 20 54  NDIF.!ENDIF..# T
3840: 68 69 73 20 69 73 20 74 68 65 20 73 6f 75 72 63  his is the sourc
3850: 65 20 63 6f 64 65 20 74 68 61 74 20 74 68 65 20  e code that the 
3860: 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62 6c 65  shell executable
3870: 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 6d 70 69   should be compi
3880: 6c 65 64 0a 23 20 77 69 74 68 2e 0a 23 0a 21 49  led.# with..#.!I
3890: 46 4e 44 45 46 20 53 48 45 4c 4c 5f 43 4f 52 45  FNDEF SHELL_CORE
38a0: 5f 53 52 43 0a 21 49 46 20 24 28 44 59 4e 41 4d  _SRC.!IF $(DYNAM
38b0: 49 43 5f 53 48 45 4c 4c 29 21 3d 30 20 7c 7c 20  IC_SHELL)!=0 || 
38c0: 24 28 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30 0a  $(FOR_WIN10)!=0.
38d0: 53 48 45 4c 4c 5f 43 4f 52 45 5f 53 52 43 20 3d  SHELL_CORE_SRC =
38e0: 0a 21 45 4c 53 45 0a 53 48 45 4c 4c 5f 43 4f 52  .!ELSE.SHELL_COR
38f0: 45 5f 53 52 43 20 3d 20 24 28 53 51 4c 49 54 45  E_SRC = $(SQLITE
3900: 33 43 29 0a 21 45 4e 44 49 46 0a 21 45 4e 44 49  3C).!ENDIF.!ENDI
3910: 46 0a 0a 23 20 54 68 69 73 20 69 73 20 74 68 65  F..# This is the
3920: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 74 68   core library th
3930: 61 74 20 74 68 65 20 73 68 65 6c 6c 20 65 78 65  at the shell exe
3940: 63 75 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 64  cutable should d
3950: 65 70 65 6e 64 20 6f 6e 2e 0a 23 0a 21 49 46 4e  epend on..#.!IFN
3960: 44 45 46 20 53 48 45 4c 4c 5f 43 4f 52 45 5f 44  DEF SHELL_CORE_D
3970: 45 50 0a 21 49 46 20 24 28 44 59 4e 41 4d 49 43  EP.!IF $(DYNAMIC
3980: 5f 53 48 45 4c 4c 29 21 3d 30 20 7c 7c 20 24 28  _SHELL)!=0 || $(
3990: 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30 0a 53 48  FOR_WIN10)!=0.SH
39a0: 45 4c 4c 5f 43 4f 52 45 5f 44 45 50 20 3d 20 24  ELL_CORE_DEP = $
39b0: 28 53 51 4c 49 54 45 33 44 4c 4c 29 0a 21 45 4c  (SQLITE3DLL).!EL
39c0: 53 45 0a 53 48 45 4c 4c 5f 43 4f 52 45 5f 44 45  SE.SHELL_CORE_DE
39d0: 50 20 3d 0a 21 45 4e 44 49 46 0a 21 45 4e 44 49  P =.!ENDIF.!ENDI
39e0: 46 0a 0a 23 20 54 68 69 73 20 69 73 20 74 68 65  F..# This is the
39f0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 74 68   core library th
3a00: 61 74 20 74 68 65 20 73 68 65 6c 6c 20 65 78 65  at the shell exe
3a10: 63 75 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 6c  cutable should l
3a20: 69 6e 6b 20 77 69 74 68 2e 0a 23 0a 21 49 46 4e  ink with..#.!IFN
3a30: 44 45 46 20 53 48 45 4c 4c 5f 43 4f 52 45 5f 4c  DEF SHELL_CORE_L
3a40: 49 42 0a 21 49 46 20 24 28 44 59 4e 41 4d 49 43  IB.!IF $(DYNAMIC
3a50: 5f 53 48 45 4c 4c 29 21 3d 30 20 7c 7c 20 24 28  _SHELL)!=0 || $(
3a60: 46 4f 52 5f 57 49 4e 31 30 29 21 3d 30 0a 53 48  FOR_WIN10)!=0.SH
3a70: 45 4c 4c 5f 43 4f 52 45 5f 4c 49 42 20 3d 20 24  ELL_CORE_LIB = $
3a80: 28 53 51 4c 49 54 45 33 4c 49 42 29 0a 21 45 4c  (SQLITE3LIB).!EL
3a90: 53 45 0a 53 48 45 4c 4c 5f 43 4f 52 45 5f 4c 49  SE.SHELL_CORE_LI
3aa0: 42 20 3d 0a 21 45 4e 44 49 46 0a 21 45 4e 44 49  B =.!ENDIF.!ENDI
3ab0: 46 0a 0a 23 20 54 68 65 73 65 20 61 72 65 20 61  F..# These are a
3ac0: 64 64 69 74 69 6f 6e 61 6c 20 6c 69 6e 6b 65 72  dditional linker
3ad0: 20 6f 70 74 69 6f 6e 73 20 75 73 65 64 20 66 6f   options used fo
3ae0: 72 20 74 68 65 20 73 68 65 6c 6c 20 65 78 65 63  r the shell exec
3af0: 75 74 61 62 6c 65 2e 0a 23 0a 21 49 46 4e 44 45  utable..#.!IFNDE
3b00: 46 20 53 48 45 4c 4c 5f 4c 49 4e 4b 5f 4f 50 54  F SHELL_LINK_OPT
3b10: 53 0a 53 48 45 4c 4c 5f 4c 49 4e 4b 5f 4f 50 54  S.SHELL_LINK_OPT
3b20: 53 20 3d 20 24 28 53 48 45 4c 4c 5f 43 4f 52 45  S = $(SHELL_CORE
3b30: 5f 4c 49 42 29 0a 21 45 4e 44 49 46 0a 0a 23 20  _LIB).!ENDIF..# 
3b40: 43 68 65 63 6b 20 69 66 20 61 73 73 65 6d 62 6c  Check if assembl
3b50: 79 20 63 6f 64 65 20 6c 69 73 74 69 6e 67 73 20  y code listings 
3b60: 73 68 6f 75 6c 64 20 62 65 20 67 65 6e 65 72 61  should be genera
3b70: 74 65 64 20 66 6f 72 20 74 68 65 20 73 6f 75 72  ted for the sour
3b80: 63 65 0a 23 20 63 6f 64 65 20 66 69 6c 65 73 20  ce.# code files 
3b90: 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 2e 0a  to be compiled..
3ba0: 23 0a 21 49 46 20 24 28 55 53 45 5f 4c 49 53 54  #.!IF $(USE_LIST
3bb0: 49 4e 47 53 29 21 3d 30 0a 54 43 43 20 3d 20 24  INGS)!=0.TCC = $
3bc0: 28 54 43 43 29 20 2d 46 41 63 73 0a 21 45 4e 44  (TCC) -FAcs.!END
3bd0: 49 46 0a 0a 23 20 57 68 65 6e 20 63 6f 6d 70 69  IF..# When compi
3be0: 6c 69 6e 67 20 74 68 65 20 6c 69 62 72 61 72 79  ling the library
3bf0: 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 20   for use in the 
3c00: 57 69 6e 52 54 20 65 6e 76 69 72 6f 6e 6d 65 6e  WinRT environmen
3c10: 74 2c 0a 23 20 74 68 65 20 66 6f 6c 6c 6f 77 69  t,.# the followi
3c20: 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ng compile-time 
3c30: 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 62 65 20  options must be 
3c40: 75 73 65 64 20 61 73 20 77 65 6c 6c 20 74 6f 0a  used as well to.
3c50: 23 20 64 69 73 61 62 6c 65 20 75 73 65 20 6f 66  # disable use of
3c60: 20 57 69 6e 33 32 20 41 50 49 73 20 74 68 61 74   Win32 APIs that
3c70: 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62   are not availab
3c80: 6c 65 20 61 6e 64 20 74 6f 20 65 6e 61 62 6c 65  le and to enable
3c90: 0a 23 20 75 73 65 20 6f 66 20 57 69 6e 33 32 20  .# use of Win32 
3ca0: 41 50 49 73 20 74 68 61 74 20 61 72 65 20 73 70  APIs that are sp
3cb0: 65 63 69 66 69 63 20 74 6f 20 57 69 6e 64 6f 77  ecific to Window
3cc0: 73 20 38 20 61 6e 64 2f 6f 72 20 57 69 6e 52 54  s 8 and/or WinRT
3cd0: 2e 0a 23 0a 21 49 46 20 24 28 46 4f 52 5f 57 49  ..#.!IF $(FOR_WI
3ce0: 4e 52 54 29 21 3d 30 0a 54 43 43 20 3d 20 24 28  NRT)!=0.TCC = $(
3cf0: 54 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 4f 53  TCC) -DSQLITE_OS
3d00: 5f 57 49 4e 52 54 3d 31 0a 52 43 43 20 3d 20 24  _WINRT=1.RCC = $
3d10: 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 4f  (RCC) -DSQLITE_O
3d20: 53 5f 57 49 4e 52 54 3d 31 0a 54 43 43 20 3d 20  S_WINRT=1.TCC = 
3d30: 24 28 54 43 43 29 20 2d 44 57 49 4e 41 50 49 5f  $(TCC) -DWINAPI_
3d40: 46 41 4d 49 4c 59 3d 57 49 4e 41 50 49 5f 46 41  FAMILY=WINAPI_FA
3d50: 4d 49 4c 59 5f 41 50 50 0a 52 43 43 20 3d 20 24  MILY_APP.RCC = $
3d60: 28 52 43 43 29 20 2d 44 57 49 4e 41 50 49 5f 46  (RCC) -DWINAPI_F
3d70: 41 4d 49 4c 59 3d 57 49 4e 41 50 49 5f 46 41 4d  AMILY=WINAPI_FAM
3d80: 49 4c 59 5f 41 50 50 0a 21 45 4e 44 49 46 0a 0a  ILY_APP.!ENDIF..
3d90: 23 20 43 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74  # C compiler opt
3da0: 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 57 69 6e  ions for the Win
3db0: 64 6f 77 73 20 31 30 20 70 6c 61 74 66 6f 72 6d  dows 10 platform
3dc0: 20 28 6e 65 65 64 73 20 4d 53 56 43 20 32 30 31   (needs MSVC 201
3dd0: 35 29 2e 0a 23 0a 21 49 46 20 24 28 46 4f 52 5f  5)..#.!IF $(FOR_
3de0: 57 49 4e 31 30 29 21 3d 30 0a 54 43 43 20 3d 20  WIN10)!=0.TCC = 
3df0: 24 28 54 43 43 29 20 2f 64 32 67 75 61 72 64 34  $(TCC) /d2guard4
3e00: 20 2d 44 5f 41 52 4d 5f 57 49 4e 41 50 49 5f 50   -D_ARM_WINAPI_P
3e10: 41 52 54 49 54 49 4f 4e 5f 44 45 53 4b 54 4f 50  ARTITION_DESKTOP
3e20: 5f 53 44 4b 5f 41 56 41 49 4c 41 42 4c 45 0a 42  _SDK_AVAILABLE.B
3e30: 43 43 20 3d 20 24 28 42 43 43 29 20 2f 64 32 67  CC = $(BCC) /d2g
3e40: 75 61 72 64 34 20 2d 44 5f 41 52 4d 5f 57 49 4e  uard4 -D_ARM_WIN
3e50: 41 50 49 5f 50 41 52 54 49 54 49 4f 4e 5f 44 45  API_PARTITION_DE
3e60: 53 4b 54 4f 50 5f 53 44 4b 5f 41 56 41 49 4c 41  SKTOP_SDK_AVAILA
3e70: 42 4c 45 0a 21 45 4e 44 49 46 0a 0a 23 20 41 6c  BLE.!ENDIF..# Al
3e80: 73 6f 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 64  so, we need to d
3e90: 79 6e 61 6d 69 63 61 6c 6c 79 20 6c 69 6e 6b 20  ynamically link 
3ea0: 74 6f 20 74 68 65 20 63 6f 72 72 65 63 74 20 4d  to the correct M
3eb0: 53 56 43 20 72 75 6e 74 69 6d 65 0a 23 20 77 68  SVC runtime.# wh
3ec0: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72  en compiling for
3ed0: 20 57 69 6e 52 54 20 28 65 2e 67 2e 20 64 65 62   WinRT (e.g. deb
3ee0: 75 67 20 6f 72 20 72 65 6c 65 61 73 65 29 20 4f  ug or release) O
3ef0: 52 20 69 66 20 74 68 65 0a 23 20 55 53 45 5f 43  R if the.# USE_C
3f00: 52 54 5f 44 4c 4c 20 6f 70 74 69 6f 6e 20 69 73  RT_DLL option is
3f10: 20 73 65 74 20 74 6f 20 66 6f 72 63 65 20 64 79   set to force dy
3f20: 6e 61 6d 69 63 61 6c 6c 79 20 6c 69 6e 6b 69 6e  namically linkin
3f30: 67 20 74 6f 20 74 68 65 0a 23 20 4d 53 56 43 20  g to the.# MSVC 
3f40: 72 75 6e 74 69 6d 65 20 6c 69 62 72 61 72 79 2e  runtime library.
3f50: 0a 23 0a 21 49 46 20 24 28 46 4f 52 5f 57 49 4e  .#.!IF $(FOR_WIN
3f60: 52 54 29 21 3d 30 20 7c 7c 20 24 28 55 53 45 5f  RT)!=0 || $(USE_
3f70: 43 52 54 5f 44 4c 4c 29 21 3d 30 0a 21 49 46 20  CRT_DLL)!=0.!IF 
3f80: 24 28 44 45 42 55 47 29 3e 31 0a 54 43 43 20 3d  $(DEBUG)>1.TCC =
3f90: 20 24 28 54 43 43 29 20 2d 4d 44 64 0a 42 43 43   $(TCC) -MDd.BCC
3fa0: 20 3d 20 24 28 42 43 43 29 20 2d 4d 44 64 0a 21   = $(BCC) -MDd.!
3fb0: 45 4c 53 45 0a 54 43 43 20 3d 20 24 28 54 43 43  ELSE.TCC = $(TCC
3fc0: 29 20 2d 4d 44 0a 42 43 43 20 3d 20 24 28 42 43  ) -MD.BCC = $(BC
3fd0: 43 29 20 2d 4d 44 0a 21 45 4e 44 49 46 0a 21 45  C) -MD.!ENDIF.!E
3fe0: 4c 53 45 0a 21 49 46 20 24 28 44 45 42 55 47 29  LSE.!IF $(DEBUG)
3ff0: 3e 31 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20  >1.TCC = $(TCC) 
4000: 2d 4d 54 64 0a 42 43 43 20 3d 20 24 28 42 43 43  -MTd.BCC = $(BCC
4010: 29 20 2d 4d 54 64 0a 21 45 4c 53 45 0a 54 43 43  ) -MTd.!ELSE.TCC
4020: 20 3d 20 24 28 54 43 43 29 20 2d 4d 54 0a 42 43   = $(TCC) -MT.BC
4030: 43 20 3d 20 24 28 42 43 43 29 20 2d 4d 54 0a 21  C = $(BCC) -MT.!
4040: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 0a 0a 23  ENDIF.!ENDIF...#
4050: 20 44 65 66 69 6e 65 20 2d 44 4e 44 45 42 55 47   Define -DNDEBUG
4060: 20 74 6f 20 63 6f 6d 70 69 6c 65 20 77 69 74 68   to compile with
4070: 6f 75 74 20 64 65 62 75 67 67 69 6e 67 20 28 69  out debugging (i
4080: 2e 65 2e 2c 20 66 6f 72 20 70 72 6f 64 75 63 74  .e., for product
4090: 69 6f 6e 20 75 73 61 67 65 29 0a 23 20 4f 6d 69  ion usage).# Omi
40a0: 74 74 69 6e 67 20 74 68 65 20 64 65 66 69 6e 65  tting the define
40b0: 20 77 69 6c 6c 20 63 61 75 73 65 20 65 78 74 72   will cause extr
40c0: 61 20 64 65 62 75 67 67 69 6e 67 20 63 6f 64 65  a debugging code
40d0: 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20   to be inserted 
40e0: 61 6e 64 0a 23 20 69 6e 63 6c 75 64 65 73 20 65  and.# includes e
40f0: 78 74 72 61 20 63 6f 6d 6d 65 6e 74 73 20 77 68  xtra comments wh
4100: 65 6e 20 22 45 58 50 4c 41 49 4e 20 73 74 6d 74  en "EXPLAIN stmt
4110: 22 20 69 73 20 75 73 65 64 2e 0a 23 0a 21 49 46  " is used..#.!IF
4120: 20 24 28 44 45 42 55 47 29 3d 3d 30 0a 54 43 43   $(DEBUG)==0.TCC
4130: 20 3d 20 24 28 54 43 43 29 20 2d 44 4e 44 45 42   = $(TCC) -DNDEB
4140: 55 47 0a 42 43 43 20 3d 20 24 28 42 43 43 29 20  UG.BCC = $(BCC) 
4150: 2d 44 4e 44 45 42 55 47 0a 52 43 43 20 3d 20 24  -DNDEBUG.RCC = $
4160: 28 52 43 43 29 20 2d 44 4e 44 45 42 55 47 0a 21  (RCC) -DNDEBUG.!
4170: 45 4e 44 49 46 0a 0a 21 49 46 20 24 28 44 45 42  ENDIF..!IF $(DEB
4180: 55 47 29 3e 30 20 7c 7c 20 24 28 41 50 49 5f 41  UG)>0 || $(API_A
4190: 52 4d 4f 52 29 21 3d 30 20 7c 7c 20 24 28 46 4f  RMOR)!=0 || $(FO
41a0: 52 5f 57 49 4e 31 30 29 21 3d 30 0a 54 43 43 20  R_WIN10)!=0.TCC 
41b0: 3d 20 24 28 54 43 43 29 20 2d 44 53 51 4c 49 54  = $(TCC) -DSQLIT
41c0: 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d  E_ENABLE_API_ARM
41d0: 4f 52 3d 31 0a 52 43 43 20 3d 20 24 28 52 43 43  OR=1.RCC = $(RCC
41e0: 29 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ) -DSQLITE_ENABL
41f0: 45 5f 41 50 49 5f 41 52 4d 4f 52 3d 31 0a 21 45  E_API_ARMOR=1.!E
4200: 4e 44 49 46 0a 0a 21 49 46 20 24 28 44 45 42 55  NDIF..!IF $(DEBU
4210: 47 29 3e 32 0a 54 43 43 20 3d 20 24 28 54 43 43  G)>2.TCC = $(TCC
4220: 29 20 2d 44 53 51 4c 49 54 45 5f 44 45 42 55 47  ) -DSQLITE_DEBUG
4230: 3d 31 0a 52 43 43 20 3d 20 24 28 52 43 43 29 20  =1.RCC = $(RCC) 
4240: 2d 44 53 51 4c 49 54 45 5f 44 45 42 55 47 3d 31  -DSQLITE_DEBUG=1
4250: 0a 21 45 4e 44 49 46 0a 0a 21 49 46 20 24 28 44  .!ENDIF..!IF $(D
4260: 45 42 55 47 29 3e 34 20 7c 7c 20 24 28 4f 53 54  EBUG)>4 || $(OST
4270: 52 41 43 45 29 21 3d 30 0a 54 43 43 20 3d 20 24  RACE)!=0.TCC = $
4280: 28 54 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 46  (TCC) -DSQLITE_F
4290: 4f 52 43 45 5f 4f 53 5f 54 52 41 43 45 3d 31 20  ORCE_OS_TRACE=1 
42a0: 2d 44 53 51 4c 49 54 45 5f 44 45 42 55 47 5f 4f  -DSQLITE_DEBUG_O
42b0: 53 5f 54 52 41 43 45 3d 31 0a 52 43 43 20 3d 20  S_TRACE=1.RCC = 
42c0: 24 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45 5f  $(RCC) -DSQLITE_
42d0: 46 4f 52 43 45 5f 4f 53 5f 54 52 41 43 45 3d 31  FORCE_OS_TRACE=1
42e0: 20 2d 44 53 51 4c 49 54 45 5f 44 45 42 55 47 5f   -DSQLITE_DEBUG_
42f0: 4f 53 5f 54 52 41 43 45 3d 31 0a 21 45 4e 44 49  OS_TRACE=1.!ENDI
4300: 46 0a 0a 21 49 46 20 24 28 44 45 42 55 47 29 3e  F..!IF $(DEBUG)>
4310: 35 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20 2d  5.TCC = $(TCC) -
4320: 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49  DSQLITE_ENABLE_I
4330: 4f 54 52 41 43 45 3d 31 0a 52 43 43 20 3d 20 24  OTRACE=1.RCC = $
4340: 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 45  (RCC) -DSQLITE_E
4350: 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 3d 31 0a  NABLE_IOTRACE=1.
4360: 21 45 4e 44 49 46 0a 0a 23 20 50 72 65 76 65 6e  !ENDIF..# Preven
4370: 74 20 77 61 72 6e 69 6e 67 73 20 61 62 6f 75 74  t warnings about
4380: 20 22 69 6e 73 65 63 75 72 65 22 20 4d 53 56 43   "insecure" MSVC
4390: 20 72 75 6e 74 69 6d 65 20 6c 69 62 72 61 72 79   runtime library
43a0: 20 66 75 6e 63 74 69 6f 6e 73 0a 23 20 62 65 69   functions.# bei
43b0: 6e 67 20 75 73 65 64 2e 0a 23 0a 54 43 43 20 3d  ng used..#.TCC =
43c0: 20 24 28 54 43 43 29 20 2d 44 5f 43 52 54 5f 53   $(TCC) -D_CRT_S
43d0: 45 43 55 52 45 5f 4e 4f 5f 44 45 50 52 45 43 41  ECURE_NO_DEPRECA
43e0: 54 45 20 2d 44 5f 43 52 54 5f 53 45 43 55 52 45  TE -D_CRT_SECURE
43f0: 5f 4e 4f 5f 57 41 52 4e 49 4e 47 53 0a 42 43 43  _NO_WARNINGS.BCC
4400: 20 3d 20 24 28 42 43 43 29 20 2d 44 5f 43 52 54   = $(BCC) -D_CRT
4410: 5f 53 45 43 55 52 45 5f 4e 4f 5f 44 45 50 52 45  _SECURE_NO_DEPRE
4420: 43 41 54 45 20 2d 44 5f 43 52 54 5f 53 45 43 55  CATE -D_CRT_SECU
4430: 52 45 5f 4e 4f 5f 57 41 52 4e 49 4e 47 53 0a 52  RE_NO_WARNINGS.R
4440: 43 43 20 3d 20 24 28 52 43 43 29 20 2d 44 5f 43  CC = $(RCC) -D_C
4450: 52 54 5f 53 45 43 55 52 45 5f 4e 4f 5f 44 45 50  RT_SECURE_NO_DEP
4460: 52 45 43 41 54 45 20 2d 44 5f 43 52 54 5f 53 45  RECATE -D_CRT_SE
4470: 43 55 52 45 5f 4e 4f 5f 57 41 52 4e 49 4e 47 53  CURE_NO_WARNINGS
4480: 0a 0a 23 20 50 72 65 76 65 6e 74 20 77 61 72 6e  ..# Prevent warn
4490: 69 6e 67 73 20 61 62 6f 75 74 20 22 64 65 70 72  ings about "depr
44a0: 65 63 61 74 65 64 22 20 50 4f 53 49 58 20 66 75  ecated" POSIX fu
44b0: 6e 63 74 69 6f 6e 73 20 62 65 69 6e 67 20 75 73  nctions being us
44c0: 65 64 2e 0a 23 0a 54 43 43 20 3d 20 24 28 54 43  ed..#.TCC = $(TC
44d0: 43 29 20 2d 44 5f 43 52 54 5f 4e 4f 4e 53 54 44  C) -D_CRT_NONSTD
44e0: 43 5f 4e 4f 5f 44 45 50 52 45 43 41 54 45 20 2d  C_NO_DEPRECATE -
44f0: 44 5f 43 52 54 5f 4e 4f 4e 53 54 44 43 5f 4e 4f  D_CRT_NONSTDC_NO
4500: 5f 57 41 52 4e 49 4e 47 53 0a 42 43 43 20 3d 20  _WARNINGS.BCC = 
4510: 24 28 42 43 43 29 20 2d 44 5f 43 52 54 5f 4e 4f  $(BCC) -D_CRT_NO
4520: 4e 53 54 44 43 5f 4e 4f 5f 44 45 50 52 45 43 41  NSTDC_NO_DEPRECA
4530: 54 45 20 2d 44 5f 43 52 54 5f 4e 4f 4e 53 54 44  TE -D_CRT_NONSTD
4540: 43 5f 4e 4f 5f 57 41 52 4e 49 4e 47 53 0a 52 43  C_NO_WARNINGS.RC
4550: 43 20 3d 20 24 28 52 43 43 29 20 2d 44 5f 43 52  C = $(RCC) -D_CR
4560: 54 5f 4e 4f 4e 53 54 44 43 5f 4e 4f 5f 44 45 50  T_NONSTDC_NO_DEP
4570: 52 45 43 41 54 45 20 2d 44 5f 43 52 54 5f 4e 4f  RECATE -D_CRT_NO
4580: 4e 53 54 44 43 5f 4e 4f 5f 57 41 52 4e 49 4e 47  NSTDC_NO_WARNING
4590: 53 0a 0a 23 20 55 73 65 20 74 68 65 20 53 51 4c  S..# Use the SQL
45a0: 69 74 65 20 64 65 62 75 67 67 69 6e 67 20 68 65  ite debugging he
45b0: 61 70 20 73 75 62 73 79 73 74 65 6d 3f 0a 23 0a  ap subsystem?.#.
45c0: 21 49 46 20 24 28 4d 45 4d 44 45 42 55 47 29 21  !IF $(MEMDEBUG)!
45d0: 3d 30 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20  =0.TCC = $(TCC) 
45e0: 2d 44 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55  -DSQLITE_MEMDEBU
45f0: 47 3d 31 0a 52 43 43 20 3d 20 24 28 52 43 43 29  G=1.RCC = $(RCC)
4600: 20 2d 44 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42   -DSQLITE_MEMDEB
4610: 55 47 3d 31 0a 0a 23 20 55 73 65 20 6e 61 74 69  UG=1..# Use nati
4620: 76 65 20 57 69 6e 33 32 20 68 65 61 70 20 73 75  ve Win32 heap su
4630: 62 73 79 73 74 65 6d 20 69 6e 73 74 65 61 64 20  bsystem instead 
4640: 6f 66 20 6d 61 6c 6c 6f 63 2f 66 72 65 65 3f 0a  of malloc/free?.
4650: 23 0a 21 45 4c 53 45 49 46 20 24 28 57 49 4e 33  #.!ELSEIF $(WIN3
4660: 32 48 45 41 50 29 21 3d 30 0a 54 43 43 20 3d 20  2HEAP)!=0.TCC = 
4670: 24 28 54 43 43 29 20 2d 44 53 51 4c 49 54 45 5f  $(TCC) -DSQLITE_
4680: 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 3d 31 0a 52  WIN32_MALLOC=1.R
4690: 43 43 20 3d 20 24 28 52 43 43 29 20 2d 44 53 51  CC = $(RCC) -DSQ
46a0: 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f  LITE_WIN32_MALLO
46b0: 43 3d 31 0a 0a 23 20 56 61 6c 69 64 61 74 65 20  C=1..# Validate 
46c0: 74 68 65 20 68 65 61 70 20 6f 6e 20 65 76 65 72  the heap on ever
46d0: 79 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20  y call into the 
46e0: 6e 61 74 69 76 65 20 57 69 6e 33 32 20 68 65 61  native Win32 hea
46f0: 70 20 73 75 62 73 79 73 74 65 6d 3f 0a 23 0a 21  p subsystem?.#.!
4700: 49 46 20 24 28 44 45 42 55 47 29 3e 33 0a 54 43  IF $(DEBUG)>3.TC
4710: 43 20 3d 20 24 28 54 43 43 29 20 2d 44 53 51 4c  C = $(TCC) -DSQL
4720: 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43  ITE_WIN32_MALLOC
4730: 5f 56 41 4c 49 44 41 54 45 3d 31 0a 52 43 43 20  _VALIDATE=1.RCC 
4740: 3d 20 24 28 52 43 43 29 20 2d 44 53 51 4c 49 54  = $(RCC) -DSQLIT
4750: 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5f 56  E_WIN32_MALLOC_V
4760: 41 4c 49 44 41 54 45 3d 31 0a 21 45 4e 44 49 46  ALIDATE=1.!ENDIF
4770: 0a 21 45 4e 44 49 46 0a 0a 0a 23 20 43 6f 6d 70  .!ENDIF...# Comp
4780: 69 6c 65 72 20 6f 70 74 69 6f 6e 73 20 6e 65 65  iler options nee
4790: 64 65 64 20 66 6f 72 20 70 72 6f 67 72 61 6d 73  ded for programs
47a0: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 72 65   that use the re
47b0: 61 64 6c 69 6e 65 28 29 20 6c 69 62 72 61 72 79  adline() library
47c0: 2e 0a 23 0a 21 49 46 4e 44 45 46 20 52 45 41 44  ..#.!IFNDEF READ
47d0: 4c 49 4e 45 5f 46 4c 41 47 53 0a 52 45 41 44 4c  LINE_FLAGS.READL
47e0: 49 4e 45 5f 46 4c 41 47 53 20 3d 20 2d 44 48 41  INE_FLAGS = -DHA
47f0: 56 45 5f 52 45 41 44 4c 49 4e 45 3d 30 0a 21 45  VE_READLINE=0.!E
4800: 4e 44 49 46 0a 0a 23 20 54 68 65 20 6c 69 62 72  NDIF..# The libr
4810: 61 72 79 20 74 68 61 74 20 70 72 6f 67 72 61 6d  ary that program
4820: 73 20 75 73 69 6e 67 20 72 65 61 64 6c 69 6e 65  s using readline
4830: 28 29 20 6d 75 73 74 20 6c 69 6e 6b 20 61 67 61  () must link aga
4840: 69 6e 73 74 2e 0a 23 0a 21 49 46 4e 44 45 46 20  inst..#.!IFNDEF 
4850: 4c 49 42 52 45 41 44 4c 49 4e 45 0a 4c 49 42 52  LIBREADLINE.LIBR
4860: 45 41 44 4c 49 4e 45 20 3d 0a 21 45 4e 44 49 46  EADLINE =.!ENDIF
4870: 0a 0a 23 20 53 68 6f 75 6c 64 20 74 68 65 20 64  ..# Should the d
4880: 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 62  atabase engine b
4890: 65 20 63 6f 6d 70 69 6c 65 64 20 74 68 72 65 61  e compiled threa
48a0: 64 73 61 66 65 0a 23 0a 54 43 43 20 3d 20 24 28  dsafe.#.TCC = $(
48b0: 54 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 54 48  TCC) -DSQLITE_TH
48c0: 52 45 41 44 53 41 46 45 3d 31 0a 52 43 43 20 3d  READSAFE=1.RCC =
48d0: 20 24 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45   $(RCC) -DSQLITE
48e0: 5f 54 48 52 45 41 44 53 41 46 45 3d 31 0a 0a 23  _THREADSAFE=1..#
48f0: 20 44 6f 20 74 68 72 65 61 64 73 20 6f 76 65 72   Do threads over
4900: 72 69 64 65 20 65 61 63 68 20 6f 74 68 65 72 73  ride each others
4910: 20 6c 6f 63 6b 73 20 62 79 20 64 65 66 61 75 6c   locks by defaul
4920: 74 20 28 31 29 2c 20 6f 72 20 64 6f 20 77 65 20  t (1), or do we 
4930: 74 65 73 74 20 28 2d 31 29 0a 23 0a 54 43 43 20  test (-1).#.TCC 
4940: 3d 20 24 28 54 43 43 29 20 2d 44 53 51 4c 49 54  = $(TCC) -DSQLIT
4950: 45 5f 54 48 52 45 41 44 5f 4f 56 45 52 52 49 44  E_THREAD_OVERRID
4960: 45 5f 4c 4f 43 4b 3d 2d 31 0a 52 43 43 20 3d 20  E_LOCK=-1.RCC = 
4970: 24 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45 5f  $(RCC) -DSQLITE_
4980: 54 48 52 45 41 44 5f 4f 56 45 52 52 49 44 45 5f  THREAD_OVERRIDE_
4990: 4c 4f 43 4b 3d 2d 31 0a 0a 23 20 41 6e 79 20 74  LOCK=-1..# Any t
49a0: 61 72 67 65 74 20 6c 69 62 72 61 72 69 65 73 20  arget libraries 
49b0: 77 68 69 63 68 20 6c 69 62 73 71 6c 69 74 65 20  which libsqlite 
49c0: 6d 75 73 74 20 62 65 20 6c 69 6e 6b 65 64 20 61  must be linked a
49d0: 67 61 69 6e 73 74 0a 23 0a 21 49 46 4e 44 45 46  gainst.#.!IFNDEF
49e0: 20 54 4c 49 42 53 0a 54 4c 49 42 53 20 3d 0a 21   TLIBS.TLIBS =.!
49f0: 45 4e 44 49 46 0a 0a 23 20 46 6c 61 67 73 20 63  ENDIF..# Flags c
4a00: 6f 6e 74 72 6f 6c 6c 69 6e 67 20 75 73 65 20 6f  ontrolling use o
4a10: 66 20 74 68 65 20 69 6e 20 6d 65 6d 6f 72 79 20  f the in memory 
4a20: 62 74 72 65 65 20 69 6d 70 6c 65 6d 65 6e 74 61  btree implementa
4a30: 74 69 6f 6e 0a 23 0a 23 20 53 51 4c 49 54 45 5f  tion.#.# SQLITE_
4a40: 54 45 4d 50 5f 53 54 4f 52 45 20 69 73 20 30 20  TEMP_STORE is 0 
4a50: 74 6f 20 66 6f 72 63 65 20 74 65 6d 70 6f 72 61  to force tempora
4a60: 72 79 20 74 61 62 6c 65 73 20 74 6f 20 62 65 20  ry tables to be 
4a70: 69 6e 20 61 20 66 69 6c 65 2c 20 31 20 74 6f 0a  in a file, 1 to.
4a80: 23 20 64 65 66 61 75 6c 74 20 74 6f 20 66 69 6c  # default to fil
4a90: 65 2c 20 32 20 74 6f 20 64 65 66 61 75 6c 74 20  e, 2 to default 
4aa0: 74 6f 20 6d 65 6d 6f 72 79 2c 20 61 6e 64 20 33  to memory, and 3
4ab0: 20 74 6f 20 66 6f 72 63 65 20 74 65 6d 70 6f 72   to force tempor
4ac0: 61 72 79 0a 23 20 74 61 62 6c 65 73 20 74 6f 20  ary.# tables to 
4ad0: 61 6c 77 61 79 73 20 62 65 20 69 6e 20 6d 65 6d  always be in mem
4ae0: 6f 72 79 2e 0a 23 0a 54 43 43 20 3d 20 24 28 54  ory..#.TCC = $(T
4af0: 43 43 29 20 2d 44 53 51 4c 49 54 45 5f 54 45 4d  CC) -DSQLITE_TEM
4b00: 50 5f 53 54 4f 52 45 3d 31 0a 52 43 43 20 3d 20  P_STORE=1.RCC = 
4b10: 24 28 52 43 43 29 20 2d 44 53 51 4c 49 54 45 5f  $(RCC) -DSQLITE_
4b20: 54 45 4d 50 5f 53 54 4f 52 45 3d 31 0a 0a 23 20  TEMP_STORE=1..# 
4b30: 45 6e 61 62 6c 65 2f 64 69 73 61 62 6c 65 20 6c  Enable/disable l
4b40: 6f 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f  oadable extensio
4b50: 6e 73 2c 20 61 6e 64 20 6f 74 68 65 72 20 6f 70  ns, and other op
4b60: 74 69 6f 6e 61 6c 20 66 65 61 74 75 72 65 73 0a  tional features.
4b70: 23 20 62 61 73 65 64 20 6f 6e 20 63 6f 6e 66 69  # based on confi
4b80: 67 75 72 61 74 69 6f 6e 2e 20 28 2d 44 53 51 4c  guration. (-DSQL
4b90: 49 54 45 5f 4f 4d 49 54 2a 2c 20 2d 44 53 51 4c  ITE_OMIT*, -DSQL
4ba0: 49 54 45 5f 45 4e 41 42 4c 45 2a 29 2e 0a 23 20  ITE_ENABLE*)..# 
4bb0: 54 68 65 20 73 61 6d 65 20 73 65 74 20 6f 66 20  The same set of 
4bc0: 4f 4d 49 54 20 61 6e 64 20 45 4e 41 42 4c 45 20  OMIT and ENABLE 
4bd0: 66 6c 61 67 73 20 73 68 6f 75 6c 64 20 62 65 20  flags should be 
4be0: 70 61 73 73 65 64 20 74 6f 20 74 68 65 0a 23 20  passed to the.# 
4bf0: 4c 45 4d 4f 4e 20 70 61 72 73 65 72 20 67 65 6e  LEMON parser gen
4c00: 65 72 61 74 6f 72 20 61 6e 64 20 74 68 65 20 6d  erator and the m
4c10: 6b 6b 65 79 77 6f 72 64 68 61 73 68 20 74 6f 6f  kkeywordhash too
4c20: 6c 20 61 73 20 77 65 6c 6c 2e 0a 0a 23 20 54 68  l as well...# Th
4c30: 65 73 65 20 61 72 65 20 74 68 65 20 72 65 71 75  ese are the requ
4c40: 69 72 65 64 20 53 51 4c 69 74 65 20 63 6f 6d 70  ired SQLite comp
4c50: 69 6c 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  ilation options 
4c60: 75 73 65 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c  used when compil
4c70: 69 6e 67 20 66 6f 72 0a 23 20 74 68 65 20 57 69  ing for.# the Wi
4c80: 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 2e 0a  ndows platform..
4c90: 23 0a 52 45 51 5f 46 45 41 54 55 52 45 5f 46 4c  #.REQ_FEATURE_FL
4ca0: 41 47 53 20 3d 20 24 28 52 45 51 5f 46 45 41 54  AGS = $(REQ_FEAT
4cb0: 55 52 45 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c  URE_FLAGS) -DSQL
4cc0: 49 54 45 5f 4d 41 58 5f 54 52 49 47 47 45 52 5f  ITE_MAX_TRIGGER_
4cd0: 44 45 50 54 48 3d 31 30 30 0a 0a 23 20 49 66 20  DEPTH=100..# If 
4ce0: 77 65 20 61 72 65 20 6c 69 6e 6b 69 6e 67 20 74  we are linking t
4cf0: 6f 20 74 68 65 20 52 50 43 52 54 34 20 6c 69 62  o the RPCRT4 lib
4d00: 72 61 72 79 2c 20 65 6e 61 62 6c 65 20 66 65 61  rary, enable fea
4d10: 74 75 72 65 73 20 74 68 61 74 20 6e 65 65 64 20  tures that need 
4d20: 69 74 2e 0a 23 0a 21 49 46 20 24 28 55 53 45 5f  it..#.!IF $(USE_
4d30: 52 50 43 52 54 34 5f 4c 49 42 29 21 3d 30 0a 52  RPCRT4_LIB)!=0.R
4d40: 45 51 5f 46 45 41 54 55 52 45 5f 46 4c 41 47 53  EQ_FEATURE_FLAGS
4d50: 20 3d 20 24 28 52 45 51 5f 46 45 41 54 55 52 45   = $(REQ_FEATURE
4d60: 5f 46 4c 41 47 53 29 20 2d 44 53 51 4c 49 54 45  _FLAGS) -DSQLITE
4d70: 5f 57 49 4e 33 32 5f 55 53 45 5f 55 55 49 44 3d  _WIN32_USE_UUID=
4d80: 31 0a 21 45 4e 44 49 46 0a 0a 23 20 41 64 64 20  1.!ENDIF..# Add 
4d90: 74 68 65 20 72 65 71 75 69 72 65 64 20 61 6e 64  the required and
4da0: 20 6f 70 74 69 6f 6e 61 6c 20 53 51 4c 69 74 65   optional SQLite
4db0: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 70 74   compilation opt
4dc0: 69 6f 6e 73 20 69 6e 74 6f 20 74 68 65 20 63 6f  ions into the co
4dd0: 6d 6d 61 6e 64 0a 23 20 6c 69 6e 65 73 20 75 73  mmand.# lines us
4de0: 65 64 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  ed to invoke the
4df0: 20 4d 53 56 43 20 63 6f 64 65 20 61 6e 64 20 72   MSVC code and r
4e00: 65 73 6f 75 72 63 65 20 63 6f 6d 70 69 6c 65 72  esource compiler
4e10: 73 2e 0a 23 0a 54 43 43 20 3d 20 24 28 54 43 43  s..#.TCC = $(TCC
4e20: 29 20 24 28 52 45 51 5f 46 45 41 54 55 52 45 5f  ) $(REQ_FEATURE_
4e30: 46 4c 41 47 53 29 20 24 28 4f 50 54 5f 46 45 41  FLAGS) $(OPT_FEA
4e40: 54 55 52 45 5f 46 4c 41 47 53 29 20 24 28 45 58  TURE_FLAGS) $(EX
4e50: 54 5f 46 45 41 54 55 52 45 5f 46 4c 41 47 53 29  T_FEATURE_FLAGS)
4e60: 0a 52 43 43 20 3d 20 24 28 52 43 43 29 20 24 28  .RCC = $(RCC) $(
4e70: 52 45 51 5f 46 45 41 54 55 52 45 5f 46 4c 41 47  REQ_FEATURE_FLAG
4e80: 53 29 20 24 28 4f 50 54 5f 46 45 41 54 55 52 45  S) $(OPT_FEATURE
4e90: 5f 46 4c 41 47 53 29 20 24 28 45 58 54 5f 46 45  _FLAGS) $(EXT_FE
4ea0: 41 54 55 52 45 5f 46 4c 41 47 53 29 0a 0a 23 20  ATURE_FLAGS)..# 
4eb0: 41 64 64 20 69 6e 20 61 6e 79 20 6f 70 74 69 6f  Add in any optio
4ec0: 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 73  nal parameters s
4ed0: 70 65 63 69 66 69 65 64 20 6f 6e 20 74 68 65 20  pecified on the 
4ee0: 63 6f 6d 6d 61 6e 65 20 6c 69 6e 65 2c 20 65 2e  commane line, e.
4ef0: 67 2e 0a 23 20 6e 6d 61 6b 65 20 2f 66 20 4d 61  g..# nmake /f Ma
4f00: 6b 65 66 69 6c 65 2e 6d 73 63 20 61 6c 6c 20 22  kefile.msc all "
4f10: 4f 50 54 53 3d 2d 44 53 51 4c 49 54 45 5f 45 4e  OPTS=-DSQLITE_EN
4f20: 41 42 4c 45 5f 46 4f 4f 3d 31 20 2d 44 53 51 4c  ABLE_FOO=1 -DSQL
4f30: 49 54 45 5f 4f 4d 49 54 5f 46 4f 4f 3d 31 22 0a  ITE_OMIT_FOO=1".
4f40: 23 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20 24  #.TCC = $(TCC) $
4f50: 28 4f 50 54 53 29 0a 52 43 43 20 3d 20 24 28 52  (OPTS).RCC = $(R
4f60: 43 43 29 20 24 28 4f 50 54 53 29 0a 0a 23 20 49  CC) $(OPTS)..# I
4f70: 66 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20  f compiling for 
4f80: 64 65 62 75 67 67 69 6e 67 2c 20 61 64 64 20 73  debugging, add s
4f90: 6f 6d 65 20 64 65 66 69 6e 65 73 2e 0a 23 0a 21  ome defines..#.!
4fa0: 49 46 20 24 28 44 45 42 55 47 29 3e 31 0a 54 43  IF $(DEBUG)>1.TC
4fb0: 43 20 3d 20 24 28 54 43 43 29 20 2d 44 5f 44 45  C = $(TCC) -D_DE
4fc0: 42 55 47 0a 42 43 43 20 3d 20 24 28 42 43 43 29  BUG.BCC = $(BCC)
4fd0: 20 2d 44 5f 44 45 42 55 47 0a 52 43 43 20 3d 20   -D_DEBUG.RCC = 
4fe0: 24 28 52 43 43 29 20 2d 44 5f 44 45 42 55 47 0a  $(RCC) -D_DEBUG.
4ff0: 21 45 4e 44 49 46 0a 0a 23 20 49 66 20 6f 70 74  !ENDIF..# If opt
5000: 69 6d 69 7a 61 74 69 6f 6e 73 20 61 72 65 20 65  imizations are e
5010: 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61 62 6c  nabled or disabl
5020: 65 64 20 28 65 69 74 68 65 72 20 69 6d 70 6c 69  ed (either impli
5030: 63 69 74 6c 79 20 6f 72 0a 23 20 65 78 70 6c 69  citly or.# expli
5040: 63 69 74 6c 79 29 2c 20 61 64 64 20 74 68 65 20  citly), add the 
5050: 6e 65 63 65 73 73 61 72 79 20 66 6c 61 67 73 2e  necessary flags.
5060: 0a 23 0a 21 49 46 20 24 28 44 45 42 55 47 29 3e  .#.!IF $(DEBUG)>
5070: 31 20 7c 7c 20 24 28 4f 50 54 49 4d 49 5a 41 54  1 || $(OPTIMIZAT
5080: 49 4f 4e 53 29 3d 3d 30 0a 54 43 43 20 3d 20 24  IONS)==0.TCC = $
5090: 28 54 43 43 29 20 2d 4f 64 0a 42 43 43 20 3d 20  (TCC) -Od.BCC = 
50a0: 24 28 42 43 43 29 20 2d 4f 64 0a 21 49 46 20 24  $(BCC) -Od.!IF $
50b0: 28 55 53 45 5f 52 55 4e 54 49 4d 45 5f 43 48 45  (USE_RUNTIME_CHE
50c0: 43 4b 53 29 21 3d 30 0a 54 43 43 20 3d 20 24 28  CKS)!=0.TCC = $(
50d0: 54 43 43 29 20 2d 52 54 43 31 0a 42 43 43 20 3d  TCC) -RTC1.BCC =
50e0: 20 24 28 42 43 43 29 20 2d 52 54 43 31 0a 21 45   $(BCC) -RTC1.!E
50f0: 4e 44 49 46 0a 21 45 4c 53 45 49 46 20 24 28 4f  NDIF.!ELSEIF $(O
5100: 50 54 49 4d 49 5a 41 54 49 4f 4e 53 29 3e 3d 33  PTIMIZATIONS)>=3
5110: 0a 54 43 43 20 3d 20 24 28 54 43 43 29 20 2d 4f  .TCC = $(TCC) -O
5120: 78 0a 42 43 43 20 3d 20 24 28 42 43 43 29 20 2d  x.BCC = $(BCC) -
5130: 4f 78 0a 21 45 4c 53 45 49 46 20 24 28 4f 50 54  Ox.!ELSEIF $(OPT
5140: 49 4d 49 5a 41 54 49 4f 4e 53 29 3d 3d 32 0a 54  IMIZATIONS)==2.T
5150: 43 43 20 3d 20 24 28 54 43 43 29 20 2d 4f 32 0a  CC = $(TCC) -O2.
5160: 42 43 43 20 3d 20 24 28 42 43 43 29 20 2d 4f 32  BCC = $(BCC) -O2
5170: 0a 21 45 4c 53 45 49 46 20 24 28 4f 50 54 49 4d  .!ELSEIF $(OPTIM
5180: 49 5a 41 54 49 4f 4e 53 29 3d 3d 31 0a 54 43 43  IZATIONS)==1.TCC
5190: 20 3d 20 24 28 54 43 43 29 20 2d 4f 31 0a 42 43   = $(TCC) -O1.BC
51a0: 43 20 3d 20 24 28 42 43 43 29 20 2d 4f 31 0a 21  C = $(BCC) -O1.!
51b0: 45 4e 44 49 46 0a 0a 23 20 49 66 20 73 79 6d 62  ENDIF..# If symb
51c0: 6f 6c 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20  ols are enabled 
51d0: 28 6f 72 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f  (or compiling fo
51e0: 72 20 64 65 62 75 67 67 69 6e 67 29 2c 20 65 6e  r debugging), en
51f0: 61 62 6c 65 20 50 44 42 73 2e 0a 23 0a 21 49 46  able PDBs..#.!IF
5200: 20 24 28 44 45 42 55 47 29 3e 31 20 7c 7c 20 24   $(DEBUG)>1 || $
5210: 28 53 59 4d 42 4f 4c 53 29 21 3d 30 0a 54 43 43  (SYMBOLS)!=0.TCC
5220: 20 3d 20 24 28 54 43 43 29 20 2d 5a 69 0a 42 43   = $(TCC) -Zi.BC
5230: 43 20 3d 20 24 28 42 43 43 29 20 2d 5a 69 0a 21  C = $(BCC) -Zi.!
5240: 45 4e 44 49 46 0a 0a 0a 23 20 43 6f 6d 6d 61 6e  ENDIF...# Comman
5250: 64 20 6c 69 6e 65 20 70 72 65 66 69 78 65 73 20  d line prefixes 
5260: 66 6f 72 20 63 6f 6d 70 69 6c 69 6e 67 20 63 6f  for compiling co
5270: 64 65 2c 20 63 6f 6d 70 69 6c 69 6e 67 20 72 65  de, compiling re
5280: 73 6f 75 72 63 65 73 2c 0a 23 20 6c 69 6e 6b 69  sources,.# linki
5290: 6e 67 2c 20 65 74 63 2e 0a 23 0a 4c 54 43 4f 4d  ng, etc..#.LTCOM
52a0: 50 49 4c 45 20 3d 20 24 28 54 43 43 29 20 2d 46  PILE = $(TCC) -F
52b0: 6f 24 40 0a 4c 54 52 43 4f 4d 50 49 4c 45 20 3d  o$@.LTRCOMPILE =
52c0: 20 24 28 52 43 43 29 20 2d 72 0a 4c 54 4c 49 42   $(RCC) -r.LTLIB
52d0: 20 3d 20 6c 69 62 2e 65 78 65 0a 4c 54 4c 49 4e   = lib.exe.LTLIN
52e0: 4b 20 3d 20 24 28 54 43 43 29 20 2d 46 65 24 40  K = $(TCC) -Fe$@
52f0: 0a 0a 23 20 49 66 20 72 65 71 75 65 73 74 65 64  ..# If requested
5300: 2c 20 6c 69 6e 6b 20 74 6f 20 74 68 65 20 52 50  , link to the RP
5310: 43 52 54 34 20 6c 69 62 72 61 72 79 2e 0a 23 0a  CRT4 library..#.
5320: 21 49 46 20 24 28 55 53 45 5f 52 50 43 52 54 34  !IF $(USE_RPCRT4
5330: 5f 4c 49 42 29 21 3d 30 0a 4c 54 4c 49 4e 4b 20  _LIB)!=0.LTLINK 
5340: 3d 20 24 28 4c 54 4c 49 4e 4b 29 20 72 70 63 72  = $(LTLINK) rpcr
5350: 74 34 2e 6c 69 62 0a 21 45 4e 44 49 46 0a 0a 23  t4.lib.!ENDIF..#
5360: 20 49 66 20 61 20 70 6c 61 74 66 6f 72 6d 20 77   If a platform w
5370: 61 73 20 73 65 74 2c 20 66 6f 72 63 65 20 74 68  as set, force th
5380: 65 20 6c 69 6e 6b 65 72 20 74 6f 20 74 61 72 67  e linker to targ
5390: 65 74 20 74 68 61 74 2e 0a 23 20 4e 6f 74 65 20  et that..# Note 
53a0: 74 68 61 74 20 74 68 65 20 76 63 76 61 72 73 2a  that the vcvars*
53b0: 2e 62 61 74 20 66 61 6d 69 6c 79 20 6f 66 20 62  .bat family of b
53c0: 61 74 63 68 20 66 69 6c 65 73 20 74 79 70 69 63  atch files typic
53d0: 61 6c 6c 79 0a 23 20 73 65 74 20 74 68 69 73 20  ally.# set this 
53e0: 66 6f 72 20 79 6f 75 2e 20 20 4f 74 68 65 72 77  for you.  Otherw
53f0: 69 73 65 2c 20 74 68 65 20 6c 69 6e 6b 65 72 20  ise, the linker 
5400: 77 69 6c 6c 20 61 74 74 65 6d 70 74 0a 23 20 74  will attempt.# t
5410: 6f 20 64 65 64 75 63 65 20 74 68 65 20 62 69 6e  o deduce the bin
5420: 61 72 79 20 74 79 70 65 20 62 61 73 65 64 20 6f  ary type based o
5430: 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 66 69 6c  n the object fil
5440: 65 73 2e 0a 21 49 46 44 45 46 20 50 4c 41 54 46  es..!IFDEF PLATF
5450: 4f 52 4d 0a 4c 54 4c 49 4e 4b 4f 50 54 53 20 3d  ORM.LTLINKOPTS =
5460: 20 2f 4e 4f 4c 4f 47 4f 20 2f 4d 41 43 48 49 4e   /NOLOGO /MACHIN
5470: 45 3a 24 28 50 4c 41 54 46 4f 52 4d 29 0a 4c 54  E:$(PLATFORM).LT
5480: 4c 49 42 4f 50 54 53 20 3d 20 2f 4e 4f 4c 4f 47  LIBOPTS = /NOLOG
5490: 4f 20 2f 4d 41 43 48 49 4e 45 3a 24 28 50 4c 41  O /MACHINE:$(PLA
54a0: 54 46 4f 52 4d 29 0a 21 45 4c 53 45 0a 4c 54 4c  TFORM).!ELSE.LTL
54b0: 49 4e 4b 4f 50 54 53 20 3d 20 2f 4e 4f 4c 4f 47  INKOPTS = /NOLOG
54c0: 4f 0a 4c 54 4c 49 42 4f 50 54 53 20 3d 20 2f 4e  O.LTLIBOPTS = /N
54d0: 4f 4c 4f 47 4f 0a 21 45 4e 44 49 46 0a 0a 23 20  OLOGO.!ENDIF..# 
54e0: 57 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66  When compiling f
54f0: 6f 72 20 75 73 65 20 69 6e 20 74 68 65 20 57 69  or use in the Wi
5500: 6e 52 54 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2c  nRT environment,
5510: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 23   the following.#
5520: 20 6c 69 6e 6b 65 72 20 6f 70 74 69 6f 6e 20 6d   linker option m
5530: 75 73 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  ust be used to m
5540: 61 72 6b 20 74 68 65 20 65 78 65 63 75 74 61 62  ark the executab
5550: 6c 65 20 61 73 20 72 75 6e 6e 61 62 6c 65 0a 23  le as runnable.#
5560: 20 6f 6e 6c 79 20 69 6e 20 74 68 65 20 63 6f 6e   only in the con
5570: 74 65 78 74 20 6f 66 20 61 6e 20 61 70 70 6c 69  text of an appli
5580: 63 61 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 65 72  cation container
5590: 2e 0a 23 0a 21 49 46 20 24 28 46 4f 52 5f 57 49  ..#.!IF $(FOR_WI
55a0: 4e 52 54 29 21 3d 30 0a 4c 54 4c 49 4e 4b 4f 50  NRT)!=0.LTLINKOP
55b0: 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50 54  TS = $(LTLINKOPT
55c0: 53 29 20 2f 41 50 50 43 4f 4e 54 41 49 4e 45 52  S) /APPCONTAINER
55d0: 0a 21 49 46 20 22 24 28 56 49 53 55 41 4c 53 54  .!IF "$(VISUALST
55e0: 55 44 49 4f 56 45 52 53 49 4f 4e 29 22 3d 3d 22  UDIOVERSION)"=="
55f0: 31 32 2e 30 22 20 7c 7c 20 22 24 28 56 49 53 55  12.0" || "$(VISU
5600: 41 4c 53 54 55 44 49 4f 56 45 52 53 49 4f 4e 29  ALSTUDIOVERSION)
5610: 22 3d 3d 22 31 34 2e 30 22 0a 21 49 46 4e 44 45  "=="14.0".!IFNDE
5620: 46 20 53 54 4f 52 45 4c 49 42 50 41 54 48 0a 21  F STORELIBPATH.!
5630: 49 46 20 22 24 28 50 4c 41 54 46 4f 52 4d 29 22  IF "$(PLATFORM)"
5640: 3d 3d 22 78 38 36 22 0a 53 54 4f 52 45 4c 49 42  =="x86".STORELIB
5650: 50 41 54 48 20 3d 20 24 28 43 52 54 4c 49 42 50  PATH = $(CRTLIBP
5660: 41 54 48 29 5c 73 74 6f 72 65 0a 21 45 4c 53 45  ATH)\store.!ELSE
5670: 49 46 20 22 24 28 50 4c 41 54 46 4f 52 4d 29 22  IF "$(PLATFORM)"
5680: 3d 3d 22 78 36 34 22 0a 53 54 4f 52 45 4c 49 42  =="x64".STORELIB
5690: 50 41 54 48 20 3d 20 24 28 43 52 54 4c 49 42 50  PATH = $(CRTLIBP
56a0: 41 54 48 29 5c 73 74 6f 72 65 5c 61 6d 64 36 34  ATH)\store\amd64
56b0: 0a 21 45 4c 53 45 49 46 20 22 24 28 50 4c 41 54  .!ELSEIF "$(PLAT
56c0: 46 4f 52 4d 29 22 3d 3d 22 41 52 4d 22 0a 53 54  FORM)"=="ARM".ST
56d0: 4f 52 45 4c 49 42 50 41 54 48 20 3d 20 24 28 43  ORELIBPATH = $(C
56e0: 52 54 4c 49 42 50 41 54 48 29 5c 73 74 6f 72 65  RTLIBPATH)\store
56f0: 5c 61 72 6d 0a 21 45 4c 53 45 0a 53 54 4f 52 45  \arm.!ELSE.STORE
5700: 4c 49 42 50 41 54 48 20 3d 20 24 28 43 52 54 4c  LIBPATH = $(CRTL
5710: 49 42 50 41 54 48 29 5c 73 74 6f 72 65 0a 21 45  IBPATH)\store.!E
5720: 4e 44 49 46 0a 21 45 4e 44 49 46 0a 53 54 4f 52  NDIF.!ENDIF.STOR
5730: 45 4c 49 42 50 41 54 48 20 3d 20 24 28 53 54 4f  ELIBPATH = $(STO
5740: 52 45 4c 49 42 50 41 54 48 3a 5c 5c 3d 5c 29 0a  RELIBPATH:\\=\).
5750: 4c 54 4c 49 4e 4b 4f 50 54 53 20 3d 20 24 28 4c  LTLINKOPTS = $(L
5760: 54 4c 49 4e 4b 4f 50 54 53 29 20 22 2f 4c 49 42  TLINKOPTS) "/LIB
5770: 50 41 54 48 3a 24 28 53 54 4f 52 45 4c 49 42 50  PATH:$(STORELIBP
5780: 41 54 48 29 22 0a 21 45 4e 44 49 46 0a 21 45 4e  ATH)".!ENDIF.!EN
5790: 44 49 46 0a 0a 23 20 57 68 65 6e 20 63 6f 6d 70  DIF..# When comp
57a0: 69 6c 69 6e 67 20 66 6f 72 20 57 69 6e 64 6f 77  iling for Window
57b0: 73 20 50 68 6f 6e 65 20 38 2e 31 2c 20 61 6e 20  s Phone 8.1, an 
57c0: 65 78 74 72 61 20 6c 69 62 72 61 72 79 20 70 61  extra library pa
57d0: 74 68 20 69 73 0a 23 20 72 65 71 75 69 72 65 64  th is.# required
57e0: 2e 0a 23 0a 21 49 46 20 24 28 55 53 45 5f 57 50  ..#.!IF $(USE_WP
57f0: 38 31 5f 4f 50 54 53 29 21 3d 30 0a 21 49 46 4e  81_OPTS)!=0.!IFN
5800: 44 45 46 20 57 50 38 31 4c 49 42 50 41 54 48 0a  DEF WP81LIBPATH.
5810: 21 49 46 20 22 24 28 50 4c 41 54 46 4f 52 4d 29  !IF "$(PLATFORM)
5820: 22 3d 3d 22 78 38 36 22 0a 57 50 38 31 4c 49 42  "=="x86".WP81LIB
5830: 50 41 54 48 20 3d 20 24 28 50 52 4f 47 52 41 4d  PATH = $(PROGRAM
5840: 46 49 4c 45 53 5f 58 38 36 29 5c 57 69 6e 64 6f  FILES_X86)\Windo
5850: 77 73 20 50 68 6f 6e 65 20 4b 69 74 73 5c 38 2e  ws Phone Kits\8.
5860: 31 5c 6c 69 62 5c 78 38 36 0a 21 45 4c 53 45 49  1\lib\x86.!ELSEI
5870: 46 20 22 24 28 50 4c 41 54 46 4f 52 4d 29 22 3d  F "$(PLATFORM)"=
5880: 3d 22 41 52 4d 22 0a 57 50 38 31 4c 49 42 50 41  ="ARM".WP81LIBPA
5890: 54 48 20 3d 20 24 28 50 52 4f 47 52 41 4d 46 49  TH = $(PROGRAMFI
58a0: 4c 45 53 5f 58 38 36 29 5c 57 69 6e 64 6f 77 73  LES_X86)\Windows
58b0: 20 50 68 6f 6e 65 20 4b 69 74 73 5c 38 2e 31 5c   Phone Kits\8.1\
58c0: 6c 69 62 5c 41 52 4d 0a 21 45 4c 53 45 0a 57 50  lib\ARM.!ELSE.WP
58d0: 38 31 4c 49 42 50 41 54 48 20 3d 20 24 28 50 52  81LIBPATH = $(PR
58e0: 4f 47 52 41 4d 46 49 4c 45 53 5f 58 38 36 29 5c  OGRAMFILES_X86)\
58f0: 57 69 6e 64 6f 77 73 20 50 68 6f 6e 65 20 4b 69  Windows Phone Ki
5900: 74 73 5c 38 2e 31 5c 6c 69 62 5c 78 38 36 0a 21  ts\8.1\lib\x86.!
5910: 45 4e 44 49 46 0a 21 45 4e 44 49 46 0a 21 45 4e  ENDIF.!ENDIF.!EN
5920: 44 49 46 0a 0a 23 20 57 68 65 6e 20 63 6f 6d 70  DIF..# When comp
5930: 69 6c 69 6e 67 20 66 6f 72 20 57 69 6e 64 6f 77  iling for Window
5940: 73 20 50 68 6f 6e 65 20 38 2e 31 2c 20 73 6f 6d  s Phone 8.1, som
5950: 65 20 65 78 74 72 61 20 6c 69 6e 6b 65 72 20 6f  e extra linker o
5960: 70 74 69 6f 6e 73 0a 23 20 61 72 65 20 61 6c 73  ptions.# are als
5970: 6f 20 72 65 71 75 69 72 65 64 2e 0a 23 0a 21 49  o required..#.!I
5980: 46 20 24 28 55 53 45 5f 57 50 38 31 5f 4f 50 54  F $(USE_WP81_OPT
5990: 53 29 21 3d 30 0a 21 49 46 44 45 46 20 57 50 38  S)!=0.!IFDEF WP8
59a0: 31 4c 49 42 50 41 54 48 0a 4c 54 4c 49 4e 4b 4f  1LIBPATH.LTLINKO
59b0: 50 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50  PTS = $(LTLINKOP
59c0: 54 53 29 20 22 2f 4c 49 42 50 41 54 48 3a 24 28  TS) "/LIBPATH:$(
59d0: 57 50 38 31 4c 49 42 50 41 54 48 29 22 0a 21 45  WP81LIBPATH)".!E
59e0: 4e 44 49 46 0a 4c 54 4c 49 4e 4b 4f 50 54 53 20  NDIF.LTLINKOPTS 
59f0: 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50 54 53 29 20  = $(LTLINKOPTS) 
5a00: 2f 44 59 4e 41 4d 49 43 42 41 53 45 0a 4c 54 4c  /DYNAMICBASE.LTL
5a10: 49 4e 4b 4f 50 54 53 20 3d 20 24 28 4c 54 4c 49  INKOPTS = $(LTLI
5a20: 4e 4b 4f 50 54 53 29 20 57 69 6e 64 6f 77 73 50  NKOPTS) WindowsP
5a30: 68 6f 6e 65 43 6f 72 65 2e 6c 69 62 20 52 75 6e  honeCore.lib Run
5a40: 74 69 6d 65 4f 62 6a 65 63 74 2e 6c 69 62 20 50  timeObject.lib P
5a50: 68 6f 6e 65 41 70 70 4d 6f 64 65 6c 48 6f 73 74  honeAppModelHost
5a60: 2e 6c 69 62 0a 4c 54 4c 49 4e 4b 4f 50 54 53 20  .lib.LTLINKOPTS 
5a70: 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50 54 53 29 20  = $(LTLINKOPTS) 
5a80: 2f 4e 4f 44 45 46 41 55 4c 54 4c 49 42 3a 6b 65  /NODEFAULTLIB:ke
5a90: 72 6e 65 6c 33 32 2e 6c 69 62 20 2f 4e 4f 44 45  rnel32.lib /NODE
5aa0: 46 41 55 4c 54 4c 49 42 3a 6f 6c 65 33 32 2e 6c  FAULTLIB:ole32.l
5ab0: 69 62 0a 21 45 4e 44 49 46 0a 0a 23 20 57 68 65  ib.!ENDIF..# Whe
5ac0: 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20  n compiling for 
5ad0: 55 57 50 20 6f 72 20 74 68 65 20 57 69 6e 64 6f  UWP or the Windo
5ae0: 77 73 20 31 30 20 70 6c 61 74 66 6f 72 6d 2c 20  ws 10 platform, 
5af0: 73 6f 6d 65 20 65 78 74 72 61 20 6c 69 6e 6b 65  some extra linke
5b00: 72 0a 23 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  r.# options are 
5b10: 61 6c 73 6f 20 72 65 71 75 69 72 65 64 2e 0a 23  also required..#
5b20: 0a 21 49 46 20 24 28 46 4f 52 5f 55 57 50 29 21  .!IF $(FOR_UWP)!
5b30: 3d 30 20 7c 7c 20 24 28 46 4f 52 5f 57 49 4e 31  =0 || $(FOR_WIN1
5b40: 30 29 21 3d 30 0a 4c 54 4c 49 4e 4b 4f 50 54 53  0)!=0.LTLINKOPTS
5b50: 20 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50 54 53 29   = $(LTLINKOPTS)
5b60: 20 2f 44 59 4e 41 4d 49 43 42 41 53 45 20 2f 4e   /DYNAMICBASE /N
5b70: 4f 44 45 46 41 55 4c 54 4c 49 42 3a 6b 65 72 6e  ODEFAULTLIB:kern
5b80: 65 6c 33 32 2e 6c 69 62 0a 4c 54 4c 49 4e 4b 4f  el32.lib.LTLINKO
5b90: 50 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50  PTS = $(LTLINKOP
5ba0: 54 53 29 20 6d 69 6e 63 6f 72 65 2e 6c 69 62 0a  TS) mincore.lib.
5bb0: 21 49 46 44 45 46 20 50 53 44 4b 4c 49 42 50 41  !IFDEF PSDKLIBPA
5bc0: 54 48 0a 4c 54 4c 49 4e 4b 4f 50 54 53 20 3d 20  TH.LTLINKOPTS = 
5bd0: 24 28 4c 54 4c 49 4e 4b 4f 50 54 53 29 20 22 2f  $(LTLINKOPTS) "/
5be0: 4c 49 42 50 41 54 48 3a 24 28 50 53 44 4b 4c 49  LIBPATH:$(PSDKLI
5bf0: 42 50 41 54 48 29 22 0a 21 45 4e 44 49 46 0a 21  BPATH)".!ENDIF.!
5c00: 45 4e 44 49 46 0a 0a 21 49 46 20 24 28 46 4f 52  ENDIF..!IF $(FOR
5c10: 5f 57 49 4e 31 30 29 21 3d 30 0a 4c 54 4c 49 4e  _WIN10)!=0.LTLIN
5c20: 4b 4f 50 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b  KOPTS = $(LTLINK
5c30: 4f 50 54 53 29 20 2f 67 75 61 72 64 3a 63 66 20  OPTS) /guard:cf 
5c40: 22 2f 4c 49 42 50 41 54 48 3a 24 28 55 43 52 54  "/LIBPATH:$(UCRT
5c50: 4c 49 42 50 41 54 48 29 22 0a 21 49 46 20 24 28  LIBPATH)".!IF $(
5c60: 44 45 42 55 47 29 3e 31 0a 4c 54 4c 49 4e 4b 4f  DEBUG)>1.LTLINKO
5c70: 50 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b 4f 50  PTS = $(LTLINKOP
5c80: 54 53 29 20 2f 4e 4f 44 45 46 41 55 4c 54 4c 49  TS) /NODEFAULTLI
5c90: 42 3a 6c 69 62 75 63 72 74 64 2e 6c 69 62 20 2f  B:libucrtd.lib /
5ca0: 44 45 46 41 55 4c 54 4c 49 42 3a 75 63 72 74 64  DEFAULTLIB:ucrtd
5cb0: 2e 6c 69 62 0a 21 45 4c 53 45 0a 4c 54 4c 49 4e  .lib.!ELSE.LTLIN
5cc0: 4b 4f 50 54 53 20 3d 20 24 28 4c 54 4c 49 4e 4b  KOPTS = $(LTLINK
5cd0: 4f 50 54 53 29 20 2f 4e 4f 44 45 46 41 55 4c 54  OPTS) /NODEFAULT
5ce0: 4c 49 42 3a 6c 69 62 75 63 72 74 2e 6c 69 62 20  LIB:libucrt.lib 
5cf0: 2f 44 45 46 41 55 4c 54 4c 49 42 3a 75 63 72 74  /DEFAULTLIB:ucrt
5d00: 2e 6c 69 62 0a 21 45 4e 44 49 46 0a 21 45 4e 44  .lib.!ENDIF.!END
5d10: 49 46 0a 0a 23 20 49 66 20 65 69 74 68 65 72 20  IF..# If either 
5d20: 64 65 62 75 67 67 69 6e 67 20 6f 72 20 73 79 6d  debugging or sym
5d30: 62 6f 6c 73 20 61 72 65 20 65 6e 61 62 6c 65 64  bols are enabled
5d40: 2c 20 65 6e 61 62 6c 65 20 50 44 42 73 2e 0a 23  , enable PDBs..#
5d50: 0a 21 49 46 20 24 28 44 45 42 55 47 29 3e 31 20  .!IF $(DEBUG)>1 
5d60: 7c 7c 20 24 28 53 59 4d 42 4f 4c 53 29 21 3d 30  || $(SYMBOLS)!=0
5d70: 0a 4c 44 46 4c 41 47 53 20 3d 20 2f 44 45 42 55  .LDFLAGS = /DEBU
5d80: 47 20 24 28 4c 44 4f 50 54 53 29 0a 21 45 4c 53  G $(LDOPTS).!ELS
5d90: 45 0a 4c 44 46 4c 41 47 53 20 3d 20 24 28 4c 44  E.LDFLAGS = $(LD
5da0: 4f 50 54 53 29 0a 21 45 4e 44 49 46 0a 0a 0a 23  OPTS).!ENDIF...#
5db0: 20 59 6f 75 20 73 68 6f 75 6c 64 20 6e 6f 74 20   You should not 
5dc0: 68 61 76 65 20 74 6f 20 63 68 61 6e 67 65 20 61  have to change a
5dd0: 6e 79 74 68 69 6e 67 20 62 65 6c 6f 77 20 74 68  nything below th
5de0: 69 73 20 6c 69 6e 65 0a 23 23 23 23 23 23 23 23  is line.########
5df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5e30: 23 23 23 23 23 23 23 0a 0a 0a 23 20 4f 62 6a 65  #######...# Obje
5e40: 63 74 20 66 69 6c 65 73 20 66 6f 72 20 74 68 65  ct files for the
5e50: 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 2e 0a 23   amalgamation..#
5e60: 0a 4c 49 42 4f 42 4a 53 31 20 3d 20 73 71 6c 69  .LIBOBJS1 = sqli
5e70: 74 65 33 2e 6c 6f 0a 0a 23 20 44 65 74 65 72 6d  te3.lo..# Determ
5e80: 69 6e 65 20 74 68 65 20 72 65 61 6c 20 76 61 6c  ine the real val
5e90: 75 65 20 6f 66 20 4c 49 42 4f 42 4a 20 62 61 73  ue of LIBOBJ bas
5ea0: 65 64 20 6f 6e 20 74 68 65 20 27 63 6f 6e 66 69  ed on the 'confi
5eb0: 67 75 72 65 27 20 73 63 72 69 70 74 0a 23 0a 4c  gure' script.#.L
5ec0: 49 42 4f 42 4a 20 3d 20 24 28 4c 49 42 4f 42 4a  IBOBJ = $(LIBOBJ
5ed0: 53 31 29 0a 0a 23 20 44 65 74 65 72 6d 69 6e 65  S1)..# Determine
5ee0: 20 69 66 20 65 6d 62 65 64 64 65 64 20 72 65 73   if embedded res
5ef0: 6f 75 72 63 65 20 63 6f 6d 70 69 6c 61 74 69 6f  ource compilatio
5f00: 6e 20 61 6e 64 20 75 73 61 67 65 20 61 72 65 20  n and usage are 
5f10: 65 6e 61 62 6c 65 64 2e 0a 23 0a 21 49 46 20 24  enabled..#.!IF $
5f20: 28 55 53 45 5f 52 43 29 21 3d 30 0a 4c 49 42 52  (USE_RC)!=0.LIBR
5f30: 45 53 4f 42 4a 53 20 3d 20 73 71 6c 69 74 65 33  ESOBJS = sqlite3
5f40: 72 65 73 2e 6c 6f 0a 21 45 4c 53 45 0a 4c 49 42  res.lo.!ELSE.LIB
5f50: 52 45 53 4f 42 4a 53 20 3d 0a 21 45 4e 44 49 46  RESOBJS =.!ENDIF
5f60: 0a 0a 0a 23 20 41 64 64 69 74 69 6f 6e 61 6c 20  ...# Additional 
5f70: 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e 73  compiler options
5f80: 20 66 6f 72 20 74 68 65 20 73 68 65 6c 6c 2e 20   for the shell. 
5f90: 20 54 68 65 73 65 20 61 72 65 20 6f 6e 6c 79 20   These are only 
5fa0: 65 66 66 65 63 74 69 76 65 0a 23 20 77 68 65 6e  effective.# when
5fb0: 20 74 68 65 20 73 68 65 6c 6c 20 69 73 20 6e 6f   the shell is no
5fc0: 74 20 62 65 69 6e 67 20 64 79 6e 61 6d 69 63 61  t being dynamica
5fd0: 6c 6c 79 20 6c 69 6e 6b 65 64 2e 0a 23 0a 21 49  lly linked..#.!I
5fe0: 46 20 24 28 44 59 4e 41 4d 49 43 5f 53 48 45 4c  F $(DYNAMIC_SHEL
5ff0: 4c 29 3d 3d 30 20 26 26 20 24 28 46 4f 52 5f 57  L)==0 && $(FOR_W
6000: 49 4e 31 30 29 3d 3d 30 0a 53 48 45 4c 4c 5f 43  IN10)==0.SHELL_C
6010: 4f 4d 50 49 4c 45 5f 4f 50 54 53 20 3d 20 24 28  OMPILE_OPTS = $(
6020: 53 48 45 4c 4c 5f 43 4f 4d 50 49 4c 45 5f 4f 50  SHELL_COMPILE_OP
6030: 54 53 29 20 2d 44 53 51 4c 49 54 45 5f 53 48 45  TS) -DSQLITE_SHE
6040: 4c 4c 5f 4a 53 4f 4e 31 20 2d 44 53 51 4c 49 54  LL_JSON1 -DSQLIT
6050: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 20 2d 44  E_ENABLE_FTS4 -D
6060: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58  SQLITE_ENABLE_EX
6070: 50 4c 41 49 4e 5f 43 4f 4d 4d 45 4e 54 53 0a 21  PLAIN_COMMENTS.!
6080: 45 4e 44 49 46 0a 0a 0a 23 20 54 68 69 73 20 69  ENDIF...# This i
6090: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 4d 61  s the default Ma
60a0: 6b 65 66 69 6c 65 20 74 61 72 67 65 74 2e 20 20  kefile target.  
60b0: 54 68 65 20 6f 62 6a 65 63 74 73 20 6c 69 73 74  The objects list
60c0: 65 64 20 68 65 72 65 0a 23 20 61 72 65 20 77 68  ed here.# are wh
60d0: 61 74 20 67 65 74 20 62 75 69 6c 64 20 77 68 65  at get build whe
60e0: 6e 20 79 6f 75 20 74 79 70 65 20 6a 75 73 74 20  n you type just 
60f0: 22 6d 61 6b 65 22 20 77 69 74 68 20 6e 6f 20 61  "make" with no a
6100: 72 67 75 6d 65 6e 74 73 2e 0a 23 0a 61 6c 6c 3a  rguments..#.all:
6110: 09 64 6c 6c 20 73 68 65 6c 6c 0a 0a 23 20 44 79  .dll shell..# Dy
6120: 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
6130: 72 79 20 73 65 63 74 69 6f 6e 2e 0a 23 0a 64 6c  ry section..#.dl
6140: 6c 3a 09 24 28 53 51 4c 49 54 45 33 44 4c 4c 29  l:.$(SQLITE3DLL)
6150: 0a 0a 23 20 53 68 65 6c 6c 20 65 78 65 63 75 74  ..# Shell execut
6160: 61 62 6c 65 2e 0a 23 0a 73 68 65 6c 6c 3a 09 24  able..#.shell:.$
6170: 28 53 51 4c 49 54 45 33 45 58 45 29 0a 0a 0a 24  (SQLITE3EXE)...$
6180: 28 53 51 4c 49 54 45 33 44 4c 4c 29 3a 09 24 28  (SQLITE3DLL):.$(
6190: 4c 49 42 4f 42 4a 29 20 24 28 4c 49 42 52 45 53  LIBOBJ) $(LIBRES
61a0: 4f 42 4a 53 29 20 24 28 43 4f 52 45 5f 4c 49 4e  OBJS) $(CORE_LIN
61b0: 4b 5f 44 45 50 29 0a 09 24 28 4c 44 29 20 24 28  K_DEP)..$(LD) $(
61c0: 4c 44 46 4c 41 47 53 29 20 24 28 4c 54 4c 49 4e  LDFLAGS) $(LTLIN
61d0: 4b 4f 50 54 53 29 20 24 28 4c 54 4c 49 42 50 41  KOPTS) $(LTLIBPA
61e0: 54 48 53 29 20 2f 44 4c 4c 20 24 28 43 4f 52 45  THS) /DLL $(CORE
61f0: 5f 4c 49 4e 4b 5f 4f 50 54 53 29 20 2f 4f 55 54  _LINK_OPTS) /OUT
6200: 3a 24 40 20 24 28 4c 49 42 4f 42 4a 29 20 24 28  :$@ $(LIBOBJ) $(
6210: 4c 49 42 52 45 53 4f 42 4a 53 29 20 24 28 4c 54  LIBRESOBJS) $(LT
6220: 4c 49 42 53 29 20 24 28 54 4c 49 42 53 29 0a 0a  LIBS) $(TLIBS)..
6230: 52 65 70 6c 61 63 65 2e 65 78 65 3a 0a 09 24 28  Replace.exe:..$(
6240: 43 53 43 29 20 2f 74 61 72 67 65 74 3a 65 78 65  CSC) /target:exe
6250: 20 24 28 54 4f 50 29 5c 52 65 70 6c 61 63 65 2e   $(TOP)\Replace.
6260: 63 73 0a 0a 73 71 6c 69 74 65 33 2e 64 65 66 3a  cs..sqlite3.def:
6270: 09 52 65 70 6c 61 63 65 2e 65 78 65 20 24 28 4c  .Replace.exe $(L
6280: 49 42 4f 42 4a 29 0a 09 65 63 68 6f 20 45 58 50  IBOBJ)..echo EXP
6290: 4f 52 54 53 20 3e 20 73 71 6c 69 74 65 33 2e 64  ORTS > sqlite3.d
62a0: 65 66 0a 09 64 75 6d 70 62 69 6e 20 2f 61 6c 6c  ef..dumpbin /all
62b0: 20 24 28 4c 49 42 4f 42 4a 29 20 5c 0a 09 09 7c   $(LIBOBJ) \...|
62c0: 20 2e 5c 52 65 70 6c 61 63 65 2e 65 78 65 20 22   .\Replace.exe "
62d0: 5e 5c 73 2b 2f 45 58 50 4f 52 54 3a 5f 3f 28 73  ^\s+/EXPORT:_?(s
62e0: 71 6c 69 74 65 33 5f 5b 5e 40 2c 5d 2a 29 28 3f  qlite3_[^@,]*)(?
62f0: 3a 40 5c 64 2b 7c 2c 44 41 54 41 29 3f 24 24 22  :@\d+|,DATA)?$$"
6300: 20 24 24 31 20 74 72 75 65 20 5c 0a 09 09 7c 20   $$1 true \...| 
6310: 73 6f 72 74 20 3e 3e 20 73 71 6c 69 74 65 33 2e  sort >> sqlite3.
6320: 64 65 66 0a 0a 24 28 53 51 4c 49 54 45 33 45 58  def..$(SQLITE3EX
6330: 45 29 3a 09 24 28 54 4f 50 29 5c 73 68 65 6c 6c  E):.$(TOP)\shell
6340: 2e 63 20 24 28 53 48 45 4c 4c 5f 43 4f 52 45 5f  .c $(SHELL_CORE_
6350: 44 45 50 29 20 24 28 4c 49 42 52 45 53 4f 42 4a  DEP) $(LIBRESOBJ
6360: 53 29 20 24 28 53 48 45 4c 4c 5f 43 4f 52 45 5f  S) $(SHELL_CORE_
6370: 53 52 43 29 20 24 28 53 51 4c 49 54 45 33 48 29  SRC) $(SQLITE3H)
6380: 0a 09 24 28 4c 54 4c 49 4e 4b 29 20 24 28 53 48  ..$(LTLINK) $(SH
6390: 45 4c 4c 5f 43 4f 4d 50 49 4c 45 5f 4f 50 54 53  ELL_COMPILE_OPTS
63a0: 29 20 24 28 52 45 41 44 4c 49 4e 45 5f 46 4c 41  ) $(READLINE_FLA
63b0: 47 53 29 20 24 28 54 4f 50 29 5c 73 68 65 6c 6c  GS) $(TOP)\shell
63c0: 2e 63 20 24 28 53 48 45 4c 4c 5f 43 4f 52 45 5f  .c $(SHELL_CORE_
63d0: 53 52 43 29 20 5c 0a 09 09 2f 6c 69 6e 6b 20 24  SRC) \.../link $
63e0: 28 53 51 4c 49 54 45 33 45 58 45 50 44 42 29 20  (SQLITE3EXEPDB) 
63f0: 24 28 4c 44 46 4c 41 47 53 29 20 24 28 4c 54 4c  $(LDFLAGS) $(LTL
6400: 49 4e 4b 4f 50 54 53 29 20 24 28 53 48 45 4c 4c  INKOPTS) $(SHELL
6410: 5f 4c 49 4e 4b 5f 4f 50 54 53 29 20 24 28 4c 54  _LINK_OPTS) $(LT
6420: 4c 49 42 50 41 54 48 53 29 20 24 28 4c 49 42 52  LIBPATHS) $(LIBR
6430: 45 53 4f 42 4a 53 29 20 24 28 4c 49 42 52 45 41  ESOBJS) $(LIBREA
6440: 44 4c 49 4e 45 29 20 24 28 4c 54 4c 49 42 53 29  DLINE) $(LTLIBS)
6450: 20 24 28 54 4c 49 42 53 29 0a 0a 0a 23 20 52 75   $(TLIBS)...# Ru
6460: 6c 65 20 74 6f 20 62 75 69 6c 64 20 74 68 65 20  le to build the 
6470: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 0a 23 0a 73  amalgamation.#.s
6480: 71 6c 69 74 65 33 2e 6c 6f 3a 09 24 28 53 51 4c  qlite3.lo:.$(SQL
6490: 49 54 45 33 43 29 0a 09 24 28 4c 54 43 4f 4d 50  ITE3C)..$(LTCOMP
64a0: 49 4c 45 29 20 24 28 43 4f 52 45 5f 43 4f 4d 50  ILE) $(CORE_COMP
64b0: 49 4c 45 5f 4f 50 54 53 29 20 2d 63 20 24 28 53  ILE_OPTS) -c $(S
64c0: 51 4c 49 54 45 33 43 29 0a 0a 0a 23 20 52 75 6c  QLITE3C)...# Rul
64d0: 65 20 74 6f 20 62 75 69 6c 64 20 74 68 65 20 57  e to build the W
64e0: 69 6e 33 32 20 72 65 73 6f 75 72 63 65 73 20 6f  in32 resources o
64f0: 62 6a 65 63 74 20 66 69 6c 65 2e 0a 23 0a 21 49  bject file..#.!I
6500: 46 20 24 28 55 53 45 5f 52 43 29 21 3d 30 0a 5f  F $(USE_RC)!=0._
6510: 48 41 53 48 43 48 41 52 3d 5e 23 0a 21 49 46 20  HASHCHAR=^#.!IF 
6520: 21 5b 65 63 68 6f 20 21 49 46 4e 44 45 46 20 56  ![echo !IFNDEF V
6530: 45 52 53 49 4f 4e 20 3e 20 72 63 76 65 72 2e 76  ERSION > rcver.v
6540: 63 5d 20 26 26 20 5c 0a 20 20 20 20 21 5b 66 6f  c] && \.    ![fo
6550: 72 20 2f 46 20 22 64 65 6c 69 6d 73 3d 22 20 25  r /F "delims=" %
6560: 56 20 69 6e 20 28 27 74 79 70 65 20 22 24 28 53  V in ('type "$(S
6570: 51 4c 49 54 45 33 48 29 22 20 5e 7c 20 66 69 6e  QLITE3H)" ^| fin
6580: 64 20 22 24 28 5f 48 41 53 48 43 48 41 52 29 64  d "$(_HASHCHAR)d
6590: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52  efine SQLITE_VER
65a0: 53 49 4f 4e 20 22 27 29 20 64 6f 20 28 65 63 68  SION "') do (ech
65b0: 6f 20 56 45 52 53 49 4f 4e 20 3d 20 5e 5e 25 56  o VERSION = ^^%V
65c0: 20 3e 3e 20 72 63 76 65 72 2e 76 63 29 5d 20 26   >> rcver.vc)] &
65d0: 26 20 5c 0a 20 20 20 20 21 5b 65 63 68 6f 20 21  & \.    ![echo !
65e0: 45 4e 44 49 46 20 3e 3e 20 72 63 76 65 72 2e 76  ENDIF >> rcver.v
65f0: 63 5d 0a 21 49 4e 43 4c 55 44 45 20 72 63 76 65  c].!INCLUDE rcve
6600: 72 2e 76 63 0a 21 45 4e 44 49 46 0a 0a 52 45 53  r.vc.!ENDIF..RES
6610: 4f 55 52 43 45 5f 56 45 52 53 49 4f 4e 20 3d 20  OURCE_VERSION = 
6620: 24 28 56 45 52 53 49 4f 4e 3a 5e 23 3d 29 0a 52  $(VERSION:^#=).R
6630: 45 53 4f 55 52 43 45 5f 56 45 52 53 49 4f 4e 20  ESOURCE_VERSION 
6640: 3d 20 24 28 52 45 53 4f 55 52 43 45 5f 56 45 52  = $(RESOURCE_VER
6650: 53 49 4f 4e 3a 64 65 66 69 6e 65 3d 29 0a 52 45  SION:define=).RE
6660: 53 4f 55 52 43 45 5f 56 45 52 53 49 4f 4e 20 3d  SOURCE_VERSION =
6670: 20 24 28 52 45 53 4f 55 52 43 45 5f 56 45 52 53   $(RESOURCE_VERS
6680: 49 4f 4e 3a 53 51 4c 49 54 45 5f 56 45 52 53 49  ION:SQLITE_VERSI
6690: 4f 4e 3d 29 0a 52 45 53 4f 55 52 43 45 5f 56 45  ON=).RESOURCE_VE
66a0: 52 53 49 4f 4e 20 3d 20 24 28 52 45 53 4f 55 52  RSION = $(RESOUR
66b0: 43 45 5f 56 45 52 53 49 4f 4e 3a 22 3d 29 0a 52  CE_VERSION:"=).R
66c0: 45 53 4f 55 52 43 45 5f 56 45 52 53 49 4f 4e 20  ESOURCE_VERSION 
66d0: 3d 20 24 28 52 45 53 4f 55 52 43 45 5f 56 45 52  = $(RESOURCE_VER
66e0: 53 49 4f 4e 3a 2e 3d 2c 29 0a 0a 24 28 4c 49 42  SION:.=,)..$(LIB
66f0: 52 45 53 4f 42 4a 53 29 3a 09 24 28 54 4f 50 29  RESOBJS):.$(TOP)
6700: 5c 73 71 6c 69 74 65 33 2e 72 63 20 72 63 76 65  \sqlite3.rc rcve
6710: 72 2e 76 63 20 24 28 53 51 4c 49 54 45 33 48 29  r.vc $(SQLITE3H)
6720: 0a 09 65 63 68 6f 20 23 69 66 6e 64 65 66 20 53  ..echo #ifndef S
6730: 51 4c 49 54 45 5f 52 45 53 4f 55 52 43 45 5f 56  QLITE_RESOURCE_V
6740: 45 52 53 49 4f 4e 20 3e 20 73 71 6c 69 74 65 33  ERSION > sqlite3
6750: 72 63 2e 68 0a 09 65 63 68 6f 20 23 64 65 66 69  rc.h..echo #defi
6760: 6e 65 20 53 51 4c 49 54 45 5f 52 45 53 4f 55 52  ne SQLITE_RESOUR
6770: 43 45 5f 56 45 52 53 49 4f 4e 20 24 28 52 45 53  CE_VERSION $(RES
6780: 4f 55 52 43 45 5f 56 45 52 53 49 4f 4e 29 20 3e  OURCE_VERSION) >
6790: 3e 20 73 71 6c 69 74 65 33 72 63 2e 68 0a 09 65  > sqlite3rc.h..e
67a0: 63 68 6f 20 23 65 6e 64 69 66 20 3e 3e 20 73 71  cho #endif >> sq
67b0: 6c 69 74 65 33 72 63 2e 68 0a 09 24 28 4c 54 52  lite3rc.h..$(LTR
67c0: 43 4f 4d 50 49 4c 45 29 20 2d 66 6f 20 24 28 4c  COMPILE) -fo $(L
67d0: 49 42 52 45 53 4f 42 4a 53 29 20 2d 44 52 43 5f  IBRESOBJS) -DRC_
67e0: 56 45 52 4f 4e 4c 59 20 24 28 54 4f 50 29 5c 73  VERONLY $(TOP)\s
67f0: 71 6c 69 74 65 33 2e 72 63 0a 21 45 4e 44 49 46  qlite3.rc.!ENDIF
6800: 0a 0a 0a 63 6c 65 61 6e 3a 0a 09 64 65 6c 20 2f  ...clean:..del /
6810: 51 20 2a 2e 65 78 70 20 2a 2e 6c 6f 20 2a 2e 69  Q *.exp *.lo *.i
6820: 6c 6b 20 2a 2e 6c 69 62 20 2a 2e 6f 62 6a 20 2a  lk *.lib *.obj *
6830: 2e 6e 63 62 20 2a 2e 70 64 62 20 2a 2e 73 64 66  .ncb *.pdb *.sdf
6840: 20 2a 2e 73 75 6f 20 32 3e 4e 55 4c 0a 09 64 65   *.suo 2>NUL..de
6850: 6c 20 2f 51 20 2a 2e 62 73 63 20 2a 2e 64 65 66  l /Q *.bsc *.def
6860: 20 2a 2e 63 6f 64 20 2a 2e 64 61 20 2a 2e 62 62   *.cod *.da *.bb
6870: 20 2a 2e 62 62 67 20 2a 2e 76 63 20 67 6d 6f 6e   *.bbg *.vc gmon
6880: 2e 6f 75 74 20 32 3e 4e 55 4c 0a 09 64 65 6c 20  .out 2>NUL..del 
6890: 2f 51 20 24 28 53 51 4c 49 54 45 33 45 58 45 29  /Q $(SQLITE3EXE)
68a0: 20 24 28 53 51 4c 49 54 45 33 44 4c 4c 29 20 52   $(SQLITE3DLL) R
68b0: 65 70 6c 61 63 65 2e 65 78 65 20 32 3e 4e 55 4c  eplace.exe 2>NUL
68c0: 0a                                               .