/ Hex Artifact Content
Login

Artifact 06d289d8255794073a58d2850742f627924545ce:


0000: 0a 73 65 74 20 72 63 73 69 64 20 7b 24 49 64 3a  .set rcsid {$Id:
0010: 20 24 7d 0a 0a 23 20 44 6f 63 75 6d 65 6e 74 61   $}..# Documenta
0020: 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 73 63  tion for this sc
0030: 72 69 70 74 2e 20 54 68 69 73 20 6d 61 79 20 62  ript. This may b
0040: 65 20 6f 75 74 70 75 74 20 74 6f 20 73 74 64 65  e output to stde
0050: 72 72 0a 23 20 69 66 20 74 68 65 20 73 63 72 69  rr.# if the scri
0060: 70 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 69 6e  pt is invoked in
0070: 63 6f 72 72 65 63 74 6c 79 2e 20 53 65 65 20 74  correctly. See t
0080: 68 65 20 5b 70 72 6f 63 65 73 73 5f 6f 70 74 69  he [process_opti
0090: 6f 6e 73 5d 0a 23 20 70 72 6f 63 20 62 65 6c 6f  ons].# proc belo
00a0: 77 2e 0a 23 0a 73 65 74 20 3a 3a 55 53 41 47 45  w..#.set ::USAGE
00b0: 5f 4d 45 53 53 41 47 45 20 7b 0a 54 68 69 73 20  _MESSAGE {.This 
00c0: 54 63 6c 20 73 63 72 69 70 74 20 69 73 20 75 73  Tcl script is us
00d0: 65 64 20 74 6f 20 74 65 73 74 20 74 68 65 20 76  ed to test the v
00e0: 61 72 69 6f 75 73 20 63 6f 6e 66 69 67 75 72 61  arious configura
00f0: 74 69 6f 6e 73 20 72 65 71 75 69 72 65 64 0a 62  tions required.b
0100: 65 66 6f 72 65 20 72 65 6c 65 61 73 69 6e 67 20  efore releasing 
0110: 61 20 6e 65 77 20 76 65 72 73 69 6f 6e 2e 20 53  a new version. S
0120: 75 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64  upported command
0130: 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 20 28 61   line options (a
0140: 6c 6c 20 0a 6f 70 74 69 6f 6e 61 6c 29 20 61 72  ll .optional) ar
0150: 65 3a 0a 0a 20 20 20 20 2d 6d 61 6b 65 66 69 6c  e:..    -makefil
0160: 65 20 50 41 54 48 2d 54 4f 2d 4d 41 4b 45 46 49  e PATH-TO-MAKEFI
0170: 4c 45 20 20 20 20 20 20 20 20 20 20 20 28 64 65  LE           (de
0180: 66 61 75 6c 74 20 22 72 65 6c 65 61 73 65 74 65  fault "releasete
0190: 73 74 2e 6d 6b 22 29 0a 20 20 20 20 2d 70 6c 61  st.mk").    -pla
01a0: 74 66 6f 72 6d 20 50 4c 41 54 46 4f 52 4d 20 20  tform PLATFORM  
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01c0: 20 28 73 65 65 20 62 65 6c 6f 77 29 0a 20 20 20   (see below).   
01d0: 20 2d 71 75 69 63 6b 20 20 20 20 42 4f 4f 4c 45   -quick    BOOLE
01e0: 41 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AN              
01f0: 20 20 20 20 20 20 28 64 65 66 61 75 6c 74 20 22        (default "
0200: 30 22 29 0a 0a 54 68 65 20 64 65 66 61 75 6c 74  0")..The default
0210: 20 76 61 6c 75 65 20 66 6f 72 20 2d 6d 61 6b 65   value for -make
0220: 66 69 6c 65 20 69 73 20 22 2e 2f 72 65 6c 65 61  file is "./relea
0230: 73 65 74 65 73 74 2e 6d 6b 22 2e 0a 0a 54 68 65  setest.mk"...The
0240: 20 73 63 72 69 70 74 20 64 65 74 65 72 6d 69 6e   script determin
0250: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  es the default v
0260: 61 6c 75 65 20 66 6f 72 20 2d 70 6c 61 74 66 6f  alue for -platfo
0270: 72 6d 20 75 73 69 6e 67 20 74 68 65 0a 24 74 63  rm using the.$tc
0280: 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 29 20 61  l_platform(os) a
0290: 6e 64 20 24 74 63 6c 5f 70 6c 61 74 66 6f 72 6d  nd $tcl_platform
02a0: 28 6d 61 63 68 69 6e 65 29 20 76 61 72 69 61 62  (machine) variab
02b0: 6c 65 73 2e 20 53 75 70 70 6f 72 74 65 64 20 0a  les. Supported .
02c0: 70 6c 61 74 66 6f 72 6d 73 20 61 72 65 20 22 4c  platforms are "L
02d0: 69 6e 75 78 2d 78 38 36 22 2c 20 22 4c 69 6e 75  inux-x86", "Linu
02e0: 78 2d 78 38 36 5f 36 34 22 20 61 6e 64 20 22 44  x-x86_64" and "D
02f0: 61 72 77 69 6e 2d 69 33 38 36 22 2e 0a 0a 49 66  arwin-i386"...If
0300: 20 74 68 65 20 2d 71 75 69 63 6b 20 6f 70 74 69   the -quick opti
0310: 6f 6e 20 69 73 20 73 65 74 20 74 6f 20 74 72 75  on is set to tru
0320: 65 2c 20 74 68 65 6e 20 74 68 65 20 22 76 65 72  e, then the "ver
0330: 79 71 75 69 63 6b 2e 74 65 73 74 22 20 73 63 72  yquick.test" scr
0340: 69 70 74 0a 69 73 20 72 75 6e 20 66 6f 72 20 61  ipt.is run for a
0350: 6c 6c 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 63  ll compilation c
0360: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73 2e 20 4f  onfigurations. O
0370: 74 68 65 72 77 69 73 65 2c 20 73 6f 6d 65 74 69  therwise, someti
0380: 6d 65 73 20 22 61 6c 6c 2e 74 65 73 74 22 0a 69  mes "all.test".i
0390: 73 20 72 75 6e 2c 20 73 6f 6d 65 74 69 6d 65 73  s run, sometimes
03a0: 20 22 76 65 72 79 71 75 69 63 6b 2e 74 65 73 74   "veryquick.test
03b0: 22 2e 0a 0a 41 6c 6d 6f 73 74 20 61 6e 79 20 53  "...Almost any S
03c0: 51 4c 69 74 65 20 6d 61 6b 65 66 69 6c 65 20 28  QLite makefile (
03d0: 65 78 63 65 70 74 20 74 68 6f 73 65 20 67 65 6e  except those gen
03e0: 65 72 61 74 65 64 20 62 79 20 63 6f 6e 66 69 67  erated by config
03f0: 75 72 65 20 2d 20 73 65 65 20 62 65 6c 6f 77 29  ure - see below)
0400: 0a 73 68 6f 75 6c 64 20 77 6f 72 6b 2e 20 54 68  .should work. Th
0410: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 70  e following prop
0420: 65 72 74 69 65 73 20 61 72 65 20 72 65 71 75 69  erties are requi
0430: 72 65 64 3a 0a 0a 20 20 2a 20 54 68 65 20 6d 61  red:..  * The ma
0440: 6b 65 66 69 6c 65 20 73 68 6f 75 6c 64 20 73 75  kefile should su
0450: 70 70 6f 72 74 20 74 68 65 20 22 66 75 6c 6c 74  pport the "fullt
0460: 65 73 74 22 20 74 61 72 67 65 74 2e 0a 20 20 2a  est" target..  *
0470: 20 54 68 65 20 6d 61 6b 65 66 69 6c 65 20 73 68   The makefile sh
0480: 6f 75 6c 64 20 73 75 70 70 6f 72 74 20 74 68 65  ould support the
0490: 20 76 61 72 69 61 62 6c 65 20 22 4f 50 54 53 22   variable "OPTS"
04a0: 20 61 73 20 61 20 77 61 79 20 74 6f 20 70 61 73   as a way to pas
04b0: 73 0a 20 20 20 20 6f 70 74 69 6f 6e 73 20 66 72  s.    options fr
04c0: 6f 6d 20 74 68 65 20 6d 61 6b 65 20 63 6f 6d 6d  om the make comm
04d0: 61 6e 64 20 6c 69 6e 65 20 74 6f 20 6c 65 6d 6f  and line to lemo
04e0: 6e 20 61 6e 64 20 74 68 65 20 43 20 63 6f 6d 70  n and the C comp
04f0: 69 6c 65 72 2e 0a 0a 4d 6f 72 65 20 70 72 65 63  iler...More prec
0500: 69 73 65 6c 79 2c 20 74 68 65 20 66 6f 6c 6c 6f  isely, the follo
0510: 77 69 6e 67 20 69 6e 76 6f 63 61 74 69 6f 6e 20  wing invocation 
0520: 6d 75 73 74 20 62 65 20 73 75 70 70 6f 72 74 65  must be supporte
0530: 64 3a 0a 0a 20 20 6d 61 6b 65 20 2d 66 20 24 3a  d:..  make -f $:
0540: 3a 4d 41 4b 45 46 49 4c 45 20 66 75 6c 6c 74 65  :MAKEFILE fullte
0550: 73 74 20 4f 50 54 53 3d 22 2d 44 53 51 4c 49 54  st OPTS="-DSQLIT
0560: 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45 3d  E_SECURE_DELETE=
0570: 31 20 2d 44 53 51 4c 49 54 45 5f 44 45 42 55 47  1 -DSQLITE_DEBUG
0580: 3d 31 22 0a 0a 4d 61 6b 65 66 69 6c 65 73 20 67  =1"..Makefiles g
0590: 65 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20  enerated by the 
05a0: 73 71 6c 69 74 65 20 63 6f 6e 66 69 67 75 72 65  sqlite configure
05b0: 20 70 72 6f 67 72 61 6d 20 63 61 6e 6e 6f 74 20   program cannot 
05c0: 62 65 20 75 73 65 64 20 61 73 0a 74 68 65 79 20  be used as.they 
05d0: 64 6f 20 6e 6f 74 20 72 65 73 70 65 63 74 20 74  do not respect t
05e0: 68 65 20 4f 50 54 53 20 76 61 72 69 61 62 6c 65  he OPTS variable
05f0: 2e 0a 0a 45 78 61 6d 70 6c 65 20 4d 61 6b 65 66  ...Example Makef
0600: 69 6c 65 20 63 6f 6e 74 65 6e 74 73 3a 0a 0a 20  ile contents:.. 
0610: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
0620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0640: 23 23 23 23 23 23 23 23 23 0a 20 20 54 4f 50 3d  #########.  TOP=
0650: 2f 68 6f 6d 65 2f 64 61 6e 2f 77 6f 72 6b 2f 73  /home/dan/work/s
0660: 71 6c 69 74 65 2f 73 71 6c 69 74 65 0a 0a 20 20  qlite/sqlite..  
0670: 54 43 4c 5f 46 4c 41 47 53 3d 2d 49 2f 68 6f 6d  TCL_FLAGS=-I/hom
0680: 65 2f 64 61 6e 2f 74 63 6c 2f 69 6e 63 6c 75 64  e/dan/tcl/includ
0690: 65 0a 20 20 4c 49 42 54 43 4c 3d 2d 4c 2f 68 6f  e.  LIBTCL=-L/ho
06a0: 6d 65 2f 64 61 6e 2f 74 63 6c 2f 6c 69 62 20 2d  me/dan/tcl/lib -
06b0: 6c 74 63 6c 0a 0a 20 20 42 43 43 20 3d 20 67 63  ltcl..  BCC = gc
06c0: 63 0a 20 20 54 43 43 20 3d 20 67 63 63 20 2d 61  c.  TCC = gcc -a
06d0: 6e 73 69 20 2d 67 20 24 28 43 46 4c 41 47 53 29  nsi -g $(CFLAGS)
06e0: 0a 20 20 4e 41 57 4b 20 20 20 3d 20 61 77 6b 0a  .  NAWK   = awk.
06f0: 20 20 41 52 20 20 20 20 20 3d 20 61 72 20 63 72    AR     = ar cr
0700: 0a 20 20 52 41 4e 4c 49 42 20 3d 20 72 61 6e 6c  .  RANLIB = ranl
0710: 69 62 0a 20 20 54 48 52 45 41 44 4c 49 42 20 3d  ib.  THREADLIB =
0720: 20 2d 6c 70 74 68 72 65 61 64 20 2d 6c 64 6c 0a   -lpthread -ldl.
0730: 20 20 69 6e 63 6c 75 64 65 20 24 28 54 4f 50 29    include $(TOP)
0740: 2f 6d 61 69 6e 2e 6d 6b 0a 20 20 23 23 23 23 23  /main.mk.  #####
0750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0780: 23 23 23 0a 7d 0a 0a 61 72 72 61 79 20 73 65 74  ###.}..array set
0790: 20 3a 3a 43 6f 6e 66 69 67 73 20 7b 0a 20 20 22   ::Configs {.  "
07a0: 44 65 66 61 75 6c 74 22 20 7b 0a 20 20 20 20 2d  Default" {.    -
07b0: 4f 32 0a 20 20 7d 0a 20 20 22 46 74 72 61 70 76  O2.  }.  "Ftrapv
07c0: 22 20 7b 0a 20 20 20 20 2d 4f 32 20 2d 66 74 72  " {.    -O2 -ftr
07d0: 61 70 76 0a 20 20 20 20 2d 44 53 51 4c 49 54 45  apv.    -DSQLITE
07e0: 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 3d 35 35  _MAX_ATTACHED=55
07f0: 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 43  .    -DSQLITE_TC
0800: 4c 5f 44 45 46 41 55 4c 54 5f 46 55 4c 4c 4d 55  L_DEFAULT_FULLMU
0810: 54 45 58 3d 31 0a 20 20 7d 0a 20 20 22 55 6e 6c  TEX=1.  }.  "Unl
0820: 6f 63 6b 2d 4e 6f 74 69 66 79 22 20 7b 0a 20 20  ock-Notify" {.  
0830: 20 20 2d 4f 32 0a 20 20 20 20 2d 44 53 51 4c 49    -O2.    -DSQLI
0840: 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b  TE_ENABLE_UNLOCK
0850: 5f 4e 4f 54 49 46 59 0a 20 20 20 20 2d 44 53 51  _NOTIFY.    -DSQ
0860: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 0a  LITE_THREADSAFE.
0870: 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 43 4c      -DSQLITE_TCL
0880: 5f 44 45 46 41 55 4c 54 5f 46 55 4c 4c 4d 55 54  _DEFAULT_FULLMUT
0890: 45 58 3d 31 0a 20 20 7d 0a 20 20 22 53 65 63 75  EX=1.  }.  "Secu
08a0: 72 65 2d 44 65 6c 65 74 65 22 20 7b 0a 20 20 20  re-Delete" {.   
08b0: 20 2d 4f 32 0a 20 20 20 20 2d 44 53 51 4c 49 54   -O2.    -DSQLIT
08c0: 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45 3d  E_SECURE_DELETE=
08d0: 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 53  1.    -DSQLITE_S
08e0: 4f 55 4e 44 45 58 3d 31 0a 20 20 7d 0a 20 20 22  OUNDEX=1.  }.  "
08f0: 55 70 64 61 74 65 2d 44 65 6c 65 74 65 2d 4c 69  Update-Delete-Li
0900: 6d 69 74 22 20 7b 0a 20 20 20 20 2d 4f 32 0a 20  mit" {.    -O2. 
0910: 20 20 20 2d 44 53 51 4c 49 54 45 5f 44 45 46 41     -DSQLITE_DEFA
0920: 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 3d  ULT_FILE_FORMAT=
0930: 34 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45  4.    -DSQLITE_E
0940: 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c  NABLE_UPDATE_DEL
0950: 45 54 45 5f 4c 49 4d 49 54 3d 31 0a 20 20 7d 0a  ETE_LIMIT=1.  }.
0960: 20 20 22 43 68 65 63 6b 2d 53 79 6d 62 6f 6c 73    "Check-Symbols
0970: 22 20 7b 0a 20 20 20 20 2d 44 53 51 4c 49 54 45  " {.    -DSQLITE
0980: 5f 4d 45 4d 44 45 42 55 47 3d 31 0a 20 20 20 20  _MEMDEBUG=1.    
0990: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
09a0: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
09b0: 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  =1.    -DSQLITE_
09c0: 45 4e 41 42 4c 45 5f 46 54 53 33 3d 31 0a 20 20  ENABLE_FTS3=1.  
09d0: 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c    -DSQLITE_ENABL
09e0: 45 5f 52 54 52 45 45 3d 31 0a 20 20 20 20 2d 44  E_RTREE=1.    -D
09f0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
0a00: 4d 53 59 53 35 3d 31 0a 20 20 20 20 2d 44 53 51  MSYS5=1.    -DSQ
0a10: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
0a20: 59 53 33 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49  YS3=1.    -DSQLI
0a30: 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e  TE_ENABLE_COLUMN
0a40: 5f 4d 45 54 41 44 41 54 41 3d 31 0a 20 20 20 20  _METADATA=1.    
0a50: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
0a60: 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49  UPDATE_DELETE_LI
0a70: 4d 49 54 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49  MIT=1.    -DSQLI
0a80: 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45  TE_SECURE_DELETE
0a90: 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  =1.    -DSQLITE_
0aa0: 53 4f 55 4e 44 45 58 3d 31 0a 20 20 20 20 2d 44  SOUNDEX=1.    -D
0ab0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 41 54  SQLITE_ENABLE_AT
0ac0: 4f 4d 49 43 5f 57 52 49 54 45 3d 31 0a 20 20 20  OMIC_WRITE=1.   
0ad0: 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45   -DSQLITE_ENABLE
0ae0: 5f 49 4f 54 52 41 43 45 3d 31 0a 20 20 20 20 2d  _IOTRACE=1.    -
0af0: 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  DSQLITE_ENABLE_M
0b00: 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54  EMORY_MANAGEMENT
0b10: 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  =1.    -DSQLITE_
0b20: 45 4e 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45 5f  ENABLE_OVERSIZE_
0b30: 43 45 4c 4c 5f 43 48 45 43 4b 3d 31 0a 20 20 7d  CELL_CHECK=1.  }
0b40: 0a 20 20 22 44 65 62 75 67 2d 4f 6e 65 22 20 7b  .  "Debug-One" {
0b50: 0a 20 20 20 20 2d 4f 32 0a 20 20 20 20 2d 44 53  .    -O2.    -DS
0b60: 51 4c 49 54 45 5f 44 45 42 55 47 3d 31 0a 20 20  QLITE_DEBUG=1.  
0b70: 20 20 2d 44 53 51 4c 49 54 45 5f 4d 45 4d 44 45    -DSQLITE_MEMDE
0b80: 42 55 47 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49  BUG=1.    -DSQLI
0b90: 54 45 5f 4d 55 54 45 58 5f 4e 4f 4f 50 3d 31 0a  TE_MUTEX_NOOP=1.
0ba0: 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 43 4c      -DSQLITE_TCL
0bb0: 5f 44 45 46 41 55 4c 54 5f 46 55 4c 4c 4d 55 54  _DEFAULT_FULLMUT
0bc0: 45 58 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54  EX=1.    -DSQLIT
0bd0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 3d 31 0a  E_ENABLE_FTS3=1.
0be0: 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41      -DSQLITE_ENA
0bf0: 42 4c 45 5f 52 54 52 45 45 3d 31 0a 20 20 20 20  BLE_RTREE=1.    
0c00: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
0c10: 4d 45 4d 53 59 53 35 3d 31 0a 20 20 20 20 2d 44  MEMSYS5=1.    -D
0c20: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
0c30: 4d 53 59 53 33 3d 31 0a 20 20 20 20 2d 44 53 51  MSYS3=1.    -DSQ
0c40: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55  LITE_ENABLE_COLU
0c50: 4d 4e 5f 4d 45 54 41 44 41 54 41 3d 31 0a 20 20  MN_METADATA=1.  
0c60: 7d 0a 20 20 22 44 65 76 69 63 65 2d 4f 6e 65 22  }.  "Device-One"
0c70: 20 7b 0a 20 20 20 20 2d 4f 32 0a 20 20 20 20 2d   {.    -O2.    -
0c80: 44 53 51 4c 49 54 45 5f 44 45 42 55 47 3d 31 0a  DSQLITE_DEBUG=1.
0c90: 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 44 45 46      -DSQLITE_DEF
0ca0: 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d  AULT_AUTOVACUUM=
0cb0: 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 44  1.    -DSQLITE_D
0cc0: 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a  EFAULT_CACHE_SIZ
0cd0: 45 3d 36 34 0a 20 20 20 20 2d 44 53 51 4c 49 54  E=64.    -DSQLIT
0ce0: 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53  E_DEFAULT_PAGE_S
0cf0: 49 5a 45 3d 31 30 32 34 0a 20 20 20 20 2d 44 53  IZE=1024.    -DS
0d00: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 54 45  QLITE_DEFAULT_TE
0d10: 4d 50 5f 43 41 43 48 45 5f 53 49 5a 45 3d 33 32  MP_CACHE_SIZE=32
0d20: 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 44 49  .    -DSQLITE_DI
0d30: 53 41 42 4c 45 5f 4c 46 53 3d 31 0a 20 20 20 20  SABLE_LFS=1.    
0d40: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
0d50: 41 54 4f 4d 49 43 5f 57 52 49 54 45 3d 31 0a 20  ATOMIC_WRITE=1. 
0d60: 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42     -DSQLITE_ENAB
0d70: 4c 45 5f 49 4f 54 52 41 43 45 3d 31 0a 20 20 20  LE_IOTRACE=1.   
0d80: 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45   -DSQLITE_ENABLE
0d90: 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45  _MEMORY_MANAGEME
0da0: 4e 54 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54  NT=1.    -DSQLIT
0db0: 45 5f 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 3d  E_MAX_PAGE_SIZE=
0dc0: 34 30 39 36 0a 20 20 20 20 2d 44 53 51 4c 49 54  4096.    -DSQLIT
0dd0: 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45  E_OMIT_LOAD_EXTE
0de0: 4e 53 49 4f 4e 3d 31 0a 20 20 20 20 2d 44 53 51  NSION=1.    -DSQ
0df0: 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45  LITE_OMIT_PROGRE
0e00: 53 53 5f 43 41 4c 4c 42 41 43 4b 3d 31 0a 20 20  SS_CALLBACK=1.  
0e10: 20 20 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f    -DSQLITE_OMIT_
0e20: 56 49 52 54 55 41 4c 54 41 42 4c 45 3d 31 0a 20  VIRTUALTABLE=1. 
0e30: 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 45 4d 50     -DSQLITE_TEMP
0e40: 5f 53 54 4f 52 45 3d 33 0a 20 20 7d 0a 20 20 22  _STORE=3.  }.  "
0e50: 44 65 76 69 63 65 2d 54 77 6f 22 20 7b 0a 20 20  Device-Two" {.  
0e60: 20 20 2d 44 53 51 4c 49 54 45 5f 34 5f 42 59 54    -DSQLITE_4_BYT
0e70: 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43  E_ALIGNED_MALLOC
0e80: 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  =1.    -DSQLITE_
0e90: 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55  DEFAULT_AUTOVACU
0ea0: 55 4d 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54  UM=1.    -DSQLIT
0eb0: 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f  E_DEFAULT_CACHE_
0ec0: 53 49 5a 45 3d 31 30 30 30 0a 20 20 20 20 2d 44  SIZE=1000.    -D
0ed0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c  SQLITE_DEFAULT_L
0ee0: 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 30 0a 20 20  OCKING_MODE=0.  
0ef0: 20 20 2d 44 53 51 4c 49 54 45 5f 44 45 46 41 55    -DSQLITE_DEFAU
0f00: 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 31 30 32  LT_PAGE_SIZE=102
0f10: 34 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 44  4.    -DSQLITE_D
0f20: 45 46 41 55 4c 54 5f 54 45 4d 50 5f 43 41 43 48  EFAULT_TEMP_CACH
0f30: 45 5f 53 49 5a 45 3d 31 30 30 30 0a 20 20 20 20  E_SIZE=1000.    
0f40: 2d 44 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  -DSQLITE_DISABLE
0f50: 5f 4c 46 53 3d 31 0a 20 20 20 20 2d 44 53 51 4c  _LFS=1.    -DSQL
0f60: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 3d  ITE_ENABLE_FTS3=
0f70: 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45  1.    -DSQLITE_E
0f80: 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e  NABLE_MEMORY_MAN
0f90: 41 47 45 4d 45 4e 54 3d 31 0a 20 20 20 20 2d 44  AGEMENT=1.    -D
0fa0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54  SQLITE_ENABLE_RT
0fb0: 52 45 45 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49  REE=1.    -DSQLI
0fc0: 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f  TE_MAX_COMPOUND_
0fd0: 53 45 4c 45 43 54 3d 35 30 0a 20 20 20 20 2d 44  SELECT=50.    -D
0fe0: 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f  SQLITE_MAX_PAGE_
0ff0: 53 49 5a 45 3d 33 32 37 36 38 0a 20 20 20 20 2d  SIZE=32768.    -
1000: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41  DSQLITE_OMIT_TRA
1010: 43 45 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54  CE=1.    -DSQLIT
1020: 45 5f 54 45 4d 50 5f 53 54 4f 52 45 3d 33 0a 20  E_TEMP_STORE=3. 
1030: 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 48 52 45     -DSQLITE_THRE
1040: 41 44 53 41 46 45 3d 32 0a 20 20 7d 0a 20 20 22  ADSAFE=2.  }.  "
1050: 4c 6f 63 6b 69 6e 67 2d 53 74 79 6c 65 22 20 7b  Locking-Style" {
1060: 0a 20 20 20 20 2d 4f 32 0a 20 20 20 20 2d 44 53  .    -O2.    -DS
1070: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
1080: 4b 49 4e 47 5f 53 54 59 4c 45 3d 31 0a 20 20 7d  KING_STYLE=1.  }
1090: 0a 20 20 22 4f 53 2d 58 22 20 7b 0a 20 20 20 20  .  "OS-X" {.    
10a0: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f  -DSQLITE_OMIT_LO
10b0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 3d 31 0a 20  AD_EXTENSION=1. 
10c0: 20 20 20 2d 44 53 51 4c 49 54 45 5f 44 45 46 41     -DSQLITE_DEFA
10d0: 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 3d 30 0a  ULT_MEMSTATUS=0.
10e0: 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 54 48 52      -DSQLITE_THR
10f0: 45 41 44 53 41 46 45 3d 32 0a 20 20 20 20 2d 44  EADSAFE=2.    -D
1100: 53 51 4c 49 54 45 5f 4f 53 5f 55 4e 49 58 3d 31  SQLITE_OS_UNIX=1
1110: 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e  .    -DSQLITE_EN
1120: 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59  ABLE_LOCKING_STY
1130: 4c 45 3d 31 0a 20 20 20 20 2d 44 55 53 45 5f 50  LE=1.    -DUSE_P
1140: 52 45 41 44 3d 31 0a 20 20 20 20 2d 44 53 51 4c  READ=1.    -DSQL
1150: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
1160: 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  =1.    -DSQLITE_
1170: 45 4e 41 42 4c 45 5f 46 54 53 33 3d 31 0a 20 20  ENABLE_FTS3=1.  
1180: 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c    -DSQLITE_ENABL
1190: 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53  E_FTS3_PARENTHES
11a0: 49 53 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54  IS=1.    -DSQLIT
11b0: 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f  E_DEFAULT_CACHE_
11c0: 53 49 5a 45 3d 31 30 30 30 0a 20 20 20 20 2d 44  SIZE=1000.    -D
11d0: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54  SQLITE_MAX_LENGT
11e0: 48 3d 32 31 34 37 34 38 33 36 34 35 0a 20 20 20  H=2147483645.   
11f0: 20 2d 44 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41   -DSQLITE_MAX_VA
1200: 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 3d 35 30  RIABLE_NUMBER=50
1210: 30 30 30 30 0a 20 20 20 20 2d 44 53 51 4c 49 54  0000.    -DSQLIT
1220: 45 5f 44 45 42 55 47 3d 31 20 0a 20 20 20 20 2d  E_DEBUG=1 .    -
1230: 44 53 51 4c 49 54 45 5f 50 52 45 46 45 52 5f 50  DSQLITE_PREFER_P
1240: 52 4f 58 59 5f 4c 4f 43 4b 49 4e 47 3d 31 0a 20  ROXY_LOCKING=1. 
1250: 20 7d 0a 20 20 22 45 78 74 72 61 2d 52 6f 62 75   }.  "Extra-Robu
1260: 73 74 6e 65 73 73 22 20 7b 0a 20 20 20 20 2d 44  stness" {.    -D
1270: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4f 56  SQLITE_ENABLE_OV
1280: 45 52 53 49 5a 45 5f 43 45 4c 4c 5f 43 48 45 43  ERSIZE_CELL_CHEC
1290: 4b 3d 31 0a 20 20 20 20 2d 44 53 51 4c 49 54 45  K=1.    -DSQLITE
12a0: 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 3d 36 32  _MAX_ATTACHED=62
12b0: 0a 20 20 7d 0a 20 20 22 44 65 76 6b 69 74 22 20  .  }.  "Devkit" 
12c0: 7b 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 44  {.    -DSQLITE_D
12d0: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d  EFAULT_FILE_FORM
12e0: 41 54 3d 34 0a 20 20 20 20 2d 44 53 51 4c 49 54  AT=4.    -DSQLIT
12f0: 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 3d 33  E_MAX_ATTACHED=3
1300: 30 0a 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45  0.    -DSQLITE_E
1310: 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54  NABLE_COLUMN_MET
1320: 41 44 41 54 41 0a 20 20 20 20 2d 44 53 51 4c 49  ADATA.    -DSQLI
1330: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 0a 20  TE_ENABLE_FTS4. 
1340: 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42     -DSQLITE_ENAB
1350: 4c 45 5f 46 54 53 34 5f 50 41 52 45 4e 54 48 45  LE_FTS4_PARENTHE
1360: 53 49 53 0a 20 20 20 20 2d 44 53 51 4c 49 54 45  SIS.    -DSQLITE
1370: 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f 44 45  _DISABLE_FTS4_DE
1380: 46 45 52 52 45 44 0a 20 20 20 20 2d 44 53 51 4c  FERRED.    -DSQL
1390: 49 54 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45  ITE_ENABLE_RTREE
13a0: 0a 20 20 7d 0a 7d 0a 0a 61 72 72 61 79 20 73 65  .  }.}..array se
13b0: 74 20 3a 3a 50 6c 61 74 66 6f 72 6d 73 20 7b 0a  t ::Platforms {.
13c0: 20 20 4c 69 6e 75 78 2d 78 38 36 5f 36 34 20 7b    Linux-x86_64 {
13d0: 0a 20 20 20 20 22 43 68 65 63 6b 2d 53 79 6d 62  .    "Check-Symb
13e0: 6f 6c 73 22 20 20 20 20 20 20 20 20 20 20 20 63  ols"           c
13f0: 68 65 63 6b 73 79 6d 62 6f 6c 73 0a 20 20 20 20  hecksymbols.    
1400: 22 44 65 62 75 67 2d 4f 6e 65 22 20 20 20 20 20  "Debug-One"     
1410: 20 20 20 20 20 20 20 20 20 20 74 65 73 74 0a 20            test. 
1420: 20 20 20 22 53 65 63 75 72 65 2d 44 65 6c 65 74     "Secure-Delet
1430: 65 22 20 20 20 20 20 20 20 20 20 20 20 74 65 73  e"           tes
1440: 74 0a 20 20 20 20 22 55 6e 6c 6f 63 6b 2d 4e 6f  t.    "Unlock-No
1450: 74 69 66 79 22 20 20 20 20 20 20 20 20 20 20 20  tify"           
1460: 22 51 55 49 43 4b 54 45 53 54 5f 49 4e 43 4c 55  "QUICKTEST_INCLU
1470: 44 45 3d 6e 6f 74 69 66 79 32 2e 74 65 73 74 20  DE=notify2.test 
1480: 74 65 73 74 22 0a 20 20 20 20 22 55 70 64 61 74  test".    "Updat
1490: 65 2d 44 65 6c 65 74 65 2d 4c 69 6d 69 74 22 20  e-Delete-Limit" 
14a0: 20 20 20 20 74 65 73 74 0a 20 20 20 20 22 45 78      test.    "Ex
14b0: 74 72 61 2d 52 6f 62 75 73 74 6e 65 73 73 22 20  tra-Robustness" 
14c0: 20 20 20 20 20 20 20 74 65 73 74 0a 20 20 20 20         test.    
14d0: 22 44 65 76 69 63 65 2d 54 77 6f 22 20 20 20 20  "Device-Two"    
14e0: 20 20 20 20 20 20 20 20 20 20 74 65 73 74 0a 20            test. 
14f0: 20 20 20 22 46 74 72 61 70 76 22 20 20 20 20 20     "Ftrapv"     
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73               tes
1510: 74 0a 20 20 20 20 22 44 65 66 61 75 6c 74 22 20  t.    "Default" 
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1530: 22 74 68 72 65 61 64 74 65 73 74 20 74 65 73 74  "threadtest test
1540: 22 0a 20 20 20 20 22 44 65 76 69 63 65 2d 4f 6e  ".    "Device-On
1550: 65 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e"              
1560: 66 75 6c 6c 74 65 73 74 0a 20 20 7d 0a 20 20 4c  fulltest.  }.  L
1570: 69 6e 75 78 2d 69 36 38 36 20 7b 0a 20 20 20 20  inux-i686 {.    
1580: 22 44 65 76 6b 69 74 22 20 20 20 20 20 20 20 20  "Devkit"        
1590: 20 20 20 20 20 20 20 20 20 20 74 65 73 74 0a 20            test. 
15a0: 20 20 20 22 55 6e 6c 6f 63 6b 2d 4e 6f 74 69 66     "Unlock-Notif
15b0: 79 22 20 20 20 20 20 20 20 20 20 20 20 22 51 55  y"           "QU
15c0: 49 43 4b 54 45 53 54 5f 49 4e 43 4c 55 44 45 3d  ICKTEST_INCLUDE=
15d0: 6e 6f 74 69 66 79 32 2e 74 65 73 74 20 74 65 73  notify2.test tes
15e0: 74 22 0a 20 20 20 20 22 44 65 76 69 63 65 2d 4f  t".    "Device-O
15f0: 6e 65 22 20 20 20 20 20 20 20 20 20 20 20 20 20  ne"             
1600: 20 74 65 73 74 0a 20 20 20 20 22 44 65 76 69 63   test.    "Devic
1610: 65 2d 54 77 6f 22 20 20 20 20 20 20 20 20 20 20  e-Two"          
1620: 20 20 20 20 74 65 73 74 0a 20 20 20 20 22 44 65      test.    "De
1630: 66 61 75 6c 74 22 20 20 20 20 20 20 20 20 20 20  fault"          
1640: 20 20 20 20 20 20 20 22 74 68 72 65 61 64 74 65         "threadte
1650: 73 74 20 66 75 6c 6c 74 65 73 74 22 0a 20 20 7d  st fulltest".  }
1660: 0a 20 20 44 61 72 77 69 6e 2d 69 33 38 36 20 7b  .  Darwin-i386 {
1670: 0a 20 20 20 20 22 4c 6f 63 6b 69 6e 67 2d 53 74  .    "Locking-St
1680: 79 6c 65 22 20 20 20 20 20 20 20 20 20 20 20 74  yle"           t
1690: 65 73 74 0a 20 20 20 20 22 4f 53 2d 58 22 20 20  est.    "OS-X"  
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 20 22 74 68 72 65 61 64 74 65 73 74 20 66 75    "threadtest fu
16c0: 6c 6c 74 65 73 74 22 0a 20 20 7d 0a 7d 0a 0a 0a  lltest".  }.}...
16d0: 23 20 45 6e 64 20 6f 66 20 63 6f 6e 66 69 67 75  # End of configu
16e0: 72 61 74 69 6f 6e 20 73 65 63 74 69 6f 6e 2e 0a  ration section..
16f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1700: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1710: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1720: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1730: 23 23 23 23 23 23 23 23 23 0a 23 23 23 23 23 23  #########.######
1740: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1780: 23 23 23 0a 0a 66 6f 72 65 61 63 68 20 7b 6b 65  ###..foreach {ke
1790: 79 20 76 61 6c 75 65 7d 20 5b 61 72 72 61 79 20  y value} [array 
17a0: 67 65 74 20 3a 3a 50 6c 61 74 66 6f 72 6d 73 5d  get ::Platforms]
17b0: 20 7b 0a 20 20 66 6f 72 65 61 63 68 20 7b 76 20   {.  foreach {v 
17c0: 74 7d 20 24 76 61 6c 75 65 20 7b 0a 20 20 20 20  t} $value {.    
17d0: 69 66 20 7b 30 3d 3d 5b 69 6e 66 6f 20 65 78 69  if {0==[info exi
17e0: 73 74 73 20 3a 3a 43 6f 6e 66 69 67 73 28 24 76  sts ::Configs($v
17f0: 29 5d 7d 20 7b 0a 20 20 20 20 20 20 70 75 74 73  )]} {.      puts
1800: 20 73 74 64 65 72 72 20 22 4e 6f 20 73 75 63 68   stderr "No such
1810: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3a 20   configuration: 
1820: 5c 22 24 76 5c 22 22 0a 20 20 20 20 20 20 65 78  \"$v\"".      ex
1830: 69 74 20 2d 31 0a 20 20 20 20 7d 0a 20 20 7d 0a  it -1.    }.  }.
1840: 7d 0a 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74  }..proc run_test
1850: 5f 73 75 69 74 65 20 7b 6e 61 6d 65 20 74 65 73  _suite {name tes
1860: 74 74 61 72 67 65 74 20 63 6f 6e 66 69 67 7d 20  ttarget config} 
1870: 7b 0a 20 20 0a 20 20 23 20 54 63 6c 20 76 61 72  {.  .  # Tcl var
1880: 69 61 62 6c 65 20 24 6f 70 74 73 20 69 73 20 75  iable $opts is u
1890: 73 65 64 20 74 6f 20 62 75 69 6c 64 20 75 70 20  sed to build up 
18a0: 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 74  the value used t
18b0: 6f 20 73 65 74 20 74 68 65 20 0a 20 20 23 20 4f  o set the .  # O
18c0: 50 54 53 20 4d 61 6b 65 66 69 6c 65 20 76 61 72  PTS Makefile var
18d0: 69 61 62 6c 65 2e 20 56 61 72 69 61 62 6c 65 20  iable. Variable 
18e0: 24 63 66 6c 61 67 73 20 68 6f 6c 64 73 20 74 68  $cflags holds th
18f0: 65 20 76 61 6c 75 65 20 66 6f 72 0a 20 20 23 20  e value for.  # 
1900: 43 46 4c 41 47 53 2e 20 54 68 65 20 6d 61 6b 65  CFLAGS. The make
1910: 66 69 6c 65 20 77 69 6c 6c 20 70 61 73 73 20 4f  file will pass O
1920: 50 54 53 20 74 6f 20 62 6f 74 68 20 67 63 63 20  PTS to both gcc 
1930: 61 6e 64 20 6c 65 6d 6f 6e 2c 20 62 75 74 0a 20  and lemon, but. 
1940: 20 23 20 43 46 4c 41 47 53 20 69 73 20 6f 6e 6c   # CFLAGS is onl
1950: 79 20 70 61 73 73 65 64 20 74 6f 20 67 63 63 2e  y passed to gcc.
1960: 0a 20 20 23 0a 20 20 73 65 74 20 63 66 6c 61 67  .  #.  set cflag
1970: 73 20 22 22 0a 20 20 73 65 74 20 6f 70 74 73 20  s "".  set opts 
1980: 22 22 0a 20 20 66 6f 72 65 61 63 68 20 61 72 67  "".  foreach arg
1990: 20 24 63 6f 6e 66 69 67 20 7b 0a 20 20 20 20 69   $config {.    i
19a0: 66 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63 68  f {[string match
19b0: 20 2d 44 2a 20 24 61 72 67 5d 7d 20 7b 0a 20 20   -D* $arg]} {.  
19c0: 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 73      lappend opts
19d0: 20 24 61 72 67 0a 20 20 20 20 7d 20 65 6c 73 65   $arg.    } else
19e0: 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64   {.      lappend
19f0: 20 63 66 6c 61 67 73 20 24 61 72 67 0a 20 20 20   cflags $arg.   
1a00: 20 7d 0a 20 20 7d 0a 0a 20 20 73 65 74 20 63 66   }.  }..  set cf
1a10: 6c 61 67 73 20 5b 6a 6f 69 6e 20 24 63 66 6c 61  lags [join $cfla
1a20: 67 73 20 22 20 22 5d 0a 20 20 73 65 74 20 6f 70  gs " "].  set op
1a30: 74 73 20 20 20 5b 6a 6f 69 6e 20 24 6f 70 74 73  ts   [join $opts
1a40: 20 22 20 22 5d 0a 20 20 61 70 70 65 6e 64 20 6f   " "].  append o
1a50: 70 74 73 20 22 20 2d 44 53 51 4c 49 54 45 5f 4e  pts " -DSQLITE_N
1a60: 4f 5f 53 59 4e 43 3d 31 20 2d 44 48 41 56 45 5f  O_SYNC=1 -DHAVE_
1a70: 55 53 4c 45 45 50 22 0a 0a 20 20 23 20 53 65 74  USLEEP"..  # Set
1a80: 20 74 68 65 20 73 75 62 2d 64 69 72 65 63 74 6f   the sub-directo
1a90: 72 79 20 74 6f 20 75 73 65 2e 0a 20 20 23 0a 20  ry to use..  #. 
1aa0: 20 73 65 74 20 64 69 72 20 5b 73 74 72 69 6e 67   set dir [string
1ab0: 20 74 6f 6c 6f 77 65 72 20 5b 73 74 72 69 6e 67   tolower [string
1ac0: 20 6d 61 70 20 7b 2d 20 5f 20 22 20 22 20 5f 7d   map {- _ " " _}
1ad0: 20 24 6e 61 6d 65 5d 5d 0a 0a 20 20 69 66 20 7b   $name]]..  if {
1ae0: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
1af0: 70 6c 61 74 66 6f 72 6d 29 3d 3d 22 77 69 6e 64  platform)=="wind
1b00: 6f 77 73 22 7d 20 7b 0a 20 20 20 20 61 70 70 65  ows"} {.    appe
1b10: 6e 64 20 6f 70 74 73 20 22 20 2d 44 53 51 4c 49  nd opts " -DSQLI
1b20: 54 45 5f 4f 53 5f 57 49 4e 3d 31 22 0a 20 20 7d  TE_OS_WIN=1".  }
1b30: 20 65 6c 73 65 20 7b 0a 20 20 20 20 61 70 70 65   else {.    appe
1b40: 6e 64 20 6f 70 74 73 20 22 20 2d 44 53 51 4c 49  nd opts " -DSQLI
1b50: 54 45 5f 4f 53 5f 55 4e 49 58 3d 31 22 0a 20 20  TE_OS_UNIX=1".  
1b60: 7d 0a 0a 20 20 23 20 52 75 6e 20 74 68 65 20 74  }..  # Run the t
1b70: 65 73 74 2e 0a 20 20 23 0a 20 20 73 65 74 20 6d  est..  #.  set m
1b80: 61 6b 65 66 69 6c 65 20 5b 66 69 6c 65 20 6e 6f  akefile [file no
1b90: 72 6d 61 6c 69 7a 65 20 24 3a 3a 4d 41 4b 45 46  rmalize $::MAKEF
1ba0: 49 4c 45 5d 0a 20 20 66 69 6c 65 20 6d 6b 64 69  ILE].  file mkdi
1bb0: 72 20 24 64 69 72 0a 20 20 70 75 74 73 20 2d 6e  r $dir.  puts -n
1bc0: 6f 6e 65 77 6c 69 6e 65 20 22 54 65 73 74 69 6e  onewline "Testin
1bd0: 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  g configuration 
1be0: 5c 22 24 6e 61 6d 65 5c 22 20 28 6c 6f 67 66 69  \"$name\" (logfi
1bf0: 6c 65 3d 24 64 69 72 2f 74 65 73 74 2e 6c 6f 67  le=$dir/test.log
1c00: 29 2e 2e 2e 22 0a 20 20 66 6c 75 73 68 20 73 74  )...".  flush st
1c10: 64 6f 75 74 0a 0a 20 20 73 65 74 20 6d 61 6b 65  dout..  set make
1c20: 63 6d 64 20 5b 63 6f 6e 63 61 74 20 20 20 20 20  cmd [concat     
1c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
1c50: 20 20 20 5b 6c 69 73 74 20 65 78 65 63 20 6d 61     [list exec ma
1c60: 6b 65 20 2d 43 20 24 64 69 72 20 2d 66 20 24 6d  ke -C $dir -f $m
1c70: 61 6b 65 66 69 6c 65 20 63 6c 65 61 6e 5d 20 20  akefile clean]  
1c80: 20 20 20 20 20 20 5c 0a 20 20 20 20 24 74 65 73        \.    $tes
1c90: 74 74 61 72 67 65 74 20 20 20 20 20 20 20 20 20  ttarget         
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
1cc0: 0a 20 20 20 20 5b 6c 69 73 74 20 43 46 4c 41 47  .    [list CFLAG
1cd0: 53 3d 24 63 66 6c 61 67 73 20 4f 50 54 53 3d 24  S=$cflags OPTS=$
1ce0: 6f 70 74 73 20 3e 26 20 24 64 69 72 2f 74 65 73  opts >& $dir/tes
1cf0: 74 2e 6c 6f 67 5d 20 20 5c 0a 20 20 5d 0a 0a 20  t.log]  \.  ].. 
1d00: 20 73 65 74 20 74 6d 31 20 5b 63 6c 6f 63 6b 20   set tm1 [clock 
1d10: 73 65 63 6f 6e 64 73 5d 20 0a 20 20 73 65 74 20  seconds] .  set 
1d20: 72 63 20 5b 63 61 74 63 68 20 24 6d 61 6b 65 63  rc [catch $makec
1d30: 6d 64 5d 0a 20 20 73 65 74 20 74 6d 32 20 5b 63  md].  set tm2 [c
1d40: 6c 6f 63 6b 20 73 65 63 6f 6e 64 73 5d 0a 0a 20  lock seconds].. 
1d50: 20 73 65 74 20 6d 69 6e 75 74 65 73 20 5b 65 78   set minutes [ex
1d60: 70 72 20 7b 28 24 74 6d 32 2d 24 74 6d 31 29 2f  pr {($tm2-$tm1)/
1d70: 36 30 7d 5d 0a 20 20 73 65 74 20 73 65 63 6f 6e  60}].  set secon
1d80: 64 73 20 5b 65 78 70 72 20 7b 28 24 74 6d 32 2d  ds [expr {($tm2-
1d90: 24 74 6d 31 29 25 36 30 7d 5d 0a 20 20 70 75 74  $tm1)%60}].  put
1da0: 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 5b 66 6f  s -nonewline [fo
1db0: 72 6d 61 74 20 22 20 28 25 64 3a 25 2e 32 64 29  rmat " (%d:%.2d)
1dc0: 20 22 20 24 6d 69 6e 75 74 65 73 20 24 73 65 63   " $minutes $sec
1dd0: 6f 6e 64 73 5d 0a 20 20 69 66 20 7b 24 72 63 7d  onds].  if {$rc}
1de0: 20 7b 0a 20 20 20 20 70 75 74 73 20 22 46 41 49   {.    puts "FAI
1df0: 4c 45 44 2e 22 0a 20 20 7d 20 65 6c 73 65 20 7b  LED.".  } else {
1e00: 0a 20 20 20 20 70 75 74 73 20 22 4f 6b 2e 22 0a  .    puts "Ok.".
1e10: 20 20 7d 0a 7d 0a 0a 0a 23 20 54 68 69 73 20 70    }.}...# This p
1e20: 72 6f 63 20 70 72 6f 63 65 73 73 65 73 20 74 68  roc processes th
1e30: 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f  e command line o
1e40: 70 74 69 6f 6e 73 20 70 61 73 73 65 64 20 74 6f  ptions passed to
1e50: 20 74 68 69 73 20 73 63 72 69 70 74 2e 0a 23 20   this script..# 
1e60: 43 75 72 72 65 6e 74 6c 79 20 74 68 65 20 6f 6e  Currently the on
1e70: 6c 79 20 6f 70 74 69 6f 6e 20 73 75 70 70 6f 72  ly option suppor
1e80: 74 65 64 20 69 73 20 22 2d 6d 61 6b 65 66 69 6c  ted is "-makefil
1e90: 65 22 2c 20 64 65 66 61 75 6c 74 0a 23 20 22 72  e", default.# "r
1ea0: 65 6c 65 61 73 65 74 65 73 74 2e 6d 6b 22 2e 20  eleasetest.mk". 
1eb0: 53 65 74 20 74 68 65 20 3a 3a 4d 41 4b 45 46 49  Set the ::MAKEFI
1ec0: 4c 45 20 76 61 72 69 61 62 6c 65 20 74 6f 20 74  LE variable to t
1ed0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73  he value of this
1ee0: 0a 23 20 6f 70 74 69 6f 6e 2e 0a 23 0a 70 72 6f  .# option..#.pro
1ef0: 63 20 70 72 6f 63 65 73 73 5f 6f 70 74 69 6f 6e  c process_option
1f00: 73 20 7b 61 72 67 76 7d 20 7b 0a 20 20 73 65 74  s {argv} {.  set
1f10: 20 3a 3a 4d 41 4b 45 46 49 4c 45 20 72 65 6c 65   ::MAKEFILE rele
1f20: 61 73 65 74 65 73 74 2e 6d 6b 20 20 20 20 20 20  asetest.mk      
1f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f40: 20 3b 23 20 44 65 66 61 75 6c 74 20 76 61 6c 75   ;# Default valu
1f50: 65 0a 20 20 73 65 74 20 3a 3a 51 55 49 43 4b 20  e.  set ::QUICK 
1f60: 20 20 20 30 20 20 20 20 20 20 20 20 20 20 20 20     0            
1f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f80: 20 20 20 20 20 20 20 20 3b 23 20 44 65 66 61 75          ;# Defau
1f90: 6c 74 20 76 61 6c 75 65 0a 20 20 73 65 74 20 70  lt value.  set p
1fa0: 6c 61 74 66 6f 72 6d 20 24 3a 3a 74 63 6c 5f 70  latform $::tcl_p
1fb0: 6c 61 74 66 6f 72 6d 28 6f 73 29 2d 24 3a 3a 74  latform(os)-$::t
1fc0: 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6d 61 63 68  cl_platform(mach
1fd0: 69 6e 65 29 0a 0a 20 20 66 6f 72 20 7b 73 65 74  ine)..  for {set
1fe0: 20 69 20 30 7d 20 7b 24 69 20 3c 20 5b 6c 6c 65   i 0} {$i < [lle
1ff0: 6e 67 74 68 20 24 61 72 67 76 5d 7d 20 7b 69 6e  ngth $argv]} {in
2000: 63 72 20 69 7d 20 7b 0a 20 20 20 20 73 77 69 74  cr i} {.    swit
2010: 63 68 20 2d 2d 20 5b 6c 69 6e 64 65 78 20 24 61  ch -- [lindex $a
2020: 72 67 76 20 24 69 5d 20 7b 0a 20 20 20 20 20 20  rgv $i] {.      
2030: 2d 6d 61 6b 65 66 69 6c 65 20 7b 0a 20 20 20 20  -makefile {.    
2040: 20 20 20 20 69 6e 63 72 20 69 0a 20 20 20 20 20      incr i.     
2050: 20 20 20 73 65 74 20 3a 3a 4d 41 4b 45 46 49 4c     set ::MAKEFIL
2060: 45 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20  E [lindex $argv 
2070: 24 69 5d 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20  $i].      }..   
2080: 20 20 20 2d 70 6c 61 74 66 6f 72 6d 20 7b 0a 20     -platform {. 
2090: 20 20 20 20 20 20 20 69 6e 63 72 20 69 0a 20 20         incr i.  
20a0: 20 20 20 20 20 20 73 65 74 20 70 6c 61 74 66 6f        set platfo
20b0: 72 6d 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76  rm [lindex $argv
20c0: 20 24 69 5d 0a 20 20 20 20 20 20 7d 0a 0a 20 20   $i].      }..  
20d0: 20 20 20 20 2d 71 75 69 63 6b 20 7b 0a 20 20 20      -quick {.   
20e0: 20 20 20 20 20 69 6e 63 72 20 69 0a 20 20 20 20       incr i.    
20f0: 20 20 20 20 73 65 74 20 3a 3a 51 55 49 43 4b 20      set ::QUICK 
2100: 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 24 69  [lindex $argv $i
2110: 5d 0a 20 20 20 20 20 20 7d 0a 20 20 0a 20 20 20  ].      }.  .   
2120: 20 20 20 64 65 66 61 75 6c 74 20 7b 0a 20 20 20     default {.   
2130: 20 20 20 20 20 70 75 74 73 20 73 74 64 65 72 72       puts stderr
2140: 20 22 22 0a 20 20 20 20 20 20 20 20 70 75 74 73   "".        puts
2150: 20 73 74 64 65 72 72 20 5b 73 74 72 69 6e 67 20   stderr [string 
2160: 74 72 69 6d 20 24 3a 3a 55 53 41 47 45 5f 4d 45  trim $::USAGE_ME
2170: 53 53 41 47 45 5d 0a 20 20 20 20 20 20 20 20 65  SSAGE].        e
2180: 78 69 74 20 2d 31 0a 20 20 20 20 20 20 7d 0a 20  xit -1.      }. 
2190: 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 73 65 74 20     }.  }..  set 
21a0: 3a 3a 4d 41 4b 45 46 49 4c 45 20 5b 66 69 6c 65  ::MAKEFILE [file
21b0: 20 6e 6f 72 6d 61 6c 69 7a 65 20 24 3a 3a 4d 41   normalize $::MA
21c0: 4b 45 46 49 4c 45 5d 0a 0a 20 20 69 66 20 7b 30  KEFILE]..  if {0
21d0: 3d 3d 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a  ==[info exists :
21e0: 3a 50 6c 61 74 66 6f 72 6d 73 28 24 70 6c 61 74  :Platforms($plat
21f0: 66 6f 72 6d 29 5d 7d 20 7b 0a 20 20 20 20 70 75  form)]} {.    pu
2200: 74 73 20 22 55 6e 6b 6e 6f 77 6e 20 70 6c 61 74  ts "Unknown plat
2210: 66 6f 72 6d 3a 20 24 70 6c 61 74 66 6f 72 6d 22  form: $platform"
2220: 0a 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77  .    puts -nonew
2230: 6c 69 6e 65 20 22 53 65 74 20 74 68 65 20 2d 70  line "Set the -p
2240: 6c 61 74 66 6f 72 6d 20 6f 70 74 69 6f 6e 20 74  latform option t
2250: 6f 20 22 0a 20 20 20 20 73 65 74 20 70 72 69 6e  o ".    set prin
2260: 74 20 5b 6c 69 73 74 5d 0a 20 20 20 20 66 6f 72  t [list].    for
2270: 65 61 63 68 20 70 20 5b 61 72 72 61 79 20 6e 61  each p [array na
2280: 6d 65 73 20 3a 3a 50 6c 61 74 66 6f 72 6d 73 5d  mes ::Platforms]
2290: 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64   {.      lappend
22a0: 20 70 72 69 6e 74 20 22 5c 22 24 70 5c 22 22 0a   print "\"$p\"".
22b0: 20 20 20 20 7d 0a 20 20 20 20 6c 73 65 74 20 70      }.    lset p
22c0: 72 69 6e 74 20 65 6e 64 20 22 6f 72 20 5b 6c 69  rint end "or [li
22d0: 6e 64 65 78 20 24 70 72 69 6e 74 20 65 6e 64 5d  ndex $print end]
22e0: 22 0a 20 20 20 20 70 75 74 73 20 22 5b 6a 6f 69  ".    puts "[joi
22f0: 6e 20 24 70 72 69 6e 74 20 7b 2c 20 7d 5d 2e 22  n $print {, }]."
2300: 0a 20 20 20 20 65 78 69 74 0a 20 20 7d 0a 0a 20  .    exit.  }.. 
2310: 20 73 65 74 20 3a 3a 43 4f 4e 46 49 47 4c 49 53   set ::CONFIGLIS
2320: 54 20 24 3a 3a 50 6c 61 74 66 6f 72 6d 73 28 24  T $::Platforms($
2330: 70 6c 61 74 66 6f 72 6d 29 0a 20 20 70 75 74 73  platform).  puts
2340: 20 22 52 75 6e 6e 69 6e 67 20 74 68 65 20 66 6f   "Running the fo
2350: 6c 6c 6f 77 69 6e 67 20 63 6f 6e 66 69 67 75 72  llowing configur
2360: 61 74 69 6f 6e 73 20 66 6f 72 20 24 70 6c 61 74  ations for $plat
2370: 66 6f 72 6d 3a 22 0a 20 20 70 75 74 73 20 22 20  form:".  puts " 
2380: 20 20 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20     [string trim 
2390: 24 3a 3a 43 4f 4e 46 49 47 4c 49 53 54 5d 22 0a  $::CONFIGLIST]".
23a0: 7d 0a 0a 23 20 4d 61 69 6e 20 72 6f 75 74 69 6e  }..# Main routin
23b0: 65 2e 0a 23 0a 70 72 6f 63 20 6d 61 69 6e 20 7b  e..#.proc main {
23c0: 61 72 67 76 7d 20 7b 0a 0a 20 20 23 20 50 72 6f  argv} {..  # Pro
23d0: 63 65 73 73 20 61 6e 79 20 63 6f 6d 6d 61 6e 64  cess any command
23e0: 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 2e 0a 20   line options.. 
23f0: 20 70 72 6f 63 65 73 73 5f 6f 70 74 69 6f 6e 73   process_options
2400: 20 24 61 72 67 76 0a 0a 20 20 66 6f 72 65 61 63   $argv..  foreac
2410: 68 20 7b 7a 43 6f 6e 66 69 67 20 74 61 72 67 65  h {zConfig targe
2420: 74 7d 20 24 3a 3a 43 4f 4e 46 49 47 4c 49 53 54  t} $::CONFIGLIST
2430: 20 7b 0a 20 20 20 20 69 66 20 7b 24 3a 3a 51 55   {.    if {$::QU
2440: 49 43 4b 7d 20 7b 73 65 74 20 74 61 72 67 65 74  ICK} {set target
2450: 20 74 65 73 74 7d 0a 20 20 20 20 73 65 74 20 63   test}.    set c
2460: 6f 6e 66 69 67 5f 6f 70 74 69 6f 6e 73 20 24 3a  onfig_options $:
2470: 3a 43 6f 6e 66 69 67 73 28 24 7a 43 6f 6e 66 69  :Configs($zConfi
2480: 67 29 0a 0a 20 20 20 20 72 75 6e 5f 74 65 73 74  g)..    run_test
2490: 5f 73 75 69 74 65 20 24 7a 43 6f 6e 66 69 67 20  _suite $zConfig 
24a0: 24 74 61 72 67 65 74 20 24 63 6f 6e 66 69 67 5f  $target $config_
24b0: 6f 70 74 69 6f 6e 73 0a 0a 20 20 20 20 23 20 49  options..    # I
24c0: 66 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74  f the configurat
24d0: 69 6f 6e 20 69 6e 63 6c 75 64 65 64 20 74 68 65  ion included the
24e0: 20 53 51 4c 49 54 45 5f 44 45 42 55 47 20 6f 70   SQLITE_DEBUG op
24f0: 74 69 6f 6e 2c 20 74 68 65 6e 20 72 65 6d 6f 76  tion, then remov
2500: 65 0a 20 20 20 20 23 20 69 74 20 61 6e 64 20 72  e.    # it and r
2510: 75 6e 20 76 65 72 79 71 75 69 63 6b 2e 74 65 73  un veryquick.tes
2520: 74 2e 20 49 66 20 69 74 20 64 69 64 20 6e 6f 74  t. If it did not
2530: 20 69 6e 63 6c 75 64 65 20 74 68 65 20 53 51 4c   include the SQL
2540: 49 54 45 5f 44 45 42 55 47 20 6f 70 74 69 6f 6e  ITE_DEBUG option
2550: 0a 20 20 20 20 23 20 61 64 64 20 69 74 20 61 6e  .    # add it an
2560: 64 20 72 75 6e 20 76 65 72 79 71 75 69 63 6b 2e  d run veryquick.
2570: 74 65 73 74 2e 0a 20 20 20 20 69 66 20 7b 24 74  test..    if {$t
2580: 61 72 67 65 74 21 3d 22 63 68 65 63 6b 73 79 6d  arget!="checksym
2590: 62 6f 6c 73 22 7d 20 7b 0a 20 20 20 20 20 20 73  bols"} {.      s
25a0: 65 74 20 64 65 62 75 67 5f 69 64 78 20 5b 6c 73  et debug_idx [ls
25b0: 65 61 72 63 68 20 2d 67 6c 6f 62 20 24 63 6f 6e  earch -glob $con
25c0: 66 69 67 5f 6f 70 74 69 6f 6e 73 20 2d 44 53 51  fig_options -DSQ
25d0: 4c 49 54 45 5f 44 45 42 55 47 2a 5d 0a 20 20 20  LITE_DEBUG*].   
25e0: 20 20 20 69 66 20 7b 24 64 65 62 75 67 5f 69 64     if {$debug_id
25f0: 78 20 3c 20 30 7d 20 7b 0a 20 20 20 20 20 20 20  x < 0} {.       
2600: 20 72 75 6e 5f 74 65 73 74 5f 73 75 69 74 65 20   run_test_suite 
2610: 22 24 7b 7a 43 6f 6e 66 69 67 7d 5f 64 65 62 75  "${zConfig}_debu
2620: 67 22 20 74 65 73 74 20 5b 0a 20 20 20 20 20 20  g" test [.      
2630: 20 20 20 20 63 6f 6e 63 61 74 20 24 63 6f 6e 66      concat $conf
2640: 69 67 5f 6f 70 74 69 6f 6e 73 20 2d 44 53 51 4c  ig_options -DSQL
2650: 49 54 45 5f 44 45 42 55 47 3d 31 0a 20 20 20 20  ITE_DEBUG=1.    
2660: 20 20 20 20 5d 0a 20 20 20 20 20 20 7d 20 65 6c      ].      } el
2670: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 72 75 6e  se {.        run
2680: 5f 74 65 73 74 5f 73 75 69 74 65 20 22 24 7b 7a  _test_suite "${z
2690: 43 6f 6e 66 69 67 7d 5f 6e 64 65 62 75 67 22 20  Config}_ndebug" 
26a0: 74 65 73 74 20 5b 0a 20 20 20 20 20 20 20 20 20  test [.         
26b0: 20 6c 72 65 70 6c 61 63 65 20 24 63 6f 6e 66 69   lreplace $confi
26c0: 67 5f 6f 70 74 69 6f 6e 73 20 24 64 65 62 75 67  g_options $debug
26d0: 5f 69 64 78 20 24 64 65 62 75 67 5f 69 64 78 0a  _idx $debug_idx.
26e0: 20 20 20 20 20 20 20 20 5d 0a 20 20 20 20 20 20          ].      
26f0: 7d 0a 20 20 20 20 7d 0a 0a 20 20 7d 0a 7d 0a 0a  }.    }..  }.}..
2700: 6d 61 69 6e 20 24 61 72 67 76 0a                 main $argv.