/ Hex Artifact Content
Login

Artifact 72e05bc8deca39a547884485c086b915f50a91ed:


0000: 40 45 43 48 4f 20 4f 46 46 0d 0a 0d 0a 3a 3a 0d  @ECHO OFF....::.
0010: 0a 3a 3a 20 62 75 69 6c 64 2d 61 6c 6c 2d 6d 73  .:: build-all-ms
0020: 76 63 2e 62 61 74 20 2d 2d 0d 0a 3a 3a 0d 0a 3a  vc.bat --..::..:
0030: 3a 20 4d 75 6c 74 69 2d 50 6c 61 74 66 6f 72 6d  : Multi-Platform
0040: 20 42 75 69 6c 64 20 54 6f 6f 6c 20 66 6f 72 20   Build Tool for 
0050: 4d 53 56 43 0d 0a 3a 3a 0d 0a 0d 0a 52 45 4d 0d  MSVC..::....REM.
0060: 0a 52 45 4d 20 54 68 69 73 20 62 61 74 63 68 20  .REM This batch 
0070: 73 63 72 69 70 74 20 69 73 20 75 73 65 64 20 74  script is used t
0080: 6f 20 62 75 69 6c 64 20 74 68 65 20 53 51 4c 69  o build the SQLi
0090: 74 65 20 44 4c 4c 20 66 6f 72 20 6d 75 6c 74 69  te DLL for multi
00a0: 70 6c 65 20 70 6c 61 74 66 6f 72 6d 73 0d 0a 52  ple platforms..R
00b0: 45 4d 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 61  EM and configura
00c0: 74 69 6f 6e 73 20 75 73 69 6e 67 20 4d 53 56 43  tions using MSVC
00d0: 2e 20 20 54 68 65 20 62 75 69 6c 74 20 53 51 4c  .  The built SQL
00e0: 69 74 65 20 44 4c 4c 73 2c 20 74 68 65 69 72 20  ite DLLs, their 
00f0: 61 73 73 6f 63 69 61 74 65 64 0d 0a 52 45 4d 20  associated..REM 
0100: 69 6d 70 6f 72 74 20 6c 69 62 72 61 72 69 65 73  import libraries
0110: 2c 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c 79  , and optionally
0120: 20 74 68 65 69 72 20 73 79 6d 62 6f 6c 73 20 66   their symbols f
0130: 69 6c 65 73 2c 20 61 72 65 20 70 6c 61 63 65 64  iles, are placed
0140: 20 77 69 74 68 69 6e 0d 0a 52 45 4d 20 74 68 65   within..REM the
0150: 20 64 69 72 65 63 74 6f 72 79 20 73 70 65 63 69   directory speci
0160: 66 69 65 64 20 6f 6e 20 74 68 65 20 63 6f 6d 6d  fied on the comm
0170: 61 6e 64 20 6c 69 6e 65 2c 20 69 6e 20 73 75 62  and line, in sub
0180: 2d 64 69 72 65 63 74 6f 72 69 65 73 20 6e 61 6d  -directories nam
0190: 65 64 20 66 6f 72 0d 0a 52 45 4d 20 74 68 65 69  ed for..REM thei
01a0: 72 20 72 65 73 70 65 63 74 69 76 65 20 70 6c 61  r respective pla
01b0: 74 66 6f 72 6d 73 20 61 6e 64 20 63 6f 6e 66 69  tforms and confi
01c0: 67 75 72 61 74 69 6f 6e 73 2e 20 20 54 68 69 73  gurations.  This
01d0: 20 62 61 74 63 68 20 73 63 72 69 70 74 20 6d 75   batch script mu
01e0: 73 74 20 62 65 0d 0a 52 45 4d 20 72 75 6e 20 66  st be..REM run f
01f0: 72 6f 6d 20 69 6e 73 69 64 65 20 61 20 56 69 73  rom inside a Vis
0200: 75 61 6c 20 53 74 75 64 69 6f 20 43 6f 6d 6d 61  ual Studio Comma
0210: 6e 64 20 50 72 6f 6d 70 74 20 66 6f 72 20 74 68  nd Prompt for th
0220: 65 20 64 65 73 69 72 65 64 20 76 65 72 73 69 6f  e desired versio
0230: 6e 20 6f 66 0d 0a 52 45 4d 20 56 69 73 75 61 6c  n of..REM Visual
0240: 20 53 74 75 64 69 6f 20 5e 28 74 68 65 20 69 6e   Studio ^(the in
0250: 69 74 69 61 6c 20 70 6c 61 74 66 6f 72 6d 20 63  itial platform c
0260: 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 20 74 68  onfigured for th
0270: 65 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 6d 70 74  e command prompt
0280: 20 64 6f 65 73 0d 0a 52 45 4d 20 6e 6f 74 20 72   does..REM not r
0290: 65 61 6c 6c 79 20 6d 61 74 74 65 72 5e 29 2e 20  eally matter^). 
02a0: 20 45 78 61 63 74 6c 79 20 6f 6e 65 20 63 6f 6d   Exactly one com
02b0: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65  mand line argume
02c0: 6e 74 20 69 73 20 72 65 71 75 69 72 65 64 2c 20  nt is required, 
02d0: 74 68 65 0d 0a 52 45 4d 20 6e 61 6d 65 20 6f 66  the..REM name of
02e0: 20 61 6e 20 65 78 69 73 74 69 6e 67 20 64 69 72   an existing dir
02f0: 65 63 74 6f 72 79 20 74 6f 20 62 65 20 75 73 65  ectory to be use
0300: 64 20 61 73 20 74 68 65 20 66 69 6e 61 6c 20 64  d as the final d
0310: 65 73 74 69 6e 61 74 69 6f 6e 20 64 69 72 65 63  estination direc
0320: 74 6f 72 79 0d 0a 52 45 4d 20 66 6f 72 20 74 68  tory..REM for th
0330: 65 20 67 65 6e 65 72 61 74 65 64 20 6f 75 74 70  e generated outp
0340: 75 74 20 66 69 6c 65 73 2c 20 77 68 69 63 68 20  ut files, which 
0350: 77 69 6c 6c 20 62 65 20 70 6c 61 63 65 64 20 69  will be placed i
0360: 6e 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  n sub-directorie
0370: 73 0d 0a 52 45 4d 20 63 72 65 61 74 65 64 20 74  s..REM created t
0380: 68 65 72 65 69 6e 2e 20 20 49 64 65 61 6c 6c 79  herein.  Ideally
0390: 2c 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  , the directory 
03a0: 73 70 65 63 69 66 69 65 64 20 73 68 6f 75 6c 64  specified should
03b0: 20 62 65 20 65 6d 70 74 79 2e 0d 0a 52 45 4d 0d   be empty...REM.
03c0: 0a 52 45 4d 20 45 78 61 6d 70 6c 65 3a 0d 0a 52  .REM Example:..R
03d0: 45 4d 0d 0a 52 45 4d 20 20 20 20 20 20 20 20 20  EM..REM         
03e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
03f0: 44 20 2f 44 20 43 3a 5c 64 65 76 5c 73 71 6c 69  D /D C:\dev\sqli
0400: 74 65 5c 63 6f 72 65 0d 0a 52 45 4d 20 20 20 20  te\core..REM    
0410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0420: 20 20 20 20 74 6f 6f 6c 5c 62 75 69 6c 64 2d 61      tool\build-a
0430: 6c 6c 2d 6d 73 76 63 2e 62 61 74 20 43 3a 5c 54  ll-msvc.bat C:\T
0440: 65 6d 70 0d 0a 52 45 4d 0d 0a 52 45 4d 20 49 6e  emp..REM..REM In
0450: 20 74 68 65 20 65 78 61 6d 70 6c 65 20 61 62 6f   the example abo
0460: 76 65 2c 20 22 43 3a 5c 64 65 76 5c 73 71 6c 69  ve, "C:\dev\sqli
0470: 74 65 5c 63 6f 72 65 22 20 72 65 70 72 65 73 65  te\core" represe
0480: 6e 74 73 20 74 68 65 20 72 6f 6f 74 20 6f 66 20  nts the root of 
0490: 74 68 65 0d 0a 52 45 4d 20 73 6f 75 72 63 65 20  the..REM source 
04a0: 74 72 65 65 20 66 6f 72 20 53 51 4c 69 74 65 20  tree for SQLite 
04b0: 61 6e 64 20 22 43 3a 5c 54 65 6d 70 22 20 72 65  and "C:\Temp" re
04c0: 70 72 65 73 65 6e 74 73 20 74 68 65 20 66 69 6e  presents the fin
04d0: 61 6c 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a  al destination..
04e0: 52 45 4d 20 64 69 72 65 63 74 6f 72 79 20 66 6f  REM directory fo
04f0: 72 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20  r the generated 
0500: 6f 75 74 70 75 74 20 66 69 6c 65 73 2e 0d 0a 52  output files...R
0510: 45 4d 0d 0a 52 45 4d 20 54 68 65 72 65 20 61 72  EM..REM There ar
0520: 65 20 73 65 76 65 72 61 6c 20 65 6e 76 69 72 6f  e several enviro
0530: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20  nment variables 
0540: 74 68 61 74 20 6d 61 79 20 62 65 20 73 65 74 20  that may be set 
0550: 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 0d 0a 52  to modify the..R
0560: 45 4d 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74  EM behavior of t
0570: 68 69 73 20 62 61 74 63 68 20 73 63 72 69 70 74  his batch script
0580: 20 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69 61   and its associa
0590: 74 65 64 20 4d 61 6b 65 66 69 6c 65 2e 20 20 54  ted Makefile.  T
05a0: 68 65 20 6c 69 73 74 20 6f 66 0d 0a 52 45 4d 20  he list of..REM 
05b0: 70 6c 61 74 66 6f 72 6d 73 20 74 6f 20 62 75 69  platforms to bui
05c0: 6c 64 20 6d 61 79 20 62 65 20 6f 76 65 72 72 69  ld may be overri
05d0: 64 65 6e 20 62 79 20 75 73 69 6e 67 20 74 68 65  den by using the
05e0: 20 50 4c 41 54 46 4f 52 4d 53 20 65 6e 76 69 72   PLATFORMS envir
05f0: 6f 6e 6d 65 6e 74 0d 0a 52 45 4d 20 76 61 72 69  onment..REM vari
0600: 61 62 6c 65 2c 20 77 68 69 63 68 20 73 68 6f 75  able, which shou
0610: 6c 64 20 63 6f 6e 74 61 69 6e 20 61 20 6c 69 73  ld contain a lis
0620: 74 20 6f 66 20 70 6c 61 74 66 6f 72 6d 73 20 5e  t of platforms ^
0630: 28 65 2e 67 2e 20 78 38 36 20 78 38 36 5f 61 6d  (e.g. x86 x86_am
0640: 64 36 34 0d 0a 52 45 4d 20 78 38 36 5f 61 72 6d  d64..REM x86_arm
0650: 5e 29 2e 20 20 41 6c 6c 20 70 6c 61 74 66 6f 72  ^).  All platfor
0660: 6d 73 20 6d 75 73 74 20 62 65 20 73 75 70 70 6f  ms must be suppo
0670: 72 74 65 64 20 62 79 20 74 68 65 20 76 65 72 73  rted by the vers
0680: 69 6f 6e 20 6f 66 20 56 69 73 75 61 6c 20 53 74  ion of Visual St
0690: 75 64 69 6f 0d 0a 52 45 4d 20 62 65 69 6e 67 20  udio..REM being 
06a0: 75 73 65 64 2e 20 20 54 68 65 20 6c 69 73 74 20  used.  The list 
06b0: 6f 66 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  of configuration
06c0: 73 20 74 6f 20 62 75 69 6c 64 20 6d 61 79 20 62  s to build may b
06d0: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 0d  e overridden by.
06e0: 0a 52 45 4d 20 73 65 74 74 69 6e 67 20 74 68 65  .REM setting the
06f0: 20 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 53 20   CONFIGURATIONS 
0700: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69  environment vari
0710: 61 62 6c 65 2c 20 77 68 69 63 68 20 73 68 6f 75  able, which shou
0720: 6c 64 20 63 6f 6e 74 61 69 6e 20 61 0d 0a 52 45  ld contain a..RE
0730: 4d 20 6c 69 73 74 20 6f 66 20 63 6f 6e 66 69 67  M list of config
0740: 75 72 61 74 69 6f 6e 73 20 74 6f 20 62 75 69 6c  urations to buil
0750: 64 20 5e 28 65 2e 67 2e 20 44 65 62 75 67 20 52  d ^(e.g. Debug R
0760: 65 74 61 69 6c 5e 29 2e 20 20 4e 65 69 74 68 65  etail^).  Neithe
0770: 72 20 6f 66 20 74 68 65 73 65 0d 0a 52 45 4d 20  r of these..REM 
0780: 76 61 72 69 61 62 6c 65 20 76 61 6c 75 65 73 20  variable values 
0790: 6d 61 79 20 63 6f 6e 74 61 69 6e 20 61 6e 79 20  may contain any 
07a0: 64 6f 75 62 6c 65 20 71 75 6f 74 65 73 2c 20 73  double quotes, s
07b0: 75 72 72 6f 75 6e 64 69 6e 67 20 6f 72 20 65 6d  urrounding or em
07c0: 62 65 64 64 65 64 2e 0d 0a 52 45 4d 20 46 69 6e  bedded...REM Fin
07d0: 61 6c 6c 79 2c 20 74 68 65 20 4e 43 52 54 4c 49  ally, the NCRTLI
07e0: 42 50 41 54 48 20 61 6e 64 20 4e 53 44 4b 4c 49  BPATH and NSDKLI
07f0: 42 50 41 54 48 20 65 6e 76 69 72 6f 6e 6d 65 6e  BPATH environmen
0800: 74 20 76 61 72 69 61 62 6c 65 73 20 6d 61 79 20  t variables may 
0810: 62 65 20 73 65 74 0d 0a 52 45 4d 20 74 6f 20 73  be set..REM to s
0820: 70 65 63 69 66 79 20 74 68 65 20 6c 6f 63 61 74  pecify the locat
0830: 69 6f 6e 20 6f 66 20 74 68 65 20 43 52 54 20 61  ion of the CRT a
0840: 6e 64 20 53 44 4b 2c 20 72 65 73 70 65 63 74 69  nd SDK, respecti
0850: 76 65 6c 79 2c 20 6e 65 65 64 65 64 20 74 6f 20  vely, needed to 
0860: 63 6f 6d 70 69 6c 65 0d 0a 52 45 4d 20 65 78 65  compile..REM exe
0870: 63 75 74 61 62 6c 65 73 20 6e 61 74 69 76 65 20  cutables native 
0880: 74 6f 20 74 68 65 20 61 72 63 68 69 74 65 63 74  to the architect
0890: 75 72 65 20 6f 66 20 74 68 65 20 62 75 69 6c 64  ure of the build
08a0: 20 6d 61 63 68 69 6e 65 20 64 75 72 69 6e 67 20   machine during 
08b0: 61 6e 79 0d 0a 52 45 4d 20 63 72 6f 73 73 2d 63  any..REM cross-c
08c0: 6f 6d 70 69 6c 61 74 69 6f 6e 20 74 68 61 74 20  ompilation that 
08d0: 6d 61 79 20 62 65 20 6e 65 63 65 73 73 61 72 79  may be necessary
08e0: 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  , depending on t
08f0: 68 65 20 70 6c 61 74 66 6f 72 6d 73 20 74 6f 20  he platforms to 
0900: 62 65 0d 0a 52 45 4d 20 62 75 69 6c 74 2e 20 20  be..REM built.  
0910: 54 68 65 73 65 20 76 61 6c 75 65 73 20 69 6e 20  These values in 
0920: 74 68 65 73 65 20 74 77 6f 20 76 61 72 69 61 62  these two variab
0930: 6c 65 73 20 73 68 6f 75 6c 64 20 62 65 20 73 75  les should be su
0940: 72 72 6f 75 6e 64 65 64 20 62 79 20 64 6f 75 62  rrounded by doub
0950: 6c 65 0d 0a 52 45 4d 20 71 75 6f 74 65 73 20 69  le..REM quotes i
0960: 66 20 74 68 65 79 20 63 6f 6e 74 61 69 6e 20 73  f they contain s
0970: 70 61 63 65 73 2e 0d 0a 52 45 4d 0d 0a 52 45 4d  paces...REM..REM
0980: 20 50 6c 65 61 73 65 20 6e 6f 74 65 20 74 68 61   Please note tha
0990: 74 20 74 68 65 20 53 51 4c 69 74 65 20 62 75 69  t the SQLite bui
09a0: 6c 64 20 70 72 6f 63 65 73 73 20 70 65 72 66 6f  ld process perfo
09b0: 72 6d 65 64 20 62 79 20 74 68 65 20 4d 61 6b 65  rmed by the Make
09c0: 66 69 6c 65 0d 0a 52 45 4d 20 61 73 73 6f 63 69  file..REM associ
09d0: 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 62  ated with this b
09e0: 61 74 63 68 20 73 63 72 69 70 74 20 72 65 71 75  atch script requ
09f0: 69 72 65 73 20 62 6f 74 68 20 47 61 77 6b 20 5e  ires both Gawk ^
0a00: 28 67 61 77 6b 2e 65 78 65 5e 29 20 61 6e 64 20  (gawk.exe^) and 
0a10: 54 63 6c 0d 0a 52 45 4d 20 38 2e 35 20 5e 28 74  Tcl..REM 8.5 ^(t
0a20: 63 6c 73 68 38 35 2e 65 78 65 5e 29 20 74 6f 20  clsh85.exe^) to 
0a30: 62 65 20 70 72 65 73 65 6e 74 20 69 6e 20 61 20  be present in a 
0a40: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
0a50: 6e 65 64 20 69 6e 20 74 68 65 20 50 41 54 48 0d  ned in the PATH.
0a60: 0a 52 45 4d 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  .REM environment
0a70: 20 76 61 72 69 61 62 6c 65 20 75 6e 6c 65 73 73   variable unless
0a80: 20 61 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20   a pre-existing 
0a90: 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20 66 69 6c  amalgamation fil
0aa0: 65 20 69 73 20 75 73 65 64 2e 0d 0a 52 45 4d 0d  e is used...REM.
0ab0: 0a 53 45 54 4c 4f 43 41 4c 0d 0a 0d 0a 52 45 4d  .SETLOCAL....REM
0ac0: 20 53 45 54 20 5f 5f 45 43 48 4f 3d 45 43 48 4f   SET __ECHO=ECHO
0ad0: 0d 0a 52 45 4d 20 53 45 54 20 5f 5f 45 43 48 4f  ..REM SET __ECHO
0ae0: 32 3d 45 43 48 4f 0d 0a 52 45 4d 20 53 45 54 20  2=ECHO..REM SET 
0af0: 5f 5f 45 43 48 4f 33 3d 45 43 48 4f 0d 0a 49 46  __ECHO3=ECHO..IF
0b00: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 5f 41 45   NOT DEFINED _AE
0b10: 43 48 4f 20 28 53 45 54 20 5f 41 45 43 48 4f 3d  CHO (SET _AECHO=
0b20: 52 45 4d 29 0d 0a 49 46 20 4e 4f 54 20 44 45 46  REM)..IF NOT DEF
0b30: 49 4e 45 44 20 5f 43 45 43 48 4f 20 28 53 45 54  INED _CECHO (SET
0b40: 20 5f 43 45 43 48 4f 3d 52 45 4d 29 0d 0a 49 46   _CECHO=REM)..IF
0b50: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 5f 56 45   NOT DEFINED _VE
0b60: 43 48 4f 20 28 53 45 54 20 5f 56 45 43 48 4f 3d  CHO (SET _VECHO=
0b70: 52 45 4d 29 0d 0a 0d 0a 53 45 54 20 52 45 44 49  REM)....SET REDI
0b80: 52 45 43 54 3d 5e 3e 0d 0a 49 46 20 44 45 46 49  RECT=^>..IF DEFI
0b90: 4e 45 44 20 5f 5f 45 43 48 4f 20 53 45 54 20 52  NED __ECHO SET R
0ba0: 45 44 49 52 45 43 54 3d 5e 5e 5e 3e 0d 0a 0d 0a  EDIRECT=^^^>....
0bb0: 25 5f 41 45 43 48 4f 25 20 52 75 6e 6e 69 6e 67  %_AECHO% Running
0bc0: 20 25 30 20 25 2a 0d 0a 0d 0a 52 45 4d 20 53 45   %0 %*....REM SE
0bd0: 54 20 44 46 4c 41 47 53 3d 2f 4c 0d 0a 0d 0a 25  T DFLAGS=/L....%
0be0: 5f 56 45 43 48 4f 25 20 44 46 6c 61 67 73 20 3d  _VECHO% DFlags =
0bf0: 20 27 25 44 46 4c 41 47 53 25 27 0d 0a 0d 0a 53   '%DFLAGS%'....S
0c00: 45 54 20 46 46 4c 41 47 53 3d 2f 56 20 2f 46 20  ET FFLAGS=/V /F 
0c10: 2f 47 20 2f 48 20 2f 49 20 2f 52 20 2f 59 20 2f  /G /H /I /R /Y /
0c20: 5a 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 46 46  Z....%_VECHO% FF
0c30: 6c 61 67 73 20 3d 20 27 25 46 46 4c 41 47 53 25  lags = '%FFLAGS%
0c40: 27 0d 0a 0d 0a 53 45 54 20 52 4f 4f 54 3d 25 7e  '....SET ROOT=%~
0c50: 64 70 30 5c 2e 2e 0d 0a 53 45 54 20 52 4f 4f 54  dp0\....SET ROOT
0c60: 3d 25 52 4f 4f 54 3a 5c 5c 3d 5c 25 0d 0a 0d 0a  =%ROOT:\\=\%....
0c70: 25 5f 56 45 43 48 4f 25 20 52 6f 6f 74 20 3d 20  %_VECHO% Root = 
0c80: 27 25 52 4f 4f 54 25 27 0d 0a 0d 0a 52 45 4d 0d  '%ROOT%'....REM.
0c90: 0a 52 45 4d 20 4e 4f 54 45 3a 20 54 68 65 20 66  .REM NOTE: The f
0ca0: 69 72 73 74 20 61 6e 64 20 6f 6e 6c 79 20 61 72  irst and only ar
0cb0: 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 62  gument to this b
0cc0: 61 74 63 68 20 66 69 6c 65 20 73 68 6f 75 6c 64  atch file should
0cd0: 20 62 65 20 74 68 65 20 6f 75 74 70 75 74 0d 0a   be the output..
0ce0: 52 45 4d 20 20 20 20 20 20 20 64 69 72 65 63 74  REM       direct
0cf0: 6f 72 79 20 77 68 65 72 65 20 74 68 65 20 70 6c  ory where the pl
0d00: 61 74 66 6f 72 6d 2d 73 70 65 63 69 66 69 63 20  atform-specific 
0d10: 62 69 6e 61 72 79 20 64 69 72 65 63 74 6f 72 69  binary directori
0d20: 65 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 52 45  es should be..RE
0d30: 4d 20 20 20 20 20 20 20 63 72 65 61 74 65 64 2e  M       created.
0d40: 0d 0a 52 45 4d 0d 0a 53 45 54 20 42 49 4e 41 52  ..REM..SET BINAR
0d50: 59 44 49 52 45 43 54 4f 52 59 3d 25 31 0d 0a 0d  YDIRECTORY=%1...
0d60: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
0d70: 42 49 4e 41 52 59 44 49 52 45 43 54 4f 52 59 20  BINARYDIRECTORY 
0d80: 28 0d 0a 20 20 47 4f 54 4f 20 75 73 61 67 65 0d  (..  GOTO usage.
0d90: 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 42  .)....%_VECHO% B
0da0: 69 6e 61 72 79 44 69 72 65 63 74 6f 72 79 20 3d  inaryDirectory =
0db0: 20 27 25 42 49 4e 41 52 59 44 49 52 45 43 54 4f   '%BINARYDIRECTO
0dc0: 52 59 25 27 0d 0a 0d 0a 53 45 54 20 44 55 4d 4d  RY%'....SET DUMM
0dd0: 59 3d 25 32 0d 0a 0d 0a 49 46 20 44 45 46 49 4e  Y=%2....IF DEFIN
0de0: 45 44 20 44 55 4d 4d 59 20 28 0d 0a 20 20 47 4f  ED DUMMY (..  GO
0df0: 54 4f 20 75 73 61 67 65 0d 0a 29 0d 0a 0d 0a 52  TO usage..)....R
0e00: 45 4d 0d 0a 52 45 4d 20 4e 4f 54 45 3a 20 46 72  EM..REM NOTE: Fr
0e10: 6f 6d 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 77  om this point, w
0e20: 65 20 6e 65 65 64 20 61 20 63 6c 65 61 6e 20 65  e need a clean e
0e30: 72 72 6f 72 20 6c 65 76 65 6c 2e 20 20 52 65 73  rror level.  Res
0e40: 65 74 20 69 74 20 6e 6f 77 2e 0d 0a 52 45 4d 0d  et it now...REM.
0e50: 0a 43 41 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45  .CALL :fn_ResetE
0e60: 72 72 6f 72 4c 65 76 65 6c 0d 0a 0d 0a 52 45 4d  rrorLevel....REM
0e70: 0d 0a 52 45 4d 20 4e 4f 54 45 3a 20 43 68 61 6e  ..REM NOTE: Chan
0e80: 67 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  ge the current d
0e90: 69 72 65 63 74 6f 72 79 20 74 6f 20 74 68 65 20  irectory to the 
0ea0: 72 6f 6f 74 20 6f 66 20 74 68 65 20 73 6f 75 72  root of the sour
0eb0: 63 65 20 74 72 65 65 2c 20 73 61 76 69 6e 67 0d  ce tree, saving.
0ec0: 0a 52 45 4d 20 20 20 20 20 20 20 74 68 65 20 63  .REM       the c
0ed0: 75 72 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79  urrent directory
0ee0: 20 6f 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72   on the director
0ef0: 79 20 73 74 61 63 6b 2e 0d 0a 52 45 4d 0d 0a 25  y stack...REM..%
0f00: 5f 5f 45 43 48 4f 32 25 20 50 55 53 48 44 20 22  __ECHO2% PUSHD "
0f10: 25 52 4f 4f 54 25 22 0d 0a 0d 0a 49 46 20 45 52  %ROOT%"....IF ER
0f20: 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20  RORLEVEL 1 (..  
0f30: 45 43 48 4f 20 43 6f 75 6c 64 20 6e 6f 74 20 63  ECHO Could not c
0f40: 68 61 6e 67 65 20 64 69 72 65 63 74 6f 72 79 20  hange directory 
0f50: 74 6f 20 22 25 52 4f 4f 54 25 22 2e 0d 0a 20 20  to "%ROOT%"...  
0f60: 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 29 0d 0a  GOTO errors..)..
0f70: 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e 4f 54 45 3a  ..REM..REM NOTE:
0f80: 20 54 68 69 73 20 62 61 74 63 68 20 66 69 6c 65   This batch file
0f90: 20 72 65 71 75 69 72 65 73 20 74 68 65 20 43 6f   requires the Co
0fa0: 6d 53 70 65 63 20 65 6e 76 69 72 6f 6e 6d 65 6e  mSpec environmen
0fb0: 74 20 76 61 72 69 61 62 6c 65 20 74 6f 20 62 65  t variable to be
0fc0: 20 73 65 74 2c 0d 0a 52 45 4d 20 20 20 20 20 20   set,..REM      
0fd0: 20 74 79 70 69 63 61 6c 6c 79 20 74 6f 20 73 6f   typically to so
0fe0: 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 22 43 3a  mething like "C:
0ff0: 5c 57 69 6e 64 6f 77 73 5c 53 79 73 74 65 6d 33  \Windows\System3
1000: 32 5c 63 6d 64 2e 65 78 65 22 2e 0d 0a 52 45 4d  2\cmd.exe"...REM
1010: 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44  ..IF NOT DEFINED
1020: 20 43 6f 6d 53 70 65 63 20 28 0d 0a 20 20 45 43   ComSpec (..  EC
1030: 48 4f 20 54 68 65 20 43 6f 6d 53 70 65 63 20 65  HO The ComSpec e
1040: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
1050: 62 6c 65 20 6d 75 73 74 20 62 65 20 64 65 66 69  ble must be defi
1060: 6e 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72  ned...  GOTO err
1070: 6f 72 73 0d 0a 29 0d 0a 0d 0a 52 45 4d 0d 0a 52  ors..)....REM..R
1080: 45 4d 20 4e 4f 54 45 3a 20 54 68 69 73 20 62 61  EM NOTE: This ba
1090: 74 63 68 20 66 69 6c 65 20 72 65 71 75 69 72 65  tch file require
10a0: 73 20 74 68 65 20 56 63 49 6e 73 74 61 6c 6c 44  s the VcInstallD
10b0: 69 72 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  ir environment v
10c0: 61 72 69 61 62 6c 65 20 74 6f 20 62 65 0d 0a 52  ariable to be..R
10d0: 45 4d 20 20 20 20 20 20 20 73 65 74 2e 20 20 54  EM       set.  T
10e0: 79 69 70 63 61 6c 6c 79 2c 20 74 68 69 73 20 6d  yipcally, this m
10f0: 65 61 6e 73 20 74 68 69 73 20 62 61 74 63 68 20  eans this batch 
1100: 66 69 6c 65 20 6e 65 65 64 73 20 74 6f 20 62 65  file needs to be
1110: 20 72 75 6e 20 66 72 6f 6d 20 61 6e 0d 0a 52 45   run from an..RE
1120: 4d 20 20 20 20 20 20 20 4d 53 56 43 20 63 6f 6d  M       MSVC com
1130: 6d 61 6e 64 20 70 72 6f 6d 70 74 2e 0d 0a 52 45  mand prompt...RE
1140: 4d 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45  M..IF NOT DEFINE
1150: 44 20 56 43 49 4e 53 54 41 4c 4c 44 49 52 20 28  D VCINSTALLDIR (
1160: 0d 0a 20 20 45 43 48 4f 20 54 68 65 20 56 43 49  ..  ECHO The VCI
1170: 4e 53 54 41 4c 4c 44 49 52 20 65 6e 76 69 72 6f  NSTALLDIR enviro
1180: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 6d  nment variable m
1190: 75 73 74 20 62 65 20 64 65 66 69 6e 65 64 2e 0d  ust be defined..
11a0: 0a 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a  .  GOTO errors..
11b0: 29 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e 4f  )....REM..REM NO
11c0: 54 45 3a 20 49 66 20 74 68 65 20 6c 69 73 74 20  TE: If the list 
11d0: 6f 66 20 70 6c 61 74 66 6f 72 6d 73 20 69 73 20  of platforms is 
11e0: 6e 6f 74 20 61 6c 72 65 61 64 79 20 73 65 74 2c  not already set,
11f0: 20 75 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   use the default
1200: 20 6c 69 73 74 2e 0d 0a 52 45 4d 0d 0a 49 46 20   list...REM..IF 
1210: 4e 4f 54 20 44 45 46 49 4e 45 44 20 50 4c 41 54  NOT DEFINED PLAT
1220: 46 4f 52 4d 53 20 28 0d 0a 20 20 53 45 54 20 50  FORMS (..  SET P
1230: 4c 41 54 46 4f 52 4d 53 3d 78 38 36 20 78 38 36  LATFORMS=x86 x86
1240: 5f 61 6d 64 36 34 20 78 38 36 5f 61 72 6d 0d 0a  _amd64 x86_arm..
1250: 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 50 6c  )....%_VECHO% Pl
1260: 61 74 66 6f 72 6d 73 20 3d 20 27 25 50 4c 41 54  atforms = '%PLAT
1270: 46 4f 52 4d 53 25 27 0d 0a 0d 0a 52 45 4d 0d 0a  FORMS%'....REM..
1280: 52 45 4d 20 4e 4f 54 45 3a 20 49 66 20 74 68 65  REM NOTE: If the
1290: 20 6c 69 73 74 20 6f 66 20 63 6f 6e 66 69 67 75   list of configu
12a0: 72 61 74 69 6f 6e 73 20 69 73 20 6e 6f 74 20 61  rations is not a
12b0: 6c 72 65 61 64 79 20 73 65 74 2c 20 75 73 65 20  lready set, use 
12c0: 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 52 45 4d  the default..REM
12d0: 20 20 20 20 20 20 20 6c 69 73 74 2e 0d 0a 52 45         list...RE
12e0: 4d 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45  M..IF NOT DEFINE
12f0: 44 20 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 53  D CONFIGURATIONS
1300: 20 28 0d 0a 20 20 53 45 54 20 43 4f 4e 46 49 47   (..  SET CONFIG
1310: 55 52 41 54 49 4f 4e 53 3d 44 65 62 75 67 20 52  URATIONS=Debug R
1320: 65 74 61 69 6c 0d 0a 29 0d 0a 0d 0a 25 5f 56 45  etail..)....%_VE
1330: 43 48 4f 25 20 43 6f 6e 66 69 67 75 72 61 74 69  CHO% Configurati
1340: 6f 6e 73 20 3d 20 27 25 43 4f 4e 46 49 47 55 52  ons = '%CONFIGUR
1350: 41 54 49 4f 4e 53 25 27 0d 0a 0d 0a 52 45 4d 0d  ATIONS%'....REM.
1360: 0a 52 45 4d 20 4e 4f 54 45 3a 20 49 66 20 74 68  .REM NOTE: If th
1370: 65 20 63 6f 6d 6d 61 6e 64 20 75 73 65 64 20 74  e command used t
1380: 6f 20 69 6e 76 6f 6b 65 20 4e 4d 41 4b 45 20 69  o invoke NMAKE i
1390: 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 73 65  s not already se
13a0: 74 2c 20 75 73 65 20 74 68 65 0d 0a 52 45 4d 20  t, use the..REM 
13b0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 2e 0d 0a        default...
13c0: 52 45 4d 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49  REM..IF NOT DEFI
13d0: 4e 45 44 20 4e 4d 41 4b 45 5f 43 4d 44 20 28 0d  NED NMAKE_CMD (.
13e0: 0a 20 20 53 45 54 20 4e 4d 41 4b 45 5f 43 4d 44  .  SET NMAKE_CMD
13f0: 3d 6e 6d 61 6b 65 20 2d 42 20 2d 66 20 4d 61 6b  =nmake -B -f Mak
1400: 65 66 69 6c 65 2e 6d 73 63 0d 0a 29 0d 0a 0d 0a  efile.msc..)....
1410: 25 5f 56 45 43 48 4f 25 20 4e 6d 61 6b 65 43 6d  %_VECHO% NmakeCm
1420: 64 20 3d 20 27 25 4e 4d 41 4b 45 5f 43 4d 44 25  d = '%NMAKE_CMD%
1430: 27 0d 0a 25 5f 56 45 43 48 4f 25 20 4e 6d 61 6b  '..%_VECHO% Nmak
1440: 65 41 72 67 73 20 3d 20 27 25 4e 4d 41 4b 45 5f  eArgs = '%NMAKE_
1450: 41 52 47 53 25 27 0d 0a 0d 0a 52 45 4d 0d 0a 52  ARGS%'....REM..R
1460: 45 4d 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 65  EM NOTE: Setup e
1470: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
1480: 62 6c 65 73 20 74 6f 20 74 72 61 6e 73 6c 61 74  bles to translat
1490: 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 4d 53  e between the MS
14a0: 56 43 20 70 6c 61 74 66 6f 72 6d 0d 0a 52 45 4d  VC platform..REM
14b0: 20 20 20 20 20 20 20 6e 61 6d 65 73 20 61 6e 64         names and
14c0: 20 74 68 65 20 6e 61 6d 65 73 20 74 6f 20 62 65   the names to be
14d0: 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 70 6c   used for the pl
14e0: 61 74 66 6f 72 6d 2d 73 70 65 63 69 66 69 63 20  atform-specific 
14f0: 62 69 6e 61 72 79 0d 0a 52 45 4d 20 20 20 20 20  binary..REM     
1500: 20 20 64 69 72 65 63 74 6f 72 69 65 73 2e 0d 0a    directories...
1510: 52 45 4d 0d 0a 53 45 54 20 61 6d 64 36 34 5f 4e  REM..SET amd64_N
1520: 41 4d 45 3d 78 36 34 0d 0a 53 45 54 20 61 72 6d  AME=x64..SET arm
1530: 5f 4e 41 4d 45 3d 41 52 4d 0d 0a 53 45 54 20 78  _NAME=ARM..SET x
1540: 36 34 5f 4e 41 4d 45 3d 78 36 34 0d 0a 53 45 54  64_NAME=x64..SET
1550: 20 78 38 36 5f 4e 41 4d 45 3d 78 38 36 0d 0a 53   x86_NAME=x86..S
1560: 45 54 20 78 38 36 5f 61 6d 64 36 34 5f 4e 41 4d  ET x86_amd64_NAM
1570: 45 3d 78 36 34 0d 0a 53 45 54 20 78 38 36 5f 61  E=x64..SET x86_a
1580: 72 6d 5f 4e 41 4d 45 3d 41 52 4d 0d 0a 53 45 54  rm_NAME=ARM..SET
1590: 20 78 38 36 5f 78 36 34 5f 4e 41 4d 45 3d 78 36   x86_x64_NAME=x6
15a0: 34 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 61 6d  4....%_VECHO% am
15b0: 64 36 34 5f 4e 61 6d 65 20 3d 20 27 25 61 6d 64  d64_Name = '%amd
15c0: 36 34 5f 4e 41 4d 45 25 27 0d 0a 25 5f 56 45 43  64_NAME%'..%_VEC
15d0: 48 4f 25 20 61 72 6d 5f 4e 61 6d 65 20 3d 20 27  HO% arm_Name = '
15e0: 25 61 72 6d 5f 4e 41 4d 45 25 27 0d 0a 25 5f 56  %arm_NAME%'..%_V
15f0: 45 43 48 4f 25 20 78 36 34 5f 4e 61 6d 65 20 3d  ECHO% x64_Name =
1600: 20 27 25 78 36 34 5f 4e 41 4d 45 25 27 0d 0a 25   '%x64_NAME%'..%
1610: 5f 56 45 43 48 4f 25 20 78 38 36 5f 4e 61 6d 65  _VECHO% x86_Name
1620: 20 3d 20 27 25 78 38 36 5f 4e 41 4d 45 25 27 0d   = '%x86_NAME%'.
1630: 0a 25 5f 56 45 43 48 4f 25 20 78 38 36 5f 61 6d  .%_VECHO% x86_am
1640: 64 36 34 5f 4e 61 6d 65 20 3d 20 27 25 78 38 36  d64_Name = '%x86
1650: 5f 61 6d 64 36 34 5f 4e 41 4d 45 25 27 0d 0a 25  _amd64_NAME%'..%
1660: 5f 56 45 43 48 4f 25 20 78 38 36 5f 61 72 6d 5f  _VECHO% x86_arm_
1670: 4e 61 6d 65 20 3d 20 27 25 78 38 36 5f 61 72 6d  Name = '%x86_arm
1680: 5f 4e 41 4d 45 25 27 0d 0a 25 5f 56 45 43 48 4f  _NAME%'..%_VECHO
1690: 25 20 78 38 36 5f 78 36 34 5f 4e 61 6d 65 20 3d  % x86_x64_Name =
16a0: 20 27 25 78 38 36 5f 78 36 34 5f 4e 41 4d 45 25   '%x86_x64_NAME%
16b0: 27 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e 4f  '....REM..REM NO
16c0: 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 74 68  TE: Check for th
16d0: 65 20 65 78 74 65 72 6e 61 6c 20 74 6f 6f 6c 73  e external tools
16e0: 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20 74   needed during t
16f0: 68 65 20 62 75 69 6c 64 20 70 72 6f 63 65 73 73  he build process
1700: 20 5e 28 69 2e 65 2e 0d 0a 52 45 4d 20 20 20 20   ^(i.e...REM    
1710: 20 20 20 74 68 6f 73 65 20 74 68 61 74 20 64 6f     those that do
1720: 20 6e 6f 74 20 67 65 74 20 63 6f 6d 70 69 6c 65   not get compile
1730: 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65  d as part of the
1740: 20 62 75 69 6c 64 20 70 72 6f 63 65 73 73 20 69   build process i
1750: 74 73 65 6c 66 5e 29 0d 0a 52 45 4d 20 20 20 20  tself^)..REM    
1760: 20 20 20 61 6c 6f 6e 67 20 74 68 65 20 50 41 54     along the PAT
1770: 48 2e 0d 0a 52 45 4d 0d 0a 46 4f 52 20 25 25 54  H...REM..FOR %%T
1780: 20 49 4e 20 28 67 61 77 6b 2e 65 78 65 20 74 63   IN (gawk.exe tc
1790: 6c 73 68 38 35 2e 65 78 65 29 20 44 4f 20 28 0d  lsh85.exe) DO (.
17a0: 0a 20 20 53 45 54 20 25 25 54 5f 50 41 54 48 3d  .  SET %%T_PATH=
17b0: 25 25 7e 64 70 24 50 41 54 48 3a 54 0d 0a 29 0d  %%~dp$PATH:T..).
17c0: 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e 4f 54 45  ...REM..REM NOTE
17d0: 3a 20 54 68 65 20 47 61 77 6b 20 65 78 65 63 75  : The Gawk execu
17e0: 74 61 62 6c 65 20 22 67 61 77 6b 2e 65 78 65 22  table "gawk.exe"
17f0: 20 69 73 20 72 65 71 75 69 72 65 64 20 64 75 72   is required dur
1800: 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20 62  ing the SQLite b
1810: 75 69 6c 64 0d 0a 52 45 4d 20 20 20 20 20 20 20  uild..REM       
1820: 70 72 6f 63 65 73 73 20 75 6e 6c 65 73 73 20 61  process unless a
1830: 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20 61 6d   pre-existing am
1840: 61 6c 67 61 6d 61 74 69 6f 6e 20 66 69 6c 65 20  algamation file 
1850: 69 73 20 75 73 65 64 2e 0d 0a 52 45 4d 0d 0a 49  is used...REM..I
1860: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 67 61  F NOT DEFINED ga
1870: 77 6b 2e 65 78 65 5f 50 41 54 48 20 28 0d 0a 20  wk.exe_PATH (.. 
1880: 20 45 43 48 4f 20 54 68 65 20 47 61 77 6b 20 65   ECHO The Gawk e
1890: 78 65 63 75 74 61 62 6c 65 20 22 67 61 77 6b 2e  xecutable "gawk.
18a0: 65 78 65 22 20 69 73 20 72 65 71 75 69 72 65 64  exe" is required
18b0: 20 74 6f 20 62 65 20 69 6e 20 74 68 65 20 50 41   to be in the PA
18c0: 54 48 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72 6f  TH...  GOTO erro
18d0: 72 73 0d 0a 29 0d 0a 0d 0a 52 45 4d 0d 0a 52 45  rs..)....REM..RE
18e0: 4d 20 4e 4f 54 45 3a 20 54 68 65 20 54 63 6c 20  M NOTE: The Tcl 
18f0: 38 2e 35 20 65 78 65 63 75 74 61 62 6c 65 20 22  8.5 executable "
1900: 74 63 6c 73 68 38 35 2e 65 78 65 22 20 69 73 20  tclsh85.exe" is 
1910: 72 65 71 75 69 72 65 64 20 64 75 72 69 6e 67 20  required during 
1920: 74 68 65 20 53 51 4c 69 74 65 0d 0a 52 45 4d 20  the SQLite..REM 
1930: 20 20 20 20 20 20 62 75 69 6c 64 20 70 72 6f 63        build proc
1940: 65 73 73 20 75 6e 6c 65 73 73 20 61 20 70 72 65  ess unless a pre
1950: 2d 65 78 69 73 74 69 6e 67 20 61 6d 61 6c 67 61  -existing amalga
1960: 6d 61 74 69 6f 6e 20 66 69 6c 65 20 69 73 20 75  mation file is u
1970: 73 65 64 2e 0d 0a 52 45 4d 0d 0a 49 46 20 4e 4f  sed...REM..IF NO
1980: 54 20 44 45 46 49 4e 45 44 20 74 63 6c 73 68 38  T DEFINED tclsh8
1990: 35 2e 65 78 65 5f 50 41 54 48 20 28 0d 0a 20 20  5.exe_PATH (..  
19a0: 45 43 48 4f 20 54 68 65 20 54 63 6c 20 38 2e 35  ECHO The Tcl 8.5
19b0: 20 65 78 65 63 75 74 61 62 6c 65 20 22 74 63 6c   executable "tcl
19c0: 73 68 38 35 2e 65 78 65 22 20 69 73 20 72 65 71  sh85.exe" is req
19d0: 75 69 72 65 64 20 74 6f 20 62 65 20 69 6e 20 74  uired to be in t
19e0: 68 65 20 50 41 54 48 2e 0d 0a 20 20 47 4f 54 4f  he PATH...  GOTO
19f0: 20 65 72 72 6f 72 73 0d 0a 29 0d 0a 0d 0a 52 45   errors..)....RE
1a00: 4d 0d 0a 52 45 4d 20 4e 4f 54 45 3a 20 53 65 74  M..REM NOTE: Set
1a10: 20 74 68 65 20 54 4f 4f 4c 50 41 54 48 20 76 61   the TOOLPATH va
1a20: 72 69 61 62 6c 65 20 74 6f 20 63 6f 6e 74 61 69  riable to contai
1a30: 6e 20 61 6c 6c 20 74 68 65 20 64 69 72 65 63 74  n all the direct
1a40: 6f 72 69 65 73 20 77 68 65 72 65 20 74 68 65 0d  ories where the.
1a50: 0a 52 45 4d 20 20 20 20 20 20 20 65 78 74 65 72  .REM       exter
1a60: 6e 61 6c 20 74 6f 6f 6c 73 20 77 65 72 65 20 66  nal tools were f
1a70: 6f 75 6e 64 20 69 6e 20 74 68 65 20 73 65 61 72  ound in the sear
1a80: 63 68 20 61 62 6f 76 65 2e 0d 0a 52 45 4d 0d 0a  ch above...REM..
1a90: 53 45 54 20 54 4f 4f 4c 50 41 54 48 3d 25 67 61  SET TOOLPATH=%ga
1aa0: 77 6b 2e 65 78 65 5f 50 41 54 48 25 3b 25 74 63  wk.exe_PATH%;%tc
1ab0: 6c 73 68 38 35 2e 65 78 65 5f 50 41 54 48 25 0d  lsh85.exe_PATH%.
1ac0: 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 54 6f 6f 6c  ...%_VECHO% Tool
1ad0: 50 61 74 68 20 3d 20 27 25 54 4f 4f 4c 50 41 54  Path = '%TOOLPAT
1ae0: 48 25 27 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20  H%'....REM..REM 
1af0: 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20  NOTE: Check for 
1b00: 4d 53 56 43 20 32 30 31 32 2f 32 30 31 33 20 62  MSVC 2012/2013 b
1b10: 65 63 61 75 73 65 20 74 68 65 20 57 69 6e 64 6f  ecause the Windo
1b20: 77 73 20 53 44 4b 20 64 69 72 65 63 74 6f 72 79  ws SDK directory
1b30: 20 68 61 6e 64 6c 69 6e 67 0d 0a 52 45 4d 20 20   handling..REM  
1b40: 20 20 20 20 20 69 73 20 73 6c 69 67 68 74 6c 79       is slightly
1b50: 20 64 69 66 66 65 72 65 6e 74 20 66 6f 72 20 74   different for t
1b60: 68 6f 73 65 20 76 65 72 73 69 6f 6e 73 2e 0d 0a  hose versions...
1b70: 52 45 4d 0d 0a 49 46 20 22 25 56 69 73 75 61 6c  REM..IF "%Visual
1b80: 53 74 75 64 69 6f 56 65 72 73 69 6f 6e 25 22 20  StudioVersion%" 
1b90: 3d 3d 20 22 31 31 2e 30 22 20 28 0d 0a 20 20 52  == "11.0" (..  R
1ba0: 45 4d 0d 0a 20 20 52 45 4d 20 4e 4f 54 45 3a 20  EM..  REM NOTE: 
1bb0: 49 66 20 74 68 65 20 57 69 6e 64 6f 77 73 20 53  If the Windows S
1bc0: 44 4b 20 6c 69 62 72 61 72 79 20 70 61 74 68 20  DK library path 
1bd0: 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e  has already been
1be0: 20 73 65 74 2c 20 64 6f 20 6e 6f 74 20 73 65 74   set, do not set
1bf0: 0d 0a 20 20 52 45 4d 20 20 20 20 20 20 20 69 74  ..  REM       it
1c00: 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 65 6c   to something el
1c10: 73 65 20 6c 61 74 65 72 20 6f 6e 2e 0d 0a 20 20  se later on...  
1c20: 52 45 4d 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45  REM..  IF NOT DE
1c30: 46 49 4e 45 44 20 4e 53 44 4b 4c 49 42 50 41 54  FINED NSDKLIBPAT
1c40: 48 20 28 0d 0a 20 20 20 20 53 45 54 20 53 45 54  H (..    SET SET
1c50: 5f 4e 53 44 4b 4c 49 42 50 41 54 48 3d 31 0d 0a  _NSDKLIBPATH=1..
1c60: 20 20 29 0d 0a 29 20 45 4c 53 45 20 49 46 20 22    )..) ELSE IF "
1c70: 25 56 69 73 75 61 6c 53 74 75 64 69 6f 56 65 72  %VisualStudioVer
1c80: 73 69 6f 6e 25 22 20 3d 3d 20 22 31 32 2e 30 22  sion%" == "12.0"
1c90: 20 28 0d 0a 20 20 52 45 4d 0d 0a 20 20 52 45 4d   (..  REM..  REM
1ca0: 20 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 57 69   NOTE: If the Wi
1cb0: 6e 64 6f 77 73 20 53 44 4b 20 6c 69 62 72 61 72  ndows SDK librar
1cc0: 79 20 70 61 74 68 20 68 61 73 20 61 6c 72 65 61  y path has alrea
1cd0: 64 79 20 62 65 65 6e 20 73 65 74 2c 20 64 6f 20  dy been set, do 
1ce0: 6e 6f 74 20 73 65 74 0d 0a 20 20 52 45 4d 20 20  not set..  REM  
1cf0: 20 20 20 20 20 69 74 20 74 6f 20 73 6f 6d 65 74       it to somet
1d00: 68 69 6e 67 20 65 6c 73 65 20 6c 61 74 65 72 20  hing else later 
1d10: 6f 6e 2e 0d 0a 20 20 52 45 4d 0d 0a 20 20 49 46  on...  REM..  IF
1d20: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4e 53 44   NOT DEFINED NSD
1d30: 4b 4c 49 42 50 41 54 48 20 28 0d 0a 20 20 20 20  KLIBPATH (..    
1d40: 53 45 54 20 53 45 54 5f 4e 53 44 4b 4c 49 42 50  SET SET_NSDKLIBP
1d50: 41 54 48 3d 31 0d 0a 20 20 29 0d 0a 29 20 45 4c  ATH=1..  )..) EL
1d60: 53 45 20 28 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  SE (..  CALL :fn
1d70: 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20 53  _UnsetVariable S
1d80: 45 54 5f 4e 53 44 4b 4c 49 42 50 41 54 48 0d 0a  ET_NSDKLIBPATH..
1d90: 29 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e 4f  )....REM..REM NO
1da0: 54 45 3a 20 43 68 65 63 6b 20 69 66 20 74 68 69  TE: Check if thi
1db0: 73 20 69 73 20 74 68 65 20 57 69 6e 64 6f 77 73  s is the Windows
1dc0: 20 50 68 6f 6e 65 20 53 44 4b 2e 20 20 49 66 20   Phone SDK.  If 
1dd0: 73 6f 2c 20 61 20 64 69 66 66 65 72 65 6e 74 20  so, a different 
1de0: 62 61 74 63 68 0d 0a 52 45 4d 20 20 20 20 20 20  batch..REM      
1df0: 20 66 69 6c 65 20 69 73 20 6e 65 63 65 73 73 61   file is necessa
1e00: 72 79 20 74 6f 20 73 65 74 75 70 20 74 68 65 20  ry to setup the 
1e10: 62 75 69 6c 64 20 65 6e 76 69 72 6f 6e 6d 65 6e  build environmen
1e20: 74 2e 20 20 53 69 6e 63 65 20 74 68 65 20 76 61  t.  Since the va
1e30: 72 69 61 62 6c 65 0d 0a 52 45 4d 20 20 20 20 20  riable..REM     
1e40: 20 20 76 61 6c 75 65 73 20 69 6e 76 6f 6c 76 65    values involve
1e50: 64 20 68 65 72 65 20 6d 61 79 20 63 6f 6e 74 61  d here may conta
1e60: 69 6e 20 70 61 72 65 6e 74 68 65 73 69 73 2c 20  in parenthesis, 
1e70: 75 73 69 6e 67 20 47 4f 54 4f 20 69 6e 73 74 65  using GOTO inste
1e80: 61 64 20 6f 66 0d 0a 52 45 4d 20 20 20 20 20 20  ad of..REM      
1e90: 20 61 6e 20 49 46 20 62 6c 6f 63 6b 20 69 73 20   an IF block is 
1ea0: 72 65 71 75 69 72 65 64 2e 0d 0a 52 45 4d 0d 0a  required...REM..
1eb0: 49 46 20 44 45 46 49 4e 45 44 20 57 69 6e 64 6f  IF DEFINED Windo
1ec0: 77 73 50 68 6f 6e 65 4b 69 74 44 69 72 20 47 4f  wsPhoneKitDir GO
1ed0: 54 4f 20 73 65 74 5f 76 63 76 61 72 73 61 6c 6c  TO set_vcvarsall
1ee0: 5f 70 68 6f 6e 65 0d 0a 53 45 54 20 56 43 56 41  _phone..SET VCVA
1ef0: 52 53 41 4c 4c 3d 25 56 43 49 4e 53 54 41 4c 4c  RSALL=%VCINSTALL
1f00: 44 49 52 25 5c 76 63 76 61 72 73 61 6c 6c 2e 62  DIR%\vcvarsall.b
1f10: 61 74 0d 0a 47 4f 54 4f 20 73 65 74 5f 76 63 76  at..GOTO set_vcv
1f20: 61 72 73 61 6c 6c 5f 64 6f 6e 65 0d 0a 3a 73 65  arsall_done..:se
1f30: 74 5f 76 63 76 61 72 73 61 6c 6c 5f 70 68 6f 6e  t_vcvarsall_phon
1f40: 65 0d 0a 53 45 54 20 56 43 56 41 52 53 41 4c 4c  e..SET VCVARSALL
1f50: 3d 25 56 43 49 4e 53 54 41 4c 4c 44 49 52 25 5c  =%VCINSTALLDIR%\
1f60: 57 50 53 44 4b 5c 57 50 38 30 5c 76 63 76 61 72  WPSDK\WP80\vcvar
1f70: 73 70 68 6f 6e 65 61 6c 6c 2e 62 61 74 0d 0a 3a  sphoneall.bat..:
1f80: 73 65 74 5f 76 63 76 61 72 73 61 6c 6c 5f 64 6f  set_vcvarsall_do
1f90: 6e 65 0d 0a 53 45 54 20 56 43 56 41 52 53 41 4c  ne..SET VCVARSAL
1fa0: 4c 3d 25 56 43 56 41 52 53 41 4c 4c 3a 5c 5c 3d  L=%VCVARSALL:\\=
1fb0: 5c 25 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 4e  \%....REM..REM N
1fc0: 4f 54 45 3a 20 54 68 69 73 20 69 73 20 74 68 65  OTE: This is the
1fd0: 20 6f 75 74 65 72 20 6c 6f 6f 70 2e 20 20 54 68   outer loop.  Th
1fe0: 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 65 78  ere should be ex
1ff0: 61 63 74 6c 79 20 6f 6e 65 20 69 74 65 72 61 74  actly one iterat
2000: 69 6f 6e 20 70 65 72 0d 0a 52 45 4d 20 20 20 20  ion per..REM    
2010: 20 20 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 52 45     platform...RE
2020: 4d 0d 0a 46 4f 52 20 25 25 50 20 49 4e 20 28 25  M..FOR %%P IN (%
2030: 50 4c 41 54 46 4f 52 4d 53 25 29 20 44 4f 20 28  PLATFORMS%) DO (
2040: 0d 0a 20 20 52 45 4d 0d 0a 20 20 52 45 4d 20 4e  ..  REM..  REM N
2050: 4f 54 45 3a 20 55 73 69 6e 67 20 74 68 65 20 4d  OTE: Using the M
2060: 53 56 43 20 70 6c 61 74 66 6f 72 6d 20 6e 61 6d  SVC platform nam
2070: 65 2c 20 6c 6f 6f 6b 75 70 20 74 68 65 20 73 69  e, lookup the si
2080: 6d 70 6c 65 72 20 70 6c 61 74 66 6f 72 6d 20 6e  mpler platform n
2090: 61 6d 65 20 74 6f 0d 0a 20 20 52 45 4d 20 20 20  ame to..  REM   
20a0: 20 20 20 20 62 65 20 75 73 65 64 20 66 6f 72 20      be used for 
20b0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
20c0: 70 6c 61 74 66 6f 72 6d 2d 73 70 65 63 69 66 69  platform-specifi
20d0: 63 20 62 69 6e 61 72 79 20 64 69 72 65 63 74 6f  c binary directo
20e0: 72 79 20 76 69 61 0d 0a 20 20 52 45 4d 20 20 20  ry via..  REM   
20f0: 20 20 20 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d      the environm
2100: 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 73 65  ent variables se
2110: 74 75 70 20 65 61 72 6c 69 65 72 2e 0d 0a 20 20  tup earlier...  
2120: 52 45 4d 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f  REM..  CALL :fn_
2130: 43 6f 70 79 56 61 72 69 61 62 6c 65 20 25 25 50  CopyVariable %%P
2140: 5f 4e 41 4d 45 20 50 4c 41 54 46 4f 52 4d 4e 41  _NAME PLATFORMNA
2150: 4d 45 0d 0a 0d 0a 20 20 52 45 4d 0d 0a 20 20 52  ME....  REM..  R
2160: 45 4d 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73  EM NOTE: This is
2170: 20 74 68 65 20 73 65 63 6f 6e 64 20 6c 6f 6f 70   the second loop
2180: 2e 20 20 54 68 65 72 65 20 73 68 6f 75 6c 64 20  .  There should 
2190: 62 65 20 65 78 61 63 74 6c 79 20 6f 6e 65 20 69  be exactly one i
21a0: 74 65 72 61 74 69 6f 6e 2e 0d 0a 20 20 52 45 4d  teration...  REM
21b0: 20 20 20 20 20 20 20 54 68 69 73 20 6c 6f 6f 70         This loop
21c0: 20 69 73 20 6e 65 63 65 73 73 61 72 79 20 62 65   is necessary be
21d0: 63 61 75 73 65 20 74 68 65 20 50 6c 61 74 66 6f  cause the Platfo
21e0: 72 6d 4e 61 6d 65 20 65 6e 76 69 72 6f 6e 6d 65  rmName environme
21f0: 6e 74 0d 0a 20 20 52 45 4d 20 20 20 20 20 20 20  nt..  REM       
2200: 76 61 72 69 61 62 6c 65 20 77 61 73 20 73 65 74  variable was set
2210: 20 61 62 6f 76 65 20 61 6e 64 20 74 68 61 74 20   above and that 
2220: 76 61 6c 75 65 20 69 73 20 6e 65 65 64 65 64 20  value is needed 
2230: 62 79 20 73 6f 6d 65 20 6f 66 20 74 68 65 0d 0a  by some of the..
2240: 20 20 52 45 4d 20 20 20 20 20 20 20 63 6f 6d 6d    REM       comm
2250: 61 6e 64 73 20 63 6f 6e 74 61 69 6e 65 64 20 69  ands contained i
2260: 6e 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f 6f 70  n the inner loop
2270: 2e 20 20 49 66 20 74 68 65 73 65 20 63 6f 6d 6d  .  If these comm
2280: 61 6e 64 73 20 77 65 72 65 0d 0a 20 20 52 45 4d  ands were..  REM
2290: 20 20 20 20 20 20 20 64 69 72 65 63 74 6c 79 20         directly 
22a0: 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65  contained in the
22b0: 20 6f 75 74 65 72 20 6c 6f 6f 70 2c 20 74 68 65   outer loop, the
22c0: 20 50 6c 61 74 66 6f 72 6d 4e 61 6d 65 20 65 6e   PlatformName en
22d0: 76 69 72 6f 6e 6d 65 6e 74 0d 0a 20 20 52 45 4d  vironment..  REM
22e0: 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 20         variable 
22f0: 77 6f 75 6c 64 20 62 65 20 73 74 75 63 6b 20 77  would be stuck w
2300: 69 74 68 20 69 74 73 20 69 6e 69 74 69 61 6c 20  ith its initial 
2310: 65 6d 70 74 79 20 76 61 6c 75 65 20 69 6e 73 74  empty value inst
2320: 65 61 64 2e 0d 0a 20 20 52 45 4d 0d 0a 20 20 46  ead...  REM..  F
2330: 4f 52 20 2f 46 20 22 74 6f 6b 65 6e 73 3d 32 2a  OR /F "tokens=2*
2340: 20 64 65 6c 69 6d 73 3d 3d 22 20 25 25 44 20 49   delims==" %%D I
2350: 4e 20 28 27 53 45 54 20 50 4c 41 54 46 4f 52 4d  N ('SET PLATFORM
2360: 4e 41 4d 45 27 29 20 44 4f 20 28 0d 0a 20 20 20  NAME') DO (..   
2370: 20 52 45 4d 0d 0a 20 20 20 20 52 45 4d 20 4e 4f   REM..    REM NO
2380: 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 63  TE: Attempt to c
2390: 6c 65 61 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e  lean the environ
23a0: 6d 65 6e 74 20 6f 66 20 61 6c 6c 20 76 61 72 69  ment of all vari
23b0: 61 62 6c 65 73 20 75 73 65 64 20 62 79 20 4d 53  ables used by MS
23c0: 56 43 0d 0a 20 20 20 20 52 45 4d 20 20 20 20 20  VC..    REM     
23d0: 20 20 61 6e 64 2f 6f 72 20 56 69 73 75 61 6c 20    and/or Visual 
23e0: 53 74 75 64 69 6f 2e 20 20 54 68 69 73 20 62 6c  Studio.  This bl
23f0: 6f 63 6b 20 6d 61 79 20 6e 65 65 64 20 74 6f 20  ock may need to 
2400: 62 65 20 75 70 64 61 74 65 64 20 69 6e 20 74 68  be updated in th
2410: 65 0d 0a 20 20 20 20 52 45 4d 20 20 20 20 20 20  e..    REM      
2420: 20 66 75 74 75 72 65 20 74 6f 20 61 63 63 6f 75   future to accou
2430: 6e 74 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  nt for additiona
2440: 6c 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  l environment va
2450: 72 69 61 62 6c 65 73 2e 0d 0a 20 20 20 20 52 45  riables...    RE
2460: 4d 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f  M..    CALL :fn_
2470: 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20 43 6f  UnsetVariable Co
2480: 6d 6d 61 6e 64 50 72 6f 6d 70 74 54 79 70 65 0d  mmandPromptType.
2490: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
24a0: 73 65 74 56 61 72 69 61 62 6c 65 20 44 65 76 45  setVariable DevE
24b0: 6e 76 44 69 72 0d 0a 20 20 20 20 43 41 4c 4c 20  nvDir..    CALL 
24c0: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
24d0: 65 20 45 78 74 65 6e 73 69 6f 6e 53 64 6b 44 69  e ExtensionSdkDi
24e0: 72 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f  r..    CALL :fn_
24f0: 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20 46 72  UnsetVariable Fr
2500: 61 6d 65 77 6f 72 6b 33 35 56 65 72 73 69 6f 6e  amework35Version
2510: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55  ..    CALL :fn_U
2520: 6e 73 65 74 56 61 72 69 61 62 6c 65 20 46 72 61  nsetVariable Fra
2530: 6d 65 77 6f 72 6b 34 30 56 65 72 73 69 6f 6e 0d  mework40Version.
2540: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
2550: 73 65 74 56 61 72 69 61 62 6c 65 20 46 72 61 6d  setVariable Fram
2560: 65 77 6f 72 6b 44 69 72 0d 0a 20 20 20 20 43 41  eworkDir..    CA
2570: 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69  LL :fn_UnsetVari
2580: 61 62 6c 65 20 46 72 61 6d 65 77 6f 72 6b 44 69  able FrameworkDi
2590: 72 33 32 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66  r32..    CALL :f
25a0: 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20  n_UnsetVariable 
25b0: 46 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e  FrameworkVersion
25c0: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55  ..    CALL :fn_U
25d0: 6e 73 65 74 56 61 72 69 61 62 6c 65 20 46 72 61  nsetVariable Fra
25e0: 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 33 32 0d  meworkVersion32.
25f0: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
2600: 73 65 74 56 61 72 69 61 62 6c 65 20 46 53 48 41  setVariable FSHA
2610: 52 50 49 4e 53 54 41 4c 4c 44 49 52 0d 0a 20 20  RPINSTALLDIR..  
2620: 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74    CALL :fn_Unset
2630: 56 61 72 69 61 62 6c 65 20 49 4e 43 4c 55 44 45  Variable INCLUDE
2640: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55  ..    CALL :fn_U
2650: 6e 73 65 74 56 61 72 69 61 62 6c 65 20 4c 49 42  nsetVariable LIB
2660: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55  ..    CALL :fn_U
2670: 6e 73 65 74 56 61 72 69 61 62 6c 65 20 4c 49 42  nsetVariable LIB
2680: 50 41 54 48 0d 0a 20 20 20 20 43 41 4c 4c 20 3a  PATH..    CALL :
2690: 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65  fn_UnsetVariable
26a0: 20 50 6c 61 74 66 6f 72 6d 0d 0a 20 20 20 20 52   Platform..    R
26b0: 45 4d 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65  EM CALL :fn_Unse
26c0: 74 56 61 72 69 61 62 6c 65 20 56 43 49 4e 53 54  tVariable VCINST
26d0: 41 4c 4c 44 49 52 0d 0a 20 20 20 20 43 41 4c 4c  ALLDIR..    CALL
26e0: 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62   :fn_UnsetVariab
26f0: 6c 65 20 56 53 49 4e 53 54 41 4c 4c 44 49 52 0d  le VSINSTALLDIR.
2700: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
2710: 73 65 74 56 61 72 69 61 62 6c 65 20 57 69 6e 64  setVariable Wind
2720: 6f 77 73 50 68 6f 6e 65 4b 69 74 44 69 72 0d 0a  owsPhoneKitDir..
2730: 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73      CALL :fn_Uns
2740: 65 74 56 61 72 69 61 62 6c 65 20 57 69 6e 64 6f  etVariable Windo
2750: 77 73 53 64 6b 44 69 72 0d 0a 20 20 20 20 43 41  wsSdkDir..    CA
2760: 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69  LL :fn_UnsetVari
2770: 61 62 6c 65 20 57 69 6e 64 6f 77 73 53 64 6b 44  able WindowsSdkD
2780: 69 72 5f 33 35 0d 0a 20 20 20 20 43 41 4c 4c 20  ir_35..    CALL 
2790: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
27a0: 65 20 57 69 6e 64 6f 77 73 53 64 6b 44 69 72 5f  e WindowsSdkDir_
27b0: 6f 6c 64 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66  old..    CALL :f
27c0: 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20  n_UnsetVariable 
27d0: 57 69 6e 64 6f 77 73 53 44 4b 5f 45 78 65 63 75  WindowsSDK_Execu
27e0: 74 61 62 6c 65 50 61 74 68 5f 78 38 36 0d 0a 20  tablePath_x86.. 
27f0: 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65     CALL :fn_Unse
2800: 74 56 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77  tVariable Window
2810: 73 53 44 4b 5f 45 78 65 63 75 74 61 62 6c 65 50  sSDK_ExecutableP
2820: 61 74 68 5f 78 36 34 0d 0a 0d 0a 20 20 20 20 52  ath_x64....    R
2830: 45 4d 0d 0a 20 20 20 20 52 45 4d 20 4e 4f 54 45  EM..    REM NOTE
2840: 3a 20 52 65 73 65 74 20 74 68 65 20 50 41 54 48  : Reset the PATH
2850: 20 68 65 72 65 20 74 6f 20 74 68 65 20 61 62 73   here to the abs
2860: 6f 6c 75 74 65 20 62 61 72 65 20 6d 69 6e 69 6d  olute bare minim
2870: 75 6d 20 72 65 71 75 69 72 65 64 2e 0d 0a 20 20  um required...  
2880: 20 20 52 45 4d 0d 0a 20 20 20 20 53 45 54 20 50    REM..    SET P
2890: 41 54 48 3d 25 54 4f 4f 4c 50 41 54 48 25 3b 25  ATH=%TOOLPATH%;%
28a0: 53 79 73 74 65 6d 52 6f 6f 74 25 5c 53 79 73 74  SystemRoot%\Syst
28b0: 65 6d 33 32 3b 25 53 79 73 74 65 6d 52 6f 6f 74  em32;%SystemRoot
28c0: 25 0d 0a 0d 0a 20 20 20 20 52 45 4d 0d 0a 20 20  %....    REM..  
28d0: 20 20 52 45 4d 20 4e 4f 54 45 3a 20 54 68 69 73    REM NOTE: This
28e0: 20 69 73 20 74 68 65 20 69 6e 6e 65 72 20 6c 6f   is the inner lo
28f0: 6f 70 2e 20 20 54 68 65 72 65 20 61 72 65 20 6e  op.  There are n
2900: 6f 72 6d 61 6c 6c 79 20 74 77 6f 20 69 74 65 72  ormally two iter
2910: 61 74 69 6f 6e 73 2c 20 6f 6e 65 0d 0a 20 20 20  ations, one..   
2920: 20 52 45 4d 20 20 20 20 20 20 20 66 6f 72 20 65   REM       for e
2930: 61 63 68 20 73 75 70 70 6f 72 74 65 64 20 62 75  ach supported bu
2940: 69 6c 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ild configuratio
2950: 6e 2c 20 65 2e 67 2e 20 44 65 62 75 67 20 6f 72  n, e.g. Debug or
2960: 20 52 65 74 61 69 6c 2e 0d 0a 20 20 20 20 52 45   Retail...    RE
2970: 4d 0d 0a 20 20 20 20 46 4f 52 20 25 25 42 20 49  M..    FOR %%B I
2980: 4e 20 28 25 43 4f 4e 46 49 47 55 52 41 54 49 4f  N (%CONFIGURATIO
2990: 4e 53 25 29 20 44 4f 20 28 0d 0a 20 20 20 20 20  NS%) DO (..     
29a0: 20 52 45 4d 0d 0a 20 20 20 20 20 20 52 45 4d 20   REM..      REM 
29b0: 4e 4f 54 45 3a 20 57 68 65 6e 20 70 72 65 70 61  NOTE: When prepa
29c0: 72 69 6e 67 20 74 68 65 20 64 65 62 75 67 20 62  ring the debug b
29d0: 75 69 6c 64 2c 20 73 65 74 20 74 68 65 20 44 45  uild, set the DE
29e0: 42 55 47 20 61 6e 64 20 4d 45 4d 44 45 42 55 47  BUG and MEMDEBUG
29f0: 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20 20  ..      REM     
2a00: 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61    environment va
2a10: 72 69 61 62 6c 65 73 20 74 6f 20 62 65 20 70 69  riables to be pi
2a20: 63 6b 65 64 20 75 70 20 62 79 20 74 68 65 20 4d  cked up by the M
2a30: 53 56 43 20 6d 61 6b 65 66 69 6c 65 0d 0a 20 20  SVC makefile..  
2a40: 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 69 74      REM       it
2a50: 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 52 45 4d  self...      REM
2a60: 0d 0a 20 20 20 20 20 20 25 5f 41 45 43 48 4f 25  ..      %_AECHO%
2a70: 20 42 75 69 6c 64 69 6e 67 20 74 68 65 20 25 25   Building the %%
2a80: 42 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  B configuration 
2a90: 66 6f 72 20 70 6c 61 74 66 6f 72 6d 20 25 25 50  for platform %%P
2aa0: 20 77 69 74 68 20 6e 61 6d 65 20 25 25 44 2e 2e   with name %%D..
2ab0: 2e 0d 0a 0d 0a 20 20 20 20 20 20 49 46 20 2f 49  .....      IF /I
2ac0: 20 22 25 25 42 22 20 3d 3d 20 22 44 65 62 75 67   "%%B" == "Debug
2ad0: 22 20 28 0d 0a 20 20 20 20 20 20 20 20 52 45 4d  " (..        REM
2ae0: 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 4e 4f  ..        REM NO
2af0: 54 45 3a 20 55 73 69 6e 67 20 74 68 69 73 20 6c  TE: Using this l
2b00: 65 76 65 6c 20 66 6f 72 20 74 68 65 20 44 45 42  evel for the DEB
2b10: 55 47 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  UG environment v
2b20: 61 72 69 61 62 6c 65 20 73 68 6f 75 6c 64 0d 0a  ariable should..
2b30: 20 20 20 20 20 20 20 20 52 45 4d 20 20 20 20 20          REM     
2b40: 20 20 64 69 73 61 62 6c 65 20 61 6c 6c 20 63 6f    disable all co
2b50: 6d 70 69 6c 65 72 20 6f 70 74 69 6d 69 7a 61 74  mpiler optimizat
2b60: 69 6f 6e 73 20 61 6e 64 20 70 72 65 76 65 6e 74  ions and prevent
2b70: 20 75 73 65 20 6f 66 20 74 68 65 0d 0a 20 20 20   use of the..   
2b80: 20 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 4e       REM       N
2b90: 44 45 42 55 47 20 64 65 66 69 6e 65 2e 20 20 41  DEBUG define.  A
2ba0: 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 62 6f 74  dditionally, bot
2bb0: 68 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  h SQLITE_ENABLE_
2bc0: 41 50 49 5f 41 52 4d 4f 52 0d 0a 20 20 20 20 20  API_ARMOR..     
2bd0: 20 20 20 52 45 4d 20 20 20 20 20 20 20 61 6e 64     REM       and
2be0: 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20 64 65   SQLITE_DEBUG de
2bf0: 66 69 6e 65 73 20 73 68 6f 75 6c 64 20 62 65 20  fines should be 
2c00: 65 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20 20  enabled...      
2c10: 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 53    REM..        S
2c20: 45 54 20 44 45 42 55 47 3d 33 0d 0a 0d 0a 20 20  ET DEBUG=3....  
2c30: 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20 20 20        REM..     
2c40: 20 20 20 52 45 4d 20 4e 4f 54 45 3a 20 53 65 74     REM NOTE: Set
2c50: 74 69 6e 67 20 74 68 69 73 20 74 6f 20 6e 6f 6e  ting this to non
2c60: 2d 7a 65 72 6f 20 73 68 6f 75 6c 64 20 65 6e 61  -zero should ena
2c70: 62 6c 65 20 74 68 65 20 53 51 4c 49 54 45 5f 4d  ble the SQLITE_M
2c80: 45 4d 44 45 42 55 47 0d 0a 20 20 20 20 20 20 20  EMDEBUG..       
2c90: 20 52 45 4d 20 20 20 20 20 20 20 64 65 66 69 6e   REM       defin
2ca0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d  e...        REM.
2cb0: 0a 20 20 20 20 20 20 20 20 53 45 54 20 4d 45 4d  .        SET MEM
2cc0: 44 45 42 55 47 3d 31 0d 0a 20 20 20 20 20 20 29  DEBUG=1..      )
2cd0: 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20 20 20   ELSE (..       
2ce0: 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56   CALL :fn_UnsetV
2cf0: 61 72 69 61 62 6c 65 20 44 45 42 55 47 0d 0a 20  ariable DEBUG.. 
2d00: 20 20 20 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f         CALL :fn_
2d10: 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20 4d 45  UnsetVariable ME
2d20: 4d 44 45 42 55 47 0d 0a 20 20 20 20 20 20 29 0d  MDEBUG..      ).
2d30: 0a 0d 0a 20 20 20 20 20 20 52 45 4d 0d 0a 20 20  ...      REM..  
2d40: 20 20 20 20 52 45 4d 20 4e 4f 54 45 3a 20 4c 61      REM NOTE: La
2d50: 75 6e 63 68 20 61 20 6e 65 73 74 65 64 20 63 6f  unch a nested co
2d60: 6d 6d 61 6e 64 20 73 68 65 6c 6c 20 74 6f 20 70  mmand shell to p
2d70: 65 72 66 6f 72 6d 20 74 68 65 20 66 6f 6c 6c 6f  erform the follo
2d80: 77 69 6e 67 20 73 74 65 70 73 3a 0d 0a 20 20 20  wing steps:..   
2d90: 20 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 52 45     REM..      RE
2da0: 4d 20 20 20 20 20 20 20 31 2e 20 53 65 74 75 70  M       1. Setup
2db0: 20 74 68 65 20 4d 53 56 43 20 65 6e 76 69 72 6f   the MSVC enviro
2dc0: 6e 6d 65 6e 74 20 66 6f 72 20 74 68 69 73 20 70  nment for this p
2dd0: 6c 61 74 66 6f 72 6d 20 75 73 69 6e 67 20 74 68  latform using th
2de0: 65 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20  e..      REM    
2df0: 20 20 20 20 20 20 6f 66 66 69 63 69 61 6c 20 62        official b
2e00: 61 74 63 68 20 66 69 6c 65 2e 0d 0a 20 20 20 20  atch file...    
2e10: 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 52 45 4d    REM..      REM
2e20: 20 20 20 20 20 20 20 32 2e 20 4d 61 6b 65 20 73         2. Make s
2e30: 75 72 65 20 74 68 61 74 20 6e 6f 20 73 74 61 6c  ure that no stal
2e40: 65 20 62 75 69 6c 64 20 6f 75 74 70 75 74 20 66  e build output f
2e50: 69 6c 65 73 20 61 72 65 20 70 72 65 73 65 6e 74  iles are present
2e60: 2e 0d 0a 20 20 20 20 20 20 52 45 4d 0d 0a 20 20  ...      REM..  
2e70: 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 33 2e      REM       3.
2e80: 20 42 75 69 6c 64 20 74 68 65 20 22 73 71 6c 69   Build the "sqli
2e90: 74 65 33 2e 64 6c 6c 22 20 61 6e 64 20 22 73 71  te3.dll" and "sq
2ea0: 6c 69 74 65 33 2e 6c 69 62 22 20 62 69 6e 61 72  lite3.lib" binar
2eb0: 69 65 73 20 66 6f 72 20 74 68 69 73 0d 0a 20 20  ies for this..  
2ec0: 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 20 20      REM         
2ed0: 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20 20   platform...    
2ee0: 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 52 45 4d    REM..      REM
2ef0: 20 20 20 20 20 20 20 34 2e 20 43 6f 70 79 20 74         4. Copy t
2f00: 68 65 20 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22  he "sqlite3.dll"
2f10: 20 61 6e 64 20 22 73 71 6c 69 74 65 33 2e 6c 69   and "sqlite3.li
2f20: 62 22 20 62 69 6e 61 72 69 65 73 20 66 6f 72 20  b" binaries for 
2f30: 74 68 69 73 0d 0a 20 20 20 20 20 20 52 45 4d 20  this..      REM 
2f40: 20 20 20 20 20 20 20 20 20 70 6c 61 74 66 6f 72           platfor
2f50: 6d 20 74 6f 20 74 68 65 20 70 6c 61 74 66 6f 72  m to the platfor
2f60: 6d 2d 73 70 65 63 69 66 69 63 20 64 69 72 65 63  m-specific direc
2f70: 74 6f 72 79 20 62 65 6e 65 61 74 68 20 74 68 65  tory beneath the
2f80: 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20 20  ..      REM     
2f90: 20 20 20 20 20 62 69 6e 61 72 79 20 64 69 72 65       binary dire
2fa0: 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 52 45  ctory...      RE
2fb0: 4d 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20  M..      REM    
2fc0: 20 20 20 35 2e 20 55 6e 6c 65 73 73 20 70 72 65     5. Unless pre
2fd0: 76 65 6e 74 65 64 20 66 72 6f 6d 20 64 6f 69 6e  vented from doin
2fe0: 67 20 73 6f 2c 20 63 6f 70 79 20 74 68 65 20 22  g so, copy the "
2ff0: 73 71 6c 69 74 65 33 2e 70 64 62 22 0d 0a 20 20  sqlite3.pdb"..  
3000: 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 20 20      REM         
3010: 20 73 79 6d 62 6f 6c 73 20 66 69 6c 65 20 66 6f   symbols file fo
3020: 72 20 74 68 69 73 20 70 6c 61 74 66 6f 72 6d 20  r this platform 
3030: 74 6f 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 2d  to the platform-
3040: 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20  specific..      
3050: 52 45 4d 20 20 20 20 20 20 20 20 20 20 64 69 72  REM          dir
3060: 65 63 74 6f 72 79 20 62 65 6e 65 61 74 68 20 74  ectory beneath t
3070: 68 65 20 62 69 6e 61 72 79 20 64 69 72 65 63 74  he binary direct
3080: 6f 72 79 2e 0d 0a 20 20 20 20 20 20 52 45 4d 0d  ory...      REM.
3090: 0a 20 20 20 20 20 20 22 25 43 6f 6d 53 70 65 63  .      "%ComSpec
30a0: 25 22 20 2f 43 20 28 0d 0a 20 20 20 20 20 20 20  %" /C (..       
30b0: 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 52 45   REM..        RE
30c0: 4d 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  M NOTE: Attempt 
30d0: 74 6f 20 73 65 74 75 70 20 74 68 65 20 4d 53 56  to setup the MSV
30e0: 43 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 66 6f  C environment fo
30f0: 72 20 74 68 69 73 20 70 6c 61 74 66 6f 72 6d 2e  r this platform.
3100: 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20  ..        REM.. 
3110: 20 20 20 20 20 20 20 25 5f 5f 45 43 48 4f 33 25         %__ECHO3%
3120: 20 43 41 4c 4c 20 22 25 56 43 56 41 52 53 41 4c   CALL "%VCVARSAL
3130: 4c 25 22 20 25 25 50 0d 0a 0d 0a 20 20 20 20 20  L%" %%P....     
3140: 20 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c     IF ERRORLEVEL
3150: 20 31 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20   1 (..          
3160: 45 43 48 4f 20 46 61 69 6c 65 64 20 74 6f 20 63  ECHO Failed to c
3170: 61 6c 6c 20 22 25 56 43 56 41 52 53 41 4c 4c 25  all "%VCVARSALL%
3180: 22 20 66 6f 72 20 70 6c 61 74 66 6f 72 6d 20 25  " for platform %
3190: 25 50 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 47  %P...          G
31a0: 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20  OTO errors..    
31b0: 20 20 20 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20      )....       
31c0: 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 52 45   REM..        RE
31d0: 4d 20 4e 4f 54 45 3a 20 49 66 20 74 68 69 73 20  M NOTE: If this 
31e0: 62 61 74 63 68 20 66 69 6c 65 20 69 73 20 6e 6f  batch file is no
31f0: 74 20 72 75 6e 6e 69 6e 67 20 69 6e 20 22 77 68  t running in "wh
3200: 61 74 2d 69 66 22 20 6d 6f 64 65 2c 20 63 68 65  at-if" mode, che
3210: 63 6b 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 52  ck to..        R
3220: 45 4d 20 20 20 20 20 20 20 62 65 20 73 75 72 65  EM       be sure
3230: 20 77 65 20 77 65 72 65 20 61 63 74 75 61 6c 6c   we were actuall
3240: 79 20 61 62 6c 65 20 74 6f 20 73 65 74 75 70 20  y able to setup 
3250: 74 68 65 20 4d 53 56 43 20 65 6e 76 69 72 6f 6e  the MSVC environ
3260: 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 52 45  ment..        RE
3270: 4d 20 20 20 20 20 20 20 61 73 20 63 75 72 72 65  M       as curre
3280: 6e 74 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74  nt versions of t
3290: 68 65 69 72 20 6f 66 66 69 63 69 61 6c 20 62 61  heir official ba
32a0: 74 63 68 20 66 69 6c 65 20 64 6f 20 6e 6f 74 20  tch file do not 
32b0: 73 65 74 0d 0a 20 20 20 20 20 20 20 20 52 45 4d  set..        REM
32c0: 20 20 20 20 20 20 20 74 68 65 20 65 78 69 74 20         the exit 
32d0: 63 6f 64 65 20 75 70 6f 6e 20 66 61 69 6c 75 72  code upon failur
32e0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d  e...        REM.
32f0: 0a 20 20 20 20 20 20 20 20 49 46 20 4e 4f 54 20  .        IF NOT 
3300: 44 45 46 49 4e 45 44 20 5f 5f 45 43 48 4f 33 20  DEFINED __ECHO3 
3310: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 20  (..          IF 
3320: 4e 4f 54 20 44 45 46 49 4e 45 44 20 57 69 6e 64  NOT DEFINED Wind
3330: 6f 77 73 50 68 6f 6e 65 4b 69 74 44 69 72 20 28  owsPhoneKitDir (
3340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 46  ..            IF
3350: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 57 69 6e   NOT DEFINED Win
3360: 64 6f 77 73 53 64 6b 44 69 72 20 28 0d 0a 20 20  dowsSdkDir (..  
3370: 20 20 20 20 20 20 20 20 20 20 20 20 45 43 48 4f              ECHO
3380: 20 43 61 6e 6e 6f 74 20 62 75 69 6c 64 2c 20 57   Cannot build, W
3390: 69 6e 64 6f 77 73 20 53 44 4b 20 6e 6f 74 20 66  indows SDK not f
33a0: 6f 75 6e 64 20 66 6f 72 20 70 6c 61 74 66 6f 72  ound for platfor
33b0: 6d 20 25 25 50 2e 0d 0a 20 20 20 20 20 20 20 20  m %%P...        
33c0: 20 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72        GOTO error
33d0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
33e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
33f0: 20 20 20 20 20 20 20 29 0d 0a 0d 0a 20 20 20 20         )....    
3400: 20 20 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20      REM..       
3410: 20 52 45 4d 20 4e 4f 54 45 3a 20 57 68 65 6e 20   REM NOTE: When 
3420: 75 73 69 6e 67 20 4d 53 56 43 20 32 30 31 32 20  using MSVC 2012 
3430: 61 6e 64 2f 6f 72 20 32 30 31 33 2c 20 74 68 65  and/or 2013, the
3440: 20 6e 61 74 69 76 65 20 53 44 4b 20 70 61 74 68   native SDK path
3450: 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20 20 20   cannot..       
3460: 20 52 45 4d 20 20 20 20 20 20 20 73 69 6d 70 6c   REM       simpl
3470: 79 20 75 73 65 20 74 68 65 20 22 6c 69 62 22 20  y use the "lib" 
3480: 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20 62 65  sub-directory be
3490: 6e 65 61 74 68 20 74 68 65 20 6c 6f 63 61 74 69  neath the locati
34a0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20  on..        REM 
34b0: 20 20 20 20 20 20 73 70 65 63 69 66 69 65 64 20        specified 
34c0: 69 6e 20 74 68 65 20 57 69 6e 64 6f 77 73 53 64  in the WindowsSd
34d0: 6b 44 69 72 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  kDir environment
34e0: 20 76 61 72 69 61 62 6c 65 20 62 65 63 61 75 73   variable becaus
34f0: 65 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  e..        REM  
3500: 20 20 20 20 20 74 68 61 74 20 6c 6f 63 61 74 69       that locati
3510: 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 61 63 74 75  on does not actu
3520: 61 6c 6c 79 20 63 6f 6e 74 61 69 6e 20 74 68 65  ally contain the
3530: 20 6e 65 63 65 73 73 61 72 79 20 6c 69 62 72 61   necessary libra
3540: 72 79 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20  ry..        REM 
3550: 20 20 20 20 20 20 66 69 6c 65 73 20 66 6f 72 20        files for 
3560: 78 38 36 2e 20 20 54 68 69 73 20 6d 75 73 74 20  x86.  This must 
3570: 62 65 20 64 6f 6e 65 20 66 6f 72 20 65 61 63 68  be done for each
3580: 20 69 74 65 72 61 74 69 6f 6e 20 62 65 63 61 75   iteration becau
3590: 73 65 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20  se..        REM 
35a0: 20 20 20 20 20 20 69 74 20 72 65 6c 69 65 73 20        it relies 
35b0: 75 70 6f 6e 20 74 68 65 20 57 69 6e 64 6f 77 73  upon the Windows
35c0: 53 64 6b 44 69 72 20 65 6e 76 69 72 6f 6e 6d 65  SdkDir environme
35d0: 6e 74 20 76 61 72 69 61 62 6c 65 20 62 65 69 6e  nt variable bein
35e0: 67 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  g..        REM  
35f0: 20 20 20 20 20 73 65 74 20 62 79 20 74 68 65 20       set by the 
3600: 62 61 74 63 68 20 66 69 6c 65 20 75 73 65 64 20  batch file used 
3610: 74 6f 20 73 65 74 75 70 20 74 68 65 20 4d 53 56  to setup the MSV
3620: 43 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0d 0a  C environment...
3630: 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20          REM..   
3640: 20 20 20 20 20 49 46 20 44 45 46 49 4e 45 44 20       IF DEFINED 
3650: 53 45 54 5f 4e 53 44 4b 4c 49 42 50 41 54 48 20  SET_NSDKLIBPATH 
3660: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d  (..          REM
3670: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 20  ..          REM 
3680: 4e 4f 54 45 3a 20 54 68 65 20 57 69 6e 64 6f 77  NOTE: The Window
3690: 73 20 50 68 6f 6e 65 20 53 44 4b 20 68 61 73 20  s Phone SDK has 
36a0: 61 20 73 6c 69 67 68 74 6c 79 20 64 69 66 66 65  a slightly diffe
36b0: 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 0d 0a  rent directory..
36c0: 20 20 20 20 20 20 20 20 20 20 52 45 4d 20 20 20            REM   
36d0: 20 20 20 20 73 74 72 75 63 74 75 72 65 20 61 6e      structure an
36e0: 64 20 6d 75 73 74 20 62 65 20 68 61 6e 64 6c 65  d must be handle
36f0: 64 20 73 70 65 63 69 61 6c 6c 79 20 68 65 72 65  d specially here
3700: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d  ...          REM
3710: 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46 20 44  ..          IF D
3720: 45 46 49 4e 45 44 20 57 69 6e 64 6f 77 73 50 68  EFINED WindowsPh
3730: 6f 6e 65 4b 69 74 44 69 72 20 28 0d 0a 20 20 20  oneKitDir (..   
3740: 20 20 20 20 20 20 20 20 20 43 41 4c 4c 20 3a 66           CALL :f
3750: 6e 5f 43 6f 70 79 56 61 72 69 61 62 6c 65 20 57  n_CopyVariable W
3760: 69 6e 64 6f 77 73 50 68 6f 6e 65 4b 69 74 44 69  indowsPhoneKitDi
3770: 72 20 4e 53 44 4b 4c 49 42 50 41 54 48 0d 0a 20  r NSDKLIBPATH.. 
3780: 20 20 20 20 20 20 20 20 20 20 20 43 41 4c 4c 20             CALL 
3790: 3a 66 6e 5f 41 70 70 65 6e 64 56 61 72 69 61 62  :fn_AppendVariab
37a0: 6c 65 20 4e 53 44 4b 4c 49 42 50 41 54 48 20 5c  le NSDKLIBPATH \
37b0: 6c 69 62 5c 78 38 36 0d 0a 20 20 20 20 20 20 20  lib\x86..       
37c0: 20 20 20 29 20 45 4c 53 45 20 49 46 20 44 45 46     ) ELSE IF DEF
37d0: 49 4e 45 44 20 57 69 6e 64 6f 77 73 53 64 6b 44  INED WindowsSdkD
37e0: 69 72 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ir (..          
37f0: 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 6f 70 79 56    CALL :fn_CopyV
3800: 61 72 69 61 62 6c 65 20 57 69 6e 64 6f 77 73 53  ariable WindowsS
3810: 64 6b 44 69 72 20 4e 53 44 4b 4c 49 42 50 41 54  dkDir NSDKLIBPAT
3820: 48 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  H....           
3830: 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20   REM..          
3840: 20 20 52 45 4d 20 4e 4f 54 45 3a 20 54 68 65 20    REM NOTE: The 
3850: 57 69 6e 64 6f 77 73 20 38 2e 31 20 53 44 4b 20  Windows 8.1 SDK 
3860: 68 61 73 20 61 20 73 6c 69 67 68 74 6c 79 20 64  has a slightly d
3870: 69 66 66 65 72 65 6e 74 20 64 69 72 65 63 74 6f  ifferent directo
3880: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
3890: 52 45 4d 20 20 20 20 20 20 20 6e 61 6d 69 6e 67  REM       naming
38a0: 20 63 6f 6e 76 65 6e 74 69 6f 6e 2e 0d 0a 20 20   convention...  
38b0: 20 20 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20            REM.. 
38c0: 20 20 20 20 20 20 20 20 20 20 20 49 46 20 44 45             IF DE
38d0: 46 49 4e 45 44 20 55 53 45 5f 57 49 4e 56 36 33  FINED USE_WINV63
38e0: 5f 4e 53 44 4b 4c 49 42 50 41 54 48 20 28 0d 0a  _NSDKLIBPATH (..
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 41                CA
3900: 4c 4c 20 3a 66 6e 5f 41 70 70 65 6e 64 56 61 72  LL :fn_AppendVar
3910: 69 61 62 6c 65 20 4e 53 44 4b 4c 49 42 50 41 54  iable NSDKLIBPAT
3920: 48 20 5c 6c 69 62 5c 77 69 6e 76 36 2e 33 5c 75  H \lib\winv6.3\u
3930: 6d 5c 78 38 36 0d 0a 20 20 20 20 20 20 20 20 20  m\x86..         
3940: 20 20 20 29 20 45 4c 53 45 20 49 46 20 22 25 56     ) ELSE IF "%V
3950: 69 73 75 61 6c 53 74 75 64 69 6f 56 65 72 73 69  isualStudioVersi
3960: 6f 6e 25 22 20 3d 3d 20 22 31 32 2e 30 22 20 28  on%" == "12.0" (
3970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3980: 43 41 4c 4c 20 3a 66 6e 5f 41 70 70 65 6e 64 56  CALL :fn_AppendV
3990: 61 72 69 61 62 6c 65 20 4e 53 44 4b 4c 49 42 50  ariable NSDKLIBP
39a0: 41 54 48 20 5c 2e 2e 5c 38 2e 30 5c 6c 69 62 5c  ATH \..\8.0\lib\
39b0: 77 69 6e 38 5c 75 6d 5c 78 38 36 0d 0a 20 20 20  win8\um\x86..   
39c0: 20 20 20 20 20 20 20 20 20 29 20 45 4c 53 45 20           ) ELSE 
39d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
39e0: 20 43 41 4c 4c 20 3a 66 6e 5f 41 70 70 65 6e 64   CALL :fn_Append
39f0: 56 61 72 69 61 62 6c 65 20 4e 53 44 4b 4c 49 42  Variable NSDKLIB
3a00: 50 41 54 48 20 5c 6c 69 62 5c 77 69 6e 38 5c 75  PATH \lib\win8\u
3a10: 6d 5c 78 38 36 0d 0a 20 20 20 20 20 20 20 20 20  m\x86..         
3a20: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
3a30: 29 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 0d 0a  )..        )....
3a40: 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20          REM..   
3a50: 20 20 20 20 20 52 45 4d 20 4e 4f 54 45 3a 20 55       REM NOTE: U
3a60: 6e 6c 65 73 73 20 70 72 65 76 65 6e 74 65 64 20  nless prevented 
3a70: 66 72 6f 6d 20 64 6f 69 6e 67 20 73 6f 2c 20 69  from doing so, i
3a80: 6e 76 6f 6b 65 20 4e 4d 41 4b 45 20 77 69 74 68  nvoke NMAKE with
3a90: 20 74 68 65 20 4d 53 56 43 0d 0a 20 20 20 20 20   the MSVC..     
3aa0: 20 20 20 52 45 4d 20 20 20 20 20 20 20 6d 61 6b     REM       mak
3ab0: 65 66 69 6c 65 20 74 6f 20 63 6c 65 61 6e 20 61  efile to clean a
3ac0: 6e 79 20 73 74 61 6c 65 20 62 75 69 6c 64 20 6f  ny stale build o
3ad0: 75 74 70 75 74 20 66 72 6f 6d 20 70 72 65 76 69  utput from previ
3ae0: 6f 75 73 0d 0a 20 20 20 20 20 20 20 20 52 45 4d  ous..        REM
3af0: 20 20 20 20 20 20 20 69 74 65 72 61 74 69 6f 6e         iteration
3b00: 73 20 6f 66 20 74 68 69 73 20 6c 6f 6f 70 20 61  s of this loop a
3b10: 6e 64 2f 6f 72 20 70 72 65 76 69 6f 75 73 20 72  nd/or previous r
3b20: 75 6e 73 20 6f 66 20 74 68 69 73 20 62 61 74 63  uns of this batc
3b30: 68 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  h..        REM  
3b40: 20 20 20 20 20 66 69 6c 65 2c 20 65 74 63 2e 0d       file, etc..
3b50: 0a 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20  .        REM..  
3b60: 20 20 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46        IF NOT DEF
3b70: 49 4e 45 44 20 4e 4f 43 4c 45 41 4e 20 28 0d 0a  INED NOCLEAN (..
3b80: 20 20 20 20 20 20 20 20 20 20 25 5f 5f 45 43 48            %__ECH
3b90: 4f 25 20 25 4e 4d 41 4b 45 5f 43 4d 44 25 20 63  O% %NMAKE_CMD% c
3ba0: 6c 65 61 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lean....        
3bb0: 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20    IF ERRORLEVEL 
3bc0: 31 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1 (..           
3bd0: 20 45 43 48 4f 20 46 61 69 6c 65 64 20 74 6f 20   ECHO Failed to 
3be0: 63 6c 65 61 6e 20 66 6f 72 20 70 6c 61 74 66 6f  clean for platfo
3bf0: 72 6d 20 25 25 50 2e 0d 0a 20 20 20 20 20 20 20  rm %%P...       
3c00: 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72 73       GOTO errors
3c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
3c20: 20 20 20 20 20 20 20 29 20 45 4c 53 45 20 28 0d         ) ELSE (.
3c30: 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 0d 0a  .          REM..
3c40: 20 20 20 20 20 20 20 20 20 20 52 45 4d 20 4e 4f            REM NO
3c50: 54 45 3a 20 45 76 65 6e 20 77 68 65 6e 20 74 68  TE: Even when th
3c60: 65 20 63 6c 65 61 6e 69 6e 67 20 73 74 65 70 20  e cleaning step 
3c70: 68 61 73 20 62 65 65 6e 20 64 69 73 61 62 6c 65  has been disable
3c80: 64 2c 20 77 65 20 73 74 69 6c 6c 0d 0a 20 20 20  d, we still..   
3c90: 20 20 20 20 20 20 20 52 45 4d 20 20 20 20 20 20         REM      
3ca0: 20 6e 65 65 64 20 74 6f 20 72 65 6d 6f 76 65 20   need to remove 
3cb0: 74 68 65 20 62 75 69 6c 64 20 6f 75 74 70 75 74  the build output
3cc0: 20 66 6f 72 20 61 6c 6c 20 74 68 65 20 66 69 6c   for all the fil
3cd0: 65 73 20 77 65 20 61 72 65 0d 0a 20 20 20 20 20  es we are..     
3ce0: 20 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 73       REM       s
3cf0: 70 65 63 69 66 69 63 61 6c 6c 79 20 77 61 6e 74  pecifically want
3d00: 69 6e 67 20 74 6f 20 62 75 69 6c 64 20 66 6f 72  ing to build for
3d10: 20 65 61 63 68 20 70 6c 61 74 66 6f 72 6d 2e 0d   each platform..
3d20: 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 0d 0a  .          REM..
3d30: 20 20 20 20 20 20 20 20 20 20 25 5f 41 45 43 48            %_AECH
3d40: 4f 25 20 43 6c 65 61 6e 69 6e 67 20 66 69 6e 61  O% Cleaning fina
3d50: 6c 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 6f  l core library o
3d60: 75 74 70 75 74 20 66 69 6c 65 73 20 6f 6e 6c 79  utput files only
3d70: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 25  .....          %
3d80: 5f 5f 45 43 48 4f 25 20 44 45 4c 20 2f 51 20 2a  __ECHO% DEL /Q *
3d90: 2e 6c 6f 20 73 71 6c 69 74 65 33 2e 64 6c 6c 20  .lo sqlite3.dll 
3da0: 73 71 6c 69 74 65 33 2e 6c 69 62 20 73 71 6c 69  sqlite3.lib sqli
3db0: 74 65 33 2e 70 64 62 20 32 25 52 45 44 49 52 45  te3.pdb 2%REDIRE
3dc0: 43 54 25 20 4e 55 4c 0d 0a 20 20 20 20 20 20 20  CT% NUL..       
3dd0: 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 52 45   )....        RE
3de0: 4d 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 4e  M..        REM N
3df0: 4f 54 45 3a 20 43 61 6c 6c 20 4e 4d 41 4b 45 20  OTE: Call NMAKE 
3e00: 77 69 74 68 20 74 68 65 20 4d 53 56 43 20 6d 61  with the MSVC ma
3e10: 6b 65 66 69 6c 65 20 74 6f 20 62 75 69 6c 64 20  kefile to build 
3e20: 74 68 65 20 22 73 71 6c 69 74 65 33 2e 64 6c 6c  the "sqlite3.dll
3e30: 22 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  "..        REM  
3e40: 20 20 20 20 20 62 69 6e 61 72 79 2e 20 20 54 68       binary.  Th
3e50: 65 20 78 38 36 20 63 6f 6d 70 69 6c 65 72 20 77  e x86 compiler w
3e60: 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 63  ill be used to c
3e70: 6f 6d 70 69 6c 65 20 74 68 65 20 6e 61 74 69 76  ompile the nativ
3e80: 65 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  e..        REM  
3e90: 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e       command lin
3ea0: 65 20 74 6f 6f 6c 73 20 6e 65 65 64 65 64 20 64  e tools needed d
3eb0: 75 72 69 6e 67 20 74 68 65 20 62 75 69 6c 64 20  uring the build 
3ec0: 70 72 6f 63 65 73 73 20 69 74 73 65 6c 66 2e 0d  process itself..
3ed0: 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20 20 20  .        REM    
3ee0: 20 20 20 41 6c 73 6f 2c 20 64 69 73 61 62 6c 65     Also, disable
3ef0: 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 6e 64   looking for and
3f00: 2f 6f 72 20 6c 69 6e 6b 69 6e 67 20 74 6f 20 74  /or linking to t
3f10: 68 65 20 6e 61 74 69 76 65 20 54 63 6c 0d 0a 20  he native Tcl.. 
3f20: 20 20 20 20 20 20 20 52 45 4d 20 20 20 20 20 20         REM      
3f30: 20 72 75 6e 74 69 6d 65 20 6c 69 62 72 61 72 79   runtime library
3f40: 2e 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d 0a  ...        REM..
3f50: 20 20 20 20 20 20 20 20 25 5f 5f 45 43 48 4f 25          %__ECHO%
3f60: 20 25 4e 4d 41 4b 45 5f 43 4d 44 25 20 73 71 6c   %NMAKE_CMD% sql
3f70: 69 74 65 33 2e 64 6c 6c 20 58 43 4f 4d 50 49 4c  ite3.dll XCOMPIL
3f80: 45 3d 31 20 55 53 45 5f 4e 41 54 49 56 45 5f 4c  E=1 USE_NATIVE_L
3f90: 49 42 50 41 54 48 53 3d 31 20 4e 4f 5f 54 43 4c  IBPATHS=1 NO_TCL
3fa0: 3d 31 20 25 4e 4d 41 4b 45 5f 41 52 47 53 25 0d  =1 %NMAKE_ARGS%.
3fb0: 0a 0d 0a 20 20 20 20 20 20 20 20 49 46 20 45 52  ...        IF ER
3fc0: 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20  RORLEVEL 1 (..  
3fd0: 20 20 20 20 20 20 20 20 45 43 48 4f 20 46 61 69          ECHO Fai
3fe0: 6c 65 64 20 74 6f 20 62 75 69 6c 64 20 25 25 42  led to build %%B
3ff0: 20 22 73 71 6c 69 74 65 33 2e 64 6c 6c 22 20 66   "sqlite3.dll" f
4000: 6f 72 20 70 6c 61 74 66 6f 72 6d 20 25 25 50 2e  or platform %%P.
4010: 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4f 54 4f  ..          GOTO
4020: 20 65 72 72 6f 72 73 0d 0a 20 20 20 20 20 20 20   errors..       
4030: 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 52 45   )....        RE
4040: 4d 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 4e  M..        REM N
4050: 4f 54 45 3a 20 43 6f 70 79 20 74 68 65 20 22 73  OTE: Copy the "s
4060: 71 6c 69 74 65 33 2e 64 6c 6c 22 20 66 69 6c 65  qlite3.dll" file
4070: 20 74 6f 20 74 68 65 20 61 70 70 72 6f 70 72 69   to the appropri
4080: 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 66 6f  ate directory fo
4090: 72 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 20 20  r..        REM  
40a0: 20 20 20 20 20 74 68 65 20 62 75 69 6c 64 20 61       the build a
40b0: 6e 64 20 70 6c 61 74 66 6f 72 6d 20 62 65 6e 65  nd platform bene
40c0: 61 74 68 20 74 68 65 20 62 69 6e 61 72 79 20 64  ath the binary d
40d0: 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 20  irectory...     
40e0: 20 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20     REM..        
40f0: 25 5f 5f 45 43 48 4f 25 20 58 43 4f 50 59 20 73  %__ECHO% XCOPY s
4100: 71 6c 69 74 65 33 2e 64 6c 6c 20 22 25 42 49 4e  qlite3.dll "%BIN
4110: 41 52 59 44 49 52 45 43 54 4f 52 59 25 5c 25 25  ARYDIRECTORY%\%%
4120: 42 5c 25 25 44 5c 22 20 25 46 46 4c 41 47 53 25  B\%%D\" %FFLAGS%
4130: 20 25 44 46 4c 41 47 53 25 0d 0a 0d 0a 20 20 20   %DFLAGS%....   
4140: 20 20 20 20 20 49 46 20 45 52 52 4f 52 4c 45 56       IF ERRORLEV
4150: 45 4c 20 31 20 28 0d 0a 20 20 20 20 20 20 20 20  EL 1 (..        
4160: 20 20 45 43 48 4f 20 46 61 69 6c 65 64 20 74 6f    ECHO Failed to
4170: 20 63 6f 70 79 20 22 73 71 6c 69 74 65 33 2e 64   copy "sqlite3.d
4180: 6c 6c 22 20 74 6f 20 22 25 42 49 4e 41 52 59 44  ll" to "%BINARYD
4190: 49 52 45 43 54 4f 52 59 25 5c 25 25 42 5c 25 25  IRECTORY%\%%B\%%
41a0: 44 5c 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  D\"...          
41b0: 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20  GOTO errors..   
41c0: 20 20 20 20 20 29 0d 0a 0d 0a 20 20 20 20 20 20       )....      
41d0: 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 52    REM..        R
41e0: 45 4d 20 4e 4f 54 45 3a 20 43 6f 70 79 20 74 68  EM NOTE: Copy th
41f0: 65 20 22 73 71 6c 69 74 65 33 2e 6c 69 62 22 20  e "sqlite3.lib" 
4200: 66 69 6c 65 20 74 6f 20 74 68 65 20 61 70 70 72  file to the appr
4210: 6f 70 72 69 61 74 65 20 64 69 72 65 63 74 6f 72  opriate director
4220: 79 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 52  y for..        R
4230: 45 4d 20 20 20 20 20 20 20 74 68 65 20 62 75 69  EM       the bui
4240: 6c 64 20 61 6e 64 20 70 6c 61 74 66 6f 72 6d 20  ld and platform 
4250: 62 65 6e 65 61 74 68 20 74 68 65 20 62 69 6e 61  beneath the bina
4260: 72 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ry directory... 
4270: 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20 20         REM..    
4280: 20 20 20 20 25 5f 5f 45 43 48 4f 25 20 58 43 4f      %__ECHO% XCO
4290: 50 59 20 73 71 6c 69 74 65 33 2e 6c 69 62 20 22  PY sqlite3.lib "
42a0: 25 42 49 4e 41 52 59 44 49 52 45 43 54 4f 52 59  %BINARYDIRECTORY
42b0: 25 5c 25 25 42 5c 25 25 44 5c 22 20 25 46 46 4c  %\%%B\%%D\" %FFL
42c0: 41 47 53 25 20 25 44 46 4c 41 47 53 25 0d 0a 0d  AGS% %DFLAGS%...
42d0: 0a 20 20 20 20 20 20 20 20 49 46 20 45 52 52 4f  .        IF ERRO
42e0: 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20 20 20  RLEVEL 1 (..    
42f0: 20 20 20 20 20 20 45 43 48 4f 20 46 61 69 6c 65        ECHO Faile
4300: 64 20 74 6f 20 63 6f 70 79 20 22 73 71 6c 69 74  d to copy "sqlit
4310: 65 33 2e 6c 69 62 22 20 74 6f 20 22 25 42 49 4e  e3.lib" to "%BIN
4320: 41 52 59 44 49 52 45 43 54 4f 52 59 25 5c 25 25  ARYDIRECTORY%\%%
4330: 42 5c 25 25 44 5c 22 2e 0d 0a 20 20 20 20 20 20  B\%%D\"...      
4340: 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d      GOTO errors.
4350: 0a 20 20 20 20 20 20 20 20 29 0d 0a 0d 0a 20 20  .        )....  
4360: 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20 20 20        REM..     
4370: 20 20 20 52 45 4d 20 4e 4f 54 45 3a 20 43 6f 70     REM NOTE: Cop
4380: 79 20 74 68 65 20 22 73 71 6c 69 74 65 33 2e 70  y the "sqlite3.p
4390: 64 62 22 20 66 69 6c 65 20 74 6f 20 74 68 65 20  db" file to the 
43a0: 61 70 70 72 6f 70 72 69 61 74 65 20 64 69 72 65  appropriate dire
43b0: 63 74 6f 72 79 20 66 6f 72 0d 0a 20 20 20 20 20  ctory for..     
43c0: 20 20 20 52 45 4d 20 20 20 20 20 20 20 74 68 65     REM       the
43d0: 20 62 75 69 6c 64 20 61 6e 64 20 70 6c 61 74 66   build and platf
43e0: 6f 72 6d 20 62 65 6e 65 61 74 68 20 74 68 65 20  orm beneath the 
43f0: 62 69 6e 61 72 79 20 64 69 72 65 63 74 6f 72 79  binary directory
4400: 20 75 6e 6c 65 73 73 20 77 65 0d 0a 20 20 20 20   unless we..    
4410: 20 20 20 20 52 45 4d 20 20 20 20 20 20 20 61 72      REM       ar
4420: 65 20 70 72 65 76 65 6e 74 65 64 20 66 72 6f 6d  e prevented from
4430: 20 64 6f 69 6e 67 20 73 6f 2e 0d 0a 20 20 20 20   doing so...    
4440: 20 20 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20      REM..       
4450: 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20   IF NOT DEFINED 
4460: 4e 4f 53 59 4d 42 4f 4c 53 20 28 0d 0a 20 20 20  NOSYMBOLS (..   
4470: 20 20 20 20 20 20 20 25 5f 5f 45 43 48 4f 25 20         %__ECHO% 
4480: 58 43 4f 50 59 20 73 71 6c 69 74 65 33 2e 70 64  XCOPY sqlite3.pd
4490: 62 20 22 25 42 49 4e 41 52 59 44 49 52 45 43 54  b "%BINARYDIRECT
44a0: 4f 52 59 25 5c 25 25 42 5c 25 25 44 5c 22 20 25  ORY%\%%B\%%D\" %
44b0: 46 46 4c 41 47 53 25 20 25 44 46 4c 41 47 53 25  FFLAGS% %DFLAGS%
44c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46  ....          IF
44d0: 20 45 52 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d   ERRORLEVEL 1 (.
44e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 43 48  .            ECH
44f0: 4f 20 46 61 69 6c 65 64 20 74 6f 20 63 6f 70 79  O Failed to copy
4500: 20 22 73 71 6c 69 74 65 33 2e 70 64 62 22 20 74   "sqlite3.pdb" t
4510: 6f 20 22 25 42 49 4e 41 52 59 44 49 52 45 43 54  o "%BINARYDIRECT
4520: 4f 52 59 25 5c 25 25 42 5c 25 25 44 5c 22 2e 0d  ORY%\%%B\%%D\"..
4530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 4f 54  .            GOT
4540: 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20 20 20  O errors..      
4550: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 29      )..        )
4560: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d  ....        REM.
4570: 0a 20 20 20 20 20 20 20 20 52 45 4d 20 4e 4f 54  .        REM NOT
4580: 45 3a 20 49 66 20 72 65 71 75 65 73 74 65 64 2c  E: If requested,
4590: 20 61 6c 73 6f 20 62 75 69 6c 64 20 74 68 65 20   also build the 
45a0: 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62 6c 65  shell executable
45b0: 2e 0d 0a 20 20 20 20 20 20 20 20 52 45 4d 0d 0a  ...        REM..
45c0: 20 20 20 20 20 20 20 20 49 46 20 44 45 46 49 4e          IF DEFIN
45d0: 45 44 20 42 55 49 4c 44 5f 41 4c 4c 5f 53 48 45  ED BUILD_ALL_SHE
45e0: 4c 4c 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20  LL (..          
45f0: 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20 52  REM..          R
4600: 45 4d 20 4e 4f 54 45 3a 20 49 66 20 6e 65 63 65  EM NOTE: If nece
4610: 73 73 61 72 79 2c 20 6d 61 6b 65 20 73 75 72 65  ssary, make sure
4620: 20 61 6e 79 20 70 72 65 76 69 6f 75 73 20 62 75   any previous bu
4630: 69 6c 64 20 6f 75 74 70 75 74 20 66 6f 72 20 74  ild output for t
4640: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45  he..          RE
4650: 4d 20 20 20 20 20 20 20 73 68 65 6c 6c 20 65 78  M       shell ex
4660: 65 63 75 74 61 62 6c 65 20 69 73 20 64 65 6c 65  ecutable is dele
4670: 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ted...          
4680: 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20 49  REM..          I
4690: 46 20 44 45 46 49 4e 45 44 20 4e 4f 43 4c 45 41  F DEFINED NOCLEA
46a0: 4e 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  N (..           
46b0: 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20   REM..          
46c0: 20 20 52 45 4d 20 4e 4f 54 45 3a 20 45 76 65 6e    REM NOTE: Even
46d0: 20 77 68 65 6e 20 74 68 65 20 63 6c 65 61 6e 69   when the cleani
46e0: 6e 67 20 73 74 65 70 20 68 61 73 20 62 65 65 6e  ng step has been
46f0: 20 64 69 73 61 62 6c 65 64 2c 20 77 65 20 73 74   disabled, we st
4700: 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
4710: 20 52 45 4d 20 20 20 20 20 20 20 6e 65 65 64 20   REM       need 
4720: 74 6f 20 72 65 6d 6f 76 65 20 74 68 65 20 62 75  to remove the bu
4730: 69 6c 64 20 6f 75 74 70 75 74 20 66 6f 72 20 61  ild output for a
4740: 6c 6c 20 74 68 65 20 66 69 6c 65 73 20 77 65 20  ll the files we 
4750: 61 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  are..           
4760: 20 52 45 4d 20 20 20 20 20 20 20 73 70 65 63 69   REM       speci
4770: 66 69 63 61 6c 6c 79 20 77 61 6e 74 69 6e 67 20  fically wanting 
4780: 74 6f 20 62 75 69 6c 64 20 66 6f 72 20 65 61 63  to build for eac
4790: 68 20 70 6c 61 74 66 6f 72 6d 2e 0d 0a 20 20 20  h platform...   
47a0: 20 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20           REM..  
47b0: 20 20 20 20 20 20 20 20 20 20 25 5f 41 45 43 48            %_AECH
47c0: 4f 25 20 43 6c 65 61 6e 69 6e 67 20 66 69 6e 61  O% Cleaning fina
47d0: 6c 20 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62  l shell executab
47e0: 6c 65 20 6f 75 74 70 75 74 20 66 69 6c 65 73 20  le output files 
47f0: 6f 6e 6c 79 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  only.....       
4800: 20 20 20 20 20 25 5f 5f 45 43 48 4f 25 20 44 45       %__ECHO% DE
4810: 4c 20 2f 51 20 73 71 6c 69 74 65 33 2e 65 78 65  L /Q sqlite3.exe
4820: 20 73 71 6c 69 74 65 33 73 68 2e 70 64 62 20 32   sqlite3sh.pdb 2
4830: 25 52 45 44 49 52 45 43 54 25 20 4e 55 4c 0d 0a  %REDIRECT% NUL..
4840: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 0d 0a 20            ).... 
4850: 20 20 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20           REM..  
4860: 20 20 20 20 20 20 20 20 52 45 4d 20 4e 4f 54 45          REM NOTE
4870: 3a 20 43 61 6c 6c 20 4e 4d 41 4b 45 20 77 69 74  : Call NMAKE wit
4880: 68 20 74 68 65 20 4d 53 56 43 20 6d 61 6b 65 66  h the MSVC makef
4890: 69 6c 65 20 74 6f 20 62 75 69 6c 64 20 74 68 65  ile to build the
48a0: 20 22 73 71 6c 69 74 65 33 2e 65 78 65 22 0d 0a   "sqlite3.exe"..
48b0: 20 20 20 20 20 20 20 20 20 20 52 45 4d 20 20 20            REM   
48c0: 20 20 20 20 62 69 6e 61 72 79 2e 20 20 54 68 65      binary.  The
48d0: 20 78 38 36 20 63 6f 6d 70 69 6c 65 72 20 77 69   x86 compiler wi
48e0: 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 63 6f  ll be used to co
48f0: 6d 70 69 6c 65 20 74 68 65 20 6e 61 74 69 76 65  mpile the native
4900: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 20  ..          REM 
4910: 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69        command li
4920: 6e 65 20 74 6f 6f 6c 73 20 6e 65 65 64 65 64 20  ne tools needed 
4930: 64 75 72 69 6e 67 20 74 68 65 20 62 75 69 6c 64  during the build
4940: 20 70 72 6f 63 65 73 73 20 69 74 73 65 6c 66 2e   process itself.
4950: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 20  ..          REM 
4960: 20 20 20 20 20 20 41 6c 73 6f 2c 20 64 69 73 61        Also, disa
4970: 62 6c 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20  ble looking for 
4980: 61 6e 64 2f 6f 72 20 6c 69 6e 6b 69 6e 67 20 74  and/or linking t
4990: 6f 20 74 68 65 20 6e 61 74 69 76 65 20 54 63 6c  o the native Tcl
49a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 20  ..          REM 
49b0: 20 20 20 20 20 20 72 75 6e 74 69 6d 65 20 6c 69        runtime li
49c0: 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20  brary...        
49d0: 20 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20    REM..         
49e0: 20 25 5f 5f 45 43 48 4f 25 20 25 4e 4d 41 4b 45   %__ECHO% %NMAKE
49f0: 5f 43 4d 44 25 20 73 71 6c 69 74 65 33 2e 65 78  _CMD% sqlite3.ex
4a00: 65 20 58 43 4f 4d 50 49 4c 45 3d 31 20 55 53 45  e XCOMPILE=1 USE
4a10: 5f 4e 41 54 49 56 45 5f 4c 49 42 50 41 54 48 53  _NATIVE_LIBPATHS
4a20: 3d 31 20 4e 4f 5f 54 43 4c 3d 31 20 25 4e 4d 41  =1 NO_TCL=1 %NMA
4a30: 4b 45 5f 41 52 47 53 25 0d 0a 0d 0a 20 20 20 20  KE_ARGS%....    
4a40: 20 20 20 20 20 20 49 46 20 45 52 52 4f 52 4c 45        IF ERRORLE
4a50: 56 45 4c 20 31 20 28 0d 0a 20 20 20 20 20 20 20  VEL 1 (..       
4a60: 20 20 20 20 20 45 43 48 4f 20 46 61 69 6c 65 64       ECHO Failed
4a70: 20 74 6f 20 62 75 69 6c 64 20 25 25 42 20 22 73   to build %%B "s
4a80: 71 6c 69 74 65 33 2e 65 78 65 22 20 66 6f 72 20  qlite3.exe" for 
4a90: 70 6c 61 74 66 6f 72 6d 20 25 25 50 2e 0d 0a 20  platform %%P... 
4aa0: 20 20 20 20 20 20 20 20 20 20 20 47 4f 54 4f 20             GOTO 
4ab0: 65 72 72 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  errors..        
4ac0: 20 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    )....         
4ad0: 20 52 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20   REM..          
4ae0: 52 45 4d 20 4e 4f 54 45 3a 20 43 6f 70 79 20 74  REM NOTE: Copy t
4af0: 68 65 20 22 73 71 6c 69 74 65 33 2e 65 78 65 22  he "sqlite3.exe"
4b00: 20 66 69 6c 65 20 74 6f 20 74 68 65 20 61 70 70   file to the app
4b10: 72 6f 70 72 69 61 74 65 20 64 69 72 65 63 74 6f  ropriate directo
4b20: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45  ry..          RE
4b30: 4d 20 20 20 20 20 20 20 66 6f 72 20 74 68 65 20  M       for the 
4b40: 62 75 69 6c 64 20 61 6e 64 20 70 6c 61 74 66 6f  build and platfo
4b50: 72 6d 20 62 65 6e 65 61 74 68 20 74 68 65 20 62  rm beneath the b
4b60: 69 6e 61 72 79 20 64 69 72 65 63 74 6f 72 79 2e  inary directory.
4b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 52 45 4d 0d  ..          REM.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 25 5f 5f 45 43  .          %__EC
4b90: 48 4f 25 20 58 43 4f 50 59 20 73 71 6c 69 74 65  HO% XCOPY sqlite
4ba0: 33 2e 65 78 65 20 22 25 42 49 4e 41 52 59 44 49  3.exe "%BINARYDI
4bb0: 52 45 43 54 4f 52 59 25 5c 25 25 42 5c 25 25 44  RECTORY%\%%B\%%D
4bc0: 5c 22 20 25 46 46 4c 41 47 53 25 20 25 44 46 4c  \" %FFLAGS% %DFL
4bd0: 41 47 53 25 0d 0a 0d 0a 20 20 20 20 20 20 20 20  AGS%....        
4be0: 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20    IF ERRORLEVEL 
4bf0: 31 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1 (..           
4c00: 20 45 43 48 4f 20 46 61 69 6c 65 64 20 74 6f 20   ECHO Failed to 
4c10: 63 6f 70 79 20 22 73 71 6c 69 74 65 33 2e 65 78  copy "sqlite3.ex
4c20: 65 22 20 74 6f 20 22 25 42 49 4e 41 52 59 44 49  e" to "%BINARYDI
4c30: 52 45 43 54 4f 52 59 25 5c 25 25 42 5c 25 25 44  RECTORY%\%%B\%%D
4c40: 5c 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  \"...           
4c50: 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20   GOTO errors..  
4c60: 20 20 20 20 20 20 20 20 29 0d 0a 0d 0a 20 20 20          )....   
4c70: 20 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20 20         REM..    
4c80: 20 20 20 20 20 20 52 45 4d 20 4e 4f 54 45 3a 20        REM NOTE: 
4c90: 43 6f 70 79 20 74 68 65 20 22 73 71 6c 69 74 65  Copy the "sqlite
4ca0: 33 73 68 2e 70 64 62 22 20 66 69 6c 65 20 74 6f  3sh.pdb" file to
4cb0: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
4cc0: 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   directory..    
4cd0: 20 20 20 20 20 20 52 45 4d 20 20 20 20 20 20 20        REM       
4ce0: 66 6f 72 20 74 68 65 20 62 75 69 6c 64 20 61 6e  for the build an
4cf0: 64 20 70 6c 61 74 66 6f 72 6d 20 62 65 6e 65 61  d platform benea
4d00: 74 68 20 74 68 65 20 62 69 6e 61 72 79 20 64 69  th the binary di
4d10: 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20  rectory..       
4d20: 20 20 20 52 45 4d 20 20 20 20 20 20 20 75 6e 6c     REM       unl
4d30: 65 73 73 20 77 65 20 61 72 65 20 70 72 65 76 65  ess we are preve
4d40: 6e 74 65 64 20 66 72 6f 6d 20 64 6f 69 6e 67 20  nted from doing 
4d50: 73 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 52  so...          R
4d60: 45 4d 0d 0a 20 20 20 20 20 20 20 20 20 20 49 46  EM..          IF
4d70: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4e 4f 53   NOT DEFINED NOS
4d80: 59 4d 42 4f 4c 53 20 28 0d 0a 20 20 20 20 20 20  YMBOLS (..      
4d90: 20 20 20 20 20 20 25 5f 5f 45 43 48 4f 25 20 58        %__ECHO% X
4da0: 43 4f 50 59 20 73 71 6c 69 74 65 33 73 68 2e 70  COPY sqlite3sh.p
4db0: 64 62 20 22 25 42 49 4e 41 52 59 44 49 52 45 43  db "%BINARYDIREC
4dc0: 54 4f 52 59 25 5c 25 25 42 5c 25 25 44 5c 22 20  TORY%\%%B\%%D\" 
4dd0: 25 46 46 4c 41 47 53 25 20 25 44 46 4c 41 47 53  %FFLAGS% %DFLAGS
4de0: 25 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  %....           
4df0: 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20 31   IF ERRORLEVEL 1
4e00: 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   (..            
4e10: 20 20 45 43 48 4f 20 46 61 69 6c 65 64 20 74 6f    ECHO Failed to
4e20: 20 63 6f 70 79 20 22 73 71 6c 69 74 65 33 73 68   copy "sqlite3sh
4e30: 2e 70 64 62 22 20 74 6f 20 22 25 42 49 4e 41 52  .pdb" to "%BINAR
4e40: 59 44 49 52 45 43 54 4f 52 59 25 5c 25 25 42 5c  YDIRECTORY%\%%B\
4e50: 25 25 44 5c 22 2e 0d 0a 20 20 20 20 20 20 20 20  %%D\"...        
4e60: 20 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72        GOTO error
4e70: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  s..            )
4e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20  ..          ).. 
4e90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4ea0: 29 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a 0d  )..    )..  )...
4eb0: 0a 20 20 52 45 4d 0d 0a 20 20 52 45 4d 20 4e 4f  .  REM..  REM NO
4ec0: 54 45 3a 20 48 61 6e 64 6c 65 20 61 6e 79 20 65  TE: Handle any e
4ed0: 72 72 6f 72 73 20 67 65 6e 65 72 61 74 65 64 20  rrors generated 
4ee0: 64 75 72 69 6e 67 20 74 68 65 20 6e 65 73 74 65  during the neste
4ef0: 64 20 63 6f 6d 6d 61 6e 64 20 73 68 65 6c 6c 2e  d command shell.
4f00: 0d 0a 20 20 52 45 4d 0d 0a 20 20 49 46 20 45 52  ..  REM..  IF ER
4f10: 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20  RORLEVEL 1 (..  
4f20: 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20    GOTO errors.. 
4f30: 20 29 0d 0a 29 0d 0a 0d 0a 52 45 4d 0d 0a 52 45   )..)....REM..RE
4f40: 4d 20 4e 4f 54 45 3a 20 52 65 73 74 6f 72 65 20  M NOTE: Restore 
4f50: 74 68 65 20 73 61 76 65 64 20 63 75 72 72 65 6e  the saved curren
4f60: 74 20 64 69 72 65 63 74 6f 72 79 20 66 72 6f 6d  t directory from
4f70: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 73   the directory s
4f80: 74 61 63 6b 2e 0d 0a 52 45 4d 0d 0a 25 5f 5f 45  tack...REM..%__E
4f90: 43 48 4f 32 25 20 50 4f 50 44 0d 0a 0d 0a 49 46  CHO2% POPD....IF
4fa0: 20 45 52 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d   ERRORLEVEL 1 (.
4fb0: 0a 20 20 45 43 48 4f 20 43 6f 75 6c 64 20 6e 6f  .  ECHO Could no
4fc0: 74 20 72 65 73 74 6f 72 65 20 64 69 72 65 63 74  t restore direct
4fd0: 6f 72 79 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72  ory...  GOTO err
4fe0: 6f 72 73 0d 0a 29 0d 0a 0d 0a 52 45 4d 0d 0a 52  ors..)....REM..R
4ff0: 45 4d 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 67  EM NOTE: If we g
5000: 65 74 20 74 6f 20 74 68 69 73 20 70 6f 69 6e 74  et to this point
5010: 2c 20 77 65 20 68 61 76 65 20 73 75 63 63 65 65  , we have succee
5020: 64 65 64 2e 0d 0a 52 45 4d 0d 0a 47 4f 54 4f 20  ded...REM..GOTO 
5030: 6e 6f 5f 65 72 72 6f 72 73 0d 0a 0d 0a 3a 66 6e  no_errors....:fn
5040: 5f 52 65 73 65 74 45 72 72 6f 72 4c 65 76 65 6c  _ResetErrorLevel
5050: 0d 0a 20 20 56 45 52 49 46 59 20 3e 20 4e 55 4c  ..  VERIFY > NUL
5060: 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d  ..  GOTO :EOF...
5070: 0a 3a 66 6e 5f 53 65 74 45 72 72 6f 72 4c 65 76  .:fn_SetErrorLev
5080: 65 6c 0d 0a 20 20 56 45 52 49 46 59 20 4d 41 59  el..  VERIFY MAY
5090: 42 45 20 32 3e 20 4e 55 4c 0d 0a 20 20 47 4f 54  BE 2> NUL..  GOT
50a0: 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 43 6f  O :EOF....:fn_Co
50b0: 70 79 56 61 72 69 61 62 6c 65 0d 0a 20 20 49 46  pyVariable..  IF
50c0: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 25 31 20   NOT DEFINED %1 
50d0: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20  GOTO :EOF..  IF 
50e0: 22 25 32 22 20 3d 3d 20 22 22 20 47 4f 54 4f 20  "%2" == "" GOTO 
50f0: 3a 45 4f 46 0d 0a 20 20 53 45 54 4c 4f 43 41 4c  :EOF..  SETLOCAL
5100: 0d 0a 20 20 53 45 54 20 5f 5f 45 43 48 4f 5f 43  ..  SET __ECHO_C
5110: 4d 44 3d 45 43 48 4f 20 25 25 25 31 25 25 0d 0a  MD=ECHO %%%1%%..
5120: 20 20 46 4f 52 20 2f 46 20 22 64 65 6c 69 6d 73    FOR /F "delims
5130: 3d 22 20 25 25 56 20 49 4e 20 28 27 25 5f 5f 45  =" %%V IN ('%__E
5140: 43 48 4f 5f 43 4d 44 25 27 29 20 44 4f 20 28 0d  CHO_CMD%') DO (.
5150: 0a 20 20 20 20 53 45 54 20 56 41 4c 55 45 3d 25  .    SET VALUE=%
5160: 25 56 0d 0a 20 20 29 0d 0a 20 20 45 4e 44 4c 4f  %V..  )..  ENDLO
5170: 43 41 4c 20 26 26 20 53 45 54 20 25 32 3d 25 56  CAL && SET %2=%V
5180: 41 4c 55 45 25 0d 0a 20 20 47 4f 54 4f 20 3a 45  ALUE%..  GOTO :E
5190: 4f 46 0d 0a 0d 0a 3a 66 6e 5f 55 6e 73 65 74 56  OF....:fn_UnsetV
51a0: 61 72 69 61 62 6c 65 0d 0a 20 20 49 46 20 4e 4f  ariable..  IF NO
51b0: 54 20 22 25 31 22 20 3d 3d 20 22 22 20 28 0d 0a  T "%1" == "" (..
51c0: 20 20 20 20 53 45 54 20 25 31 3d 0d 0a 20 20 20      SET %1=..   
51d0: 20 43 41 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45   CALL :fn_ResetE
51e0: 72 72 6f 72 4c 65 76 65 6c 0d 0a 20 20 29 0d 0a  rrorLevel..  )..
51f0: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a    GOTO :EOF....:
5200: 66 6e 5f 41 70 70 65 6e 64 56 61 72 69 61 62 6c  fn_AppendVariabl
5210: 65 0d 0a 20 20 53 45 54 20 5f 5f 45 43 48 4f 5f  e..  SET __ECHO_
5220: 43 4d 44 3d 45 43 48 4f 20 25 25 25 31 25 25 0d  CMD=ECHO %%%1%%.
5230: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 25 31  .  IF DEFINED %1
5240: 20 28 0d 0a 20 20 20 20 46 4f 52 20 2f 46 20 22   (..    FOR /F "
5250: 64 65 6c 69 6d 73 3d 22 20 25 25 56 20 49 4e 20  delims=" %%V IN 
5260: 28 27 25 5f 5f 45 43 48 4f 5f 43 4d 44 25 27 29  ('%__ECHO_CMD%')
5270: 20 44 4f 20 28 0d 0a 20 20 20 20 20 20 53 45 54   DO (..      SET
5280: 20 25 31 3d 25 25 56 25 7e 32 0d 0a 20 20 20 20   %1=%%V%~2..    
5290: 29 0d 0a 20 20 29 20 45 4c 53 45 20 28 0d 0a 20  )..  ) ELSE (.. 
52a0: 20 20 20 53 45 54 20 25 31 3d 25 7e 32 0d 0a 20     SET %1=%~2.. 
52b0: 20 29 0d 0a 20 20 53 45 54 20 5f 5f 45 43 48 4f   )..  SET __ECHO
52c0: 5f 43 4d 44 3d 0d 0a 20 20 43 41 4c 4c 20 3a 66  _CMD=..  CALL :f
52d0: 6e 5f 52 65 73 65 74 45 72 72 6f 72 4c 65 76 65  n_ResetErrorLeve
52e0: 6c 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  l..  GOTO :EOF..
52f0: 0d 0a 3a 75 73 61 67 65 0d 0a 20 20 45 43 48 4f  ..:usage..  ECHO
5300: 2e 0d 0a 20 20 45 43 48 4f 20 55 73 61 67 65 3a  ...  ECHO Usage:
5310: 20 25 7e 6e 78 30 20 5e 3c 62 69 6e 61 72 79 44   %~nx0 ^<binaryD
5320: 69 72 65 63 74 6f 72 79 5e 3e 0d 0a 20 20 45 43  irectory^>..  EC
5330: 48 4f 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72 6f  HO...  GOTO erro
5340: 72 73 0d 0a 0d 0a 3a 65 72 72 6f 72 73 0d 0a 20  rs....:errors.. 
5350: 20 43 41 4c 4c 20 3a 66 6e 5f 53 65 74 45 72 72   CALL :fn_SetErr
5360: 6f 72 4c 65 76 65 6c 0d 0a 20 20 45 4e 44 4c 4f  orLevel..  ENDLO
5370: 43 41 4c 0d 0a 20 20 45 43 48 4f 2e 0d 0a 20 20  CAL..  ECHO...  
5380: 45 43 48 4f 20 46 61 69 6c 75 72 65 2c 20 65 72  ECHO Failure, er
5390: 72 6f 72 73 20 77 65 72 65 20 65 6e 63 6f 75 6e  rors were encoun
53a0: 74 65 72 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 65  tered...  GOTO e
53b0: 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 0d 0a 3a 6e  nd_of_file....:n
53c0: 6f 5f 65 72 72 6f 72 73 0d 0a 20 20 43 41 4c 4c  o_errors..  CALL
53d0: 20 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f 72 4c   :fn_ResetErrorL
53e0: 65 76 65 6c 0d 0a 20 20 45 4e 44 4c 4f 43 41 4c  evel..  ENDLOCAL
53f0: 0d 0a 20 20 45 43 48 4f 2e 0d 0a 20 20 45 43 48  ..  ECHO...  ECH
5400: 4f 20 53 75 63 63 65 73 73 2c 20 6e 6f 20 65 72  O Success, no er
5410: 72 6f 72 73 20 77 65 72 65 20 65 6e 63 6f 75 6e  rors were encoun
5420: 74 65 72 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 65  tered...  GOTO e
5430: 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 0d 0a 3a 65  nd_of_file....:e
5440: 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 25 5f 5f 45  nd_of_file..%__E
5450: 43 48 4f 25 20 45 58 49 54 20 2f 42 20 25 45 52  CHO% EXIT /B %ER
5460: 52 4f 52 4c 45 56 45 4c 25 0d 0a                 RORLEVEL%..