/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 4be55add3ec87f45fe041b7bfa8f16dab8105431:


0000: 0a 73 65 74 20 72 63 73 69 64 20 7b 24 49 64 3a  .set rcsid {$Id:
0010: 20 6f 6d 69 74 74 65 73 74 2e 74 63 6c 2c 76 20   omittest.tcl,v 
0020: 31 2e 37 20 32 30 30 38 2f 30 38 2f 32 32 20 31  1.7 2008/08/22 1
0030: 33 3a 35 37 3a 33 39 20 70 77 65 69 6c 62 61 63  3:57:39 pweilbac
0040: 68 65 72 20 45 78 70 20 24 7d 0a 0a 23 20 44 6f  her Exp $}..# Do
0050: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  cumentation for 
0060: 74 68 69 73 20 73 63 72 69 70 74 2e 20 54 68 69  this script. Thi
0070: 73 20 6d 61 79 20 62 65 20 6f 75 74 70 75 74 20  s may be output 
0080: 74 6f 20 73 74 64 65 72 72 0a 23 20 69 66 20 74  to stderr.# if t
0090: 68 65 20 73 63 72 69 70 74 20 69 73 20 69 6e 76  he script is inv
00a0: 6f 6b 65 64 20 69 6e 63 6f 72 72 65 63 74 6c 79  oked incorrectly
00b0: 2e 0a 73 65 74 20 3a 3a 55 53 41 47 45 5f 4d 45  ..set ::USAGE_ME
00c0: 53 53 41 47 45 20 7b 0a 54 68 69 73 20 54 63 6c  SSAGE {.This Tcl
00d0: 20 73 63 72 69 70 74 20 69 73 20 75 73 65 64 20   script is used 
00e0: 74 6f 20 74 65 73 74 20 74 68 65 20 76 61 72 69  to test the vari
00f0: 6f 75 73 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65  ous compile time
0100: 20 6f 70 74 69 6f 6e 73 20 0a 61 76 61 69 6c 61   options .availa
0110: 62 6c 65 20 66 6f 72 20 6f 6d 69 74 74 69 6e 67  ble for omitting
0120: 20 63 6f 64 65 20 28 74 68 65 20 53 51 4c 49 54   code (the SQLIT
0130: 45 5f 4f 4d 49 54 5f 78 78 78 20 6f 70 74 69 6f  E_OMIT_xxx optio
0140: 6e 73 29 2e 20 49 74 0a 73 68 6f 75 6c 64 20 62  ns). It.should b
0150: 65 20 69 6e 76 6f 6b 65 64 20 61 73 20 66 6f 6c  e invoked as fol
0160: 6c 6f 77 73 3a 0a 0a 20 20 20 20 3c 73 63 72 69  lows:..    <scri
0170: 70 74 3e 20 3f 2d 6d 61 6b 65 66 69 6c 65 20 50  pt> ?-makefile P
0180: 41 54 48 2d 54 4f 2d 4d 41 4b 45 46 49 4c 45 3f  ATH-TO-MAKEFILE?
0190: 0a 0a 54 68 65 20 64 65 66 61 75 6c 74 20 76 61  ..The default va
01a0: 6c 75 65 20 66 6f 72 20 3a 3a 4d 41 4b 45 46 49  lue for ::MAKEFI
01b0: 4c 45 20 69 73 20 22 2e 2e 2f 4d 61 6b 65 66 69  LE is "../Makefi
01c0: 6c 65 2e 6c 69 6e 75 78 2e 67 63 63 22 2e 0a 0a  le.linux.gcc"...
01d0: 54 68 69 73 20 73 63 72 69 70 74 20 62 75 69 6c  This script buil
01e0: 64 73 20 74 68 65 20 74 65 73 74 66 69 78 74 75  ds the testfixtu
01f0: 72 65 20 70 72 6f 67 72 61 6d 20 61 6e 64 20 72  re program and r
0200: 75 6e 73 20 74 68 65 20 53 51 4c 69 74 65 20 74  uns the SQLite t
0210: 65 73 74 20 73 75 69 74 65 0a 6f 6e 63 65 20 77  est suite.once w
0220: 69 74 68 20 65 61 63 68 20 53 51 4c 49 54 45 5f  ith each SQLITE_
0230: 4f 4d 49 54 5f 20 6f 70 74 69 6f 6e 20 64 65 66  OMIT_ option def
0240: 69 6e 65 64 20 61 6e 64 20 74 68 65 6e 20 6f 6e  ined and then on
0250: 63 65 20 77 69 74 68 20 61 6c 6c 20 6f 70 74 69  ce with all opti
0260: 6f 6e 73 0a 64 65 66 69 6e 65 64 20 74 6f 67 65  ons.defined toge
0270: 74 68 65 72 2e 20 45 61 63 68 20 72 75 6e 20 69  ther. Each run i
0280: 73 20 70 65 72 66 6f 72 6d 65 64 20 69 6e 20 61  s performed in a
0290: 20 73 65 70 65 72 61 74 65 20 64 69 72 65 63 74   seperate direct
02a0: 6f 72 79 20 63 72 65 61 74 65 64 0a 61 73 20 61  ory created.as a
02b0: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20 6f   sub-directory o
02c0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69  f the current di
02d0: 72 65 63 74 6f 72 79 20 62 79 20 74 68 65 20 73  rectory by the s
02e0: 63 72 69 70 74 2e 20 54 68 65 20 6f 75 74 70 75  cript. The outpu
02f0: 74 0a 6f 66 20 74 68 65 20 62 75 69 6c 64 20 69  t.of the build i
0300: 73 20 73 61 76 65 64 20 69 6e 20 3c 73 75 62 2d  s saved in <sub-
0310: 64 69 72 65 63 74 6f 72 79 3e 2f 62 75 69 6c 64  directory>/build
0320: 2e 6c 6f 67 2e 20 54 68 65 20 6f 75 74 70 75 74  .log. The output
0330: 20 6f 66 20 74 68 65 0a 74 65 73 74 2d 73 75 69   of the.test-sui
0340: 74 65 20 69 73 20 73 61 76 65 64 20 69 6e 20 3c  te is saved in <
0350: 73 75 62 2d 64 69 72 65 63 74 6f 72 79 3e 2f 74  sub-directory>/t
0360: 65 73 74 2e 6c 6f 67 2e 0a 0a 41 6c 6d 6f 73 74  est.log...Almost
0370: 20 61 6e 79 20 53 51 4c 69 74 65 20 6d 61 6b 65   any SQLite make
0380: 66 69 6c 65 20 28 65 78 63 65 70 74 20 74 68 6f  file (except tho
0390: 73 65 20 67 65 6e 65 72 61 74 65 64 20 62 79 20  se generated by 
03a0: 63 6f 6e 66 69 67 75 72 65 20 2d 20 73 65 65 20  configure - see 
03b0: 62 65 6c 6f 77 29 0a 73 68 6f 75 6c 64 20 77 6f  below).should wo
03c0: 72 6b 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  rk. The followin
03d0: 67 20 70 72 6f 70 65 72 74 69 65 73 20 61 72 65  g properties are
03e0: 20 72 65 71 75 69 72 65 64 3a 0a 0a 20 20 2a 20   required:..  * 
03f0: 54 68 65 20 6d 61 6b 65 66 69 6c 65 20 73 68 6f  The makefile sho
0400: 75 6c 64 20 73 75 70 70 6f 72 74 20 74 68 65 20  uld support the 
0410: 22 74 65 73 74 66 69 78 74 75 72 65 22 20 74 61  "testfixture" ta
0420: 72 67 65 74 2e 0a 20 20 2a 20 54 68 65 20 6d 61  rget..  * The ma
0430: 6b 65 66 69 6c 65 20 73 68 6f 75 6c 64 20 73 75  kefile should su
0440: 70 70 6f 72 74 20 74 68 65 20 22 74 65 73 74 22  pport the "test"
0450: 20 74 61 72 67 65 74 2e 0a 20 20 2a 20 54 68 65   target..  * The
0460: 20 6d 61 6b 65 66 69 6c 65 20 73 68 6f 75 6c 64   makefile should
0470: 20 73 75 70 70 6f 72 74 20 74 68 65 20 76 61 72   support the var
0480: 69 61 62 6c 65 20 22 4f 50 54 53 22 20 61 73 20  iable "OPTS" as 
0490: 61 20 77 61 79 20 74 6f 20 70 61 73 73 0a 20 20  a way to pass.  
04a0: 20 20 6f 70 74 69 6f 6e 73 20 66 72 6f 6d 20 74    options from t
04b0: 68 65 20 6d 61 6b 65 20 63 6f 6d 6d 61 6e 64 20  he make command 
04c0: 6c 69 6e 65 20 74 6f 20 6c 65 6d 6f 6e 20 61 6e  line to lemon an
04d0: 64 20 74 68 65 20 43 20 63 6f 6d 70 69 6c 65 72  d the C compiler
04e0: 2e 0a 0a 4d 6f 72 65 20 70 72 65 63 69 73 65 6c  ...More precisel
04f0: 79 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  y, the following
0500: 20 74 77 6f 20 69 6e 76 6f 63 61 74 69 6f 6e 73   two invocations
0510: 20 6d 75 73 74 20 62 65 20 73 75 70 70 6f 72 74   must be support
0520: 65 64 3a 0a 0a 20 20 6d 61 6b 65 20 2d 66 20 24  ed:..  make -f $
0530: 3a 3a 4d 41 4b 45 46 49 4c 45 20 74 65 73 74 66  ::MAKEFILE testf
0540: 69 78 74 75 72 65 20 4f 50 54 53 3d 22 2d 44 53  ixture OPTS="-DS
0550: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52  QLITE_OMIT_ALTER
0560: 54 41 42 4c 45 3d 31 22 0a 20 20 6d 61 6b 65 20  TABLE=1".  make 
0570: 2d 66 20 24 3a 3a 4d 41 4b 45 46 49 4c 45 20 74  -f $::MAKEFILE t
0580: 65 73 74 0a 0a 4d 61 6b 65 66 69 6c 65 73 20 67  est..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 7d 0a 0a 0a 23 20 42 75 69 6c 64 20 61 20  ..}...# Build a 
0600: 74 65 73 74 66 69 78 74 75 72 65 20 65 78 65 63  testfixture exec
0610: 75 74 61 62 6c 65 20 61 6e 64 20 72 75 6e 20 71  utable and run q
0620: 75 69 63 6b 2e 74 65 73 74 20 75 73 69 6e 67 20  uick.test using 
0630: 69 74 2e 20 54 68 65 20 66 69 72 73 74 0a 23 20  it. The first.# 
0640: 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
0650: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 72   name of the dir
0660: 65 63 74 6f 72 79 20 74 6f 20 63 72 65 61 74 65  ectory to create
0670: 20 61 6e 64 20 75 73 65 20 74 6f 20 72 75 6e 20   and use to run 
0680: 74 68 65 0a 23 20 74 65 73 74 20 69 6e 2e 20 54  the.# test in. T
0690: 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
06a0: 74 65 72 20 69 73 20 61 20 6c 69 73 74 20 6f 66  ter is a list of
06b0: 20 4f 4d 49 54 20 73 79 6d 62 6f 6c 73 20 74 6f   OMIT symbols to
06c0: 20 64 65 66 69 6e 65 0a 23 20 77 68 65 6e 20 64   define.# when d
06d0: 6f 69 6e 67 20 73 6f 2e 20 46 6f 72 20 65 78 61  oing so. For exa
06e0: 6d 70 6c 65 3a 0a 23 0a 23 20 20 20 20 20 72 75  mple:.#.#     ru
06f0: 6e 5f 71 75 69 63 6b 5f 74 65 73 74 20 2f 74 6d  n_quick_test /tm
0700: 70 2f 74 65 73 74 64 69 72 20 7b 53 51 4c 49 54  p/testdir {SQLIT
0710: 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 20 53  E_OMIT_TRIGGER S
0720: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 7d  QLITE_OMIT_VIEW}
0730: 0a 23 0a 23 0a 70 72 6f 63 20 72 75 6e 5f 71 75  .#.#.proc run_qu
0740: 69 63 6b 5f 74 65 73 74 20 7b 64 69 72 20 6f 6d  ick_test {dir om
0750: 69 74 5f 73 79 6d 62 6f 6c 5f 6c 69 73 74 7d 20  it_symbol_list} 
0760: 7b 0a 20 20 23 20 43 6f 6d 70 69 6c 65 20 74 68  {.  # Compile th
0770: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f  e value of the O
0780: 50 54 53 20 4d 61 6b 65 66 69 6c 65 20 76 61 72  PTS Makefile var
0790: 69 61 62 6c 65 2e 0a 20 20 73 65 74 20 6f 70 74  iable..  set opt
07a0: 73 20 22 2d 44 53 51 4c 49 54 45 5f 4d 45 4d 44  s "-DSQLITE_MEMD
07b0: 45 42 55 47 20 2d 44 53 51 4c 49 54 45 5f 44 45  EBUG -DSQLITE_DE
07c0: 42 55 47 22 20 0a 20 20 69 66 20 7b 24 3a 3a 74  BUG" .  if {$::t
07d0: 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
07e0: 66 6f 72 6d 29 3d 3d 22 77 69 6e 64 6f 77 73 22  form)=="windows"
07f0: 7d 20 7b 0a 20 20 20 20 61 70 70 65 6e 64 20 6f  } {.    append o
0800: 70 74 73 20 22 20 2d 44 53 51 4c 49 54 45 5f 4f  pts " -DSQLITE_O
0810: 53 5f 57 49 4e 3d 31 22 0a 20 20 7d 20 65 6c 73  S_WIN=1".  } els
0820: 65 69 66 20 7b 24 3a 3a 74 63 6c 5f 70 6c 61 74  eif {$::tcl_plat
0830: 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 3d 3d  form(platform)==
0840: 22 6f 73 32 22 7d 20 7b 0a 20 20 20 20 61 70 70  "os2"} {.    app
0850: 65 6e 64 20 6f 70 74 73 20 22 20 2d 44 53 51 4c  end opts " -DSQL
0860: 49 54 45 5f 4f 53 5f 4f 53 32 3d 31 22 0a 20 20  ITE_OS_OS2=1".  
0870: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 61 70 70  } else {.    app
0880: 65 6e 64 20 6f 70 74 73 20 22 20 2d 44 53 51 4c  end opts " -DSQL
0890: 49 54 45 5f 4f 53 5f 55 4e 49 58 3d 31 22 0a 20  ITE_OS_UNIX=1". 
08a0: 20 7d 0a 20 20 66 6f 72 65 61 63 68 20 73 79 6d   }.  foreach sym
08b0: 20 24 6f 6d 69 74 5f 73 79 6d 62 6f 6c 5f 6c 69   $omit_symbol_li
08c0: 73 74 20 7b 0a 20 20 20 20 61 70 70 65 6e 64 20  st {.    append 
08d0: 6f 70 74 73 20 22 20 2d 44 24 7b 73 79 6d 7d 3d  opts " -D${sym}=
08e0: 31 22 0a 20 20 7d 0a 0a 20 20 23 20 43 72 65 61  1".  }..  # Crea
08f0: 74 65 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  te the directory
0900: 20 61 6e 64 20 64 6f 20 74 68 65 20 62 75 69 6c   and do the buil
0910: 64 2e 20 49 66 20 61 6e 20 65 72 72 6f 72 20 6f  d. If an error o
0920: 63 63 75 72 73 20 72 65 74 75 72 6e 0a 20 20 23  ccurs return.  #
0930: 20 65 61 72 6c 79 20 77 69 74 68 6f 75 74 20 61   early without a
0940: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 72 75 6e  ttempting to run
0950: 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 2e   the test suite.
0960: 0a 20 20 66 69 6c 65 20 6d 6b 64 69 72 20 24 64  .  file mkdir $d
0970: 69 72 0a 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77  ir.  puts -nonew
0980: 6c 69 6e 65 20 22 42 75 69 6c 64 69 6e 67 20 24  line "Building $
0990: 64 69 72 2e 2e 2e 22 0a 20 20 66 6c 75 73 68 20  dir...".  flush 
09a0: 73 74 64 6f 75 74 0a 63 61 74 63 68 20 7b 0a 20  stdout.catch {. 
09b0: 20 66 69 6c 65 20 63 6f 70 79 20 2d 66 6f 72 63   file copy -forc
09c0: 65 20 2e 2f 63 6f 6e 66 69 67 2e 68 20 24 64 69  e ./config.h $di
09d0: 72 0a 20 20 66 69 6c 65 20 63 6f 70 79 20 2d 66  r.  file copy -f
09e0: 6f 72 63 65 20 2e 2f 6c 69 62 74 6f 6f 6c 20 24  orce ./libtool $
09f0: 64 69 72 0a 7d 0a 20 20 73 65 74 20 72 63 20 5b  dir.}.  set rc [
0a00: 63 61 74 63 68 20 7b 0a 20 20 20 20 65 78 65 63  catch {.    exec
0a10: 20 6d 61 6b 65 20 2d 43 20 24 64 69 72 20 2d 66   make -C $dir -f
0a20: 20 24 3a 3a 4d 41 4b 45 46 49 4c 45 20 74 65 73   $::MAKEFILE tes
0a30: 74 66 69 78 74 75 72 65 20 4f 50 54 53 3d 24 6f  tfixture OPTS=$o
0a40: 70 74 73 20 3e 26 20 24 64 69 72 2f 62 75 69 6c  pts >& $dir/buil
0a50: 64 2e 6c 6f 67 0a 20 20 7d 5d 0a 20 20 69 66 20  d.log.  }].  if 
0a60: 7b 24 72 63 7d 20 7b 0a 20 20 20 20 70 75 74 73  {$rc} {.    puts
0a70: 20 22 4e 6f 20 67 6f 6f 64 2e 20 53 65 65 20 24   "No good. See $
0a80: 64 69 72 2f 62 75 69 6c 64 2e 6c 6f 67 2e 22 0a  dir/build.log.".
0a90: 20 20 20 20 72 65 74 75 72 6e 0a 20 20 7d 20 65      return.  } e
0aa0: 6c 73 65 20 7b 0a 20 20 20 20 70 75 74 73 20 22  lse {.    puts "
0ab0: 4f 6b 22 0a 20 20 7d 0a 20 20 0a 20 20 23 20 43  Ok".  }.  .  # C
0ac0: 72 65 61 74 65 20 61 6e 20 65 6d 70 74 79 20 66  reate an empty f
0ad0: 69 6c 65 20 22 24 64 69 72 2f 73 71 6c 69 74 65  ile "$dir/sqlite
0ae0: 33 22 2e 20 54 68 69 73 20 69 73 20 74 6f 20 74  3". This is to t
0af0: 72 69 63 6b 20 74 68 65 20 6d 61 6b 65 66 69 6c  rick the makefil
0b00: 65 20 6f 75 74 20 0a 20 20 23 20 6f 66 20 74 72  e out .  # of tr
0b10: 79 69 6e 67 20 74 6f 20 62 75 69 6c 64 20 74 68  ying to build th
0b20: 65 20 73 71 6c 69 74 65 20 73 68 65 6c 6c 2e 20  e sqlite shell. 
0b30: 54 68 65 20 73 71 6c 69 74 65 20 73 68 65 6c 6c  The sqlite shell
0b40: 20 77 6f 6e 27 74 20 62 75 69 6c 64 20 0a 20 20   won't build .  
0b50: 23 20 77 69 74 68 20 73 6f 6d 65 20 6f 66 20 74  # with some of t
0b60: 68 65 20 4f 4d 49 54 20 6f 70 74 69 6f 6e 73 20  he OMIT options 
0b70: 28 69 2e 65 20 4f 4d 49 54 5f 43 4f 4d 50 4c 45  (i.e OMIT_COMPLE
0b80: 54 45 29 2e 0a 20 20 73 65 74 20 73 71 6c 69 74  TE)..  set sqlit
0b90: 65 33 5f 64 75 6d 6d 79 20 24 64 69 72 2f 73 71  e3_dummy $dir/sq
0ba0: 6c 69 74 65 33 0a 20 20 69 66 20 7b 24 3a 3a 74  lite3.  if {$::t
0bb0: 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
0bc0: 66 6f 72 6d 29 3d 3d 22 77 69 6e 64 6f 77 73 22  form)=="windows"
0bd0: 20 7c 7c 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66   || $::tcl_platf
0be0: 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 3d 3d 22  orm(platform)=="
0bf0: 6f 73 32 22 7d 20 7b 0a 20 20 20 20 61 70 70 65  os2"} {.    appe
0c00: 6e 64 20 73 71 6c 69 74 65 33 5f 64 75 6d 6d 79  nd sqlite3_dummy
0c10: 20 22 2e 65 78 65 22 0a 20 20 7d 0a 20 20 69 66   ".exe".  }.  if
0c20: 20 7b 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20   {![file exists 
0c30: 24 73 71 6c 69 74 65 33 5f 64 75 6d 6d 79 5d 7d  $sqlite3_dummy]}
0c40: 20 7b 0a 20 20 20 20 73 65 74 20 77 72 20 5b 6f   {.    set wr [o
0c50: 70 65 6e 20 24 73 71 6c 69 74 65 33 5f 64 75 6d  pen $sqlite3_dum
0c60: 6d 79 20 77 5d 0a 20 20 20 20 70 75 74 73 20 24  my w].    puts $
0c70: 77 72 20 22 64 75 6d 6d 79 22 0a 20 20 20 20 63  wr "dummy".    c
0c80: 6c 6f 73 65 20 24 77 72 0a 20 20 7d 0a 0a 20 20  lose $wr.  }..  
0c90: 23 20 52 75 6e 20 74 68 65 20 74 65 73 74 20 73  # Run the test s
0ca0: 75 69 74 65 2e 0a 20 20 70 75 74 73 20 2d 6e 6f  uite..  puts -no
0cb0: 6e 65 77 6c 69 6e 65 20 22 54 65 73 74 69 6e 67  newline "Testing
0cc0: 20 24 64 69 72 2e 2e 2e 22 0a 20 20 66 6c 75 73   $dir...".  flus
0cd0: 68 20 73 74 64 6f 75 74 0a 20 20 73 65 74 20 72  h stdout.  set r
0ce0: 63 20 5b 63 61 74 63 68 20 7b 0a 20 20 20 20 65  c [catch {.    e
0cf0: 78 65 63 20 6d 61 6b 65 20 2d 43 20 24 64 69 72  xec make -C $dir
0d00: 20 2d 66 20 24 3a 3a 4d 41 4b 45 46 49 4c 45 20   -f $::MAKEFILE 
0d10: 74 65 73 74 20 4f 50 54 53 3d 24 6f 70 74 73 20  test OPTS=$opts 
0d20: 3e 26 20 24 64 69 72 2f 74 65 73 74 2e 6c 6f 67  >& $dir/test.log
0d30: 0a 20 20 7d 5d 0a 20 20 69 66 20 7b 24 72 63 7d  .  }].  if {$rc}
0d40: 20 7b 0a 20 20 20 20 70 75 74 73 20 22 4e 6f 20   {.    puts "No 
0d50: 67 6f 6f 64 2e 20 53 65 65 20 24 64 69 72 2f 74  good. See $dir/t
0d60: 65 73 74 2e 6c 6f 67 2e 22 0a 20 20 7d 20 65 6c  est.log.".  } el
0d70: 73 65 20 7b 0a 20 20 20 20 70 75 74 73 20 22 4f  se {.    puts "O
0d80: 6b 22 0a 20 20 7d 0a 7d 0a 0a 0a 23 20 54 68 69  k".  }.}...# Thi
0d90: 73 20 70 72 6f 63 20 70 72 6f 63 65 73 73 65 73  s proc processes
0da0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   the command lin
0db0: 65 20 6f 70 74 69 6f 6e 73 20 70 61 73 73 65 64  e options passed
0dc0: 20 74 6f 20 74 68 69 73 20 73 63 72 69 70 74 2e   to this script.
0dd0: 0a 23 20 43 75 72 72 65 6e 74 6c 79 20 74 68 65  .# Currently the
0de0: 20 6f 6e 6c 79 20 6f 70 74 69 6f 6e 20 73 75 70   only option sup
0df0: 70 6f 72 74 65 64 20 69 73 20 22 2d 6d 61 6b 65  ported is "-make
0e00: 66 69 6c 65 22 2c 20 64 65 66 61 75 6c 74 0a 23  file", default.#
0e10: 20 22 2e 2e 2f 4d 61 6b 65 66 69 6c 65 2e 6c 69   "../Makefile.li
0e20: 6e 75 78 2d 67 63 63 22 2e 20 53 65 74 20 74 68  nux-gcc". Set th
0e30: 65 20 3a 3a 4d 41 4b 45 46 49 4c 45 20 76 61 72  e ::MAKEFILE var
0e40: 69 61 62 6c 65 20 74 6f 20 74 68 65 20 76 61 6c  iable to the val
0e50: 75 65 20 6f 66 20 74 68 69 73 0a 23 20 6f 70 74  ue of this.# opt
0e60: 69 6f 6e 2e 0a 23 0a 70 72 6f 63 20 70 72 6f 63  ion..#.proc proc
0e70: 65 73 73 5f 6f 70 74 69 6f 6e 73 20 7b 61 72 67  ess_options {arg
0e80: 76 7d 20 7b 0a 20 20 69 66 20 7b 24 3a 3a 74 63  v} {.  if {$::tc
0e90: 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66  l_platform(platf
0ea0: 6f 72 6d 29 3d 3d 22 77 69 6e 64 6f 77 73 22 20  orm)=="windows" 
0eb0: 7c 7c 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f  || $::tcl_platfo
0ec0: 72 6d 28 70 6c 61 74 66 6f 72 6d 29 3d 3d 22 6f  rm(platform)=="o
0ed0: 73 32 22 7d 20 7b 0a 20 20 20 20 20 20 73 65 74  s2"} {.      set
0ee0: 20 3a 3a 4d 41 4b 45 46 49 4c 45 20 2e 2e 2f 4d   ::MAKEFILE ../M
0ef0: 61 6b 65 66 69 6c 65 20 20 20 20 20 20 20 20 20  akefile         
0f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
0f10: 23 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 0a  # Default value.
0f20: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
0f30: 20 73 65 74 20 3a 3a 4d 41 4b 45 46 49 4c 45 20   set ::MAKEFILE 
0f40: 2e 2e 2f 4d 61 6b 65 66 69 6c 65 2e 6c 69 6e 75  ../Makefile.linu
0f50: 78 2d 67 63 63 20 20 20 20 20 20 20 20 20 20 20  x-gcc           
0f60: 20 20 20 3b 23 20 44 65 66 61 75 6c 74 20 76 61     ;# Default va
0f70: 6c 75 65 0a 20 20 7d 0a 20 20 66 6f 72 20 7b 73  lue.  }.  for {s
0f80: 65 74 20 69 20 30 7d 20 7b 24 69 20 3c 20 5b 6c  et i 0} {$i < [l
0f90: 6c 65 6e 67 74 68 20 24 61 72 67 76 5d 7d 20 7b  length $argv]} {
0fa0: 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 73 77  incr i} {.    sw
0fb0: 69 74 63 68 20 2d 2d 20 5b 6c 69 6e 64 65 78 20  itch -- [lindex 
0fc0: 24 61 72 67 76 20 24 69 5d 20 7b 0a 20 20 20 20  $argv $i] {.    
0fd0: 20 20 2d 6d 61 6b 65 66 69 6c 65 20 7b 0a 20 20    -makefile {.  
0fe0: 20 20 20 20 20 20 69 6e 63 72 20 69 0a 20 20 20        incr i.   
0ff0: 20 20 20 20 20 73 65 74 20 3a 3a 4d 41 4b 45 46       set ::MAKEF
1000: 49 4c 45 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ILE [lindex $arg
1010: 76 20 24 69 5d 0a 20 20 20 20 20 20 7d 0a 20 20  v $i].      }.  
1020: 0a 20 20 20 20 20 20 64 65 66 61 75 6c 74 20 7b  .      default {
1030: 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 73 74  .        puts st
1040: 64 65 72 72 20 5b 73 74 72 69 6e 67 20 74 72 69  derr [string tri
1050: 6d 20 24 3a 3a 55 53 41 47 45 5f 4d 45 53 53 41  m $::USAGE_MESSA
1060: 47 45 5d 0a 20 20 20 20 20 20 20 20 65 78 69 74  GE].        exit
1070: 20 2d 31 0a 20 20 20 20 20 20 7d 0a 20 20 20 20   -1.      }.    
1080: 7d 0a 20 20 20 20 73 65 74 20 3a 3a 4d 41 4b 45  }.    set ::MAKE
1090: 46 49 4c 45 20 5b 66 69 6c 65 20 6e 6f 72 6d 61  FILE [file norma
10a0: 6c 69 7a 65 20 24 3a 3a 4d 41 4b 45 46 49 4c 45  lize $::MAKEFILE
10b0: 5d 0a 20 20 7d 0a 7d 0a 0a 23 20 4d 61 69 6e 20  ].  }.}..# Main 
10c0: 72 6f 75 74 69 6e 65 2e 0a 23 0a 0a 70 72 6f 63  routine..#..proc
10d0: 20 6d 61 69 6e 20 7b 61 72 67 76 7d 20 7b 0a 20   main {argv} {. 
10e0: 20 23 20 4c 69 73 74 20 6f 66 20 53 51 4c 49 54   # List of SQLIT
10f0: 45 5f 4f 4d 49 54 5f 58 58 58 20 73 79 6d 62 6f  E_OMIT_XXX symbo
1100: 6c 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  ls supported by 
1110: 53 51 4c 69 74 65 2e 0a 20 20 73 65 74 20 3a 3a  SQLite..  set ::
1120: 53 59 4d 42 4f 4c 53 20 5b 6c 69 73 74 20 20 20  SYMBOLS [list   
1130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
1140: 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .    SQLITE_OMIT
1150: 5f 41 4c 54 45 52 54 41 42 4c 45 20 20 20 20 20  _ALTERTABLE     
1160: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51          \.    SQ
1170: 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a  LITE_OMIT_ANALYZ
1180: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
1190: 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d   \.    SQLITE_OM
11a0: 49 54 5f 41 54 54 41 43 48 20 20 20 20 20 20 20  IT_ATTACH       
11b0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
11c0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48  SQLITE_OMIT_AUTH
11d0: 4f 52 49 5a 41 54 49 4f 4e 20 20 20 20 20 20 20  ORIZATION       
11e0: 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f     \.    SQLITE_
11f0: 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45  OMIT_AUTOINCREME
1200: 4e 54 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20  NT          \.  
1210: 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55    SQLITE_OMIT_AU
1220: 54 4f 49 4e 49 54 20 20 20 20 20 20 20 20 20 20  TOINIT          
1230: 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54       \.    SQLIT
1240: 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55  E_OMIT_AUTOVACUU
1250: 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a  M             \.
1260: 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f      SQLITE_OMIT_
1270: 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41  BETWEEN_OPTIMIZA
1280: 54 49 4f 4e 20 20 20 5c 0a 20 20 20 20 53 51 4c  TION   \.    SQL
1290: 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49  ITE_OMIT_BLOB_LI
12a0: 54 45 52 41 4c 20 20 20 20 20 20 20 20 20 20 20  TERAL           
12b0: 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49  \.    SQLITE_OMI
12c0: 54 5f 42 55 49 4c 54 49 4e 5f 54 45 53 54 20 20  T_BUILTIN_TEST  
12d0: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53           \.    S
12e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 20  QLITE_OMIT_CAST 
12f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1300: 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f    \.    SQLITE_O
1310: 4d 49 54 5f 43 48 45 43 4b 20 20 20 20 20 20 20  MIT_CHECK       
1320: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
1330: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d   SQLITE_OMIT_COM
1340: 50 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 20  PLETE           
1350: 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45      \.    SQLITE
1360: 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53  _OMIT_COMPOUND_S
1370: 45 4c 45 43 54 20 20 20 20 20 20 20 20 5c 0a 20  ELECT        \. 
1380: 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43     SQLITE_OMIT_C
1390: 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 20 20  ONFLICT_CLAUSE  
13a0: 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49        \.    SQLI
13b0: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
13c0: 5f 46 55 4e 43 53 20 20 20 20 20 20 20 20 20 5c  _FUNCS         \
13d0: 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .    SQLITE_OMIT
13e0: 5f 44 45 43 4c 54 59 50 45 20 20 20 20 20 20 20  _DECLTYPE       
13f0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51          \.    SQ
1400: 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f  LITE_OMIT_DISKIO
1410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1420: 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d   \.    SQLITE_OM
1430: 49 54 5f 45 58 50 4c 41 49 4e 20 20 20 20 20 20  IT_EXPLAIN      
1440: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
1450: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47  SQLITE_OMIT_FLAG
1460: 5f 50 52 41 47 4d 41 53 20 20 20 20 20 20 20 20  _PRAGMAS        
1470: 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f     \.    SQLITE_
1480: 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f  OMIT_FLOATING_PO
1490: 49 4e 54 20 20 20 20 20 20 20 20 20 5c 0a 20 20  INT         \.  
14a0: 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f    SQLITE_OMIT_FO
14b0: 52 45 49 47 4e 5f 4b 45 59 20 20 20 20 20 20 20  REIGN_KEY       
14c0: 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54       \.    SQLIT
14d0: 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45  E_OMIT_GET_TABLE
14e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
14f0: 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f      SQLITE_OMIT_
1500: 47 4c 4f 42 41 4c 52 45 43 4f 56 45 52 20 20 20  GLOBALRECOVER   
1510: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c         \.    SQL
1520: 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f  ITE_OMIT_INCRBLO
1530: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  B               
1540: 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49  \.    SQLITE_OMI
1550: 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  T_INTEGRITY_CHEC
1560: 4b 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53  K        \.    S
1570: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f  QLITE_OMIT_LIKE_
1580: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 20 20 20 20  OPTIMIZATION    
1590: 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f    \.    SQLITE_O
15a0: 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  MIT_LOAD_EXTENSI
15b0: 4f 4e 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20  ON         \.   
15c0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43   SQLITE_OMIT_LOC
15d0: 41 4c 54 49 4d 45 20 20 20 20 20 20 20 20 20 20  ALTIME          
15e0: 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45      \.    SQLITE
15f0: 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 20 20  _OMIT_MEMORYDB  
1600: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
1610: 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f     SQLITE_OMIT_O
1620: 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 20 20  R_OPTIMIZATION  
1630: 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49        \.    SQLI
1640: 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
1650: 41 47 4d 41 53 20 20 20 20 20 20 20 20 20 20 5c  AGMAS          \
1660: 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .    SQLITE_OMIT
1670: 5f 50 41 52 53 45 52 20 20 20 20 20 20 20 20 20  _PARSER         
1680: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51          \.    SQ
1690: 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41  LITE_OMIT_PRAGMA
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d   \.    SQLITE_OM
16c0: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
16d0: 42 41 43 4b 20 20 20 20 20 20 5c 0a 20 20 20 20  BACK      \.    
16e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43  SQLITE_OMIT_QUIC
16f0: 4b 42 41 4c 41 4e 43 45 20 20 20 20 20 20 20 20  KBALANCE        
1700: 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f     \.    SQLITE_
1710: 4f 4d 49 54 5f 52 45 49 4e 44 45 58 20 20 20 20  OMIT_REINDEX    
1720: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
1730: 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43    SQLITE_OMIT_SC
1740: 48 45 4d 41 5f 50 52 41 47 4d 41 53 20 20 20 20  HEMA_PRAGMAS    
1750: 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54       \.    SQLIT
1760: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45  E_OMIT_SCHEMA_VE
1770: 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 20 5c 0a  RSION_PRAGMAS \.
1780: 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f      SQLITE_OMIT_
1790: 53 48 41 52 45 44 5f 43 41 43 48 45 20 20 20 20  SHARED_CACHE    
17a0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c         \.    SQL
17b0: 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52  ITE_OMIT_SUBQUER
17c0: 59 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  Y               
17d0: 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49  \.    SQLITE_OMI
17e0: 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 20 20  T_TCL_VARIABLE  
17f0: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53           \.    S
1800: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44  QLITE_OMIT_TEMPD
1810: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  B               
1820: 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f    \.    SQLITE_O
1830: 4d 49 54 5f 54 52 41 43 45 20 20 20 20 20 20 20  MIT_TRACE       
1840: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20             \.   
1850: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49   SQLITE_OMIT_TRI
1860: 47 47 45 52 20 20 20 20 20 20 20 20 20 20 20 20  GGER            
1870: 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49 54 45      \.    SQLITE
1880: 5f 4f 4d 49 54 5f 55 54 46 31 36 20 20 20 20 20  _OMIT_UTF16     
1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
18a0: 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56     SQLITE_OMIT_V
18b0: 41 43 55 55 4d 20 20 20 20 20 20 20 20 20 20 20  ACUUM           
18c0: 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51 4c 49        \.    SQLI
18d0: 54 45 5f 4f 4d 49 54 5f 56 49 45 57 20 20 20 20  TE_OMIT_VIEW    
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
18f0: 0a 20 20 20 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .    SQLITE_OMIT
1900: 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 20 20 20  _VIRTUALTABLE   
1910: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 53 51          \.    SQ
1920: 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f  LITE_OMIT_XFER_O
1930: 50 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20  PT              
1940: 20 5c 0a 20 20 5d 0a 0a 20 20 23 20 50 72 6f 63   \.  ]..  # Proc
1950: 65 73 73 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 20  ess any command 
1960: 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 2e 0a 20 20  line options..  
1970: 70 72 6f 63 65 73 73 5f 6f 70 74 69 6f 6e 73 20  process_options 
1980: 24 61 72 67 76 0a 20 20 0a 20 20 23 20 46 69 72  $argv.  .  # Fir
1990: 73 74 20 74 72 79 20 61 20 74 65 73 74 20 77 69  st try a test wi
19a0: 74 68 20 61 6c 6c 20 4f 4d 49 54 20 73 79 6d 62  th all OMIT symb
19b0: 6f 6c 73 20 65 78 63 65 70 74 20 53 51 4c 49 54  ols except SQLIT
19c0: 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f  E_OMIT_FLOATING_
19d0: 50 4f 49 4e 54 20 0a 20 20 23 20 61 6e 64 20 53  POINT .  # and S
19e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d  QLITE_OMIT_PRAGM
19f0: 41 20 64 65 66 69 6e 65 64 2e 20 54 68 65 20 66  A defined. The f
1a00: 6f 72 6d 65 72 20 64 6f 65 73 6e 27 74 20 77 6f  ormer doesn't wo
1a10: 72 6b 20 28 63 61 75 73 65 73 20 73 65 67 66 61  rk (causes segfa
1a20: 75 6c 74 73 29 0a 20 20 23 20 61 6e 64 20 74 68  ults).  # and th
1a30: 65 20 6c 61 74 74 65 72 20 69 73 20 63 75 72 72  e latter is curr
1a40: 65 6e 74 6c 79 20 69 6e 63 6f 6d 70 61 74 69 62  ently incompatib
1a50: 6c 65 20 77 69 74 68 20 74 68 65 20 74 65 73 74  le with the test
1a60: 20 73 75 69 74 65 20 28 74 68 69 73 20 73 68 6f   suite (this sho
1a70: 75 6c 64 0a 20 20 23 20 62 65 20 66 69 78 65 64  uld.  # be fixed
1a80: 2c 20 62 75 74 20 69 74 20 77 69 6c 6c 20 62 65  , but it will be
1a90: 20 61 20 6c 6f 74 20 6f 66 20 77 6f 72 6b 29 2e   a lot of work).
1aa0: 0a 20 20 73 65 74 20 61 6c 6c 73 79 6d 73 20 5b  .  set allsyms [
1ab0: 6c 69 73 74 5d 0a 20 20 66 6f 72 65 61 63 68 20  list].  foreach 
1ac0: 73 20 24 3a 3a 53 59 4d 42 4f 4c 53 20 7b 0a 20  s $::SYMBOLS {. 
1ad0: 20 20 20 69 66 20 7b 24 73 21 3d 22 53 51 4c 49     if {$s!="SQLI
1ae0: 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47  TE_OMIT_FLOATING
1af0: 5f 50 4f 49 4e 54 22 20 26 26 20 24 73 21 3d 22  _POINT" && $s!="
1b00: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47  SQLITE_OMIT_PRAG
1b10: 4d 41 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70  MA"} {.      lap
1b20: 70 65 6e 64 20 61 6c 6c 73 79 6d 73 20 24 73 0a  pend allsyms $s.
1b30: 20 20 20 20 7d 0a 20 20 7d 0a 20 20 72 75 6e 5f      }.  }.  run_
1b40: 71 75 69 63 6b 5f 74 65 73 74 20 74 65 73 74 5f  quick_test test_
1b50: 4f 4d 49 54 5f 45 56 45 52 59 54 48 49 4e 47 20  OMIT_EVERYTHING 
1b60: 24 61 6c 6c 73 79 6d 73 0a 0a 20 20 23 20 4e 6f  $allsyms..  # No
1b70: 77 20 74 72 79 20 6f 6e 65 20 71 75 69 63 6b 2e  w try one quick.
1b80: 74 65 73 74 20 77 69 74 68 20 65 61 63 68 20 6f  test with each o
1b90: 66 20 74 68 65 20 4f 4d 49 54 20 73 79 6d 62 6f  f the OMIT symbo
1ba0: 6c 73 20 64 65 66 69 6e 65 64 2e 20 49 6e 63 6c  ls defined. Incl
1bb0: 75 64 65 64 0a 20 20 23 20 61 72 65 20 74 68 65  uded.  # are the
1bc0: 20 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50   OMIT_FLOATING_P
1bd0: 4f 49 4e 54 20 61 6e 64 20 4f 4d 49 54 5f 50 52  OINT and OMIT_PR
1be0: 41 47 4d 41 20 73 79 6d 62 6f 6c 73 2c 20 65 76  AGMA symbols, ev
1bf0: 65 6e 20 74 68 6f 75 67 68 20 77 65 0a 20 20 23  en though we.  #
1c00: 20 6b 6e 6f 77 20 74 68 65 79 20 77 69 6c 6c 20   know they will 
1c10: 66 61 69 6c 2e 20 49 74 27 73 20 67 6f 6f 64 20  fail. It's good 
1c20: 74 6f 20 62 65 20 72 65 6d 69 6e 64 65 64 20 6f  to be reminded o
1c30: 66 20 74 68 69 73 20 66 72 6f 6d 20 74 69 6d 65  f this from time
1c40: 20 74 6f 20 74 69 6d 65 2e 0a 20 20 66 6f 72 65   to time..  fore
1c50: 61 63 68 20 73 79 6d 20 24 3a 3a 53 59 4d 42 4f  ach sym $::SYMBO
1c60: 4c 53 20 7b 0a 20 20 20 20 73 65 74 20 64 69 72  LS {.    set dir
1c70: 6e 61 6d 65 20 22 74 65 73 74 5f 5b 73 74 72 69  name "test_[stri
1c80: 6e 67 20 72 61 6e 67 65 20 24 73 79 6d 20 37 20  ng range $sym 7 
1c90: 65 6e 64 5d 22 0a 20 20 20 20 72 75 6e 5f 71 75  end]".    run_qu
1ca0: 69 63 6b 5f 74 65 73 74 20 24 64 69 72 6e 61 6d  ick_test $dirnam
1cb0: 65 20 24 73 79 6d 0a 20 20 7d 0a 7d 0a 0a 6d 61  e $sym.  }.}..ma
1cc0: 69 6e 20 24 61 72 67 76 0a                       in $argv.