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

Artifact 54c21a842ad01f93f8e82d5a35e68eb880d7318f1015a03f5098b08192e42d2f:


0000: 23 2f 62 69 6e 2f 73 68 0a 23 0a 23 20 52 75 6e  #/bin/sh.#.# Run
0010: 20 74 68 69 73 20 73 63 72 69 70 74 20 69 6e 20   this script in 
0020: 61 20 64 69 72 65 63 74 6f 72 79 20 77 69 74 68  a directory with
0030: 20 61 20 77 6f 72 6b 69 6e 67 20 6d 61 6b 65 66   a working makef
0040: 69 6c 65 20 74 6f 20 63 68 65 63 6b 20 66 6f 72  ile to check for
0050: 20 0a 23 20 63 6f 6d 70 69 6c 65 72 20 77 61 72   .# compiler war
0060: 6e 69 6e 67 73 20 69 6e 20 53 51 4c 69 74 65 2e  nings in SQLite.
0070: 0a 23 0a 0a 69 66 20 75 6e 61 6d 65 20 7c 20 67  .#..if uname | g
0080: 72 65 70 20 2d 69 20 6f 70 65 6e 62 73 64 20 3b  rep -i openbsd ;
0090: 20 74 68 65 6e 0a 20 20 23 20 55 73 65 20 74 68   then.  # Use th
00a0: 65 73 65 20 66 6f 72 20 74 65 73 74 69 6e 67 20  ese for testing 
00b0: 6f 6e 20 4f 70 65 6e 42 53 44 3a 0a 20 20 57 41  on OpenBSD:.  WA
00c0: 52 4e 49 4e 47 5f 4f 50 54 53 3d 2d 57 61 6c 6c  RNING_OPTS=-Wall
00d0: 0a 20 20 57 41 52 4e 49 4e 47 5f 41 4e 44 52 4f  .  WARNING_ANDRO
00e0: 49 44 5f 4f 50 54 53 3d 2d 57 61 6c 6c 0a 65 6c  ID_OPTS=-Wall.el
00f0: 73 65 0a 20 20 23 20 55 73 65 20 74 68 65 73 65  se.  # Use these
0100: 20 66 6f 72 20 74 65 73 74 69 6e 67 20 6f 6e 20   for testing on 
0110: 4c 69 6e 75 78 20 61 6e 64 20 4d 61 63 20 4f 53  Linux and Mac OS
0120: 58 3a 0a 20 20 57 41 52 4e 49 4e 47 5f 4f 50 54  X:.  WARNING_OPT
0130: 53 3d 22 2d 57 73 68 61 64 6f 77 20 2d 57 61 6c  S="-Wshadow -Wal
0140: 6c 20 2d 57 65 78 74 72 61 20 2d 70 65 64 61 6e  l -Wextra -pedan
0150: 74 69 63 2d 65 72 72 6f 72 73 20 2d 57 6e 6f 2d  tic-errors -Wno-
0160: 6c 6f 6e 67 2d 6c 6f 6e 67 22 0a 20 20 57 41 52  long-long".  WAR
0170: 4e 49 4e 47 5f 41 4e 44 52 4f 49 44 5f 4f 50 54  NING_ANDROID_OPT
0180: 53 3d 22 2d 57 73 68 61 64 6f 77 20 2d 57 61 6c  S="-Wshadow -Wal
0190: 6c 20 2d 57 65 78 74 72 61 22 0a 66 69 0a 0a 72  l -Wextra".fi..r
01a0: 6d 20 2d 66 20 73 71 6c 69 74 65 33 2e 63 0a 6d  m -f sqlite3.c.m
01b0: 61 6b 65 20 73 71 6c 69 74 65 33 2e 63 0a 65 63  ake sqlite3.c.ec
01c0: 68 6f 20 27 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 4e  ho '********** N
01d0: 6f 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e  o optimizations.
01e0: 20 20 49 6e 63 6c 75 64 65 73 20 46 54 53 34 2f    Includes FTS4/
01f0: 35 2c 20 47 45 4f 50 4c 4f 59 2c 20 4a 53 4f 4e  5, GEOPLOY, JSON
0200: 31 20 2a 2a 2a 27 0a 65 63 68 6f 20 27 2a 2a 2a  1 ***'.echo '***
0210: 2a 2a 2a 2a 2a 2a 2a 20 20 20 20 27 20 4f 70 74  *******    ' Opt
0220: 69 6f 6e 73 3a 20 24 57 41 52 4e 49 4e 47 5f 4f  ions: $WARNING_O
0230: 50 54 53 0a 67 63 63 20 2d 63 20 24 57 41 52 4e  PTS.gcc -c $WARN
0240: 49 4e 47 5f 4f 50 54 53 20 2d 73 74 64 3d 63 38  ING_OPTS -std=c8
0250: 39 20 5c 0a 20 20 20 20 20 20 2d 61 6e 73 69 20  9 \.      -ansi 
0260: 2d 44 48 41 56 45 5f 53 54 44 49 4e 54 5f 48 20  -DHAVE_STDINT_H 
0270: 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  -DSQLITE_ENABLE_
0280: 46 54 53 34 20 2d 44 53 51 4c 49 54 45 5f 45 4e  FTS4 -DSQLITE_EN
0290: 41 42 4c 45 5f 47 45 4f 50 4f 4c 59 20 5c 0a 20  ABLE_GEOPOLY \. 
02a0: 20 20 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e       -DSQLITE_EN
02b0: 41 42 4c 45 5f 46 54 53 35 20 2d 44 53 51 4c 49  ABLE_FTS5 -DSQLI
02c0: 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f 4e 31 20  TE_ENABLE_JSON1 
02d0: 5c 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33 2e  \.      sqlite3.
02e0: 63 0a 69 66 20 74 65 73 74 20 78 60 75 6e 61 6d  c.if test x`unam
02f0: 65 60 20 3d 20 27 78 4c 69 6e 75 78 27 3b 20 74  e` = 'xLinux'; t
0300: 68 65 6e 0a 65 63 68 6f 20 27 2a 2a 2a 2a 2a 2a  hen.echo '******
0310: 2a 2a 2a 2a 20 41 6e 64 72 6f 69 64 20 63 6f 6e  **** Android con
0320: 66 69 67 75 72 61 74 69 6f 6e 20 2a 2a 2a 2a 2a  figuration *****
0330: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0340: 2a 2a 2a 2a 2a 2a 2a 2a 2a 27 0a 65 63 68 6f 20  *********'.echo 
0350: 27 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 20 20 20 27  '**********    '
0360: 20 4f 70 74 69 6f 6e 73 3a 20 24 57 41 52 4e 49   Options: $WARNI
0370: 4e 47 5f 41 4e 44 52 4f 49 44 5f 4f 50 54 53 0a  NG_ANDROID_OPTS.
0380: 67 63 63 20 2d 63 20 5c 0a 20 20 2d 44 48 41 56  gcc -c \.  -DHAV
0390: 45 5f 55 53 4c 45 45 50 3d 31 20 5c 0a 20 20 2d  E_USLEEP=1 \.  -
03a0: 44 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e  DSQLITE_HAVE_ISN
03b0: 41 4e 20 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f  AN \.  -DSQLITE_
03c0: 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f  DEFAULT_JOURNAL_
03d0: 53 49 5a 45 5f 4c 49 4d 49 54 3d 31 30 34 38 35  SIZE_LIMIT=10485
03e0: 37 36 20 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f  76 \.  -DSQLITE_
03f0: 54 48 52 45 41 44 53 41 46 45 3d 32 20 5c 0a 20  THREADSAFE=2 \. 
0400: 20 2d 44 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53   -DSQLITE_TEMP_S
0410: 54 4f 52 45 3d 33 20 5c 0a 20 20 2d 44 53 51 4c  TORE=3 \.  -DSQL
0420: 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  ITE_POWERSAFE_OV
0430: 45 52 57 52 49 54 45 3d 31 20 5c 0a 20 20 2d 44  ERWRITE=1 \.  -D
0440: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46  SQLITE_DEFAULT_F
0450: 49 4c 45 5f 46 4f 52 4d 41 54 3d 34 20 5c 0a 20  ILE_FORMAT=4 \. 
0460: 20 2d 44 53 51 4c 49 54 45 5f 44 45 46 41 55 4c   -DSQLITE_DEFAUL
0470: 54 5f 41 55 54 4f 56 41 43 55 55 4d 3d 31 20 5c  T_AUTOVACUUM=1 \
0480: 0a 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42  .  -DSQLITE_ENAB
0490: 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45  LE_MEMORY_MANAGE
04a0: 4d 45 4e 54 3d 31 20 5c 0a 20 20 2d 44 53 51 4c  MENT=1 \.  -DSQL
04b0: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 20  ITE_ENABLE_FTS3 
04c0: 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41  \.  -DSQLITE_ENA
04d0: 42 4c 45 5f 46 54 53 33 5f 42 41 43 4b 57 41 52  BLE_FTS3_BACKWAR
04e0: 44 53 20 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f  DS \.  -DSQLITE_
04f0: 45 4e 41 42 4c 45 5f 46 54 53 34 20 5c 0a 20 20  ENABLE_FTS4 \.  
0500: 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 55  -DSQLITE_OMIT_BU
0510: 49 4c 54 49 4e 5f 54 45 53 54 20 5c 0a 20 20 2d  ILTIN_TEST \.  -
0520: 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d  DSQLITE_OMIT_COM
0530: 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53  PILEOPTION_DIAGS
0540: 20 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f 4f 4d   \.  -DSQLITE_OM
0550: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
0560: 4e 20 5c 0a 20 20 2d 44 53 51 4c 49 54 45 5f 44  N \.  -DSQLITE_D
0570: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d  EFAULT_FILE_PERM
0580: 49 53 53 49 4f 4e 53 3d 30 36 30 30 20 5c 0a 20  ISSIONS=0600 \. 
0590: 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45   -DSQLITE_ENABLE
05a0: 5f 49 43 55 20 5c 0a 20 20 2d 44 55 53 45 5f 50  _ICU \.  -DUSE_P
05b0: 52 45 41 44 36 34 20 5c 0a 20 20 24 57 41 52 4e  READ64 \.  $WARN
05c0: 49 4e 47 5f 41 4e 44 52 4f 49 44 5f 4f 50 54 53  ING_ANDROID_OPTS
05d0: 20 5c 0a 20 20 2d 4f 73 20 73 71 6c 69 74 65 33   \.  -Os sqlite3
05e0: 2e 63 20 73 68 65 6c 6c 2e 63 0a 66 69 0a 65 63  .c shell.c.fi.ec
05f0: 68 6f 20 27 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 4e  ho '********** N
0600: 6f 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e  o optimizations.
0610: 20 45 4e 41 42 4c 45 5f 53 54 41 54 34 2e 20 54   ENABLE_STAT4. T
0620: 48 52 45 41 44 53 41 46 45 3d 30 20 2a 2a 2a 2a  HREADSAFE=0 ****
0630: 2a 2a 2a 27 0a 65 63 68 6f 20 27 2a 2a 2a 2a 2a  ***'.echo '*****
0640: 2a 2a 2a 2a 2a 20 20 20 20 27 20 4f 70 74 69 6f  *****    ' Optio
0650: 6e 73 3a 20 24 57 41 52 4e 49 4e 47 5f 4f 50 54  ns: $WARNING_OPT
0660: 53 0a 67 63 63 20 2d 63 20 24 57 41 52 4e 49 4e  S.gcc -c $WARNIN
0670: 47 5f 4f 50 54 53 20 2d 73 74 64 3d 63 38 39 20  G_OPTS -std=c89 
0680: 5c 0a 20 20 20 20 20 20 2d 61 6e 73 69 20 2d 44  \.      -ansi -D
0690: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
06a0: 41 54 34 20 2d 44 53 51 4c 49 54 45 5f 54 48 52  AT4 -DSQLITE_THR
06b0: 45 41 44 53 41 46 45 3d 30 20 5c 0a 20 20 20 20  EADSAFE=0 \.    
06c0: 20 20 73 71 6c 69 74 65 33 2e 63 0a 65 63 68 6f    sqlite3.c.echo
06d0: 20 27 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 4f 70 74   '********** Opt
06e0: 69 6d 69 7a 65 64 20 2d 4f 33 2e 20 20 49 6e 63  imized -O3.  Inc
06f0: 6c 75 64 65 73 20 46 54 53 34 2f 35 2c 20 47 45  ludes FTS4/5, GE
0700: 4f 50 4c 4f 59 2c 20 4a 53 4f 4e 31 20 2a 2a 2a  OPLOY, JSON1 ***
0710: 2a 2a 2a 27 0a 65 63 68 6f 20 27 2a 2a 2a 2a 2a  ***'.echo '*****
0720: 2a 2a 2a 2a 2a 20 20 20 20 27 20 4f 70 74 69 6f  *****    ' Optio
0730: 6e 73 3a 20 24 57 41 52 4e 49 4e 47 5f 4f 50 54  ns: $WARNING_OPT
0740: 53 0a 67 63 63 20 2d 4f 33 20 2d 63 20 24 57 41  S.gcc -O3 -c $WA
0750: 52 4e 49 4e 47 5f 4f 50 54 53 20 2d 73 74 64 3d  RNING_OPTS -std=
0760: 63 38 39 20 5c 0a 20 20 20 20 20 20 2d 61 6e 73  c89 \.      -ans
0770: 69 20 2d 44 48 41 56 45 5f 53 54 44 49 4e 54 5f  i -DHAVE_STDINT_
0780: 48 20 2d 44 53 51 4c 49 54 45 5f 45 4e 41 42 4c  H -DSQLITE_ENABL
0790: 45 5f 46 54 53 34 20 2d 44 53 51 4c 49 54 45 5f  E_FTS4 -DSQLITE_
07a0: 45 4e 41 42 4c 45 5f 47 45 4f 50 4c 4f 59 20 5c  ENABLE_GEOPLOY \
07b0: 0a 20 20 20 20 20 20 2d 44 53 51 4c 49 54 45 5f  .      -DSQLITE_
07c0: 45 4e 41 42 4c 45 5f 46 54 53 35 20 2d 44 53 51  ENABLE_FTS5 -DSQ
07d0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f 4e  LITE_ENABLE_JSON
07e0: 31 20 5c 0a 20 20 20 20 20 20 73 71 6c 69 74 65  1 \.      sqlite
07f0: 33 2e 63 0a                                      3.c.