0000: 23 20 53 79 73 74 65 6d 20 61 75 74 6f 63 6f 6e # System autocon
0010: 66 69 67 75 72 61 74 69 6f 6e 2e 20 54 72 79 3a figuration. Try:
0020: 20 2e 2f 63 6f 6e 66 69 67 75 72 65 20 2d 2d 68 ./configure --h
0030: 65 6c 70 0a 0a 23 20 54 68 69 73 20 6d 75 73 74 elp..# This must
0040: 20 62 65 20 61 62 6f 76 65 20 22 6f 70 74 69 6f be above "optio
0050: 6e 73 22 20 62 65 6c 6f 77 20 62 65 63 61 75 73 ns" below becaus
0060: 65 20 69 74 20 69 6d 70 6c 69 63 69 74 6c 79 20 e it implicitly
0070: 62 72 69 6e 67 73 20 69 6e 20 74 68 65 0a 23 20 brings in the.#
0080: 64 65 66 61 75 6c 74 20 41 75 74 6f 73 65 74 75 default Autosetu
0090: 70 20 6f 70 74 69 6f 6e 73 2c 20 74 68 69 6e 67 p options, thing
00a0: 73 20 6c 69 6b 65 20 2d 2d 70 72 65 66 69 78 2e s like --prefix.
00b0: 0a 75 73 65 20 63 63 20 63 63 2d 6c 69 62 0a 0a .use cc cc-lib..
00c0: 6f 70 74 69 6f 6e 73 20 7b 0a 20 20 20 20 77 69 options {. wi
00d0: 74 68 2d 6f 70 65 6e 73 73 6c 3a 70 61 74 68 7c th-openssl:path|
00e0: 61 75 74 6f 7c 74 72 65 65 7c 6e 6f 6e 65 0a 20 auto|tree|none.
00f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0100: 20 20 20 20 20 20 20 20 3d 3e 20 7b 4c 6f 6f 6b => {Look
0110: 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 69 6e 20 for OpenSSL in
0120: 74 68 65 20 67 69 76 65 6e 20 70 61 74 68 2c 20 the given path,
0130: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 20 69 automatically, i
0140: 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65 n the source tre
0150: 65 2c 20 6f 72 20 6e 6f 6e 65 7d 0a 20 20 20 20 e, or none}.
0160: 77 69 74 68 2d 7a 6c 69 62 3a 70 61 74 68 7c 61 with-zlib:path|a
0170: 75 74 6f 7c 74 72 65 65 0a 20 20 20 20 20 20 20 uto|tree.
0180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0190: 20 20 3d 3e 20 7b 4c 6f 6f 6b 20 66 6f 72 20 7a => {Look for z
01a0: 6c 69 62 20 69 6e 20 74 68 65 20 67 69 76 65 6e lib in the given
01b0: 20 70 61 74 68 2c 20 61 75 74 6f 6d 61 74 69 63 path, automatic
01c0: 61 6c 6c 79 2c 20 6f 72 20 69 6e 20 74 68 65 20 ally, or in the
01d0: 73 6f 75 72 63 65 20 74 72 65 65 7d 0a 20 20 20 source tree}.
01e0: 20 77 69 74 68 2d 73 71 6c 69 74 65 3a 70 61 74 with-sqlite:pat
01f0: 68 7c 61 75 74 6f 7c 74 72 65 65 0a 20 20 20 20 h|auto|tree.
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0210: 20 20 20 20 20 3d 3e 20 7b 4c 6f 6f 6b 20 66 6f => {Look fo
0220: 72 20 73 71 6c 69 74 65 20 69 6e 20 74 68 65 20 r sqlite in the
0230: 67 69 76 65 6e 20 70 61 74 68 2c 20 61 75 74 6f given path, auto
0240: 6d 61 74 69 63 61 6c 6c 79 2c 20 6f 72 20 69 6e matically, or in
0250: 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65 65 the source tree
0260: 2e 7d 0a 20 20 20 20 77 69 74 68 2d 65 78 65 63 .}. with-exec
0270: 2d 72 65 6c 2d 70 61 74 68 73 3d 30 0a 20 20 20 -rel-paths=0.
0280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0290: 20 20 20 20 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 => {Enable
02a0: 20 72 65 6c 61 74 69 76 65 20 70 61 74 68 73 20 relative paths
02b0: 66 6f 72 20 65 78 74 65 72 6e 61 6c 20 64 69 66 for external dif
02c0: 66 2f 67 64 69 66 66 7d 0a 20 20 20 20 77 69 74 f/gdiff}. wit
02d0: 68 2d 73 61 6e 69 74 69 7a 65 72 3a 20 20 20 20 h-sanitizer:
02e0: 20 20 3d 3e 20 7b 42 75 69 6c 64 20 77 69 74 68 => {Build with
02f0: 20 43 20 63 6f 6d 70 69 6c 65 72 27 73 20 2d 66 C compiler's -f
0300: 73 61 6e 69 74 69 7a 65 3d 4c 49 53 54 3b 20 65 sanitize=LIST; e
0310: 2e 67 2e 20 61 64 64 72 65 73 73 2c 65 6e 75 6d .g. address,enum
0320: 2c 6e 75 6c 6c 2c 75 6e 64 65 66 69 6e 65 64 7d ,null,undefined}
0330: 0a 20 20 20 20 77 69 74 68 2d 74 68 31 2d 64 6f . with-th1-do
0340: 63 73 3d 30 20 20 20 20 20 20 3d 3e 20 7b 45 6e cs=0 => {En
0350: 61 62 6c 65 20 54 48 31 20 66 6f 72 20 65 6d 62 able TH1 for emb
0360: 65 64 64 65 64 20 64 6f 63 75 6d 65 6e 74 61 74 edded documentat
0370: 69 6f 6e 20 70 61 67 65 73 7d 0a 20 20 20 20 77 ion pages}. w
0380: 69 74 68 2d 74 68 31 2d 68 6f 6f 6b 73 3d 30 20 ith-th1-hooks=0
0390: 20 20 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 54 => {Enable T
03a0: 48 31 20 68 6f 6f 6b 73 20 66 6f 72 20 63 6f 6d H1 hooks for com
03b0: 6d 61 6e 64 73 20 61 6e 64 20 77 65 62 20 70 61 mands and web pa
03c0: 67 65 73 7d 0a 20 20 20 20 77 69 74 68 2d 74 63 ges}. with-tc
03d0: 6c 3a 70 61 74 68 20 20 20 20 20 20 20 20 3d 3e l:path =>
03e0: 20 7b 45 6e 61 62 6c 65 20 54 63 6c 20 69 6e 74 {Enable Tcl int
03f0: 65 67 72 61 74 69 6f 6e 2c 20 77 69 74 68 20 54 egration, with T
0400: 63 6c 20 69 6e 20 74 68 65 20 73 70 65 63 69 66 cl in the specif
0410: 69 65 64 20 70 61 74 68 7d 0a 20 20 20 20 77 69 ied path}. wi
0420: 74 68 2d 74 63 6c 2d 73 74 75 62 73 3d 30 20 20 th-tcl-stubs=0
0430: 20 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 54 63 => {Enable Tc
0440: 6c 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 76 69 l integration vi
0450: 61 20 73 74 75 62 73 20 6c 69 62 72 61 72 79 20 a stubs library
0460: 6d 65 63 68 61 6e 69 73 6d 7d 0a 20 20 20 20 77 mechanism}. w
0470: 69 74 68 2d 74 63 6c 2d 70 72 69 76 61 74 65 2d ith-tcl-private-
0480: 73 74 75 62 73 3d 30 0a 20 20 20 20 20 20 20 20 stubs=0.
0490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
04a0: 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 54 63 6c 20 => {Enable Tcl
04b0: 69 6e 74 65 67 72 61 74 69 6f 6e 20 76 69 61 20 integration via
04c0: 70 72 69 76 61 74 65 20 73 74 75 62 73 20 6d 65 private stubs me
04d0: 63 68 61 6e 69 73 6d 7d 0a 20 20 20 20 77 69 74 chanism}. wit
04e0: 68 2d 6d 6d 61 6e 3d 30 20 20 20 20 20 20 20 20 h-mman=0
04f0: 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 75 73 65 => {Enable use
0500: 20 6f 66 20 50 4f 53 49 58 20 6d 65 6d 6f 72 79 of POSIX memory
0510: 20 41 50 49 73 20 66 72 6f 6d 20 22 73 79 73 2f APIs from "sys/
0520: 6d 6d 61 6e 2e 68 22 7d 0a 20 20 20 20 77 69 74 mman.h"}. wit
0530: 68 2d 73 65 65 3d 30 20 20 20 20 20 20 20 20 20 h-see=0
0540: 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 74 68 65 => {Enable the
0550: 20 53 51 4c 69 74 65 20 45 6e 63 72 79 70 74 69 SQLite Encrypti
0560: 6f 6e 20 45 78 74 65 6e 73 69 6f 6e 20 28 53 45 on Extension (SE
0570: 45 29 7d 0a 20 20 20 20 70 72 69 6e 74 2d 6d 69 E)}. print-mi
0580: 6e 69 6d 75 6d 2d 73 71 6c 69 74 65 2d 76 65 72 nimum-sqlite-ver
0590: 73 69 6f 6e 3d 30 0a 20 20 20 20 20 20 20 20 20 sion=0.
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
05b0: 3d 3e 20 7b 70 72 69 6e 74 20 74 68 65 20 6d 69 => {print the mi
05c0: 6e 69 6d 75 6d 20 53 51 4c 69 74 65 20 76 65 72 nimum SQLite ver
05d0: 73 69 6f 6e 20 6e 75 6d 62 65 72 20 72 65 71 75 sion number requ
05e0: 69 72 65 64 2c 20 61 6e 64 20 65 78 69 74 7d 0a ired, and exit}.
05f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 2d 73 71 6c internal-sql
0600: 69 74 65 3d 31 20 20 20 20 3d 3e 20 7b 44 6f 6e ite=1 => {Don
0610: 27 74 20 75 73 65 20 74 68 65 20 69 6e 74 65 72 't use the inter
0620: 6e 61 6c 20 53 51 4c 69 74 65 2c 20 75 73 65 20 nal SQLite, use
0630: 74 68 65 20 73 79 73 74 65 6d 20 6f 6e 65 7d 0a the system one}.
0640: 20 20 20 20 73 74 61 74 69 63 3d 30 20 20 20 20 static=0
0650: 20 20 20 20 20 20 20 20 20 3d 3e 20 7b 4c 69 6e => {Lin
0660: 6b 20 61 20 73 74 61 74 69 63 20 65 78 65 63 75 k a static execu
0670: 74 61 62 6c 65 7d 0a 20 20 20 20 66 75 73 65 66 table}. fusef
0680: 73 3d 31 20 20 20 20 20 20 20 20 20 20 20 20 20 s=1
0690: 3d 3e 20 7b 44 69 73 61 62 6c 65 20 74 68 65 20 => {Disable the
06a0: 46 75 73 65 20 46 69 6c 65 73 79 73 74 65 6d 7d Fuse Filesystem}
06b0: 0a 20 20 20 20 66 6f 73 73 69 6c 2d 64 65 62 75 . fossil-debu
06c0: 67 3d 30 20 20 20 20 20 20 20 3d 3e 20 7b 42 75 g=0 => {Bu
06d0: 69 6c 64 20 77 69 74 68 20 66 6f 73 73 69 6c 20 ild with fossil
06e0: 64 65 62 75 67 67 69 6e 67 20 65 6e 61 62 6c 65 debugging enable
06f0: 64 7d 0a 20 20 20 20 6e 6f 2d 6f 70 74 3d 30 20 d}. no-opt=0
0700: 20 20 20 20 20 20 20 20 20 20 20 20 3d 3e 20 7b => {
0710: 42 75 69 6c 64 20 77 69 74 68 6f 75 74 20 6f 70 Build without op
0720: 74 69 6d 69 7a 61 74 69 6f 6e 7d 0a 20 20 20 20 timization}.
0730: 6a 73 6f 6e 3d 30 20 20 20 20 20 20 20 20 20 20 json=0
0740: 20 20 20 20 20 3d 3e 20 7b 42 75 69 6c 64 20 77 => {Build w
0750: 69 74 68 20 66 6f 73 73 69 6c 20 4a 53 4f 4e 20 ith fossil JSON
0760: 41 50 49 20 65 6e 61 62 6c 65 64 7d 0a 20 20 20 API enabled}.
0770: 20 77 69 74 68 2d 65 6d 73 64 6b 3a 70 61 74 68 with-emsdk:path
0780: 20 20 20 20 20 20 3d 3e 20 7b 44 69 72 65 63 74 => {Direct
0790: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 ory containing t
07a0: 68 65 20 45 6d 73 63 72 69 70 74 65 6e 20 53 44 he Emscripten SD
07b0: 4b 7d 0a 20 20 20 20 63 6f 6d 70 69 6c 65 2d 63 K}. compile-c
07c0: 6f 6d 6d 61 6e 64 73 3d 30 20 3d 3e 0a 20 20 20 ommands=0 =>.
07d0: 20 20 20 22 43 68 65 63 6b 20 66 6f 72 20 63 6f "Check for co
07e0: 6d 70 69 6c 65 5f 63 6f 6d 6d 61 6e 64 73 2e 6a mpile_commands.j
07f0: 73 6f 6e 20 73 75 70 70 6f 72 74 2e 22 0a 7d 0a son support.".}.
0800: 0a 23 20 55 70 64 61 74 65 20 74 68 65 20 6d 69 .# Update the mi
0810: 6e 69 6d 75 6d 20 72 65 71 75 69 72 65 64 20 53 nimum required S
0820: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 6e 75 QLite version nu
0830: 6d 62 65 72 20 68 65 72 65 2c 20 61 6e 64 20 61 mber here, and a
0840: 6c 73 6f 0a 23 20 69 6e 20 73 72 63 2f 6d 61 69 lso.# in src/mai
0850: 6e 2e 63 20 6e 65 61 72 20 74 68 65 20 73 71 6c n.c near the sql
0860: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f ite3_libversion_
0870: 6e 75 6d 62 65 72 28 29 20 63 61 6c 6c 2e 20 20 number() call.
0880: 54 61 6b 65 20 63 61 72 65 0a 23 20 74 68 61 74 Take care.# that
0890: 20 62 6f 74 68 20 70 6c 61 63 65 73 20 61 67 72 both places agr
08a0: 65 65 21 0a 64 65 66 69 6e 65 20 4d 49 4e 49 4d ee!.define MINIM
08b0: 55 4d 5f 53 51 4c 49 54 45 5f 56 45 52 53 49 4f UM_SQLITE_VERSIO
08c0: 4e 20 22 33 2e 34 36 2e 30 22 0a 0a 23 20 54 68 N "3.46.0"..# Th
08d0: 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 is is useful for
08e0: 20 70 65 6f 70 6c 65 20 77 61 6e 74 69 6e 67 20 people wanting
08f0: 46 6f 73 73 69 6c 20 74 6f 20 75 73 65 20 61 6e Fossil to use an
0900: 20 65 78 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 external SQLite
0910: 20 6c 69 62 72 61 72 79 0a 23 20 74 6f 20 63 6f library.# to co
0920: 6d 70 61 72 65 20 74 68 65 20 6f 6e 65 20 74 68 mpare the one th
0930: 65 79 20 68 61 76 65 20 61 67 61 69 6e 73 74 20 ey have against
0940: 74 68 65 20 6d 69 6e 69 6d 75 6d 20 72 65 71 75 the minimum requ
0950: 69 72 65 64 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f ired.if {[opt-bo
0960: 6f 6c 20 70 72 69 6e 74 2d 6d 69 6e 69 6d 75 6d ol print-minimum
0970: 2d 73 71 6c 69 74 65 2d 76 65 72 73 69 6f 6e 5d -sqlite-version]
0980: 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 5b 67 65 } {. puts [ge
0990: 74 2d 64 65 66 69 6e 65 20 4d 49 4e 49 4d 55 4d t-define MINIMUM
09a0: 5f 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d _SQLITE_VERSION]
09b0: 0a 20 20 20 20 65 78 69 74 20 30 0a 7d 0a 0a 73 . exit 0.}..s
09c0: 65 74 20 6f 75 74 4f 66 54 72 65 65 42 75 69 6c et outOfTreeBuil
09d0: 64 20 30 0a 69 66 20 7b 21 5b 66 69 6c 65 20 65 d 0.if {![file e
09e0: 78 69 73 74 73 20 66 6f 73 73 69 6c 2e 31 5d 7d xists fossil.1]}
09f0: 20 7b 0a 20 20 70 75 74 73 20 22 54 68 69 73 20 {. puts "This
0a00: 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 6e appears to be an
0a10: 20 6f 75 74 2d 6f 66 2d 74 72 65 65 20 62 75 69 out-of-tree bui
0a20: 6c 64 2e 22 0a 20 20 73 65 74 20 6f 75 74 4f 66 ld.". set outOf
0a30: 54 72 65 65 42 75 69 6c 64 20 31 0a 7d 0a 0a 23 TreeBuild 1.}..#
0a40: 20 73 71 6c 69 74 65 20 77 61 6e 74 73 20 74 68 sqlite wants th
0a50: 65 73 65 20 74 79 70 65 73 20 69 66 20 70 6f 73 ese types if pos
0a60: 73 69 62 6c 65 0a 63 63 2d 77 69 74 68 20 7b 2d sible.cc-with {-
0a70: 69 6e 63 6c 75 64 65 73 20 7b 73 74 64 69 6e 74 includes {stdint
0a80: 2e 68 20 69 6e 74 74 79 70 65 73 2e 68 7d 7d 20 .h inttypes.h}}
0a90: 7b 0a 20 20 20 20 63 63 2d 63 68 65 63 6b 2d 74 {. cc-check-t
0aa0: 79 70 65 73 20 75 69 6e 74 33 32 5f 74 20 75 69 ypes uint32_t ui
0ab0: 6e 74 31 36 5f 74 20 69 6e 74 31 36 5f 74 20 75 nt16_t int16_t u
0ac0: 69 6e 74 38 5f 74 0a 7d 0a 0a 23 20 55 73 65 20 int8_t.}..# Use
0ad0: 70 72 65 61 64 2f 70 77 72 69 74 65 20 73 79 73 pread/pwrite sys
0ae0: 74 65 6d 20 63 61 6c 6c 73 20 69 6e 20 70 6c 61 tem calls in pla
0af0: 63 65 20 6f 66 20 73 65 65 6b 20 2b 20 72 65 61 ce of seek + rea
0b00: 64 2f 77 72 69 74 65 20 69 66 20 70 6f 73 73 69 d/write if possi
0b10: 62 6c 65 0a 64 65 66 69 6e 65 20 55 53 45 5f 50 ble.define USE_P
0b20: 52 45 41 44 20 5b 63 63 2d 63 68 65 63 6b 2d 66 READ [cc-check-f
0b30: 75 6e 63 74 69 6f 6e 73 20 70 72 65 61 64 5d 0a unctions pread].
0b40: 0a 23 20 49 66 20 77 65 20 68 61 76 65 20 63 73 .# If we have cs
0b50: 63 6f 70 65 20 68 65 72 65 2c 20 77 65 27 6c 6c cope here, we'll
0b60: 20 75 73 65 20 69 74 20 69 6e 20 74 68 65 20 22 use it in the "
0b70: 74 61 67 73 22 20 74 61 72 67 65 74 0a 69 66 20 tags" target.if
0b80: 7b 5b 63 63 2d 63 68 65 63 6b 2d 70 72 6f 67 73 {[cc-check-progs
0b90: 20 63 73 63 6f 70 65 5d 7d 20 7b 0a 20 20 20 20 cscope]} {.
0ba0: 64 65 66 69 6e 65 20 43 4f 4c 4c 45 43 54 5f 43 define COLLECT_C
0bb0: 53 43 4f 50 45 5f 44 41 54 41 20 22 63 73 63 6f SCOPE_DATA "csco
0bc0: 70 65 20 2d 62 52 20 24 3a 3a 61 75 74 6f 73 65 pe -bR $::autose
0bd0: 74 75 70 28 73 72 63 64 69 72 29 2f 73 72 63 2f tup(srcdir)/src/
0be0: 2a 2e 5c 5b 63 68 5c 5d 22 0a 7d 20 65 6c 73 65 *.\[ch\]".} else
0bf0: 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 20 43 4f {. define CO
0c00: 4c 4c 45 43 54 5f 43 53 43 4f 50 45 5f 44 41 54 LLECT_CSCOPE_DAT
0c10: 41 20 22 22 0a 7d 0a 0a 23 20 46 69 6e 64 20 74 A "".}..# Find t
0c20: 63 6c 73 68 20 66 6f 72 20 74 68 65 20 74 65 73 clsh for the tes
0c30: 74 20 73 75 69 74 65 2e 0a 23 0a 23 20 57 65 20 t suite..#.# We
0c40: 63 61 6e 27 74 20 75 73 65 20 6a 69 6d 73 68 20 can't use jimsh
0c50: 66 6f 72 20 74 68 69 73 3a 20 74 68 65 20 74 65 for this: the te
0c60: 73 74 20 73 75 69 74 65 20 75 73 65 73 20 66 65 st suite uses fe
0c70: 61 74 75 72 65 73 20 6f 66 20 54 63 6c 20 74 68 atures of Tcl th
0c80: 61 74 0a 23 20 4a 69 6d 20 64 6f 65 73 6e 27 74 at.# Jim doesn't
0c90: 20 73 75 70 70 6f 72 74 2c 20 65 69 74 68 65 72 support, either
0ca0: 20 73 74 61 74 69 63 61 6c 6c 79 20 6f 72 20 64 statically or d
0cb0: 75 65 20 74 6f 20 74 68 65 20 77 61 79 20 69 74 ue to the way it
0cc0: 27 73 20 62 75 69 6c 74 20 62 79 0a 23 20 61 75 's built by.# au
0cd0: 74 6f 73 65 74 75 70 2e 20 20 46 6f 72 20 65 78 tosetup. For ex
0ce0: 61 6d 70 6c 65 2c 20 4a 69 6d 20 73 75 70 70 6f ample, Jim suppo
0cf0: 72 74 73 20 60 66 69 6c 65 20 6e 6f 72 6d 61 6c rts `file normal
0d00: 69 7a 65 60 2c 20 62 75 74 20 6f 6e 6c 79 20 69 ize`, but only i
0d10: 66 0a 23 20 79 6f 75 20 62 75 69 6c 64 20 69 74 f.# you build it
0d20: 20 77 69 74 68 20 48 41 56 45 5f 52 45 41 4c 50 with HAVE_REALP
0d30: 41 54 48 2c 20 77 68 69 63 68 20 77 6f 6e 27 74 ATH, which won't
0d40: 20 65 76 65 72 20 62 65 20 64 65 66 69 6e 65 64 ever be defined
0d50: 20 69 6e 20 74 68 69 73 0a 23 20 63 6f 6e 74 65 in this.# conte
0d60: 78 74 20 62 65 63 61 75 73 65 20 61 75 74 6f 73 xt because autos
0d70: 65 74 75 70 20 64 6f 65 73 6e 27 74 20 74 72 79 etup doesn't try
0d80: 20 74 6f 20 64 69 73 63 6f 76 65 72 20 70 6c 61 to discover pla
0d90: 74 66 6f 72 6d 2d 73 70 65 63 69 66 69 63 0a 23 tform-specific.#
0da0: 20 64 65 74 61 69 6c 73 20 6c 69 6b 65 20 74 68 details like th
0db0: 61 74 20 62 65 66 6f 72 65 20 69 74 20 64 65 63 at before it dec
0dc0: 69 64 65 73 20 74 6f 20 62 75 69 6c 64 20 6a 69 ides to build ji
0dd0: 6d 73 68 30 2e 20 20 42 65 73 69 64 65 73 20 77 msh0. Besides w
0de0: 68 69 63 68 2c 0a 23 20 61 75 74 6f 73 65 74 75 hich,.# autosetu
0df0: 70 20 77 6f 6e 27 74 20 62 75 69 6c 64 20 6a 69 p won't build ji
0e00: 6d 73 68 30 20 61 74 20 61 6c 6c 20 69 66 20 69 msh0 at all if i
0e10: 74 20 63 61 6e 20 66 69 6e 64 20 74 63 6c 73 68 t can find tclsh
0e20: 20 69 74 73 65 6c 66 2e 0a 23 20 49 72 6f 6e 69 itself..# Ironi
0e30: 63 61 6c 6c 79 2c 20 74 68 69 73 20 6d 65 61 6e cally, this mean
0e40: 73 20 77 65 20 6d 61 79 20 72 69 67 68 74 20 6e s we may right n
0e50: 6f 77 20 62 65 20 72 75 6e 6e 69 6e 67 20 75 6e ow be running un
0e60: 64 65 72 20 65 69 74 68 65 72 20 6a 69 6d 73 68 der either jimsh
0e70: 30 0a 23 20 6f 72 20 61 20 76 65 72 73 69 6f 6e 0.# or a version
0e80: 20 6f 66 20 74 63 6c 73 68 20 74 68 61 74 20 77 of tclsh that w
0e90: 65 20 66 69 6e 64 20 75 6e 73 75 69 74 61 62 6c e find unsuitabl
0ea0: 65 20 62 65 6c 6f 77 21 0a 63 63 2d 63 68 65 63 e below!.cc-chec
0eb0: 6b 2d 70 72 6f 67 73 20 74 63 6c 73 68 0a 73 65 k-progs tclsh.se
0ec0: 74 20 68 62 74 64 20 2f 75 73 72 2f 6c 6f 63 61 t hbtd /usr/loca
0ed0: 6c 2f 43 65 6c 6c 61 72 2f 74 63 6c 2d 74 6b 0a l/Cellar/tcl-tk.
0ee0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 65 71 75 61 if {[string equa
0ef0: 6c 20 66 61 6c 73 65 20 5b 67 65 74 2d 64 65 66 l false [get-def
0f00: 69 6e 65 20 54 43 4c 53 48 5d 5d 7d 20 7b 0a 20 ine TCLSH]]} {.
0f10: 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 57 msg-result "W
0f20: 41 52 4e 49 4e 47 3a 20 27 6d 61 6b 65 20 74 65 ARNING: 'make te
0f30: 73 74 27 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e st' will not run
0f40: 20 68 65 72 65 2e 22 0a 7d 20 65 6c 73 65 20 7b here.".} else {
0f50: 0a 20 20 20 20 73 65 74 20 76 20 5b 65 78 65 63 . set v [exec
0f60: 20 2f 62 69 6e 2f 73 68 20 2d 63 20 22 65 63 68 /bin/sh -c "ech
0f70: 6f 20 27 70 75 74 73 20 5c 24 74 63 6c 5f 76 65 o 'puts \$tcl_ve
0f80: 72 73 69 6f 6e 27 20 7c 20 74 63 6c 73 68 22 5d rsion' | tclsh"]
0f90: 0a 20 20 20 20 69 66 20 7b 5b 65 78 70 72 20 7b . if {[expr {
0fa0: 24 76 20 3e 3d 20 38 2e 36 7d 5d 7d 20 7b 0a 20 $v >= 8.6}]} {.
0fb0: 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 6c msg-resul
0fc0: 74 20 22 46 6f 75 6e 64 20 54 63 6c 73 68 20 76 t "Found Tclsh v
0fd0: 65 72 73 69 6f 6e 20 24 76 20 69 6e 20 74 68 65 ersion $v in the
0fe0: 20 50 41 54 48 2e 22 0a 20 20 20 20 20 20 20 20 PATH.".
0ff0: 64 65 66 69 6e 65 20 54 43 4c 53 48 20 74 63 6c define TCLSH tcl
1000: 73 68 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 sh. } elseif
1010: 7b 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f {[file isdirecto
1020: 72 79 20 24 68 62 74 64 5d 7d 20 7b 0a 20 20 20 ry $hbtd]} {.
1030: 20 20 20 20 20 23 20 54 68 69 73 20 69 73 20 61 # This is a
1040: 20 6d 61 63 4f 53 20 73 79 73 74 65 6d 20 77 69 macOS system wi
1050: 74 68 20 74 68 65 20 48 6f 6d 65 62 72 65 77 20 th the Homebrew
1060: 76 65 72 73 69 6f 6e 20 6f 66 20 54 63 6c 2f 54 version of Tcl/T
1070: 6b 0a 20 20 20 20 20 20 20 20 23 20 69 6e 73 74 k. # inst
1080: 61 6c 6c 65 64 2e 20 20 53 65 6c 65 63 74 20 74 alled. Select t
1090: 68 65 20 6e 65 77 65 73 74 20 76 65 72 73 69 6f he newest versio
10a0: 6e 2e 20 20 49 74 20 77 6f 6e 27 74 20 6e 6f 72 n. It won't nor
10b0: 6d 61 6c 6c 79 20 62 65 0a 20 20 20 20 20 20 20 mally be.
10c0: 20 23 20 69 6e 20 74 68 65 20 50 41 54 48 20 74 # in the PATH t
10d0: 6f 20 61 76 6f 69 64 20 73 68 61 64 6f 77 69 6e o avoid shadowin
10e0: 67 20 2f 75 73 72 2f 62 69 6e 2f 74 63 6c 73 68 g /usr/bin/tclsh
10f0: 2c 20 61 6e 64 20 65 76 65 6e 20 69 66 20 69 74 , and even if it
1100: 0a 20 20 20 20 20 20 20 20 23 20 77 65 72 65 20 . # were
1110: 69 6e 20 74 68 65 20 50 41 54 48 2c 20 69 74 27 in the PATH, it'
1120: 73 20 62 61 64 20 70 72 61 63 74 69 63 65 20 74 s bad practice t
1130: 6f 20 70 75 74 20 2f 75 73 72 2f 6c 6f 63 61 6c o put /usr/local
1140: 2f 62 69 6e 20 28 74 68 65 0a 20 20 20 20 20 20 /bin (the.
1150: 20 20 23 20 48 6f 6d 65 62 72 65 77 20 64 65 66 # Homebrew def
1160: 61 75 6c 74 29 20 61 68 65 61 64 20 6f 66 20 2f ault) ahead of /
1170: 75 73 72 2f 62 69 6e 2c 20 65 73 70 65 63 69 61 usr/bin, especia
1180: 6c 6c 79 20 67 69 76 65 6e 20 74 68 61 74 0a 20 lly given that.
1190: 20 20 20 20 20 20 20 23 20 69 74 27 73 20 75 73 # it's us
11a0: 65 72 2d 77 72 69 74 65 61 62 6c 65 20 62 79 20 er-writeable by
11b0: 64 65 66 61 75 6c 74 20 77 69 74 68 20 48 6f 6d default with Hom
11c0: 65 62 72 65 77 2e 20 20 54 68 75 73 2c 20 77 65 ebrew. Thus, we
11d0: 20 63 61 6e 20 62 65 0a 20 20 20 20 20 20 20 20 can be.
11e0: 23 20 70 72 65 74 74 79 20 73 75 72 65 20 74 68 # pretty sure th
11f0: 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 63 61 e only way to ca
1200: 6c 6c 20 69 74 20 69 73 20 77 69 74 68 20 61 6e ll it is with an
1210: 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68 2e 0a absolute path..
1220: 20 20 20 20 20 20 20 20 73 65 74 20 76 20 5b 65 set v [e
1230: 78 65 63 20 6c 73 20 2d 74 72 20 24 68 62 74 64 xec ls -tr $hbtd
1240: 20 7c 20 74 61 69 6c 20 2d 31 5d 0a 20 20 20 20 | tail -1].
1250: 20 20 20 20 73 65 74 20 70 61 74 68 20 22 24 68 set path "$h
1260: 62 74 64 2f 24 76 2f 62 69 6e 2f 74 63 6c 73 68 btd/$v/bin/tclsh
1270: 22 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 ". define
1280: 20 54 43 4c 53 48 20 24 70 61 74 68 0a 20 20 20 TCLSH $path.
1290: 20 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 msg-result
12a0: 22 55 73 69 6e 67 20 48 6f 6d 65 62 72 65 77 20 "Using Homebrew
12b0: 54 63 6c 2f 54 6b 20 76 65 72 73 69 6f 6e 20 24 Tcl/Tk version $
12c0: 70 61 74 68 2e 22 0a 20 20 20 20 7d 20 65 6c 73 path.". } els
12d0: 65 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 2d e {. msg-
12e0: 72 65 73 75 6c 74 20 22 57 41 52 4e 49 4e 47 3a result "WARNING:
12f0: 20 74 63 6c 73 68 20 24 76 20 66 6f 75 6e 64 3b tclsh $v found;
1300: 20 6e 65 65 64 20 3e 3d 20 38 2e 36 20 66 6f 72 need >= 8.6 for
1310: 20 27 6d 61 6b 65 20 74 65 73 74 27 2e 22 0a 20 'make test'.".
1320: 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 54 43 define TC
1330: 4c 53 48 20 66 61 6c 73 65 20 20 20 20 20 3b 23 LSH false ;#
1340: 20 66 6f 72 63 65 20 22 6d 61 6b 65 20 74 65 73 force "make tes
1350: 74 22 20 66 61 69 6c 75 72 65 20 76 69 61 20 2f t" failure via /
1360: 75 73 72 2f 62 69 6e 2f 66 61 6c 73 65 0a 20 20 usr/bin/false.
1370: 20 20 7d 0a 7d 0a 0a 64 65 66 69 6e 65 20 43 46 }.}..define CF
1380: 4c 41 47 53 20 5b 67 65 74 2d 65 6e 76 20 43 46 LAGS [get-env CF
1390: 4c 41 47 53 20 22 2d 67 20 2d 4f 32 22 5d 0a 64 LAGS "-g -O2"].d
13a0: 65 66 69 6e 65 20 45 58 54 52 41 5f 43 46 4c 41 efine EXTRA_CFLA
13b0: 47 53 20 22 2d 57 61 6c 6c 22 0a 64 65 66 69 6e GS "-Wall".defin
13c0: 65 20 45 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 e EXTRA_LDFLAGS
13d0: 22 22 0a 64 65 66 69 6e 65 20 55 53 45 5f 53 59 "".define USE_SY
13e0: 53 54 45 4d 5f 53 51 4c 49 54 45 20 30 0a 64 65 STEM_SQLITE 0.de
13f0: 66 69 6e 65 20 55 53 45 5f 4c 49 4e 45 4e 4f 49 fine USE_LINENOI
1400: 53 45 20 30 0a 64 65 66 69 6e 65 20 55 53 45 5f SE 0.define USE_
1410: 4d 4d 41 4e 5f 48 20 30 0a 64 65 66 69 6e 65 20 MMAN_H 0.define
1420: 55 53 45 5f 53 45 45 20 30 0a 64 65 66 69 6e 65 USE_SEE 0.define
1430: 20 53 51 4c 49 54 45 33 5f 4f 52 49 47 49 4e 20 SQLITE3_ORIGIN
1440: 30 0a 23 20 53 51 4c 49 54 45 33 5f 4f 52 49 47 0.# SQLITE3_ORIG
1450: 49 4e 20 30 20 3d 20 73 72 63 2f 73 71 6c 69 74 IN 0 = src/sqlit
1460: 65 33 2c 20 31 3d 73 72 63 2f 73 71 6c 69 74 65 e3, 1=src/sqlite
1470: 33 2d 73 65 65 2e 63 2c 20 32 3d 63 6c 69 65 6e 3-see.c, 2=clien
1480: 74 2d 70 72 6f 76 69 64 65 64 0a 64 65 66 69 6e t-provided.defin
1490: 65 20 53 51 4c 49 54 45 5f 4f 50 54 49 4f 4e 53 e SQLITE_OPTIONS
14a0: 5f 45 58 54 20 22 22 0a 23 20 53 51 4c 49 54 45 _EXT "".# SQLITE
14b0: 5f 4f 50 54 49 4f 4e 53 5f 45 58 54 20 3d 3e 20 _OPTIONS_EXT =>
14c0: 62 75 69 6c 64 2d 64 65 70 65 6e 64 65 6e 74 20 build-dependent
14d0: 43 46 4c 41 47 53 20 66 6f 72 20 73 71 6c 69 74 CFLAGS for sqlit
14e0: 65 33 2e 63 20 61 6e 64 20 73 68 65 6c 6c 2e 63 e3.c and shell.c
14f0: 0a 0a 23 20 4d 61 69 6e 74 61 69 6e 20 74 68 65 ..# Maintain the
1500: 20 43 38 39 2f 43 39 30 2d 73 74 79 6c 65 20 6f C89/C90-style o
1510: 72 64 65 72 20 6f 66 20 76 61 72 69 61 62 6c 65 rder of variable
1520: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 62 65 declarations be
1530: 66 6f 72 65 20 73 74 61 74 65 6d 65 6e 74 73 2e fore statements.
1540: 0a 23 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 .# Check if the
1550: 63 6f 6d 70 69 6c 65 72 20 73 75 70 70 6f 72 74 compiler support
1560: 73 20 74 68 65 20 72 65 73 70 65 63 74 69 76 65 s the respective
1570: 20 77 61 72 6e 69 6e 67 20 66 6c 61 67 2e 0a 69 warning flag..i
1580: 66 20 7b 5b 63 63 74 65 73 74 20 2d 63 66 6c 61 f {[cctest -cfla
1590: 67 73 20 2d 57 64 65 63 6c 61 72 61 74 69 6f 6e gs -Wdeclaration
15a0: 2d 61 66 74 65 72 2d 73 74 61 74 65 6d 65 6e 74 -after-statement
15b0: 5d 7d 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 2d ]} {. define-
15c0: 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c append EXTRA_CFL
15d0: 41 47 53 20 2d 57 64 65 63 6c 61 72 61 74 69 6f AGS -Wdeclaratio
15e0: 6e 2d 61 66 74 65 72 2d 73 74 61 74 65 6d 65 6e n-after-statemen
15f0: 74 0a 7d 0a 0a 0a 23 20 54 68 69 73 20 70 72 6f t.}...# This pro
1600: 63 65 64 75 72 65 20 69 73 20 61 20 63 75 73 74 cedure is a cust
1610: 6f 6d 69 7a 65 64 20 76 65 72 73 69 6f 6e 20 6f omized version o
1620: 66 20 22 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 f "cc-check-func
1630: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 22 2c 0a 23 20 tion-in-lib",.#
1640: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 6d 6f that does not mo
1650: 64 69 66 79 20 74 68 65 20 4c 49 42 53 20 76 61 dify the LIBS va
1660: 72 69 61 62 6c 65 2e 20 20 49 74 73 20 75 73 65 riable. Its use
1670: 20 70 72 65 76 65 6e 74 73 20 70 72 65 6d 61 74 prevents premat
1680: 75 72 65 6c 79 0a 23 20 70 75 6c 6c 69 6e 67 20 urely.# pulling
1690: 69 6e 20 6c 69 62 72 61 72 69 65 73 20 74 68 61 in libraries tha
16a0: 74 20 77 69 6c 6c 20 62 65 20 61 64 64 65 64 20 t will be added
16b0: 6c 61 74 65 72 20 61 6e 79 68 6f 77 20 28 65 2e later anyhow (e.
16c0: 67 2e 20 22 2d 6c 64 6c 22 29 2e 0a 70 72 6f 63 g. "-ldl")..proc
16d0: 20 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d check-function-
16e0: 69 6e 2d 6c 69 62 20 7b 66 75 6e 63 74 69 6f 6e in-lib {function
16f0: 20 6c 69 62 73 20 7b 6f 74 68 65 72 6c 69 62 73 libs {otherlibs
1700: 20 7b 7d 7d 7d 20 7b 0a 20 20 20 20 69 66 20 7b {}}} {. if {
1710: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 [string length $
1720: 6f 74 68 65 72 6c 69 62 73 5d 7d 20 7b 0a 20 20 otherlibs]} {.
1730: 20 20 20 20 20 20 6d 73 67 2d 63 68 65 63 6b 69 msg-checki
1740: 6e 67 20 22 43 68 65 63 6b 69 6e 67 20 66 6f 72 ng "Checking for
1750: 20 24 66 75 6e 63 74 69 6f 6e 20 69 6e 20 24 6c $function in $l
1760: 69 62 73 20 77 69 74 68 20 24 6f 74 68 65 72 6c ibs with $otherl
1770: 69 62 73 2e 2e 2e 22 0a 20 20 20 20 7d 20 65 6c ibs...". } el
1780: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 se {. msg
1790: 2d 63 68 65 63 6b 69 6e 67 20 22 43 68 65 63 6b -checking "Check
17a0: 69 6e 67 20 66 6f 72 20 24 66 75 6e 63 74 69 6f ing for $functio
17b0: 6e 20 69 6e 20 24 6c 69 62 73 2e 2e 2e 22 0a 20 n in $libs...".
17c0: 20 20 20 7d 0a 20 20 20 20 73 65 74 20 66 6f 75 }. set fou
17d0: 6e 64 20 30 0a 20 20 20 20 63 63 2d 77 69 74 68 nd 0. cc-with
17e0: 20 5b 6c 69 73 74 20 2d 6c 69 62 73 20 24 6f 74 [list -libs $ot
17f0: 68 65 72 6c 69 62 73 5d 20 7b 0a 20 20 20 20 20 herlibs] {.
1800: 20 20 20 69 66 20 7b 5b 63 63 74 65 73 74 5f 66 if {[cctest_f
1810: 75 6e 63 74 69 6f 6e 20 24 66 75 6e 63 74 69 6f unction $functio
1820: 6e 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 n]} {.
1830: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 6e 6f msg-result "no
1840: 6e 65 20 6e 65 65 64 65 64 22 0a 20 20 20 20 20 ne needed".
1850: 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 6c 69 define li
1860: 62 5f 24 66 75 6e 63 74 69 6f 6e 20 22 22 0a 20 b_$function "".
1870: 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 20 incr
1880: 66 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 7d 20 found. }
1890: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {.
18a0: 20 20 20 66 6f 72 65 61 63 68 20 6c 69 62 20 24 foreach lib $
18b0: 6c 69 62 73 20 7b 0a 20 20 20 20 20 20 20 20 20 libs {.
18c0: 20 20 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b cc-with [
18d0: 6c 69 73 74 20 2d 6c 69 62 73 20 2d 6c 24 6c 69 list -libs -l$li
18e0: 62 5d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 b] {.
18f0: 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 if {[cc
1900: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 20 24 66 test_function $f
1910: 75 6e 63 74 69 6f 6e 5d 7d 20 7b 0a 20 20 20 20 unction]} {.
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1930: 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 2d msg-result -
1940: 6c 24 6c 69 62 0a 20 20 20 20 20 20 20 20 20 20 l$lib.
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 de
1960: 66 69 6e 65 20 6c 69 62 5f 24 66 75 6e 63 74 69 fine lib_$functi
1970: 6f 6e 20 2d 6c 24 6c 69 62 0a 20 20 20 20 20 20 on -l$lib.
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1990: 20 20 69 6e 63 72 20 66 6f 75 6e 64 0a 20 20 20 incr found.
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b0: 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 break.
19c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
19d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19e0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d }. }
19f0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. }
1a00: 0a 20 20 20 20 69 66 20 7b 24 66 6f 75 6e 64 7d . if {$found}
1a10: 20 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e {. defin
1a20: 65 20 5b 66 65 61 74 75 72 65 2d 64 65 66 69 6e e [feature-defin
1a30: 65 2d 6e 61 6d 65 20 24 66 75 6e 63 74 69 6f 6e e-name $function
1a40: 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 ]. } else {.
1a50: 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 6c msg-resul
1a60: 74 20 22 6e 6f 22 0a 20 20 20 20 7d 0a 20 20 20 t "no". }.
1a70: 20 72 65 74 75 72 6e 20 24 66 6f 75 6e 64 0a 7d return $found.}
1a80: 0a 0a 69 66 20 7b 21 5b 6f 70 74 2d 62 6f 6f 6c ..if {![opt-bool
1a90: 20 69 6e 74 65 72 6e 61 6c 2d 73 71 6c 69 74 65 internal-sqlite
1aa0: 5d 7d 20 7b 0a 20 20 70 72 6f 63 20 66 69 6e 64 ]} {. proc find
1ab0: 5f 73 79 73 74 65 6d 5f 73 71 6c 69 74 65 20 7b _system_sqlite {
1ac0: 7d 20 7b 0a 0a 20 20 20 20 23 20 4f 6e 20 73 6f } {.. # On so
1ad0: 6d 65 20 73 79 73 74 65 6d 73 20 28 73 6c 61 63 me systems (slac
1ae0: 6b 77 61 72 65 29 2c 20 6c 69 62 73 71 6c 69 74 kware), libsqlit
1af0: 65 33 20 72 65 71 75 69 72 65 73 20 2d 6c 64 6c e3 requires -ldl
1b00: 20 74 6f 20 6c 69 6e 6b 2e 20 53 6f 0a 20 20 20 to link. So.
1b10: 20 23 20 73 65 61 72 63 68 20 66 6f 72 20 74 68 # search for th
1b20: 65 20 73 79 73 74 65 6d 20 53 51 4c 69 74 65 20 e system SQLite
1b30: 6f 6e 63 65 20 77 69 74 68 20 2d 6c 64 6c 2c 20 once with -ldl,
1b40: 61 6e 64 20 6f 6e 63 65 20 77 69 74 68 6f 75 74 and once without
1b50: 2e 20 49 66 0a 20 20 20 20 23 20 74 68 65 20 6c . If. # the l
1b60: 69 62 72 61 72 79 20 63 61 6e 20 6f 6e 6c 79 20 ibrary can only
1b70: 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 24 65 be found with $e
1b80: 78 74 72 61 6c 69 62 73 20 73 65 74 20 74 6f 20 xtralibs set to
1b90: 2d 6c 64 6c 2c 20 74 68 65 6e 0a 20 20 20 20 23 -ldl, then. #
1ba0: 20 74 68 65 20 63 6f 64 65 20 62 65 6c 6f 77 20 the code below
1bb0: 77 69 6c 6c 20 61 70 70 65 6e 64 20 2d 6c 64 6c will append -ldl
1bc0: 20 74 6f 20 4c 49 42 53 2e 0a 20 20 20 20 23 0a to LIBS.. #.
1bd0: 20 20 20 20 66 6f 72 65 61 63 68 20 65 78 74 72 foreach extr
1be0: 61 6c 69 62 73 20 7b 7b 7d 20 7b 2d 6c 64 6c 7d alibs {{} {-ldl}
1bf0: 7d 20 7b 0a 0a 20 20 20 20 20 20 23 20 4c 6f 63 } {.. # Loc
1c00: 61 74 65 20 74 68 65 20 73 79 73 74 65 6d 20 53 ate the system S
1c10: 51 4c 69 74 65 20 62 79 20 73 65 61 72 63 68 69 QLite by searchi
1c20: 6e 67 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f ng for sqlite3_o
1c30: 70 65 6e 28 29 2e 20 54 68 65 6e 20 63 68 65 63 pen(). Then chec
1c40: 6b 0a 20 20 20 20 20 20 23 20 69 66 20 73 71 6c k. # if sql
1c50: 69 74 65 33 5f 73 74 6d 74 5f 69 73 65 78 70 6c ite3_stmt_isexpl
1c60: 61 69 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 ain can be found
1c70: 20 61 73 20 77 65 6c 6c 2e 20 49 66 20 77 65 20 as well. If we
1c80: 63 61 6e 20 66 69 6e 64 20 6f 70 65 6e 28 29 20 can find open()
1c90: 62 75 74 0a 20 20 20 20 20 20 23 20 6e 6f 74 20 but. # not
1ca0: 73 74 6d 74 5f 69 73 65 78 70 6c 61 69 6e 28 29 stmt_isexplain()
1cb0: 2c 20 74 68 65 6e 20 74 68 65 20 73 79 73 74 65 , then the syste
1cc0: 6d 20 53 51 4c 69 74 65 20 69 73 20 74 6f 6f 20 m SQLite is too
1cd0: 6f 6c 64 20 74 6f 20 6c 69 6e 6b 20 61 67 61 69 old to link agai
1ce0: 6e 73 74 0a 20 20 20 20 20 20 23 20 66 6f 73 73 nst. # foss
1cf0: 69 6c 2e 0a 20 20 20 20 20 20 23 0a 20 20 20 20 il.. #.
1d00: 20 20 69 66 20 7b 5b 63 68 65 63 6b 2d 66 75 6e if {[check-fun
1d10: 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 73 71 6c ction-in-lib sql
1d20: 69 74 65 33 5f 6f 70 65 6e 20 73 71 6c 69 74 65 ite3_open sqlite
1d30: 33 20 24 65 78 74 72 61 6c 69 62 73 5d 7d 20 7b 3 $extralibs]} {
1d40: 0a 20 20 20 20 20 20 20 20 23 20 53 75 63 63 65 . # Succe
1d50: 73 73 2e 20 55 70 64 61 74 65 20 73 79 6d 62 6f ss. Update symbo
1d60: 6c 73 20 61 6e 64 20 72 65 74 75 72 6e 2e 0a 20 ls and return..
1d70: 20 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 20 #.
1d80: 20 64 65 66 69 6e 65 20 55 53 45 5f 53 59 53 54 define USE_SYST
1d90: 45 4d 5f 53 51 4c 49 54 45 20 31 0a 20 20 20 20 EM_SQLITE 1.
1da0: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
1db0: 64 20 4c 49 42 53 20 2d 6c 73 71 6c 69 74 65 33 d LIBS -lsqlite3
1dc0: 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 2d . define-
1dd0: 61 70 70 65 6e 64 20 4c 49 42 53 20 24 65 78 74 append LIBS $ext
1de0: 72 61 6c 69 62 73 0a 20 20 20 20 20 20 20 20 72 ralibs. r
1df0: 65 74 75 72 6e 0a 20 20 20 20 20 20 7d 0a 20 20 eturn. }.
1e00: 20 20 7d 0a 20 20 20 20 75 73 65 72 2d 65 72 72 }. user-err
1e10: 6f 72 20 22 73 79 73 74 65 6d 20 73 71 6c 69 74 or "system sqlit
1e20: 65 33 20 6e 6f 74 20 66 6f 75 6e 64 22 0a 20 20 e3 not found".
1e30: 7d 0a 0a 20 20 66 69 6e 64 5f 73 79 73 74 65 6d }.. find_system
1e40: 5f 73 71 6c 69 74 65 0a 0a 20 20 70 72 6f 63 20 _sqlite.. proc
1e50: 74 65 73 74 5f 73 79 73 74 65 6d 5f 73 71 6c 69 test_system_sqli
1e60: 74 65 20 7b 7d 20 7b 0a 20 20 20 20 23 20 43 68 te {} {. # Ch
1e70: 65 63 6b 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 eck compatibilit
1e80: 79 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20 y of the system
1e90: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 62 SQLite library b
1ea0: 79 20 72 75 6e 6e 69 6e 67 20 74 68 65 0a 20 20 y running the.
1eb0: 20 20 23 20 73 71 6c 63 6f 6d 70 74 74 65 73 74 # sqlcompttest
1ec0: 2e 63 20 70 72 6f 67 72 61 6d 20 69 6e 20 74 68 .c program in th
1ed0: 65 20 73 6f 75 72 63 65 20 74 72 65 65 20 70 61 e source tree pa
1ee0: 73 73 65 73 0a 20 20 20 20 23 20 4d 49 4e 49 4d sses. # MINIM
1ef0: 55 4d 5f 53 51 4c 49 54 45 5f 56 45 52 53 49 4f UM_SQLITE_VERSIO
1f00: 4e 20 73 65 74 20 61 74 20 74 68 65 20 74 6f 70 N set at the top
1f10: 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 74 6f of this file to
1f20: 0a 20 20 20 20 23 20 73 71 6c 63 6f 6d 70 74 74 . # sqlcomptt
1f30: 65 73 74 2e 63 0a 20 20 20 20 23 0a 20 20 20 20 est.c. #.
1f40: 73 65 74 20 63 6d 64 6c 69 6e 65 20 7b 7d 0a 20 set cmdline {}.
1f50: 20 20 20 6c 61 70 70 65 6e 64 20 63 6d 64 6c 69 lappend cmdli
1f60: 6e 65 20 7b 2a 7d 5b 67 65 74 2d 64 65 66 69 6e ne {*}[get-defin
1f70: 65 20 43 43 41 43 48 45 5d 0a 20 20 20 20 6c 61 e CCACHE]. la
1f80: 70 70 65 6e 64 20 63 6d 64 6c 69 6e 65 20 7b 2a ppend cmdline {*
1f90: 7d 5b 67 65 74 2d 64 65 66 69 6e 65 20 43 43 5d }[get-define CC]
1fa0: 20 7b 2a 7d 5b 67 65 74 2d 64 65 66 69 6e 65 20 {*}[get-define
1fb0: 43 46 4c 41 47 53 5d 0a 20 20 20 20 6c 61 70 70 CFLAGS]. lapp
1fc0: 65 6e 64 20 63 6d 64 6c 69 6e 65 20 24 3a 3a 61 end cmdline $::a
1fd0: 75 74 6f 73 65 74 75 70 28 64 69 72 29 2f 2e 2e utosetup(dir)/..
1fe0: 2f 74 6f 6f 6c 73 2f 73 71 6c 63 6f 6d 70 61 74 /tools/sqlcompat
1ff0: 74 65 73 74 2e 63 20 2d 6f 20 63 6f 6e 66 74 65 test.c -o confte
2000: 73 74 5f 5f 0a 20 20 20 20 6c 61 70 70 65 6e 64 st__. lappend
2010: 20 63 6d 64 6c 69 6e 65 20 7b 2a 7d 5b 67 65 74 cmdline {*}[get
2020: 2d 64 65 66 69 6e 65 20 4c 44 46 4c 41 47 53 5d -define LDFLAGS]
2030: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 63 6d 64 . lappend cmd
2040: 6c 69 6e 65 20 7b 2a 7d 5b 67 65 74 2d 64 65 66 line {*}[get-def
2050: 69 6e 65 20 4c 49 42 53 5d 0a 20 20 20 20 73 65 ine LIBS]. se
2060: 74 20 73 71 6c 69 74 65 2d 76 65 72 73 69 6f 6e t sqlite-version
2070: 20 5b 73 74 72 69 6e 67 20 63 61 74 20 22 2d 44 [string cat "-D
2080: 20 4d 49 4e 49 4d 55 4d 5f 53 51 4c 49 54 45 5f MINIMUM_SQLITE_
2090: 56 45 52 53 49 4f 4e 3d 22 20 5b 67 65 74 2d 64 VERSION=" [get-d
20a0: 65 66 69 6e 65 20 4d 49 4e 49 4d 55 4d 5f 53 51 efine MINIMUM_SQ
20b0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 5d 0a 20 LITE_VERSION]].
20c0: 20 20 20 6c 61 70 70 65 6e 64 20 63 6d 64 6c 69 lappend cmdli
20d0: 6e 65 20 7b 2a 7d 5b 73 65 74 20 73 71 6c 69 74 ne {*}[set sqlit
20e0: 65 2d 76 65 72 73 69 6f 6e 5d 0a 20 20 20 20 73 e-version]. s
20f0: 65 74 20 6f 6b 20 31 0a 20 20 20 20 73 65 74 20 et ok 1. set
2100: 65 72 72 20 5b 63 61 74 63 68 20 7b 65 78 65 63 err [catch {exec
2110: 2d 77 69 74 68 2d 73 74 64 65 72 72 20 7b 2a 7d -with-stderr {*}
2120: 24 63 6d 64 6c 69 6e 65 7d 20 72 65 73 75 6c 74 $cmdline} result
2130: 20 65 72 72 69 6e 66 6f 5d 0a 20 20 20 20 69 66 errinfo]. if
2140: 20 7b 24 65 72 72 7d 20 7b 0a 20 20 20 20 20 20 {$err} {.
2150: 20 63 6f 6e 66 69 67 6c 6f 67 20 22 46 61 69 6c configlog "Fail
2160: 65 64 3a 20 5b 6a 6f 69 6e 20 24 63 6d 64 6c 69 ed: [join $cmdli
2170: 6e 65 5d 22 0a 20 20 20 20 20 20 20 69 66 20 7b ne]". if {
2180: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 [string length $
2190: 72 65 73 75 6c 74 5d 3e 30 7d 20 7b 63 6f 6e 66 result]>0} {conf
21a0: 69 67 6c 6f 67 20 24 72 65 73 75 6c 74 7d 0a 20 iglog $result}.
21b0: 20 20 20 20 20 20 63 6f 6e 66 69 67 6c 6f 67 20 configlog
21c0: 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 22 0a 20 "============".
21d0: 20 20 20 20 20 20 73 65 74 20 6f 6b 20 30 0a 20 set ok 0.
21e0: 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 3a 3a } elseif {$::
21f0: 61 75 74 6f 73 65 74 75 70 28 64 65 62 75 67 29 autosetup(debug)
2200: 7d 20 7b 0a 20 20 20 20 20 20 20 63 6f 6e 66 69 } {. confi
2210: 67 6c 6f 67 20 22 43 6f 6d 70 69 6c 65 64 20 4f glog "Compiled O
2220: 4b 3a 20 5b 6a 6f 69 6e 20 24 63 6d 64 6c 69 6e K: [join $cmdlin
2230: 65 5d 22 0a 20 20 20 20 20 20 20 63 6f 6e 66 69 e]". confi
2240: 67 6c 6f 67 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d glog "==========
2250: 3d 3d 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 ==". }. if
2260: 20 7b 21 24 6f 6b 7d 20 7b 0a 20 20 20 20 20 20 {!$ok} {.
2270: 75 73 65 72 2d 65 72 72 6f 72 20 22 75 6e 61 62 user-error "unab
2280: 6c 65 20 74 6f 20 63 6f 6d 70 69 6c 65 20 53 51 le to compile SQ
2290: 4c 69 74 65 20 63 6f 6d 70 61 74 69 62 69 6c 69 Lite compatibili
22a0: 74 79 20 74 65 73 74 20 70 72 6f 67 72 61 6d 22 ty test program"
22b0: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 65 . }. set e
22c0: 72 72 20 5b 63 61 74 63 68 20 7b 65 78 65 63 2d rr [catch {exec-
22d0: 77 69 74 68 2d 73 74 64 65 72 72 20 2e 2f 63 6f with-stderr ./co
22e0: 6e 66 74 65 73 74 5f 5f 7d 20 72 65 73 75 6c 74 nftest__} result
22f0: 20 65 72 72 69 6e 66 6f 5d 0a 20 20 20 20 69 66 errinfo]. if
2300: 20 7b 5b 67 65 74 2d 64 65 66 69 6e 65 20 62 75 {[get-define bu
2310: 69 6c 64 5d 20 65 71 20 5b 67 65 74 2d 64 65 66 ild] eq [get-def
2320: 69 6e 65 20 68 6f 73 74 5d 7d 20 7b 0a 20 20 20 ine host]} {.
2330: 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 set err [catc
2340: 68 20 7b 65 78 65 63 2d 77 69 74 68 2d 73 74 64 h {exec-with-std
2350: 65 72 72 20 2e 2f 63 6f 6e 66 74 65 73 74 5f 5f err ./conftest__
2360: 7d 20 72 65 73 75 6c 74 20 65 72 72 69 6e 66 6f } result errinfo
2370: 5d 0a 20 20 20 20 20 20 69 66 20 7b 24 65 72 72 ]. if {$err
2380: 7d 20 7b 0a 20 20 20 20 20 20 20 20 75 73 65 72 } {. user
2390: 2d 65 72 72 6f 72 20 24 72 65 73 75 6c 74 0a 20 -error $result.
23a0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
23b0: 20 66 69 6c 65 20 64 65 6c 65 74 65 20 2e 2f 63 file delete ./c
23c0: 6f 6e 66 74 65 73 74 5f 5f 0a 20 20 7d 0a 20 20 onftest__. }.
23d0: 74 65 73 74 5f 73 79 73 74 65 6d 5f 73 71 6c 69 test_system_sqli
23e0: 74 65 0a 0a 7d 0a 0a 70 72 6f 63 20 69 73 5f 6d te..}..proc is_m
23f0: 69 6e 67 77 20 7b 7d 20 7b 0a 20 20 20 20 72 65 ingw {} {. re
2400: 74 75 72 6e 20 5b 73 74 72 69 6e 67 20 6d 61 74 turn [string mat
2410: 63 68 20 2a 6d 69 6e 67 77 2a 20 5b 67 65 74 2d ch *mingw* [get-
2420: 64 65 66 69 6e 65 20 68 6f 73 74 5d 5d 0a 7d 0a define host]].}.
2430: 0a 69 66 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d .if {[is_mingw]}
2440: 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 {. define-ap
2450: 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 pend EXTRA_CFLAG
2460: 53 20 2d 44 42 52 4f 4b 45 4e 5f 4d 49 4e 47 57 S -DBROKEN_MINGW
2470: 5f 43 4d 44 4c 49 4e 45 0a 20 20 20 20 64 65 66 _CMDLINE. def
2480: 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 ine-append LIBS
2490: 2d 6c 6b 65 72 6e 65 6c 33 32 20 2d 6c 77 73 32 -lkernel32 -lws2
24a0: 5f 33 32 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 _32.} else {.
24b0: 20 23 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 #. # NOTE: A
24c0: 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 20 65 78 63 ll platforms exc
24d0: 65 70 74 20 4d 69 6e 47 57 20 73 68 6f 75 6c 64 ept MinGW should
24e0: 20 75 73 65 20 74 68 65 20 6c 69 6e 65 6e 6f 69 use the linenoi
24f0: 73 65 0a 20 20 20 20 23 20 20 20 20 20 20 20 70 se. # p
2500: 61 63 6b 61 67 65 2e 20 20 49 74 20 69 73 20 63 ackage. It is c
2510: 75 72 72 65 6e 74 6c 79 20 75 6e 73 75 70 70 6f urrently unsuppo
2520: 72 74 65 64 20 6f 6e 20 57 69 6e 33 32 2e 0a 20 rted on Win32..
2530: 20 20 20 23 0a 20 20 20 20 64 65 66 69 6e 65 20 #. define
2540: 55 53 45 5f 4c 49 4e 45 4e 4f 49 53 45 20 31 0a USE_LINENOISE 1.
2550: 7d 0a 0a 69 66 20 7b 5b 73 74 72 69 6e 67 20 6d }..if {[string m
2560: 61 74 63 68 20 2a 2d 73 6f 6c 61 72 69 73 2a 20 atch *-solaris*
2570: 5b 67 65 74 2d 64 65 66 69 6e 65 20 68 6f 73 74 [get-define host
2580: 5d 5d 7d 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 ]]} {. define
2590: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 -append EXTRA_CF
25a0: 4c 41 47 53 20 7b 2d 44 5f 5f 45 58 54 45 4e 53 LAGS {-D__EXTENS
25b0: 49 4f 4e 53 5f 5f 7d 0a 7d 0a 0a 69 66 20 7b 5b IONS__}.}..if {[
25c0: 6f 70 74 2d 62 6f 6f 6c 20 66 6f 73 73 69 6c 2d opt-bool fossil-
25d0: 64 65 62 75 67 5d 7d 20 7b 0a 20 20 20 20 64 65 debug]} {. de
25e0: 66 69 6e 65 20 43 46 4c 41 47 53 20 7b 2d 67 20 fine CFLAGS {-g
25f0: 2d 4f 30 20 2d 57 61 6c 6c 7d 0a 20 20 20 20 64 -O0 -Wall}. d
2600: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 4c efine-append CFL
2610: 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f 44 45 42 AGS -DFOSSIL_DEB
2620: 55 47 0a 20 20 20 20 6d 73 67 2d 72 65 73 75 6c UG. msg-resul
2630: 74 20 22 44 65 62 75 67 67 69 6e 67 20 73 75 70 t "Debugging sup
2640: 70 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 7d 0a port enabled".}.
2650: 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 6e .if {[opt-bool n
2660: 6f 2d 6f 70 74 5d 7d 20 7b 0a 20 20 20 20 64 65 o-opt]} {. de
2670: 66 69 6e 65 20 43 46 4c 41 47 53 20 7b 2d 67 20 fine CFLAGS {-g
2680: 2d 4f 30 20 2d 57 61 6c 6c 7d 0a 20 20 20 20 6d -O0 -Wall}. m
2690: 73 67 2d 72 65 73 75 6c 74 20 22 42 75 69 6c 74 sg-result "Built
26a0: 69 6e 67 20 77 69 74 68 6f 75 74 20 63 6f 6d 70 ing without comp
26b0: 69 6c 65 72 20 6f 70 74 69 6d 69 7a 61 74 69 6f iler optimizatio
26c0: 6e 22 0a 20 20 20 20 69 66 20 7b 5b 6f 70 74 2d n". if {[opt-
26d0: 62 6f 6f 6c 20 66 6f 73 73 69 6c 2d 64 65 62 75 bool fossil-debu
26e0: 67 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 64 65 g]} {. de
26f0: 66 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 4c 41 fine-append CFLA
2700: 47 53 20 2d 44 46 4f 53 53 49 4c 5f 44 45 42 55 GS -DFOSSIL_DEBU
2710: 47 0a 20 20 20 20 7d 0a 7d 0a 0a 69 66 20 7b 5b G. }.}..if {[
2720: 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 68 2d 6d 6d opt-bool with-mm
2730: 61 6e 5d 7d 20 7b 0a 20 20 20 20 64 65 66 69 6e an]} {. defin
2740: 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 e-append EXTRA_C
2750: 46 4c 41 47 53 20 2d 44 55 53 45 5f 4d 4d 41 4e FLAGS -DUSE_MMAN
2760: 5f 48 0a 20 20 20 20 64 65 66 69 6e 65 20 55 53 _H. define US
2770: 45 5f 4d 4d 41 4e 5f 48 20 31 0a 20 20 20 20 6d E_MMAN_H 1. m
2780: 73 67 2d 72 65 73 75 6c 74 20 22 45 6e 61 62 6c sg-result "Enabl
2790: 69 6e 67 20 5c 22 73 79 73 2f 6d 6d 61 6e 2e 68 ing \"sys/mman.h
27a0: 5c 22 20 73 75 70 70 6f 72 74 22 0a 7d 0a 0a 69 \" support".}..i
27b0: 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 f {[opt-bool wit
27c0: 68 2d 73 65 65 5d 7d 20 7b 0a 20 20 20 20 64 65 h-see]} {. de
27d0: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
27e0: 41 5f 43 46 4c 41 47 53 20 2d 44 55 53 45 5f 53 A_CFLAGS -DUSE_S
27f0: 45 45 0a 20 20 20 20 64 65 66 69 6e 65 20 55 53 EE. define US
2800: 45 5f 53 45 45 20 31 0a 20 20 20 20 64 65 66 69 E_SEE 1. defi
2810: 6e 65 20 53 51 4c 49 54 45 33 5f 4f 52 49 47 49 ne SQLITE3_ORIGI
2820: 4e 20 31 0a 20 20 20 20 6d 73 67 2d 72 65 73 75 N 1. msg-resu
2830: 6c 74 20 22 45 6e 61 62 6c 69 6e 67 20 65 6e 63 lt "Enabling enc
2840: 72 79 70 74 69 6f 6e 20 73 75 70 70 6f 72 74 22 ryption support"
2850: 0a 7d 0a 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f .}..if {[opt-boo
2860: 6c 20 6a 73 6f 6e 5d 7d 20 7b 0a 20 20 20 20 23 l json]} {. #
2870: 20 52 65 6d 69 6e 64 65 72 2f 46 49 58 4d 45 20 Reminder/FIXME
2880: 28 73 74 65 70 68 61 6e 29 3a 20 46 4f 53 53 49 (stephan): FOSSI
2890: 4c 5f 45 4e 41 42 4c 45 5f 4a 53 4f 4e 0a 20 20 L_ENABLE_JSON.
28a0: 20 20 23 20 69 73 20 72 65 71 75 69 72 65 64 20 # is required
28b0: 69 6e 20 74 68 65 20 43 46 4c 41 47 53 20 62 65 in the CFLAGS be
28c0: 63 61 75 73 65 20 6a 73 6f 6e 2a 2e 63 0a 20 20 cause json*.c.
28d0: 20 20 23 20 68 61 76 65 20 23 69 66 64 65 66 20 # have #ifdef
28e0: 67 75 61 72 64 73 20 61 72 6f 75 6e 64 20 74 68 guards around th
28f0: 65 20 77 68 6f 6c 65 20 66 69 6c 65 20 77 69 74 e whole file wit
2900: 68 6f 75 74 0a 20 20 20 20 23 20 72 65 61 64 69 hout. # readi
2910: 6e 67 20 63 6f 6e 66 69 67 2e 68 20 66 69 72 73 ng config.h firs
2920: 74 2e 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 t.. define-ap
2930: 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 pend EXTRA_CFLAG
2940: 53 20 2d 44 46 4f 53 53 49 4c 5f 45 4e 41 42 4c S -DFOSSIL_ENABL
2950: 45 5f 4a 53 4f 4e 0a 20 20 20 20 64 65 66 69 6e E_JSON. defin
2960: 65 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f e FOSSIL_ENABLE_
2970: 4a 53 4f 4e 0a 20 20 20 20 6d 73 67 2d 72 65 73 JSON. msg-res
2980: 75 6c 74 20 22 4a 53 4f 4e 20 73 75 70 70 6f 72 ult "JSON suppor
2990: 74 20 65 6e 61 62 6c 65 64 22 0a 7d 0a 0a 69 66 t enabled".}..if
29a0: 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 68 {[opt-bool with
29b0: 2d 65 78 65 63 2d 72 65 6c 2d 70 61 74 68 73 5d -exec-rel-paths]
29c0: 7d 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 } {. define-a
29d0: 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 ppend EXTRA_CFLA
29e0: 47 53 20 2d 44 46 4f 53 53 49 4c 5f 45 4e 41 42 GS -DFOSSIL_ENAB
29f0: 4c 45 5f 45 58 45 43 5f 52 45 4c 5f 50 41 54 48 LE_EXEC_REL_PATH
2a00: 53 0a 20 20 20 20 64 65 66 69 6e 65 20 46 4f 53 S. define FOS
2a10: 53 49 4c 5f 45 4e 41 42 4c 45 5f 45 58 45 43 5f SIL_ENABLE_EXEC_
2a20: 52 45 4c 5f 50 41 54 48 53 0a 20 20 20 20 6d 73 REL_PATHS. ms
2a30: 67 2d 72 65 73 75 6c 74 20 22 52 65 6c 61 74 69 g-result "Relati
2a40: 76 65 20 70 61 74 68 73 20 69 6e 20 65 78 74 65 ve paths in exte
2a50: 72 6e 61 6c 20 64 69 66 66 2f 67 64 69 66 66 20 rnal diff/gdiff
2a60: 65 6e 61 62 6c 65 64 22 0a 7d 0a 0a 69 66 20 7b enabled".}..if {
2a70: 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 68 2d 74 [opt-bool with-t
2a80: 68 31 2d 64 6f 63 73 5d 7d 20 7b 0a 20 20 20 20 h1-docs]} {.
2a90: 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 define-append EX
2aa0: 54 52 41 5f 43 46 4c 41 47 53 20 2d 44 46 4f 53 TRA_CFLAGS -DFOS
2ab0: 53 49 4c 5f 45 4e 41 42 4c 45 5f 54 48 31 5f 44 SIL_ENABLE_TH1_D
2ac0: 4f 43 53 0a 20 20 20 20 64 65 66 69 6e 65 20 46 OCS. define F
2ad0: 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 54 48 31 OSSIL_ENABLE_TH1
2ae0: 5f 44 4f 43 53 0a 20 20 20 20 6d 73 67 2d 72 65 _DOCS. msg-re
2af0: 73 75 6c 74 20 22 54 48 31 20 65 6d 62 65 64 64 sult "TH1 embedd
2b00: 65 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e ed documentation
2b10: 20 73 75 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 support enabled
2b20: 22 0a 7d 0a 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f ".}..if {[opt-bo
2b30: 6f 6c 20 77 69 74 68 2d 74 68 31 2d 68 6f 6f 6b ol with-th1-hook
2b40: 73 5d 7d 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 s]} {. define
2b50: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 -append EXTRA_CF
2b60: 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f 45 4e LAGS -DFOSSIL_EN
2b70: 41 42 4c 45 5f 54 48 31 5f 48 4f 4f 4b 53 0a 20 ABLE_TH1_HOOKS.
2b80: 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c define FOSSIL
2b90: 5f 45 4e 41 42 4c 45 5f 54 48 31 5f 48 4f 4f 4b _ENABLE_TH1_HOOK
2ba0: 53 0a 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 S. msg-result
2bb0: 20 22 54 48 31 20 68 6f 6f 6b 73 20 73 75 70 70 "TH1 hooks supp
2bc0: 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 7d 0a 0a ort enabled".}..
2bd0: 23 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 6d #if {[opt-bool m
2be0: 61 72 6b 64 6f 77 6e 5d 7d 20 7b 0a 23 20 20 20 arkdown]} {.#
2bf0: 20 23 20 6e 6f 2d 6f 70 2e 20 20 4d 61 72 6b 64 # no-op. Markd
2c00: 6f 77 6e 20 69 73 20 6e 6f 77 20 65 6e 61 62 6c own is now enabl
2c10: 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 23 ed by default..#
2c20: 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 msg-result "
2c30: 4d 61 72 6b 64 6f 77 6e 20 73 75 70 70 6f 72 74 Markdown support
2c40: 20 65 6e 61 62 6c 65 64 22 0a 23 7d 0a 0a 69 66 enabled".#}..if
2c50: 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 73 74 61 74 {[opt-bool stat
2c60: 69 63 5d 7d 20 7b 0a 20 20 20 20 23 20 58 58 58 ic]} {. # XXX
2c70: 3a 20 54 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20 : This will not
2c80: 77 6f 72 6b 20 6f 6e 20 61 6c 6c 20 73 79 73 74 work on all syst
2c90: 65 6d 73 2e 0a 20 20 20 20 64 65 66 69 6e 65 2d ems.. define-
2ca0: 61 70 70 65 6e 64 20 45 58 54 52 41 5f 4c 44 46 append EXTRA_LDF
2cb0: 4c 41 47 53 20 2d 73 74 61 74 69 63 0a 20 20 20 LAGS -static.
2cc0: 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 54 72 79 msg-result "Try
2cd0: 69 6e 67 20 74 6f 20 6c 69 6e 6b 20 73 74 61 74 ing to link stat
2ce0: 69 63 61 6c 6c 79 22 0a 7d 20 65 6c 73 65 20 7b ically".} else {
2cf0: 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 . define-appe
2d00: 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 nd EXTRA_CFLAGS
2d10: 2d 44 46 4f 53 53 49 4c 5f 44 59 4e 41 4d 49 43 -DFOSSIL_DYNAMIC
2d20: 5f 42 55 49 4c 44 3d 31 0a 20 20 20 20 64 65 66 _BUILD=1. def
2d30: 69 6e 65 20 46 4f 53 53 49 4c 5f 44 59 4e 41 4d ine FOSSIL_DYNAM
2d40: 49 43 5f 42 55 49 4c 44 0a 7d 0a 0a 23 20 43 68 IC_BUILD.}..# Ch
2d50: 65 63 6b 20 66 6f 72 20 6c 69 62 72 61 72 69 65 eck for librarie
2d60: 73 20 74 68 61 74 20 6e 65 65 64 20 74 6f 20 62 s that need to b
2d70: 65 20 73 6f 72 74 65 64 20 6f 75 74 20 65 61 72 e sorted out ear
2d80: 6c 79 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 ly.cc-check-func
2d90: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 69 63 6f 6e tion-in-lib icon
2da0: 76 20 69 63 6f 6e 76 0a 0a 23 20 48 65 6c 70 65 v iconv..# Helpe
2db0: 72 20 66 6f 72 20 4f 70 65 6e 53 53 4c 20 63 68 r for OpenSSL ch
2dc0: 65 63 6b 69 6e 67 0a 70 72 6f 63 20 63 68 65 63 ecking.proc chec
2dd0: 6b 2d 66 6f 72 2d 6f 70 65 6e 73 73 6c 20 7b 6d k-for-openssl {m
2de0: 73 67 20 7b 63 66 6c 61 67 73 20 7b 7d 7d 20 7b sg {cflags {}} {
2df0: 6c 69 62 73 20 7b 2d 6c 73 73 6c 20 2d 6c 63 72 libs {-lssl -lcr
2e00: 79 70 74 6f 20 2d 6c 70 74 68 72 65 61 64 7d 7d ypto -lpthread}}
2e10: 7d 20 7b 0a 20 20 20 20 6d 73 67 2d 63 68 65 63 } {. msg-chec
2e20: 6b 69 6e 67 20 22 43 68 65 63 6b 69 6e 67 20 66 king "Checking f
2e30: 6f 72 20 24 6d 73 67 2e 2e 2e 22 0a 20 20 20 20 or $msg...".
2e40: 73 65 74 20 72 63 20 30 0a 20 20 20 20 69 66 20 set rc 0. if
2e50: 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 7b 0a 20 {[is_mingw]} {.
2e60: 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6c lappend l
2e70: 69 62 73 20 2d 6c 67 64 69 33 32 20 2d 6c 77 73 ibs -lgdi32 -lws
2e80: 6f 63 6b 33 32 20 2d 6c 63 72 79 70 74 33 32 0a ock32 -lcrypt32.
2e90: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 5b 69 }. if {[i
2ea0: 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 7a 6c 69 nfo exists ::zli
2eb0: 62 5f 6c 69 62 5d 7d 20 7b 0a 20 20 20 20 20 20 b_lib]} {.
2ec0: 20 20 6c 61 70 70 65 6e 64 20 6c 69 62 73 20 24 lappend libs $
2ed0: 3a 3a 7a 6c 69 62 5f 6c 69 62 0a 20 20 20 20 7d ::zlib_lib. }
2ee0: 0a 20 20 20 20 6d 73 67 2d 71 75 69 65 74 20 63 . msg-quiet c
2ef0: 63 2d 77 69 74 68 20 5b 6c 69 73 74 20 2d 63 66 c-with [list -cf
2f00: 6c 61 67 73 20 24 63 66 6c 61 67 73 20 2d 6c 69 lags $cflags -li
2f10: 62 73 20 24 6c 69 62 73 5d 20 7b 0a 20 20 20 20 bs $libs] {.
2f20: 20 20 20 20 69 66 20 7b 5b 63 63 2d 63 68 65 63 if {[cc-chec
2f30: 6b 2d 69 6e 63 6c 75 64 65 73 20 6f 70 65 6e 73 k-includes opens
2f40: 73 6c 2f 73 73 6c 2e 68 5d 20 26 26 20 5c 0a 20 sl/ssl.h] && \.
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b [
2f60: 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f cc-check-functio
2f70: 6e 73 20 53 53 4c 5f 6e 65 77 5d 7d 20 7b 0a 20 ns SSL_new]} {.
2f80: 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 20 incr
2f90: 72 63 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 rc. }.
2fa0: 20 7d 0a 20 20 20 20 69 66 20 7b 21 24 72 63 20 }. if {!$rc
2fb0: 26 26 20 21 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 && ![is_mingw]}
2fc0: 7b 0a 20 20 20 20 20 20 20 20 23 20 4f 6e 20 73 {. # On s
2fd0: 6f 6d 65 20 73 79 73 74 65 6d 73 2c 20 4f 70 65 ome systems, Ope
2fe0: 6e 53 53 4c 20 61 70 70 65 61 72 73 20 74 6f 20 nSSL appears to
2ff0: 72 65 71 75 69 72 65 20 2d 6c 64 6c 20 74 6f 20 require -ldl to
3000: 6c 69 6e 6b 2e 0a 20 20 20 20 20 20 20 20 6c 61 link.. la
3010: 70 70 65 6e 64 20 6c 69 62 73 20 2d 6c 64 6c 0a ppend libs -ldl.
3020: 20 20 20 20 20 20 20 20 6d 73 67 2d 71 75 69 65 msg-quie
3030: 74 20 63 63 2d 77 69 74 68 20 5b 6c 69 73 74 20 t cc-with [list
3040: 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 67 73 20 -cflags $cflags
3050: 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 7b 0a 20 -libs $libs] {.
3060: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b if {[
3070: 63 63 2d 63 68 65 63 6b 2d 69 6e 63 6c 75 64 65 cc-check-include
3080: 73 20 6f 70 65 6e 73 73 6c 2f 73 73 6c 2e 68 5d s openssl/ssl.h]
3090: 20 26 26 20 5c 0a 20 20 20 20 20 20 20 20 20 20 && \.
30a0: 20 20 20 20 20 20 20 20 20 20 5b 63 63 2d 63 68 [cc-ch
30b0: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 53 53 eck-functions SS
30c0: 4c 5f 6e 65 77 5d 7d 20 7b 0a 20 20 20 20 20 20 L_new]} {.
30d0: 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 20 72 incr r
30e0: 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a c. }.
30f0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }.
3100: 20 20 20 20 69 66 20 7b 24 72 63 7d 20 7b 0a 20 if {$rc} {.
3110: 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 6c msg-resul
3120: 74 20 22 6f 6b 22 0a 20 20 20 20 20 20 20 20 72 t "ok". r
3130: 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 20 65 6c eturn 1. } el
3140: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 se {. msg
3150: 2d 72 65 73 75 6c 74 20 22 6e 6f 22 0a 20 20 20 -result "no".
3160: 20 20 20 20 20 72 65 74 75 72 6e 20 30 0a 20 20 return 0.
3170: 20 20 7d 0a 7d 0a 0a 23 20 43 68 65 63 6b 20 66 }.}..# Check f
3180: 6f 72 20 7a 6c 69 62 2c 20 75 73 69 6e 67 20 74 or zlib, using t
3190: 68 65 20 67 69 76 65 6e 20 6c 6f 63 61 74 69 6f he given locatio
31a0: 6e 20 69 66 20 73 70 65 63 69 66 69 65 64 0a 73 n if specified.s
31b0: 65 74 20 7a 6c 69 62 70 61 74 68 20 5b 6f 70 74 et zlibpath [opt
31c0: 2d 76 61 6c 20 77 69 74 68 2d 7a 6c 69 62 5d 0a -val with-zlib].
31d0: 69 66 20 7b 24 7a 6c 69 62 70 61 74 68 20 65 71 if {$zlibpath eq
31e0: 20 22 74 72 65 65 22 7d 20 7b 0a 20 20 73 65 74 "tree"} {. set
31f0: 20 7a 6c 69 62 64 69 72 20 5b 66 69 6c 65 20 64 zlibdir [file d
3200: 69 72 6e 61 6d 65 20 24 61 75 74 6f 73 65 74 75 irname $autosetu
3210: 70 28 64 69 72 29 5d 2f 63 6f 6d 70 61 74 2f 7a p(dir)]/compat/z
3220: 6c 69 62 0a 20 20 69 66 20 7b 21 5b 66 69 6c 65 lib. if {![file
3230: 20 69 73 64 69 72 65 63 74 6f 72 79 20 24 7a 6c isdirectory $zl
3240: 69 62 64 69 72 5d 7d 20 7b 0a 20 20 20 20 75 73 ibdir]} {. us
3250: 65 72 2d 65 72 72 6f 72 20 22 54 68 65 20 7a 6c er-error "The zl
3260: 69 62 20 69 6e 20 73 6f 75 72 63 65 20 74 72 65 ib in source tre
3270: 65 20 64 69 72 65 63 74 6f 72 79 20 64 6f 65 73 e directory does
3280: 20 6e 6f 74 20 65 78 69 73 74 22 0a 20 20 7d 20 not exist". }
3290: 65 6c 73 65 69 66 20 7b 20 28 5b 6c 6c 65 6e 67 elseif { ([lleng
32a0: 74 68 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 th [glob -nocomp
32b0: 6c 61 69 6e 20 2d 64 69 72 65 63 74 6f 72 79 20 lain -directory
32c0: 24 7a 6c 69 62 64 69 72 20 6c 69 62 7a 2a 5d 5d $zlibdir libz*]]
32d0: 20 3d 3d 20 30 29 20 7d 20 7b 0a 20 20 20 20 75 == 0) } {. u
32e0: 73 65 72 2d 65 72 72 6f 72 20 22 57 69 74 68 20 ser-error "With
32f0: 2d 2d 77 69 74 68 2d 7a 6c 69 62 3d 74 72 65 65 --with-zlib=tree
3300: 2c 20 24 7a 6c 69 62 64 69 72 20 6d 75 73 74 20 , $zlibdir must
3310: 62 65 20 63 6f 6e 66 69 67 75 72 65 64 20 61 6e be configured an
3320: 64 20 62 75 69 6c 74 20 66 69 72 73 74 2e 22 0a d built first.".
3330: 20 20 7d 0a 20 20 63 63 2d 77 69 74 68 20 5b 6c }. cc-with [l
3340: 69 73 74 20 2d 63 66 6c 61 67 73 20 22 2d 49 24 ist -cflags "-I$
3350: 7a 6c 69 62 64 69 72 20 2d 4c 24 7a 6c 69 62 64 zlibdir -L$zlibd
3360: 69 72 22 5d 0a 20 20 64 65 66 69 6e 65 2d 61 70 ir"]. define-ap
3370: 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 pend EXTRA_CFLAG
3380: 53 20 2d 49 24 7a 6c 69 62 64 69 72 0a 20 20 64 S -I$zlibdir. d
3390: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 efine-append LIB
33a0: 53 20 24 7a 6c 69 62 64 69 72 2f 6c 69 62 7a 2e S $zlibdir/libz.
33b0: 61 0a 20 20 73 65 74 20 3a 3a 7a 6c 69 62 5f 6c a. set ::zlib_l
33c0: 69 62 20 24 7a 6c 69 62 64 69 72 2f 6c 69 62 7a ib $zlibdir/libz
33d0: 2e 61 0a 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 .a. msg-result
33e0: 22 55 73 69 6e 67 20 7a 6c 69 62 20 69 6e 20 73 "Using zlib in s
33f0: 6f 75 72 63 65 20 74 72 65 65 22 0a 7d 20 65 6c ource tree".} el
3400: 73 65 20 7b 0a 20 20 73 65 74 20 63 66 74 72 79 se {. set cftry
3410: 20 7b 22 22 7d 0a 20 20 73 65 74 20 6c 64 74 72 {""}. set ldtr
3420: 79 20 7b 22 22 7d 0a 20 20 69 66 20 7b 24 7a 6c y {""}. if {$zl
3430: 69 62 70 61 74 68 20 6e 69 20 7b 61 75 74 6f 20 ibpath ni {auto
3440: 22 22 7d 7d 20 7b 0a 20 20 20 20 6c 61 70 70 65 ""}} {. lappe
3450: 6e 64 20 63 66 74 72 79 20 22 2d 49 24 7a 6c 69 nd cftry "-I$zli
3460: 62 70 61 74 68 22 0a 20 20 20 20 6c 61 70 70 65 bpath". lappe
3470: 6e 64 20 63 66 74 72 79 20 22 2d 49 24 7a 6c 69 nd cftry "-I$zli
3480: 62 70 61 74 68 2f 69 6e 63 6c 75 64 65 22 0a 20 bpath/include".
3490: 20 20 20 6c 61 70 70 65 6e 64 20 6c 64 74 72 79 lappend ldtry
34a0: 20 22 2d 4c 24 7a 6c 69 62 70 61 74 68 22 0a 20 "-L$zlibpath".
34b0: 20 20 20 6c 61 70 70 65 6e 64 20 6c 64 74 72 79 lappend ldtry
34c0: 20 22 2d 4c 24 7a 6c 69 62 70 61 74 68 2f 6c 69 "-L$zlibpath/li
34d0: 62 22 0a 20 20 7d 0a 0a 20 20 23 20 52 65 76 65 b". }.. # Reve
34e0: 72 73 65 20 74 68 65 20 6c 69 73 74 20 6f 66 20 rse the list of
34f0: 74 65 73 74 73 20 73 6f 20 77 65 20 63 68 65 63 tests so we chec
3500: 6b 20 6d 6f 73 74 2d 73 70 65 63 69 66 69 63 20 k most-specific
3510: 74 6f 20 6c 65 61 73 74 2c 20 65 6c 73 65 0a 20 to least, else.
3520: 20 23 20 70 6c 61 74 66 6f 72 6d 20 64 65 76 65 # platform deve
3530: 6c 20 66 69 6c 65 73 20 77 69 6c 6c 20 73 68 61 l files will sha
3540: 64 6f 77 20 6c 6f 63 61 6c 20 2d 2d 77 69 74 68 dow local --with
3550: 2d 7a 6c 69 62 20 6f 76 65 72 72 69 64 65 73 2e -zlib overrides.
3560: 0a 20 20 66 6f 72 65 61 63 68 20 63 20 5b 6c 72 . foreach c [lr
3570: 65 76 65 72 73 65 20 24 63 66 74 72 79 5d 20 7b everse $cftry] {
3580: 0a 20 20 20 20 69 66 20 7b 5b 63 63 2d 77 69 74 . if {[cc-wit
3590: 68 20 5b 6c 69 73 74 20 2d 63 66 6c 61 67 73 20 h [list -cflags
35a0: 24 63 5d 20 7b 63 63 2d 63 68 65 63 6b 2d 69 6e $c] {cc-check-in
35b0: 63 6c 75 64 65 73 20 7a 6c 69 62 2e 68 7d 5d 7d cludes zlib.h}]}
35c0: 20 7b 0a 20 20 20 20 20 20 69 66 20 7b 24 63 20 {. if {$c
35d0: 65 71 20 22 22 7d 20 7b 0a 20 20 20 20 20 20 20 eq ""} {.
35e0: 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 46 6f 75 msg-result "Fou
35f0: 6e 64 20 7a 6c 69 62 2e 68 20 69 6e 20 64 65 66 nd zlib.h in def
3600: 61 75 6c 74 20 69 6e 63 6c 75 64 65 20 70 61 74 ault include pat
3610: 68 22 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 h". } else
3620: 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 {. define
3630: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 -append EXTRA_CF
3640: 4c 41 47 53 20 22 24 63 22 0a 20 20 20 20 20 20 LAGS "$c".
3650: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 46 6f msg-result "Fo
3660: 75 6e 64 20 7a 6c 69 62 2e 68 20 76 69 61 20 24 und zlib.h via $
3670: 63 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 c". }.
3680: 20 73 65 74 20 63 66 6f 75 6e 64 20 24 63 0a 20 set cfound $c.
3690: 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 7d break. }
36a0: 0a 20 20 7d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 . }. if {![inf
36b0: 6f 20 65 78 69 73 74 73 20 63 66 6f 75 6e 64 5d o exists cfound]
36c0: 7d 20 7b 0a 20 20 20 20 75 73 65 72 2d 65 72 72 } {. user-err
36d0: 6f 72 20 22 7a 6c 69 62 2e 68 20 6e 6f 74 20 66 or "zlib.h not f
36e0: 6f 75 6e 64 3b 20 65 69 74 68 65 72 20 69 6e 73 ound; either ins
36f0: 74 61 6c 6c 20 69 74 20 6f 72 20 73 70 65 63 69 tall it or speci
3700: 66 79 20 69 74 73 20 6c 6f 63 61 74 69 6f 6e 20 fy its location
3710: 76 69 61 20 2d 2d 77 69 74 68 2d 7a 6c 69 62 22 via --with-zlib"
3720: 0a 20 20 7d 0a 20 20 66 6f 72 65 61 63 68 20 6c . }. foreach l
3730: 63 68 65 63 6b 20 5b 6c 72 65 76 65 72 73 65 20 check [lreverse
3740: 24 6c 64 74 72 79 5d 20 7b 0a 20 20 20 20 69 66 $ldtry] {. if
3750: 20 7b 5b 63 63 2d 77 69 74 68 20 5b 6c 69 73 74 {[cc-with [list
3760: 20 2d 63 66 6c 61 67 73 20 22 24 63 66 6f 75 6e -cflags "$cfoun
3770: 64 20 24 6c 63 68 65 63 6b 22 5d 20 7b 63 68 65 d $lcheck"] {che
3780: 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c ck-function-in-l
3790: 69 62 20 69 6e 66 6c 61 74 65 45 6e 64 20 7a 7d ib inflateEnd z}
37a0: 5d 7d 20 7b 0a 20 20 20 20 20 20 69 66 20 7b 24 ]} {. if {$
37b0: 6c 63 68 65 63 6b 20 65 71 20 22 22 7d 20 7b 0a lcheck eq ""} {.
37c0: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
37d0: 6c 74 20 22 4c 69 6e 6b 65 64 20 74 6f 20 7a 6c lt "Linked to zl
37e0: 69 62 20 76 69 61 20 64 65 66 61 75 6c 74 20 6c ib via default l
37f0: 69 62 72 61 72 79 20 70 61 74 68 22 0a 20 20 20 ibrary path".
3800: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
3810: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
3820: 64 20 45 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 d EXTRA_LDFLAGS
3830: 22 24 6c 63 68 65 63 6b 22 0a 20 20 20 20 20 20 "$lcheck".
3840: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 4c 69 msg-result "Li
3850: 6e 6b 65 64 20 74 6f 20 7a 6c 69 62 20 76 69 61 nked to zlib via
3860: 20 24 6c 63 68 65 63 6b 22 0a 20 20 20 20 20 20 $lcheck".
3870: 7d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 63 68 }. if {![ch
3880: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d eck-function-in-
3890: 6c 69 62 20 63 6f 6d 70 72 65 73 73 42 6f 75 6e lib compressBoun
38a0: 64 20 7a 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 d z]} {.
38b0: 70 75 74 73 20 22 4e 6f 74 69 63 65 3a 20 64 69 puts "Notice: di
38c0: 73 61 62 6c 69 6e 67 20 7a 6c 69 62 20 63 6f 6d sabling zlib com
38d0: 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 65 20 pression in the
38e0: 53 51 4c 20 73 68 65 6c 6c 22 0a 20 20 20 20 20 SQL shell".
38f0: 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 define-append
3900: 20 53 51 4c 49 54 45 5f 4f 50 54 49 4f 4e 53 5f SQLITE_OPTIONS_
3910: 45 58 54 20 7b 2d 55 53 51 4c 49 54 45 5f 48 41 EXT {-USQLITE_HA
3920: 56 45 5f 5a 4c 49 42 7d 0a 20 20 20 20 20 20 7d VE_ZLIB}. }
3930: 0a 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 . break.
3940: 20 7d 0a 20 20 7d 0a 20 20 73 65 74 20 3a 3a 7a }. }. set ::z
3950: 6c 69 62 5f 6c 69 62 20 2d 6c 7a 0a 7d 0a 0a 73 lib_lib -lz.}..s
3960: 65 74 20 73 73 6c 64 69 72 73 20 5b 6f 70 74 2d et ssldirs [opt-
3970: 76 61 6c 20 77 69 74 68 2d 6f 70 65 6e 73 73 6c val with-openssl
3980: 5d 0a 69 66 20 7b 24 73 73 6c 64 69 72 73 20 6e ].if {$ssldirs n
3990: 65 20 22 6e 6f 6e 65 22 7d 20 7b 0a 20 20 20 20 e "none"} {.
39a0: 73 65 74 20 66 6f 75 6e 64 20 30 0a 20 20 20 20 set found 0.
39b0: 69 66 20 7b 24 73 73 6c 64 69 72 73 20 65 71 20 if {$ssldirs eq
39c0: 22 74 72 65 65 22 7d 20 7b 0a 20 20 20 20 20 20 "tree"} {.
39d0: 20 20 73 65 74 20 73 73 6c 64 69 72 20 5b 66 69 set ssldir [fi
39e0: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 75 74 6f le dirname $auto
39f0: 73 65 74 75 70 28 64 69 72 29 5d 2f 63 6f 6d 70 setup(dir)]/comp
3a00: 61 74 2f 6f 70 65 6e 73 73 6c 0a 20 20 20 20 20 at/openssl.
3a10: 20 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 69 73 if {![file is
3a20: 64 69 72 65 63 74 6f 72 79 20 24 73 73 6c 64 69 directory $ssldi
3a30: 72 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 r]} {.
3a40: 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 user-error "Th
3a50: 65 20 4f 70 65 6e 53 53 4c 20 69 6e 20 73 6f 75 e OpenSSL in sou
3a60: 72 63 65 20 74 72 65 65 20 64 69 72 65 63 74 6f rce tree directo
3a70: 72 79 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 ry does not exis
3a80: 74 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t". }.
3a90: 20 20 20 20 20 73 65 74 20 6d 73 67 20 22 73 73 set msg "ss
3aa0: 6c 20 69 6e 20 24 73 73 6c 64 69 72 22 0a 20 20 l in $ssldir".
3ab0: 20 20 20 20 20 20 73 65 74 20 63 66 6c 61 67 73 set cflags
3ac0: 20 22 2d 49 24 73 73 6c 64 69 72 2f 69 6e 63 6c "-I$ssldir/incl
3ad0: 75 64 65 22 0a 20 20 20 20 20 20 20 20 73 65 74 ude". set
3ae0: 20 6c 64 66 6c 61 67 73 20 22 2d 4c 24 73 73 6c ldflags "-L$ssl
3af0: 64 69 72 22 0a 20 20 20 20 20 20 20 20 73 65 74 dir". set
3b00: 20 73 73 6c 6c 69 62 73 20 22 24 73 73 6c 64 69 ssllibs "$ssldi
3b10: 72 2f 6c 69 62 73 73 6c 2e 61 20 24 73 73 6c 64 r/libssl.a $ssld
3b20: 69 72 2f 6c 69 62 63 72 79 70 74 6f 2e 61 20 2d ir/libcrypto.a -
3b30: 6c 70 74 68 72 65 61 64 22 0a 20 20 20 20 20 20 lpthread".
3b40: 20 20 73 65 74 20 66 6f 75 6e 64 20 5b 63 68 65 set found [che
3b50: 63 6b 2d 66 6f 72 2d 6f 70 65 6e 73 73 6c 20 22 ck-for-openssl "
3b60: 73 73 6c 20 69 6e 20 73 6f 75 72 63 65 20 74 72 ssl in source tr
3b70: 65 65 22 20 22 24 63 66 6c 61 67 73 20 24 6c 64 ee" "$cflags $ld
3b80: 66 6c 61 67 73 22 20 24 73 73 6c 6c 69 62 73 5d flags" $ssllibs]
3b90: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 . } else {.
3ba0: 20 20 20 20 20 20 69 66 20 7b 24 73 73 6c 64 69 if {$ssldi
3bb0: 72 73 20 69 6e 20 7b 61 75 74 6f 20 22 22 7d 7d rs in {auto ""}}
3bc0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c
3bd0: 61 74 63 68 20 7b 0a 20 20 20 20 20 20 20 20 20 atch {.
3be0: 20 20 20 20 20 20 20 73 65 74 20 63 66 6c 61 67 set cflag
3bf0: 73 20 5b 65 78 65 63 20 70 6b 67 2d 63 6f 6e 66 s [exec pkg-conf
3c00: 69 67 20 6f 70 65 6e 73 73 6c 20 2d 2d 63 66 6c ig openssl --cfl
3c10: 61 67 73 2d 6f 6e 6c 79 2d 49 5d 0a 20 20 20 20 ags-only-I].
3c20: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
3c30: 6c 64 66 6c 61 67 73 20 5b 65 78 65 63 20 70 6b ldflags [exec pk
3c40: 67 2d 63 6f 6e 66 69 67 20 6f 70 65 6e 73 73 6c g-config openssl
3c50: 20 2d 2d 6c 69 62 73 2d 6f 6e 6c 79 2d 4c 5d 0a --libs-only-L].
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c70: 73 65 74 20 66 6f 75 6e 64 20 5b 63 68 65 63 6b set found [check
3c80: 2d 66 6f 72 2d 6f 70 65 6e 73 73 6c 20 22 73 73 -for-openssl "ss
3c90: 6c 20 76 69 61 20 70 6b 67 2d 63 6f 6e 66 69 67 l via pkg-config
3ca0: 22 20 22 24 63 66 6c 61 67 73 20 24 6c 64 66 6c " "$cflags $ldfl
3cb0: 61 67 73 22 5d 0a 20 20 20 20 20 20 20 20 20 20 ags"].
3cc0: 20 20 7d 20 6d 73 67 0a 20 20 20 20 20 20 20 20 } msg.
3cd0: 20 20 20 20 69 66 20 7b 21 24 66 6f 75 6e 64 7d if {!$found}
3ce0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
3cf0: 20 20 20 73 65 74 20 73 73 6c 64 69 72 73 20 22 set ssldirs "
3d00: 7b 7d 20 2f 75 73 72 2f 73 66 77 20 2f 75 73 72 {} /usr/sfw /usr
3d10: 2f 6c 6f 63 61 6c 2f 73 73 6c 20 2f 75 73 72 2f /local/ssl /usr/
3d20: 6c 69 62 2f 73 73 6c 20 2f 75 73 72 2f 73 73 6c lib/ssl /usr/ssl
3d30: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 \.
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d50: 2f 75 73 72 2f 70 6b 67 20 2f 75 73 72 2f 6c 6f /usr/pkg /usr/lo
3d60: 63 61 6c 20 2f 75 73 72 20 2f 75 73 72 2f 6c 6f cal /usr /usr/lo
3d70: 63 61 6c 2f 6f 70 74 2f 6f 70 65 6e 73 73 6c 20 cal/opt/openssl
3d80: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \.
3d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
3da0: 6f 70 74 2f 68 6f 6d 65 62 72 65 77 2f 6f 70 74 opt/homebrew/opt
3db0: 2f 6f 70 65 6e 73 73 6c 22 0a 20 20 20 20 20 20 /openssl".
3dc0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
3dd0: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 }. if {!$
3de0: 66 6f 75 6e 64 7d 20 7b 0a 20 20 20 20 20 20 20 found} {.
3df0: 20 20 20 20 20 66 6f 72 65 61 63 68 20 64 69 72 foreach dir
3e00: 20 24 73 73 6c 64 69 72 73 20 7b 0a 20 20 20 20 $ssldirs {.
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
3e20: 24 64 69 72 20 65 71 20 22 22 7d 20 7b 0a 20 20 $dir eq ""} {.
3e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e40: 20 20 73 65 74 20 6d 73 67 20 22 73 79 73 74 65 set msg "syste
3e50: 6d 20 73 73 6c 22 0a 20 20 20 20 20 20 20 20 20 m ssl".
3e60: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63 set c
3e70: 66 6c 61 67 73 20 22 22 0a 20 20 20 20 20 20 20 flags "".
3e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
3e90: 20 6c 64 66 6c 61 67 73 20 22 22 0a 20 20 20 20 ldflags "".
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
3eb0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 se {.
3ec0: 20 20 20 20 20 20 20 20 20 73 65 74 20 6d 73 67 set msg
3ed0: 20 22 73 73 6c 20 69 6e 20 24 64 69 72 22 0a 20 "ssl in $dir".
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ef0: 20 20 20 73 65 74 20 63 66 6c 61 67 73 20 22 2d set cflags "-
3f00: 49 24 64 69 72 2f 69 6e 63 6c 75 64 65 22 0a 20 I$dir/include".
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f20: 20 20 20 73 65 74 20 6c 64 66 6c 61 67 73 20 22 set ldflags "
3f30: 2d 4c 24 64 69 72 2f 6c 69 62 22 0a 20 20 20 20 -L$dir/lib".
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }.
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
3f60: 20 7b 5b 63 68 65 63 6b 2d 66 6f 72 2d 6f 70 65 {[check-for-ope
3f70: 6e 73 73 6c 20 24 6d 73 67 20 22 24 63 66 6c 61 nssl $msg "$cfla
3f80: 67 73 20 24 6c 64 66 6c 61 67 73 22 5d 7d 20 7b gs $ldflags"]} {
3f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3fa0: 20 20 20 20 20 69 6e 63 72 20 66 6f 75 6e 64 0a incr found.
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3fc0: 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 break.
3fd0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }.
3fe0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
3ff0: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 }. }. if
4000: 20 7b 24 66 6f 75 6e 64 7d 20 7b 0a 20 20 20 20 {$found} {.
4010: 20 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 define FOSSI
4020: 4c 5f 45 4e 41 42 4c 45 5f 53 53 4c 0a 20 20 20 L_ENABLE_SSL.
4030: 20 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 define-appe
4040: 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 nd EXTRA_CFLAGS
4050: 24 63 66 6c 61 67 73 0a 20 20 20 20 20 20 20 20 $cflags.
4060: 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 define-append EX
4070: 54 52 41 5f 4c 44 46 4c 41 47 53 20 24 6c 64 66 TRA_LDFLAGS $ldf
4080: 6c 61 67 73 0a 20 20 20 20 20 20 20 20 64 65 66 lags. def
4090: 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 4c 41 47 ine-append CFLAG
40a0: 53 20 24 63 66 6c 61 67 73 0a 20 20 20 20 20 20 S $cflags.
40b0: 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 define-append
40c0: 4c 44 46 4c 41 47 53 20 24 6c 64 66 6c 61 67 73 LDFLAGS $ldflags
40d0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69 6e . if {[in
40e0: 66 6f 20 65 78 69 73 74 73 20 73 73 6c 6c 69 62 fo exists ssllib
40f0: 73 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s]} {.
4100: 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 define-append
4110: 4c 49 42 53 20 24 73 73 6c 6c 69 62 73 0a 20 20 LIBS $ssllibs.
4120: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 } else {.
4130: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6e defin
4140: 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c e-append LIBS -l
4150: 73 73 6c 20 2d 6c 63 72 79 70 74 6f 0a 20 20 20 ssl -lcrypto.
4160: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 }. i
4170: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 f {[info exists
4180: 3a 3a 7a 6c 69 62 5f 6c 69 62 5d 7d 20 7b 0a 20 ::zlib_lib]} {.
4190: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6e defin
41a0: 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 24 3a e-append LIBS $:
41b0: 3a 7a 6c 69 62 5f 6c 69 62 0a 20 20 20 20 20 20 :zlib_lib.
41c0: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 7b }. if {
41d0: 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 7b 0a 20 20 [is_mingw]} {.
41e0: 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 define
41f0: 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 67 -append LIBS -lg
4200: 64 69 33 32 20 2d 6c 77 73 6f 63 6b 33 32 20 2d di32 -lwsock32 -
4210: 6c 63 72 79 70 74 33 32 0a 20 20 20 20 20 20 20 lcrypt32.
4220: 20 7d 0a 20 20 20 20 20 20 20 20 6d 73 67 2d 72 }. msg-r
4230: 65 73 75 6c 74 20 22 48 54 54 50 53 20 73 75 70 esult "HTTPS sup
4240: 70 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 0a 20 port enabled"..
4250: 20 20 20 20 20 20 20 23 20 53 69 6c 65 6e 63 65 # Silence
4260: 20 4f 70 65 6e 53 53 4c 20 64 65 70 72 65 63 61 OpenSSL depreca
4270: 74 69 6f 6e 20 77 61 72 6e 69 6e 67 73 20 6f 6e tion warnings on
4280: 20 4d 61 63 20 4f 53 20 58 20 31 30 2e 37 2e 0a Mac OS X 10.7..
4290: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72 if {[str
42a0: 69 6e 67 20 6d 61 74 63 68 20 2a 2d 64 61 72 77 ing match *-darw
42b0: 69 6e 2a 20 5b 67 65 74 2d 64 65 66 69 6e 65 20 in* [get-define
42c0: 68 6f 73 74 5d 5d 7d 20 7b 0a 20 20 20 20 20 20 host]]} {.
42d0: 20 20 20 20 20 20 69 66 20 7b 5b 63 63 74 65 73 if {[cctes
42e0: 74 20 2d 63 66 6c 61 67 73 20 7b 2d 57 64 65 70 t -cflags {-Wdep
42f0: 72 65 63 61 74 65 64 2d 64 65 63 6c 61 72 61 74 recated-declarat
4300: 69 6f 6e 73 7d 5d 7d 20 7b 0a 20 20 20 20 20 20 ions}]} {.
4310: 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 define
4320: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 -append EXTRA_CF
4330: 4c 41 47 53 20 2d 57 64 65 70 72 65 63 61 74 65 LAGS -Wdeprecate
4340: 64 2d 64 65 63 6c 61 72 61 74 69 6f 6e 73 0a 20 d-declarations.
4350: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }.
4360: 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 }. } els
4370: 65 20 7b 0a 20 20 20 20 20 20 20 20 75 73 65 72 e {. user
4380: 2d 65 72 72 6f 72 20 22 4f 70 65 6e 53 53 4c 20 -error "OpenSSL
4390: 6e 6f 74 20 66 6f 75 6e 64 2e 20 43 6f 6e 73 69 not found. Consi
43a0: 64 65 72 20 2d 2d 77 69 74 68 2d 6f 70 65 6e 73 der --with-opens
43b0: 73 6c 3d 6e 6f 6e 65 20 74 6f 20 64 69 73 61 62 sl=none to disab
43c0: 6c 65 20 48 54 54 50 53 20 73 75 70 70 6f 72 74 le HTTPS support
43d0: 22 0a 20 20 20 20 7d 0a 7d 20 65 6c 73 65 20 7b ". }.} else {
43e0: 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 . if {[info e
43f0: 78 69 73 74 73 20 3a 3a 7a 6c 69 62 5f 6c 69 62 xists ::zlib_lib
4400: 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 64 65 66 ]} {. def
4410: 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 ine-append LIBS
4420: 24 3a 3a 7a 6c 69 62 5f 6c 69 62 0a 20 20 20 20 $::zlib_lib.
4430: 7d 0a 7d 0a 0a 0a 0a 23 23 23 23 23 23 23 23 23 }.}....#########
4440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
4470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
4480: 23 20 2d 2d 77 69 74 68 2d 73 71 6c 69 74 65 3d # --with-sqlite=
4490: 50 41 54 48 20 63 68 65 63 6b 73 20 66 6f 72 20 PATH checks for
44a0: 74 68 65 20 66 69 72 73 74 20 69 74 20 66 69 6e the first it fin
44b0: 64 73 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 ds of the follow
44c0: 69 6e 67 2e 2e 2e 0a 23 20 2d 20 50 41 54 48 2f ing....# - PATH/
44d0: 73 71 6c 69 74 65 33 2e 63 20 61 6e 64 20 50 41 sqlite3.c and PA
44e0: 54 48 2f 73 71 6c 69 74 65 33 2e 68 0a 23 20 2d TH/sqlite3.h.# -
44f0: 20 50 41 54 48 2f 73 71 6c 69 74 65 33 2e 6f 20 PATH/sqlite3.o
4500: 28 61 6e 64 20 61 73 73 75 6d 65 73 20 73 71 6c (and assumes sql
4510: 69 74 65 33 2e 68 20 69 73 20 77 69 74 68 20 69 ite3.h is with i
4520: 74 29 0a 23 20 2d 20 50 41 54 48 2f 6c 69 62 2f t).# - PATH/lib/
4530: 6c 69 62 73 71 6c 69 74 65 33 2a 20 61 6e 64 20 libsqlite3* and
4540: 50 41 54 48 2f 69 6e 63 6c 75 64 65 2f 73 71 6c PATH/include/sql
4550: 69 74 65 33 2e 68 0a 64 65 66 69 6e 65 20 43 46 ite3.h.define CF
4560: 4c 41 47 53 5f 49 4e 43 4c 55 44 45 20 7b 7d 0a LAGS_INCLUDE {}.
4570: 23 20 5e 5e 5e 20 43 46 4c 41 47 53 5f 49 4e 43 # ^^^ CFLAGS_INC
4580: 4c 55 44 45 20 69 73 20 4f 4e 4c 59 20 66 6f 72 LUDE is ONLY for
4590: 20 2d 49 2e 2e 2e 20 66 6c 61 67 73 20 61 6e 64 -I... flags and
45a0: 20 74 68 65 69 72 20 6f 72 64 65 72 20 69 73 0a their order is.
45b0: 23 20 73 69 67 6e 69 66 69 63 61 6e 74 20 73 6f # significant so
45c0: 20 74 68 61 74 20 2d 2d 77 69 74 68 2d 73 71 6c that --with-sql
45d0: 69 74 65 3d 50 41 54 48 27 73 20 68 65 61 64 65 ite=PATH's heade
45e0: 72 20 63 61 6e 20 73 68 61 64 6f 77 20 6f 75 72 r can shadow our
45f0: 0a 23 20 6f 77 6e 2e 20 4f 6e 65 20 63 61 76 65 .# own. One cave
4600: 61 74 20 77 69 74 68 20 74 68 69 73 20 69 73 20 at with this is
4610: 74 68 61 74 20 77 65 20 63 61 6e 6e 6f 74 20 70 that we cannot p
4620: 6f 69 6e 74 20 2d 2d 77 69 74 68 2d 73 71 6c 69 oint --with-sqli
4630: 74 65 3d 50 41 54 48 0a 23 20 74 6f 20 74 68 65 te=PATH.# to the
4640: 20 72 6f 6f 74 20 6f 66 20 73 71 6c 69 74 65 33 root of sqlite3
4650: 27 73 20 6f 77 6e 20 62 75 69 6c 64 20 74 72 65 's own build tre
4660: 65 20 62 65 63 61 75 73 65 20 74 68 61 74 20 64 e because that d
4670: 69 72 20 68 61 73 20 61 0a 23 20 63 6f 6e 66 69 ir has a.# confi
4680: 67 2e 68 20 77 68 69 63 68 20 65 6e 64 73 20 75 g.h which ends u
4690: 70 20 73 68 61 64 6f 77 69 6e 67 20 73 72 63 2f p shadowing src/
46a0: 63 6f 6e 66 69 67 2e 68 2c 20 62 72 65 61 6b 69 config.h, breaki
46b0: 6e 67 20 6f 75 72 20 62 75 69 6c 64 2e 0a 73 65 ng our build..se
46c0: 74 20 73 71 33 70 61 74 68 20 5b 6f 70 74 2d 76 t sq3path [opt-v
46d0: 61 6c 20 77 69 74 68 2d 73 71 6c 69 74 65 5d 0a al with-sqlite].
46e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 53 define SQLITE3_S
46f0: 52 43 2e 32 20 7b 7d 0a 64 65 66 69 6e 65 20 53 RC.2 {}.define S
4700: 51 4c 49 54 45 33 5f 4f 42 4a 2e 32 20 7b 7d 0a QLITE3_OBJ.2 {}.
4710: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 53 define SQLITE3_S
4720: 48 45 4c 4c 5f 53 52 43 2e 32 20 7b 24 28 53 51 HELL_SRC.2 {$(SQ
4730: 4c 49 54 45 33 5f 53 48 45 4c 4c 5f 53 52 43 2e LITE3_SHELL_SRC.
4740: 30 29 7d 0a 69 66 20 7b 24 73 71 33 70 61 74 68 0)}.if {$sq3path
4750: 20 69 6e 20 7b 74 72 65 65 20 22 22 7d 7d 20 7b in {tree ""}} {
4760: 0a 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 55 . msg-result "U
4770: 73 69 6e 67 20 73 71 6c 69 74 65 33 2e 63 20 66 sing sqlite3.c f
4780: 72 6f 6d 20 74 68 69 73 20 73 6f 75 72 63 65 20 rom this source
4790: 74 72 65 65 2e 22 0a 7d 20 65 6c 73 65 20 7b 0a tree.".} else {.
47a0: 20 20 23 20 53 51 4c 49 54 45 33 5f 4f 52 49 47 # SQLITE3_ORIG
47b0: 49 4e 3a 0a 20 20 23 20 20 20 30 20 3d 20 6c 6f IN:. # 0 = lo
47c0: 63 61 6c 20 73 6f 75 72 63 65 20 74 72 65 65 0a cal source tree.
47d0: 20 20 23 20 20 20 31 20 3d 20 75 73 65 20 65 78 # 1 = use ex
47e0: 74 65 72 6e 61 6c 20 6c 69 62 20 6f 72 20 73 71 ternal lib or sq
47f0: 6c 69 74 65 33 2e 6f 0a 20 20 23 20 20 20 32 20 lite3.o. # 2
4800: 3d 20 75 73 65 20 65 78 74 65 72 6e 61 6c 20 73 = use external s
4810: 71 6c 69 74 65 33 2e 63 20 61 6e 64 20 28 69 66 qlite3.c and (if
4820: 20 66 6f 75 6e 64 29 20 73 68 65 6c 6c 2e 63 0a found) shell.c.
4830: 20 20 64 65 66 69 6e 65 20 55 53 45 5f 53 59 53 define USE_SYS
4840: 54 45 4d 5f 53 51 4c 49 54 45 20 31 0a 20 20 64 TEM_SQLITE 1. d
4850: 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 4f 52 efine SQLITE3_OR
4860: 49 47 49 4e 20 32 0a 20 20 69 66 20 7b 24 73 71 IGIN 2. if {$sq
4870: 33 70 61 74 68 20 21 3d 20 22 61 75 74 6f 22 7d 3path != "auto"}
4880: 20 7b 0a 20 20 20 20 69 66 20 7b 28 5b 66 69 6c {. if {([fil
4890: 65 20 65 78 69 73 74 73 20 24 73 71 33 70 61 74 e exists $sq3pat
48a0: 68 2f 73 71 6c 69 74 65 33 2e 63 5d 29 20 26 26 h/sqlite3.c]) &&
48b0: 20 5c 0a 20 20 20 20 20 20 20 20 28 5b 66 69 6c \. ([fil
48c0: 65 20 65 78 69 73 74 73 20 24 73 71 33 70 61 74 e exists $sq3pat
48d0: 68 2f 73 71 6c 69 74 65 33 2e 68 5d 29 20 7d 20 h/sqlite3.h]) }
48e0: 7b 0a 20 20 20 20 20 20 23 20 50 72 65 66 65 72 {. # Prefer
48f0: 20 73 71 6c 69 74 65 33 2e 5b 63 68 5d 20 69 66 sqlite3.[ch] if
4900: 20 66 6f 75 6e 64 2e 0a 20 20 20 20 20 20 64 65 found.. de
4910: 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 53 52 43 fine SQLITE3_SRC
4920: 2e 32 20 24 73 71 33 70 61 74 68 2f 73 71 6c 69 .2 $sq3path/sqli
4930: 74 65 33 2e 63 0a 20 20 20 20 20 20 64 65 66 69 te3.c. defi
4940: 6e 65 20 53 51 4c 49 54 45 33 5f 4f 42 4a 2e 32 ne SQLITE3_OBJ.2
4950: 20 7b 24 28 53 51 4c 49 54 45 33 5f 4f 42 4a 2e {$(SQLITE3_OBJ.
4960: 30 29 7d 0a 20 20 20 20 20 20 64 65 66 69 6e 65 0)}. define
4970: 20 55 53 45 5f 53 59 53 54 45 4d 5f 53 51 4c 49 USE_SYSTEM_SQLI
4980: 54 45 20 32 0a 20 20 20 20 20 20 64 65 66 69 6e TE 2. defin
4990: 65 20 53 51 4c 49 54 45 33 5f 4f 52 49 47 49 4e e SQLITE3_ORIGIN
49a0: 20 32 0a 20 20 20 20 20 20 69 66 20 7b 5b 66 69 2. if {[fi
49b0: 6c 65 20 65 78 69 73 74 73 20 24 73 71 33 70 61 le exists $sq3pa
49c0: 74 68 2f 73 68 65 6c 6c 2e 63 5d 7d 20 7b 0a 20 th/shell.c]} {.
49d0: 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 53 51 define SQ
49e0: 4c 49 54 45 33 5f 53 48 45 4c 4c 5f 53 52 43 2e LITE3_SHELL_SRC.
49f0: 32 20 24 73 71 33 70 61 74 68 2f 73 68 65 6c 6c 2 $sq3path/shell
4a00: 2e 63 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 .c. }.
4a10: 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 43 define-append C
4a20: 46 4c 41 47 53 5f 49 4e 43 4c 55 44 45 20 2d 49 FLAGS_INCLUDE -I
4a30: 24 73 71 33 70 61 74 68 0a 20 20 20 20 20 20 64 $sq3path. d
4a40: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 efine-append EXT
4a50: 52 41 5f 4c 44 46 4c 41 47 53 20 2d 6c 70 74 68 RA_LDFLAGS -lpth
4a60: 72 65 61 64 0a 20 20 20 20 20 20 23 20 5e 5e 5e read. # ^^^
4a70: 20 61 64 64 69 74 69 6f 6e 61 6c 20 2d 6c 58 58 additional -lXX
4a80: 58 20 66 6c 61 67 73 20 61 72 65 20 63 6f 6e 73 X flags are cons
4a90: 65 72 76 61 74 69 76 65 20 65 73 74 69 6d 61 74 ervative estimat
4aa0: 65 73 0a 20 20 20 20 20 20 6d 73 67 2d 72 65 73 es. msg-res
4ab0: 75 6c 74 20 22 55 73 69 6e 67 20 73 71 6c 69 74 ult "Using sqlit
4ac0: 65 33 2e 63 20 61 6e 64 20 73 71 6c 69 74 65 33 e3.c and sqlite3
4ad0: 2e 68 20 66 72 6f 6d 20 24 73 71 33 70 61 74 68 .h from $sq3path
4ae0: 22 0a 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b ". } elseif {
4af0: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 24 73 71 [file exists $sq
4b00: 33 70 61 74 68 2f 73 71 6c 69 74 65 33 2e 6f 5d 3path/sqlite3.o]
4b10: 7d 20 7b 0a 20 20 20 20 20 20 23 20 55 73 65 20 } {. # Use
4b20: 73 71 6c 69 74 65 33 2e 6f 20 69 66 20 66 6f 75 sqlite3.o if fou
4b30: 6e 64 2e 0a 20 20 20 20 20 20 64 65 66 69 6e 65 nd.. define
4b40: 20 53 51 4c 49 54 45 33 5f 4f 42 4a 2e 32 20 24 SQLITE3_OBJ.2 $
4b50: 73 71 33 70 61 74 68 2f 73 71 6c 69 74 65 33 2e sq3path/sqlite3.
4b60: 6f 0a 20 20 20 20 20 20 64 65 66 69 6e 65 2d 61 o. define-a
4b70: 70 70 65 6e 64 20 43 46 4c 41 47 53 5f 49 4e 43 ppend CFLAGS_INC
4b80: 4c 55 44 45 20 2d 49 24 73 71 33 70 61 74 68 0a LUDE -I$sq3path.
4b90: 20 20 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 define-app
4ba0: 65 6e 64 20 45 58 54 52 41 5f 4c 44 46 4c 41 47 end EXTRA_LDFLAG
4bb0: 53 20 24 73 71 33 70 61 74 68 2f 73 71 6c 69 74 S $sq3path/sqlit
4bc0: 65 33 2e 6f 20 2d 6c 70 74 68 72 65 61 64 0a 20 e3.o -lpthread.
4bd0: 20 20 20 20 20 23 20 5e 5e 5e 20 61 64 64 69 74 # ^^^ addit
4be0: 69 6f 6e 61 6c 20 2d 6c 58 58 58 20 66 6c 61 67 ional -lXXX flag
4bf0: 73 20 61 72 65 20 63 6f 6e 73 65 72 76 61 74 69 s are conservati
4c00: 76 65 20 65 73 74 69 6d 61 74 65 73 0a 20 20 20 ve estimates.
4c10: 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 55 msg-result "U
4c20: 73 69 6e 67 20 73 71 6c 69 74 65 33 2e 6f 20 66 sing sqlite3.o f
4c30: 72 6f 6d 20 24 73 71 33 70 61 74 68 22 0a 20 20 rom $sq3path".
4c40: 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 28 5b 6c } elseif { ([l
4c50: 6c 65 6e 67 74 68 20 5b 67 6c 6f 62 20 2d 6e 6f length [glob -no
4c60: 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72 65 63 74 complain -direct
4c70: 6f 72 79 20 24 73 71 33 70 61 74 68 2f 6c 69 62 ory $sq3path/lib
4c80: 20 6c 69 62 73 71 6c 69 74 65 33 2a 5d 5d 20 21 libsqlite3*]] !
4c90: 3d 20 30 29 20 5c 0a 20 20 20 20 20 20 20 20 20 = 0) \.
4ca0: 20 20 20 20 20 20 20 20 26 26 20 28 5b 66 69 6c && ([fil
4cb0: 65 20 65 78 69 73 74 73 20 24 73 71 33 70 61 74 e exists $sq3pat
4cc0: 68 2f 69 6e 63 6c 75 64 65 2f 73 71 6c 69 74 65 h/include/sqlite
4cd0: 33 2e 68 5d 29 20 7d 20 7b 0a 20 20 20 20 20 20 3.h]) } {.
4ce0: 23 20 65 2e 67 2e 20 2d 2d 77 69 74 68 2d 73 71 # e.g. --with-sq
4cf0: 6c 69 74 65 3d 2f 75 73 72 2f 6c 6f 63 61 6c 2e lite=/usr/local.
4d00: 20 54 72 79 20 24 73 71 33 70 61 74 68 2f 6c 69 Try $sq3path/li
4d10: 62 2f 6c 69 62 73 71 6c 69 74 65 33 2a 0a 20 20 b/libsqlite3*.
4d20: 20 20 20 20 23 20 61 6e 64 20 24 73 71 33 70 61 # and $sq3pa
4d30: 74 68 2f 69 6e 63 6c 75 64 65 2f 73 71 6c 69 74 th/include/sqlit
4d40: 65 33 2e 68 0a 20 20 20 20 20 20 64 65 66 69 6e e3.h. defin
4d50: 65 2d 61 70 70 65 6e 64 20 43 46 4c 41 47 53 5f e-append CFLAGS_
4d60: 49 4e 43 4c 55 44 45 20 2d 49 24 73 71 33 70 61 INCLUDE -I$sq3pa
4d70: 74 68 2f 69 6e 63 6c 75 64 65 0a 20 20 20 20 20 th/include.
4d80: 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 define-append E
4d90: 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 2d 4c 24 XTRA_LDFLAGS -L$
4da0: 73 71 33 70 61 74 68 2f 6c 69 62 20 2d 6c 73 71 sq3path/lib -lsq
4db0: 6c 69 74 65 33 20 2d 6c 70 74 68 72 65 61 64 0a lite3 -lpthread.
4dc0: 20 20 20 20 20 20 23 20 5e 5e 5e 20 61 64 64 69 # ^^^ addi
4dd0: 74 69 6f 6e 61 6c 20 2d 6c 58 58 58 20 66 6c 61 tional -lXXX fla
4de0: 67 73 20 61 72 65 20 63 6f 6e 73 65 72 76 61 74 gs are conservat
4df0: 69 76 65 20 65 73 74 69 6d 61 74 65 73 0a 20 20 ive estimates.
4e00: 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 msg-result "
4e10: 55 73 69 6e 67 20 2d 6c 73 71 6c 69 74 65 33 20 Using -lsqlite3
4e20: 66 72 6f 6d 20 24 73 71 33 70 61 74 68 22 0a 20 from $sq3path".
4e30: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
4e40: 20 20 23 20 41 73 73 75 6d 65 20 24 73 71 33 70 # Assume $sq3p
4e50: 61 74 68 20 68 6f 6c 64 73 20 62 6f 74 68 20 74 ath holds both t
4e60: 68 65 20 6c 69 62 20 61 6e 64 20 68 65 61 64 65 he lib and heade
4e70: 72 0a 20 20 20 20 20 20 63 63 2d 77 69 74 68 20 r. cc-with
4e80: 5b 6c 69 73 74 20 2d 63 66 6c 61 67 73 20 22 2d [list -cflags "-
4e90: 49 24 73 71 33 70 61 74 68 20 2d 4c 24 73 71 33 I$sq3path -L$sq3
4ea0: 70 61 74 68 22 5d 0a 20 20 20 20 20 20 64 65 66 path"]. def
4eb0: 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 4c 41 47 ine-append CFLAG
4ec0: 53 5f 49 4e 43 4c 55 44 45 20 2d 49 24 73 71 33 S_INCLUDE -I$sq3
4ed0: 70 61 74 68 0a 20 20 20 20 20 20 64 65 66 69 6e path. defin
4ee0: 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 4c e-append EXTRA_L
4ef0: 44 46 4c 41 47 53 20 2d 4c 24 73 71 33 70 61 74 DFLAGS -L$sq3pat
4f00: 68 20 2d 6c 73 71 6c 69 74 65 33 20 2d 6c 70 74 h -lsqlite3 -lpt
4f10: 68 72 65 61 64 0a 20 20 20 20 20 20 23 20 5e 5e hread. # ^^
4f20: 5e 20 61 64 64 69 74 69 6f 6e 61 6c 20 2d 6c 58 ^ additional -lX
4f30: 58 58 20 66 6c 61 67 73 20 61 72 65 20 63 6f 6e XX flags are con
4f40: 73 65 72 76 61 74 69 76 65 20 65 73 74 69 6d 61 servative estima
4f50: 74 65 73 0a 20 20 20 20 20 20 6d 73 67 2d 72 65 tes. msg-re
4f60: 73 75 6c 74 20 22 55 73 69 6e 67 20 2d 6c 73 71 sult "Using -lsq
4f70: 6c 69 74 65 33 20 66 72 6f 6d 20 24 73 71 33 70 lite3 from $sq3p
4f80: 61 74 68 22 0a 20 20 20 20 7d 0a 20 20 7d 20 65 ath". }. } e
4f90: 6c 73 65 69 66 20 7b 21 5b 63 63 2d 63 68 65 63 lseif {![cc-chec
4fa0: 6b 2d 69 6e 63 6c 75 64 65 73 20 73 71 6c 69 74 k-includes sqlit
4fb0: 65 33 2e 68 5d 20 7c 7c 20 21 5b 63 68 65 63 6b e3.h] || ![check
4fc0: 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 -function-in-lib
4fd0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 sqlite3_open_v2
4fe0: 20 73 71 6c 69 74 65 33 5d 7d 20 7b 0a 20 20 20 sqlite3]} {.
4ff0: 20 75 73 65 72 2d 65 72 72 6f 72 20 22 6c 69 62 user-error "lib
5000: 73 71 6c 69 74 65 33 20 6e 6f 74 20 66 6f 75 6e sqlite3 not foun
5010: 64 20 70 6c 65 61 73 65 20 69 6e 73 74 61 6c 6c d please install
5020: 20 69 74 20 6f 72 20 73 70 65 63 69 66 79 20 74 it or specify t
5030: 68 65 20 6c 6f 63 61 74 69 6f 6e 20 77 69 74 68 he location with
5040: 20 2d 2d 77 69 74 68 2d 73 71 6c 69 74 65 22 0a --with-sqlite".
5050: 20 20 7d 0a 7d 0a 64 65 66 69 6e 65 2d 61 70 70 }.}.define-app
5060: 65 6e 64 20 43 46 4c 41 47 53 5f 49 4e 43 4c 55 end CFLAGS_INCLU
5070: 44 45 20 7b 2d 49 2e 20 2d 49 24 28 53 52 43 44 DE {-I. -I$(SRCD
5080: 49 52 29 20 2d 49 24 28 53 52 43 44 49 52 5f 65 IR) -I$(SRCDIR_e
5090: 78 74 73 72 63 29 7d 0a 0a 73 65 74 20 74 63 6c xtsrc)}..set tcl
50a0: 70 61 74 68 20 5b 6f 70 74 2d 76 61 6c 20 77 69 path [opt-val wi
50b0: 74 68 2d 74 63 6c 5d 0a 69 66 20 7b 24 74 63 6c th-tcl].if {$tcl
50c0: 70 61 74 68 20 6e 65 20 22 22 7d 20 7b 0a 20 20 path ne ""} {.
50d0: 20 20 73 65 74 20 74 63 6c 70 72 69 76 61 74 65 set tclprivate
50e0: 73 74 75 62 73 20 5b 6f 70 74 2d 62 6f 6f 6c 20 stubs [opt-bool
50f0: 77 69 74 68 2d 74 63 6c 2d 70 72 69 76 61 74 65 with-tcl-private
5100: 2d 73 74 75 62 73 5d 0a 20 20 20 20 23 20 4e 6f -stubs]. # No
5110: 74 65 20 70 61 72 73 65 2d 74 63 6c 63 6f 6e 66 te parse-tclconf
5120: 69 67 2d 73 68 20 69 73 20 69 6e 20 61 75 74 6f ig-sh is in auto
5130: 73 65 74 75 70 2f 6c 6f 63 61 6c 2e 74 63 6c 0a setup/local.tcl.
5140: 20 20 20 20 69 66 20 7b 24 74 63 6c 70 61 74 68 if {$tclpath
5150: 20 65 71 20 22 31 22 7d 20 7b 0a 20 20 20 20 20 eq "1"} {.
5160: 20 20 20 73 65 74 20 74 63 6c 64 69 72 20 5b 66 set tcldir [f
5170: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 75 74 ile dirname $aut
5180: 6f 73 65 74 75 70 28 64 69 72 29 5d 2f 63 6f 6d osetup(dir)]/com
5190: 70 61 74 2f 74 63 6c 2d 38 2e 36 0a 20 20 20 20 pat/tcl-8.6.
51a0: 20 20 20 20 69 66 20 7b 24 74 63 6c 70 72 69 76 if {$tclpriv
51b0: 61 74 65 73 74 75 62 73 7d 20 7b 0a 20 20 20 20 atestubs} {.
51c0: 20 20 20 20 20 20 20 20 73 65 74 20 74 63 6c 63 set tclc
51d0: 6f 6e 66 69 67 28 54 43 4c 5f 49 4e 43 4c 55 44 onfig(TCL_INCLUD
51e0: 45 5f 53 50 45 43 29 20 2d 49 24 74 63 6c 64 69 E_SPEC) -I$tcldi
51f0: 72 2f 67 65 6e 65 72 69 63 0a 20 20 20 20 20 20 r/generic.
5200: 20 20 20 20 20 20 73 65 74 20 74 63 6c 63 6f 6e set tclcon
5210: 66 69 67 28 54 43 4c 5f 56 45 52 53 49 4f 4e 29 fig(TCL_VERSION)
5220: 20 7b 50 72 69 76 61 74 65 20 53 74 75 62 73 7d {Private Stubs}
5230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 . set
5240: 20 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 tclconfig(TCL_P
5250: 41 54 43 48 5f 4c 45 56 45 4c 29 20 7b 7d 0a 20 ATCH_LEVEL) {}.
5260: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 set t
5270: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 52 45 clconfig(TCL_PRE
5280: 46 49 58 29 20 24 74 63 6c 64 69 72 0a 20 20 20 FIX) $tcldir.
5290: 20 20 20 20 20 20 20 20 20 73 65 74 20 74 63 6c set tcl
52a0: 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f 46 4c config(TCL_LD_FL
52b0: 41 47 53 29 20 7b 20 7d 0a 20 20 20 20 20 20 20 AGS) { }.
52c0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
52d0: 20 20 20 20 20 20 23 20 55 73 65 20 74 68 65 20 # Use the
52e0: 73 79 73 74 65 6d 20 54 63 6c 2e 20 4c 6f 6f 6b system Tcl. Look
52f0: 20 69 6e 20 73 6f 6d 65 20 6c 69 6b 65 6c 79 20 in some likely
5300: 70 6c 61 63 65 73 2e 0a 20 20 20 20 20 20 20 20 places..
5310: 20 20 20 20 61 72 72 61 79 20 73 65 74 20 74 63 array set tc
5320: 6c 63 6f 6e 66 69 67 20 5b 70 61 72 73 65 2d 74 lconfig [parse-t
5330: 63 6c 63 6f 6e 66 69 67 2d 73 68 20 5c 0a 20 20 clconfig-sh \.
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 $t
5350: 63 6c 64 69 72 2f 75 6e 69 78 20 24 74 63 6c 64 cldir/unix $tcld
5360: 69 72 2f 77 69 6e 20 5c 0a 20 20 20 20 20 20 20 ir/win \.
5370: 20 20 20 20 20 20 20 20 20 2f 75 73 72 20 2f 75 /usr /u
5380: 73 72 2f 6c 6f 63 61 6c 20 2f 75 73 72 2f 73 68 sr/local /usr/sh
5390: 61 72 65 20 2f 6f 70 74 2f 6c 6f 63 61 6c 5d 0a are /opt/local].
53a0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
53b0: 6d 73 67 20 22 6f 6e 20 79 6f 75 72 20 73 79 73 msg "on your sys
53c0: 74 65 6d 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 tem". }.
53d0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
53e0: 20 20 20 20 61 72 72 61 79 20 73 65 74 20 74 63 array set tc
53f0: 6c 63 6f 6e 66 69 67 20 5b 70 61 72 73 65 2d 74 lconfig [parse-t
5400: 63 6c 63 6f 6e 66 69 67 2d 73 68 20 24 74 63 6c clconfig-sh $tcl
5410: 70 61 74 68 5d 0a 20 20 20 20 20 20 20 20 73 65 path]. se
5420: 74 20 6d 73 67 20 22 61 74 20 24 74 63 6c 70 61 t msg "at $tclpa
5430: 74 68 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 th". }. if
5440: 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 73 74 61 74 {[opt-bool stat
5450: 69 63 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 ic]} {. s
5460: 65 74 20 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c et tclconfig(TCL
5470: 5f 4c 44 5f 46 4c 41 47 53 29 20 7b 20 7d 0a 20 _LD_FLAGS) { }.
5480: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 21 5b 69 }. if {![i
5490: 6e 66 6f 20 65 78 69 73 74 73 20 74 63 6c 63 6f nfo exists tclco
54a0: 6e 66 69 67 28 54 43 4c 5f 49 4e 43 4c 55 44 45 nfig(TCL_INCLUDE
54b0: 5f 53 50 45 43 29 5d 7d 20 7b 0a 20 20 20 20 20 _SPEC)]} {.
54c0: 20 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 43 user-error "C
54d0: 61 6e 6e 6f 74 20 66 69 6e 64 20 54 63 6c 20 24 annot find Tcl $
54e0: 6d 73 67 22 0a 20 20 20 20 7d 0a 20 20 20 20 73 msg". }. s
54f0: 65 74 20 74 63 6c 73 74 75 62 73 20 5b 6f 70 74 et tclstubs [opt
5500: 2d 62 6f 6f 6c 20 77 69 74 68 2d 74 63 6c 2d 73 -bool with-tcl-s
5510: 74 75 62 73 5d 0a 20 20 20 20 69 66 20 7b 24 74 tubs]. if {$t
5520: 63 6c 70 72 69 76 61 74 65 73 74 75 62 73 7d 20 clprivatestubs}
5530: 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 {. define
5540: 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 54 FOSSIL_ENABLE_T
5550: 43 4c 5f 50 52 49 56 41 54 45 5f 53 54 55 42 53 CL_PRIVATE_STUBS
5560: 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 . define
5570: 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 0a 20 20 USE_TCL_STUBS.
5580: 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 74 63 6c } elseif {$tcl
5590: 73 74 75 62 73 20 26 26 20 24 74 63 6c 63 6f 6e stubs && $tclcon
55a0: 66 69 67 28 54 43 4c 5f 53 55 50 50 4f 52 54 53 fig(TCL_SUPPORTS
55b0: 5f 53 54 55 42 53 29 7d 20 7b 0a 20 20 20 20 20 _STUBS)} {.
55c0: 20 20 20 73 65 74 20 6c 69 62 73 20 22 24 74 63 set libs "$tc
55d0: 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 53 54 55 42 lconfig(TCL_STUB
55e0: 5f 4c 49 42 5f 53 50 45 43 29 22 0a 20 20 20 20 _LIB_SPEC)".
55f0: 20 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 define FOSSI
5600: 4c 5f 45 4e 41 42 4c 45 5f 54 43 4c 5f 53 54 55 L_ENABLE_TCL_STU
5610: 42 53 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e BS. defin
5620: 65 20 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 0a e USE_TCL_STUBS.
5630: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 } else {.
5640: 20 20 20 20 20 73 65 74 20 6c 69 62 73 20 22 24 set libs "$
5650: 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 49 tclconfig(TCL_LI
5660: 42 5f 53 50 45 43 29 20 24 74 63 6c 63 6f 6e 66 B_SPEC) $tclconf
5670: 69 67 28 54 43 4c 5f 4c 49 42 53 29 22 0a 20 20 ig(TCL_LIBS)".
5680: 20 20 7d 0a 20 20 20 20 73 65 74 20 63 66 6c 61 }. set cfla
5690: 67 73 20 24 74 63 6c 63 6f 6e 66 69 67 28 54 43 gs $tclconfig(TC
56a0: 4c 5f 49 4e 43 4c 55 44 45 5f 53 50 45 43 29 0a L_INCLUDE_SPEC).
56b0: 20 20 20 20 69 66 20 7b 21 24 74 63 6c 70 72 69 if {!$tclpri
56c0: 76 61 74 65 73 74 75 62 73 7d 20 7b 0a 20 20 20 vatestubs} {.
56d0: 20 20 20 20 20 73 65 74 20 66 6f 75 6e 64 74 63 set foundtc
56e0: 6c 20 30 3b 20 23 20 44 69 64 20 77 65 20 66 69 l 0; # Did we fi
56f0: 6e 64 20 61 20 77 6f 72 6b 69 6e 67 20 54 63 6c nd a working Tcl
5700: 20 6c 69 62 72 61 72 79 3f 0a 20 20 20 20 20 20 library?.
5710: 20 20 63 63 2d 77 69 74 68 20 5b 6c 69 73 74 20 cc-with [list
5720: 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 67 73 20 -cflags $cflags
5730: 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 7b 0a 20 -libs $libs] {.
5740: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 24 if {$
5750: 74 63 6c 73 74 75 62 73 7d 20 7b 0a 20 20 20 20 tclstubs} {.
5760: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
5770: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
5780: 6f 6e 73 20 54 63 6c 5f 49 6e 69 74 53 74 75 62 ons Tcl_InitStub
5790: 73 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s]} {.
57a0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f set fo
57b0: 75 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 undtcl 1.
57c0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
57d0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
57e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
57f0: 69 66 20 7b 5b 63 63 2d 63 68 65 63 6b 2d 66 75 if {[cc-check-fu
5800: 6e 63 74 69 6f 6e 73 20 54 63 6c 5f 43 72 65 61 nctions Tcl_Crea
5810: 74 65 49 6e 74 65 72 70 5d 7d 20 7b 0a 20 20 20 teInterp]} {.
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5830: 20 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a set foundtcl 1.
5840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5850: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. }.
5860: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
5870: 20 20 69 66 20 7b 21 24 66 6f 75 6e 64 74 63 6c if {!$foundtcl
5880: 20 26 26 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 && [string matc
5890: 68 20 2a 2d 6c 69 65 65 65 2a 20 24 6c 69 62 73 h *-lieee* $libs
58a0: 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ]} {.
58b0: 20 23 20 4f 6e 20 73 6f 6d 65 20 73 79 73 74 65 # On some syste
58c0: 6d 73 2c 20 75 73 69 6e 67 20 22 2d 6c 69 65 65 ms, using "-liee
58d0: 65 22 20 66 72 6f 6d 20 54 43 4c 5f 4c 49 42 5f e" from TCL_LIB_
58e0: 53 50 45 43 20 61 70 70 65 61 72 73 0a 20 20 20 SPEC appears.
58f0: 20 20 20 20 20 20 20 20 20 23 20 74 6f 20 63 61 # to ca
5900: 75 73 65 20 69 73 73 75 65 73 2e 0a 20 20 20 20 use issues..
5910: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
5920: 6c 74 20 22 52 65 6d 6f 76 69 6e 67 20 5c 22 2d lt "Removing \"-
5930: 6c 69 65 65 65 5c 22 20 61 6e 64 20 72 65 74 72 lieee\" and retr
5940: 79 69 6e 67 20 66 6f 72 20 54 63 6c 2e 2e 2e 22 ying for Tcl..."
5950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 . set
5960: 20 6c 69 62 73 20 5b 73 74 72 69 6e 67 20 6d 61 libs [string ma
5970: 70 20 5b 6c 69 73 74 20 2d 6c 69 65 65 65 20 22 p [list -lieee "
5980: 22 5d 20 24 6c 69 62 73 5d 0a 20 20 20 20 20 20 "] $libs].
5990: 20 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b 6c cc-with [l
59a0: 69 73 74 20 2d 63 66 6c 61 67 73 20 24 63 66 6c ist -cflags $cfl
59b0: 61 67 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 5d ags -libs $libs]
59c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
59d0: 20 20 20 69 66 20 7b 24 74 63 6c 73 74 75 62 73 if {$tclstubs
59e0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 } {.
59f0: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 2d if {[cc-
5a00: 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 check-functions
5a10: 54 63 6c 5f 49 6e 69 74 53 74 75 62 73 5d 7d 20 Tcl_InitStubs]}
5a20: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
5a30: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f set fo
5a40: 75 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 undtcl 1.
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }.
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
5a70: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
5a80: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
5a90: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
5aa0: 6f 6e 73 20 54 63 6c 5f 43 72 65 61 74 65 49 6e ons Tcl_CreateIn
5ab0: 74 65 72 70 5d 7d 20 7b 0a 20 20 20 20 20 20 20 terp]} {.
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ad0: 20 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a set foundtcl 1.
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5af0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
5b00: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
5b10: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a }. }.
5b20: 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 66 6f if {!$fo
5b30: 75 6e 64 74 63 6c 20 26 26 20 21 5b 73 74 72 69 undtcl && ![stri
5b40: 6e 67 20 6d 61 74 63 68 20 2a 2d 6c 70 74 68 72 ng match *-lpthr
5b50: 65 61 64 2a 20 24 6c 69 62 73 5d 7d 20 7b 0a 20 ead* $libs]} {.
5b60: 20 20 20 20 20 20 20 20 20 20 20 23 20 4f 6e 20 # On
5b70: 73 6f 6d 65 20 73 79 73 74 65 6d 73 2c 20 54 43 some systems, TC
5b80: 4c 5f 4c 49 42 5f 53 50 45 43 20 61 70 70 65 61 L_LIB_SPEC appea
5b90: 72 73 20 74 6f 20 62 65 20 6d 69 73 73 69 6e 67 rs to be missing
5ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 22 . # "
5bb0: 2d 6c 70 74 68 72 65 61 64 22 2e 20 20 54 72 79 -lpthread". Try
5bc0: 20 61 64 64 69 6e 67 20 69 74 2e 0a 20 20 20 20 adding it..
5bd0: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
5be0: 6c 74 20 22 41 64 64 69 6e 67 20 5c 22 2d 6c 70 lt "Adding \"-lp
5bf0: 74 68 72 65 61 64 5c 22 20 61 6e 64 20 72 65 74 thread\" and ret
5c00: 72 79 69 6e 67 20 66 6f 72 20 54 63 6c 2e 2e 2e rying for Tcl...
5c10: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 ". se
5c20: 74 20 6c 69 62 73 20 22 24 6c 69 62 73 20 2d 6c t libs "$libs -l
5c30: 70 74 68 72 65 61 64 22 0a 20 20 20 20 20 20 20 pthread".
5c40: 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b 6c 69 cc-with [li
5c50: 73 74 20 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 st -cflags $cfla
5c60: 67 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 gs -libs $libs]
5c70: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
5c80: 20 20 69 66 20 7b 24 74 63 6c 73 74 75 62 73 7d if {$tclstubs}
5c90: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
5ca0: 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 2d 63 if {[cc-c
5cb0: 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 54 heck-functions T
5cc0: 63 6c 5f 49 6e 69 74 53 74 75 62 73 5d 7d 20 7b cl_InitStubs]} {
5cd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5ce0: 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f 75 set fou
5cf0: 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 20 ndtcl 1.
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }.
5d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
5d20: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {.
5d30: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b if {[
5d40: 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f cc-check-functio
5d50: 6e 73 20 54 63 6c 5f 43 72 65 61 74 65 49 6e 74 ns Tcl_CreateInt
5d60: 65 72 70 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 erp]} {.
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5d80: 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a 20 set foundtcl 1.
5d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5da0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }.
5db0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }.
5dc0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
5dd0: 20 20 20 20 20 20 20 69 66 20 7b 21 24 66 6f 75 if {!$fou
5de0: 6e 64 74 63 6c 7d 20 7b 0a 20 20 20 20 20 20 20 ndtcl} {.
5df0: 20 20 20 20 20 69 66 20 7b 24 74 63 6c 73 74 75 if {$tclstu
5e00: 62 73 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 bs} {.
5e10: 20 20 20 20 20 20 75 73 65 72 2d 65 72 72 6f 72 user-error
5e20: 20 22 43 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 "Cannot find a
5e30: 75 73 61 62 6c 65 20 54 63 6c 20 73 74 75 62 73 usable Tcl stubs
5e40: 20 6c 69 62 72 61 72 79 20 24 6d 73 67 22 0a 20 library $msg".
5e50: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
5e60: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {.
5e70: 20 20 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 user-error "
5e80: 43 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 75 73 Cannot find a us
5e90: 61 62 6c 65 20 54 63 6c 20 6c 69 62 72 61 72 79 able Tcl library
5ea0: 20 24 6d 73 67 22 0a 20 20 20 20 20 20 20 20 20 $msg".
5eb0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
5ec0: 20 20 20 7d 0a 20 20 20 20 73 65 74 20 76 65 72 }. set ver
5ed0: 73 69 6f 6e 20 24 74 63 6c 63 6f 6e 66 69 67 28 sion $tclconfig(
5ee0: 54 43 4c 5f 56 45 52 53 49 4f 4e 29 24 74 63 6c TCL_VERSION)$tcl
5ef0: 63 6f 6e 66 69 67 28 54 43 4c 5f 50 41 54 43 48 config(TCL_PATCH
5f00: 5f 4c 45 56 45 4c 29 0a 20 20 20 20 6d 73 67 2d _LEVEL). msg-
5f10: 72 65 73 75 6c 74 20 22 46 6f 75 6e 64 20 54 63 result "Found Tc
5f20: 6c 20 24 76 65 72 73 69 6f 6e 20 61 74 20 24 74 l $version at $t
5f30: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 52 45 clconfig(TCL_PRE
5f40: 46 49 58 29 22 0a 20 20 20 20 69 66 20 7b 21 24 FIX)". if {!$
5f50: 74 63 6c 70 72 69 76 61 74 65 73 74 75 62 73 7d tclprivatestubs}
5f60: 20 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e {. defin
5f70: 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 24 6c e-append LIBS $l
5f80: 69 62 73 0a 20 20 20 20 7d 0a 20 20 20 20 64 65 ibs. }. de
5f90: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
5fa0: 41 5f 43 46 4c 41 47 53 20 24 63 66 6c 61 67 73 A_CFLAGS $cflags
5fb0: 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 . define-appe
5fc0: 6e 64 20 43 46 4c 41 47 53 20 24 63 66 6c 61 67 nd CFLAGS $cflag
5fd0: 73 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 s. if {[info
5fe0: 65 78 69 73 74 73 20 7a 6c 69 62 70 61 74 68 5d exists zlibpath]
5ff0: 20 26 26 20 24 7a 6c 69 62 70 61 74 68 20 65 71 && $zlibpath eq
6000: 20 22 74 72 65 65 22 7d 20 7b 0a 20 20 20 20 20 "tree"} {.
6010: 20 23 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a #. # NOTE:
6020: 20 57 68 65 6e 20 75 73 69 6e 67 20 7a 6c 69 62 When using zlib
6030: 20 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 in the source t
6040: 72 65 65 2c 20 70 72 65 76 65 6e 74 20 54 63 6c ree, prevent Tcl
6050: 20 66 72 6f 6d 0a 20 20 20 20 20 20 23 20 20 20 from. #
6060: 20 20 20 20 70 75 6c 6c 69 6e 67 20 69 6e 20 74 pulling in t
6070: 68 65 20 73 79 73 74 65 6d 20 6f 6e 65 2e 0a 20 he system one..
6080: 20 20 20 20 20 23 0a 20 20 20 20 20 20 73 65 74 #. set
6090: 20 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c tclconfig(TCL_L
60a0: 44 5f 46 4c 41 47 53 29 20 5b 73 74 72 69 6e 67 D_FLAGS) [string
60b0: 20 6d 61 70 20 5b 6c 69 73 74 20 2d 6c 7a 20 22 map [list -lz "
60c0: 22 5d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 24 "] \. $
60d0: 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 tclconfig(TCL_LD
60e0: 5f 46 4c 41 47 53 29 5d 0a 20 20 20 20 7d 0a 20 _FLAGS)]. }.
60f0: 20 20 20 23 0a 20 20 20 20 23 20 4e 4f 54 45 3a #. # NOTE:
6100: 20 52 65 6d 6f 76 65 20 22 2d 6c 64 6c 22 20 66 Remove "-ldl" f
6110: 72 6f 6d 20 74 68 65 20 54 43 4c 5f 4c 44 5f 46 rom the TCL_LD_F
6120: 4c 41 47 53 20 62 65 63 61 75 73 65 20 69 74 20 LAGS because it
6130: 77 69 6c 6c 20 62 65 0a 20 20 20 20 23 20 20 20 will be. #
6140: 20 20 20 20 62 65 20 63 68 65 63 6b 65 64 20 66 be checked f
6150: 6f 72 20 6e 65 61 72 20 74 68 65 20 62 6f 74 74 or near the bott
6160: 6f 6d 20 6f 66 20 74 68 69 73 20 66 69 6c 65 2e om of this file.
6170: 0a 20 20 20 20 23 0a 20 20 20 20 73 65 74 20 74 . #. set t
6180: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f clconfig(TCL_LD_
6190: 46 4c 41 47 53 29 20 5b 73 74 72 69 6e 67 20 6d FLAGS) [string m
61a0: 61 70 20 5b 6c 69 73 74 20 2d 6c 64 6c 20 22 22 ap [list -ldl ""
61b0: 5d 20 5c 0a 20 20 20 20 20 20 20 20 24 74 63 6c ] \. $tcl
61c0: 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f 46 4c config(TCL_LD_FL
61d0: 41 47 53 29 5d 0a 20 20 20 20 64 65 66 69 6e 65 AGS)]. define
61e0: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 4c 44 -append EXTRA_LD
61f0: 46 4c 41 47 53 20 24 74 63 6c 63 6f 6e 66 69 67 FLAGS $tclconfig
6200: 28 54 43 4c 5f 4c 44 5f 46 4c 41 47 53 29 0a 20 (TCL_LD_FLAGS).
6210: 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c define FOSSIL
6220: 5f 45 4e 41 42 4c 45 5f 54 43 4c 0a 7d 0a 0a 23 _ENABLE_TCL.}..#
6230: 20 45 6d 73 63 72 69 70 74 65 6e 20 69 73 20 61 Emscripten is a
6240: 20 70 75 72 65 6c 79 20 6f 70 74 69 6f 6e 61 6c purely optional
6250: 20 63 6f 6d 70 6f 6e 65 6e 74 20 75 73 65 64 20 component used
6260: 6f 6e 6c 79 20 66 6f 72 20 64 6f 69 6e 67 0a 23 only for doing.#
6270: 20 69 6e 2d 74 72 65 65 20 62 75 69 6c 64 73 20 in-tree builds
6280: 6f 66 20 57 41 53 4d 20 73 74 75 66 66 2c 20 61 of WASM stuff, a
6290: 73 20 6f 70 70 6f 73 65 64 20 74 6f 20 57 41 53 s opposed to WAS
62a0: 4d 20 62 69 6e 61 72 69 65 73 20 77 65 20 69 6d M binaries we im
62b0: 70 6f 72 74 0a 23 20 66 72 6f 6d 20 6f 74 68 65 port.# from othe
62c0: 72 20 70 6c 61 63 65 73 2e 20 54 68 69 73 20 69 r places. This i
62d0: 73 20 6f 6e 6c 79 20 73 65 74 20 75 70 20 66 6f s only set up fo
62e0: 72 20 55 6e 69 78 2d 73 74 79 6c 65 20 4f 53 65 r Unix-style OSe
62f0: 73 20 61 6e 64 20 69 73 0a 23 20 75 6e 74 65 73 s and is.# untes
6300: 74 65 64 20 61 6e 79 77 68 65 72 65 20 62 75 74 ted anywhere but
6310: 20 4c 69 6e 75 78 2e 0a 73 65 74 20 65 6d 73 64 Linux..set emsd
6320: 6b 48 6f 6d 65 20 5b 6f 70 74 2d 76 61 6c 20 77 kHome [opt-val w
6330: 69 74 68 2d 65 6d 73 64 6b 5d 0a 64 65 66 69 6e ith-emsdk].defin
6340: 65 20 45 4d 53 44 4b 5f 48 4f 4d 45 20 22 22 0a e EMSDK_HOME "".
6350: 64 65 66 69 6e 65 20 45 4d 53 44 4b 5f 45 4e 56 define EMSDK_ENV
6360: 20 22 22 0a 64 65 66 69 6e 65 20 45 4d 43 43 5f "".define EMCC_
6370: 4f 50 54 20 22 2d 4f 7a 22 0a 69 66 20 7b 24 65 OPT "-Oz".if {$e
6380: 6d 73 64 6b 48 6f 6d 65 20 65 71 20 22 22 20 26 msdkHome eq "" &
6390: 26 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a & [info exists :
63a0: 3a 65 6e 76 28 45 4d 53 44 4b 29 5d 7d 20 7b 0a :env(EMSDK)]} {.
63b0: 20 20 23 20 46 61 6c 6c 20 62 61 63 6b 20 74 6f # Fall back to
63c0: 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 65 6e checking the en
63d0: 76 69 72 6f 6e 6d 65 6e 74 2e 20 24 45 4d 53 44 vironment. $EMSD
63e0: 4b 20 67 65 74 73 20 73 65 74 0a 20 20 23 20 62 K gets set. # b
63f0: 79 20 73 6f 75 72 63 69 6e 67 20 65 6d 73 64 6b y sourcing emsdk
6400: 5f 65 6e 76 2e 73 68 2e 0a 20 20 73 65 74 20 65 _env.sh.. set e
6410: 6d 73 64 6b 48 6f 6d 65 20 24 3a 3a 65 6e 76 28 msdkHome $::env(
6420: 45 4d 53 44 4b 29 0a 7d 0a 69 66 20 7b 24 65 6d EMSDK).}.if {$em
6430: 73 64 6b 48 6f 6d 65 20 6e 65 20 22 22 7d 20 7b sdkHome ne ""} {
6440: 0a 20 20 64 65 66 69 6e 65 20 45 4d 53 44 4b 5f . define EMSDK_
6450: 48 4f 4d 45 20 24 65 6d 73 64 6b 48 6f 6d 65 0a HOME $emsdkHome.
6460: 20 20 73 65 74 20 65 6d 73 64 6b 45 6e 76 20 22 set emsdkEnv "
6470: 24 65 6d 73 64 6b 48 6f 6d 65 2f 65 6d 73 64 6b $emsdkHome/emsdk
6480: 5f 65 6e 76 2e 73 68 22 0a 20 20 69 66 20 7b 5b _env.sh". if {[
6490: 66 69 6c 65 20 65 78 69 73 74 73 20 24 65 6d 73 file exists $ems
64a0: 64 6b 45 6e 76 5d 7d 20 7b 0a 20 20 20 20 70 75 dkEnv]} {. pu
64b0: 74 73 20 22 55 73 69 6e 67 20 45 6d 73 63 72 69 ts "Using Emscri
64c0: 70 74 65 6e 20 53 44 4b 20 65 6e 76 69 72 6f 6e pten SDK environ
64d0: 6d 65 6e 74 20 66 72 6f 6d 20 24 65 6d 73 64 6b ment from $emsdk
64e0: 45 6e 76 2e 22 0a 20 20 20 20 64 65 66 69 6e 65 Env.". define
64f0: 20 45 4d 53 44 4b 5f 45 4e 56 20 24 65 6d 73 64 EMSDK_ENV $emsd
6500: 6b 45 6e 76 0a 20 20 20 20 69 66 20 7b 5b 69 6e kEnv. if {[in
6510: 66 6f 20 65 78 69 73 74 73 20 3a 3a 65 6e 76 28 fo exists ::env(
6520: 45 4d 43 43 5f 4f 50 54 29 5d 7d 20 7b 0a 20 20 EMCC_OPT)]} {.
6530: 20 20 20 20 64 65 66 69 6e 65 20 45 4d 43 43 5f define EMCC_
6540: 4f 50 54 20 24 3a 3a 65 6e 76 28 45 4d 43 43 5f OPT $::env(EMCC_
6550: 4f 50 54 29 0a 20 20 20 20 7d 0a 20 20 7d 20 65 OPT). }. } e
6560: 6c 73 65 20 7b 0a 20 20 20 20 70 75 74 73 20 22 lse {. puts "
6570: 65 6d 73 64 6b 5f 65 6e 76 2e 73 68 20 6e 6f 74 emsdk_env.sh not
6580: 20 66 6f 75 6e 64 2e 20 41 73 73 75 6d 69 6e 67 found. Assuming
6590: 20 65 6d 63 63 20 69 73 20 69 6e 20 74 68 65 20 emcc is in the
65a0: 50 41 54 48 2e 22 0a 20 20 7d 0a 7d 0a 0a 23 20 PATH.". }.}..#
65b0: 4e 65 74 77 6f 72 6b 20 66 75 6e 63 74 69 6f 6e Network function
65c0: 73 20 72 65 71 75 69 72 65 20 6c 69 62 72 61 72 s require librar
65d0: 69 65 73 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 ies on some syst
65e0: 65 6d 73 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e ems.cc-check-fun
65f0: 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 67 65 74 ction-in-lib get
6600: 68 6f 73 74 62 79 6e 61 6d 65 20 6e 73 6c 0a 69 hostbyname nsl.i
6610: 66 20 7b 21 5b 63 63 2d 63 68 65 63 6b 2d 66 75 f {![cc-check-fu
6620: 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 73 6f nction-in-lib so
6630: 63 6b 65 74 20 7b 73 6f 63 6b 65 74 20 6e 65 74 cket {socket net
6640: 77 6f 72 6b 7d 5d 7d 20 7b 0a 20 20 20 20 23 20 work}]} {. #
6650: 4c 61 73 74 20 72 65 73 6f 72 74 2c 20 6d 61 79 Last resort, may
6660: 20 62 65 20 57 69 6e 64 6f 77 73 0a 20 20 20 20 be Windows.
6670: 69 66 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 if {[is_mingw]}
6680: 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 {. define
6690: 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 77 -append LIBS -lw
66a0: 73 6f 63 6b 33 32 0a 20 20 20 20 7d 0a 7d 0a 0a sock32. }.}..
66b0: 23 20 54 68 65 20 53 4d 54 50 20 6d 6f 64 75 6c # The SMTP modul
66c0: 65 20 72 65 71 75 69 72 65 73 20 73 70 65 63 69 e requires speci
66d0: 61 6c 20 6c 69 62 72 61 72 69 65 73 20 61 6e 64 al libraries and
66e0: 20 68 65 61 64 65 72 73 20 66 6f 72 20 4d 58 20 headers for MX
66f0: 44 4e 53 0a 23 20 72 65 63 6f 72 64 20 6c 6f 6f DNS.# record loo
6700: 6b 75 70 73 20 61 6e 64 20 73 75 63 68 2e 0a 63 kups and such..c
6710: 63 2d 63 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 c-check-includes
6720: 20 61 72 70 61 2f 6e 61 6d 65 73 65 72 2e 68 0a arpa/nameser.h.
6730: 63 63 2d 69 6e 63 6c 75 64 65 2d 6e 65 65 64 73 cc-include-needs
6740: 20 62 69 6e 64 2f 72 65 73 6f 6c 76 2e 68 20 6e bind/resolv.h n
6750: 65 74 69 6e 65 74 2f 69 6e 2e 68 0a 63 63 2d 63 etinet/in.h.cc-c
6760: 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 20 62 69 heck-includes bi
6770: 6e 64 2f 72 65 73 6f 6c 76 2e 68 0a 63 63 2d 63 nd/resolv.h.cc-c
6780: 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 20 72 65 heck-includes re
6790: 73 6f 6c 76 2e 68 0a 69 66 20 7b 20 20 20 20 21 solv.h.if { !
67a0: 28 28 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 (([cc-check-func
67b0: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 64 6e 5f 65 tion-in-lib dn_e
67c0: 78 70 61 6e 64 20 72 65 73 6f 6c 76 5d 20 7c 7c xpand resolv] ||
67d0: 0a 20 20 20 20 20 20 20 20 20 20 20 5b 63 63 2d . [cc-
67e0: 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 check-function-i
67f0: 6e 2d 6c 69 62 20 20 20 6e 73 5f 6e 61 6d 65 5f n-lib ns_name_
6800: 75 6e 63 6f 6d 70 72 65 73 73 20 7b 62 69 6e 64 uncompress {bind
6810: 20 72 65 73 6f 6c 76 7d 5d 20 7c 7c 0a 20 20 20 resolv}] ||.
6820: 20 20 20 20 20 20 20 20 5b 63 63 2d 63 68 65 63 [cc-chec
6830: 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 k-function-in-li
6840: 62 20 5f 5f 6e 73 5f 6e 61 6d 65 5f 75 6e 63 6f b __ns_name_unco
6850: 6d 70 72 65 73 73 20 7b 62 69 6e 64 20 72 65 73 mpress {bind res
6860: 6f 6c 76 7d 5d 29 20 26 26 0a 20 20 20 20 20 20 olv}]) &&.
6870: 20 20 20 20 28 5b 63 63 2d 63 68 65 63 6b 2d 66 ([cc-check-f
6880: 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 20 unction-in-lib
6890: 20 6e 73 5f 70 61 72 73 65 72 72 20 7b 62 69 6e ns_parserr {bin
68a0: 64 20 72 65 73 6f 6c 76 7d 5d 20 7c 7c 0a 20 20 d resolv}] ||.
68b0: 20 20 20 20 20 20 20 20 20 5b 63 63 2d 63 68 65 [cc-che
68c0: 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c ck-function-in-l
68d0: 69 62 20 5f 5f 6e 73 5f 70 61 72 73 65 72 72 20 ib __ns_parserr
68e0: 7b 62 69 6e 64 20 72 65 73 6f 6c 76 7d 5d 29 20 {bind resolv}])
68f0: 26 26 0a 20 20 20 20 20 20 20 20 20 20 28 5b 63 &&. ([c
6900: 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e c-check-function
6910: 2d 69 6e 2d 6c 69 62 20 20 20 72 65 73 5f 71 75 -in-lib res_qu
6920: 65 72 79 20 7b 62 69 6e 64 20 72 65 73 6f 6c 76 ery {bind resolv
6930: 7d 5d 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 }] ||.
6940: 20 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 [cc-check-funct
6950: 69 6f 6e 2d 69 6e 2d 6c 69 62 20 5f 5f 72 65 73 ion-in-lib __res
6960: 5f 71 75 65 72 79 20 7b 62 69 6e 64 20 72 65 73 _query {bind res
6970: 6f 6c 76 7d 5d 29 29 7d 20 7b 0a 20 20 20 20 6d olv}]))} {. m
6980: 73 67 2d 72 65 73 75 6c 74 20 22 57 41 52 4e 49 sg-result "WARNI
6990: 4e 47 3a 20 53 4d 54 50 20 66 65 61 74 75 72 65 NG: SMTP feature
69a0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 62 6c will not be abl
69b0: 65 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 6c 6f 63 e to look up loc
69c0: 61 6c 20 4d 58 2e 22 0a 7d 0a 63 63 2d 63 68 65 al MX.".}.cc-che
69d0: 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c ck-function-in-l
69e0: 69 62 20 72 65 73 5f 39 5f 6e 73 5f 69 6e 69 74 ib res_9_ns_init
69f0: 70 61 72 73 65 20 72 65 73 6f 6c 76 0a 0a 23 20 parse resolv..#
6a00: 4f 74 68 65 72 20 6e 6f 6e 73 74 61 6e 64 61 72 Other nonstandar
6a10: 64 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b d function check
6a20: 73 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 s.cc-check-funct
6a30: 69 6f 6e 73 20 75 74 69 6d 65 0a 63 63 2d 63 68 ions utime.cc-ch
6a40: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 75 73 eck-functions us
6a50: 6c 65 65 70 0a 63 63 2d 63 68 65 63 6b 2d 66 75 leep.cc-check-fu
6a60: 6e 63 74 69 6f 6e 73 20 73 74 72 63 68 72 6e 75 nctions strchrnu
6a70: 6c 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 l.cc-check-funct
6a80: 69 6f 6e 73 20 70 6c 65 64 67 65 0a 63 63 2d 63 ions pledge.cc-c
6a90: 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 62 heck-functions b
6aa0: 61 63 6b 74 72 61 63 65 0a 0a 23 20 54 65 72 6d acktrace..# Term
6ab0: 75 78 20 6f 6e 20 41 6e 64 72 6f 69 64 20 61 64 ux on Android ad
6ac0: 64 73 20 22 67 65 74 70 61 73 73 28 63 68 61 72 ds "getpass(char
6ad0: 20 2a 29 22 20 74 6f 20 75 6e 69 73 74 64 2e 68 *)" to unistd.h
6ae0: 2c 20 73 6f 20 63 68 65 63 6b 20 74 68 69 73 20 , so check this
6af0: 73 6f 20 77 65 0a 23 20 67 75 61 72 64 20 61 67 so we.# guard ag
6b00: 61 69 6e 73 74 20 69 6e 63 6c 75 64 69 6e 67 20 ainst including
6b10: 69 74 20 61 67 61 69 6e 3b 20 75 73 65 20 63 63 it again; use cc
6b20: 74 65 73 74 20 61 73 20 63 63 2d 63 68 65 63 6b test as cc-check
6b30: 2d 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 0a -functions and .
6b40: 23 20 63 63 74 65 73 74 5f 66 75 6e 63 74 69 6f # cctest_functio
6b50: 6e 20 63 68 65 63 6b 20 66 6f 72 20 22 67 65 74 n check for "get
6b60: 70 61 73 73 28 29 22 20 77 69 74 68 20 6e 6f 20 pass()" with no
6b70: 61 72 67 73 20 61 6e 64 20 66 61 69 6c 0a 69 66 args and fail.if
6b80: 20 7b 5b 63 63 74 65 73 74 20 2d 6c 69 6e 6b 20 {[cctest -link
6b90: 31 20 2d 69 6e 63 6c 75 64 65 73 20 7b 75 6e 69 1 -includes {uni
6ba0: 73 74 64 2e 68 7d 20 2d 63 6f 64 65 20 22 67 65 std.h} -code "ge
6bb0: 74 70 61 73 73 28 30 29 3b 22 5d 7d 20 7b 0a 20 tpass(0);"]} {.
6bc0: 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c define FOSSIL
6bd0: 5f 48 41 56 45 5f 47 45 54 50 41 53 53 20 31 0a _HAVE_GETPASS 1.
6be0: 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 msg-result "
6bf0: 46 6f 75 6e 64 20 67 65 74 70 61 73 73 28 29 20 Found getpass()
6c00: 77 69 74 68 20 75 6e 69 73 74 64 2e 68 22 0a 7d with unistd.h".}
6c10: 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 67 65 ..# Check for ge
6c20: 74 6c 6f 61 64 61 76 67 28 29 2c 20 61 6e 64 20 tloadavg(), and
6c30: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 65 78 if it doesn't ex
6c40: 69 73 74 2c 20 64 65 66 69 6e 65 20 46 4f 53 53 ist, define FOSS
6c50: 49 4c 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 41 56 45 IL_OMIT_LOAD_AVE
6c60: 52 41 47 45 0a 69 66 20 7b 21 5b 63 63 2d 63 68 RAGE.if {![cc-ch
6c70: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 67 65 eck-functions ge
6c80: 74 6c 6f 61 64 61 76 67 5d 20 7c 7c 0a 20 20 20 tloadavg] ||.
6c90: 20 21 5b 63 63 74 65 73 74 20 2d 6c 69 6e 6b 20 ![cctest -link
6ca0: 31 20 2d 69 6e 63 6c 75 64 65 73 20 7b 75 6e 69 1 -includes {uni
6cb0: 73 74 64 2e 68 7d 20 2d 63 6f 64 65 20 22 64 6f std.h} -code "do
6cc0: 75 62 6c 65 20 61 5c 5b 33 5c 5d 3b 20 67 65 74 uble a\[3\]; get
6cd0: 6c 6f 61 64 61 76 67 28 61 2c 33 29 3b 22 5d 7d loadavg(a,3);"]}
6ce0: 20 7b 0a 20 20 64 65 66 69 6e 65 20 46 4f 53 53 {. define FOSS
6cf0: 49 4c 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 41 56 45 IL_OMIT_LOAD_AVE
6d00: 52 41 47 45 20 31 0a 20 20 6d 73 67 2d 72 65 73 RAGE 1. msg-res
6d10: 75 6c 74 20 22 4c 6f 61 64 20 61 76 65 72 61 67 ult "Load averag
6d20: 65 20 73 75 70 70 6f 72 74 20 75 6e 61 76 61 69 e support unavai
6d30: 6c 61 62 6c 65 22 0a 7d 0a 0a 23 20 43 68 65 63 lable".}..# Chec
6d40: 6b 20 66 6f 72 20 67 65 74 70 61 73 73 70 68 72 k for getpassphr
6d50: 61 73 65 28 29 20 66 6f 72 20 53 6f 6c 61 72 69 ase() for Solari
6d60: 73 20 31 30 20 77 68 65 72 65 20 67 65 74 70 61 s 10 where getpa
6d70: 73 73 28 29 20 74 72 75 6e 63 61 74 65 73 20 74 ss() truncates t
6d80: 6f 20 31 30 20 63 68 61 72 73 0a 69 66 20 7b 21 o 10 chars.if {!
6d90: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
6da0: 6f 6e 73 20 67 65 74 70 61 73 73 70 68 72 61 73 ons getpassphras
6db0: 65 5d 7d 20 7b 0a 20 20 20 20 23 20 48 61 69 6b e]} {. # Haik
6dc0: 75 20 6e 65 65 64 73 20 74 68 69 73 0a 20 20 20 u needs this.
6dd0: 20 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 cc-check-functi
6de0: 6f 6e 2d 69 6e 2d 6c 69 62 20 67 65 74 70 61 73 on-in-lib getpas
6df0: 73 20 62 73 64 0a 7d 0a 63 63 2d 63 68 65 63 6b s bsd.}.cc-check
6e00: 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 -function-in-lib
6e10: 20 73 69 6e 20 6d 0a 0a 23 20 43 68 65 63 6b 20 sin m..# Check
6e20: 66 6f 72 20 74 68 65 20 46 75 73 65 46 53 20 6c for the FuseFS l
6e30: 69 62 72 61 72 79 0a 69 66 20 7b 5b 6f 70 74 2d ibrary.if {[opt-
6e40: 62 6f 6f 6c 20 66 75 73 65 66 73 5d 7d 20 7b 0a bool fusefs]} {.
6e50: 20 20 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 if {[opt-bool
6e60: 73 74 61 74 69 63 5d 7d 20 7b 0a 20 20 20 20 20 static]} {.
6e70: 6d 73 67 2d 72 65 73 75 6c 74 20 22 46 75 73 65 msg-result "Fuse
6e80: 46 53 20 73 75 70 70 6f 72 74 20 64 69 73 61 62 FS support disab
6e90: 6c 65 64 20 64 75 65 20 74 6f 20 2d 73 74 61 74 led due to -stat
6ea0: 69 63 22 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b ic". } elseif {
6eb0: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
6ec0: 6f 6e 2d 69 6e 2d 6c 69 62 20 66 75 73 65 5f 6d on-in-lib fuse_m
6ed0: 6f 75 6e 74 20 66 75 73 65 5d 7d 20 7b 0a 20 20 ount fuse]} {.
6ee0: 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 define-append
6ef0: 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 2d 44 EXTRA_CFLAGS -D
6f00: 46 4f 53 53 49 4c 5f 48 41 56 45 5f 46 55 53 45 FOSSIL_HAVE_FUSE
6f10: 46 53 0a 20 20 20 20 20 64 65 66 69 6e 65 20 46 FS. define F
6f20: 4f 53 53 49 4c 5f 48 41 56 45 5f 46 55 53 45 46 OSSIL_HAVE_FUSEF
6f30: 53 20 31 0a 20 20 20 20 20 6d 73 67 2d 72 65 73 S 1. msg-res
6f40: 75 6c 74 20 22 46 75 73 65 46 53 20 73 75 70 70 ult "FuseFS supp
6f50: 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 20 20 7d ort enabled". }
6f60: 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 .}..############
6f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
6f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
6f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
6fa0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 ############.# C
6fb0: 68 65 63 6b 73 20 74 68 65 20 63 6f 6d 70 69 6c hecks the compil
6fc0: 65 72 20 66 6f 72 20 63 6f 6d 70 69 6c 65 5f 63 er for compile_c
6fd0: 6f 6d 6d 61 6e 64 73 2e 6a 73 6f 6e 20 73 75 70 ommands.json sup
6fe0: 70 6f 72 74 2e 0a 23 0a 23 20 52 65 74 75 72 6e port..#.# Return
6ff0: 73 20 31 20 69 66 20 73 75 70 70 6f 72 74 65 64 s 1 if supported
7000: 2c 20 65 6c 73 65 20 30 2e 20 44 65 66 69 6e 65 , else 0. Define
7010: 73 20 4d 41 4b 45 5f 43 4f 4d 50 49 4c 41 54 49 s MAKE_COMPILATI
7020: 4f 4e 5f 44 42 20 74 6f 20 22 79 65 73 22 0a 23 ON_DB to "yes".#
7030: 20 69 66 20 73 75 70 70 6f 72 74 65 64 2c 20 22 if supported, "
7040: 6e 6f 22 20 69 66 20 6e 6f 74 2e 0a 70 72 6f 63 no" if not..proc
7050: 20 63 68 65 63 6b 2d 63 6f 6d 70 69 6c 65 2d 63 check-compile-c
7060: 6f 6d 6d 61 6e 64 73 20 7b 7d 20 7b 0a 20 20 20 ommands {} {.
7070: 20 6d 73 67 2d 63 68 65 63 6b 69 6e 67 20 22 63 msg-checking "c
7080: 6f 6d 70 69 6c 65 5f 63 6f 6d 6d 61 6e 64 73 2e ompile_commands.
7090: 6a 73 6f 6e 20 73 75 70 70 6f 72 74 2e 2e 2e 20 json support...
70a0: 22 0a 20 20 20 20 69 66 20 7b 5b 63 63 74 65 73 ". if {[cctes
70b0: 74 20 2d 6c 61 6e 67 20 63 20 2d 63 66 6c 61 67 t -lang c -cflag
70c0: 73 20 7b 2f 64 65 76 2f 6e 75 6c 6c 20 2d 4d 4a s {/dev/null -MJ
70d0: 7d 20 2d 73 6f 75 72 63 65 20 7b 7d 5d 7d 20 7b } -source {}]} {
70e0: 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 . # This
70f0: 74 65 73 74 20 72 65 70 6f 72 74 65 64 6c 79 20 test reportedly
7100: 69 6e 63 6f 72 72 65 63 74 6c 79 20 73 75 63 63 incorrectly succ
7110: 65 65 64 73 20 6f 6e 20 6f 6e 65 20 6f 66 0a 20 eeds on one of.
7120: 20 20 20 20 20 20 20 23 20 4d 61 72 74 69 6e 20 # Martin
7130: 47 2e 27 73 20 6f 6c 64 65 72 20 73 79 73 74 65 G.'s older syste
7140: 6d 73 2e 0a 20 20 20 20 20 20 20 20 6d 73 67 2d ms.. msg-
7150: 72 65 73 75 6c 74 20 22 63 6f 6d 70 69 6c 65 72 result "compiler
7160: 20 73 75 70 70 6f 72 74 73 20 63 6f 6d 70 69 6c supports compil
7170: 65 5f 63 6f 6d 6d 61 6e 64 73 2e 6a 73 6f 6e 22 e_commands.json"
7180: 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 . define
7190: 4d 41 4b 45 5f 43 4f 4d 50 49 4c 41 54 49 4f 4e MAKE_COMPILATION
71a0: 5f 44 42 20 79 65 73 0a 20 20 20 20 20 20 20 20 _DB yes.
71b0: 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 20 65 return 1. } e
71c0: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 lse {. ms
71d0: 67 2d 72 65 73 75 6c 74 20 22 63 6f 6d 70 69 6c g-result "compil
71e0: 65 72 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 er does not supp
71f0: 6f 72 74 20 63 6f 6d 70 69 6c 65 5f 63 6f 6d 6d ort compile_comm
7200: 61 6e 64 73 2e 6a 73 6f 6e 22 0a 20 20 20 20 20 ands.json".
7210: 20 20 20 64 65 66 69 6e 65 20 4d 41 4b 45 5f 43 define MAKE_C
7220: 4f 4d 50 49 4c 41 54 49 4f 4e 5f 44 42 20 6e 6f OMPILATION_DB no
7230: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
7240: 30 0a 20 20 20 20 7d 0a 7d 0a 0a 64 65 66 69 6e 0. }.}..defin
7250: 65 20 4d 41 4b 45 5f 43 4f 4d 50 49 4c 41 54 49 e MAKE_COMPILATI
7260: 4f 4e 5f 44 42 20 6e 6f 0a 69 66 20 7b 21 24 6f ON_DB no.if {!$o
7270: 75 74 4f 66 54 72 65 65 42 75 69 6c 64 7d 20 7b utOfTreeBuild} {
7280: 0a 20 20 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c . if {[opt-bool
7290: 20 63 6f 6d 70 69 6c 65 2d 63 6f 6d 6d 61 6e 64 compile-command
72a0: 73 5d 7d 20 7b 0a 20 20 20 20 63 68 65 63 6b 2d s]} {. check-
72b0: 63 6f 6d 70 69 6c 65 2d 63 6f 6d 6d 61 6e 64 73 compile-commands
72c0: 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 . } else {.
72d0: 70 75 74 73 20 22 55 73 65 20 2d 2d 63 6f 6d 70 puts "Use --comp
72e0: 69 6c 65 2d 63 6f 6d 6d 61 6e 64 73 20 74 6f 20 ile-commands to
72f0: 65 6e 61 62 6c 65 20 63 68 65 63 6b 20 66 6f 72 enable check for
7300: 20 63 6f 6d 70 69 6c 65 2d 63 6f 6d 6d 61 6e 64 compile-command
7310: 73 2d 63 61 70 61 62 6c 65 20 63 6f 6d 70 69 6c s-capable compil
7320: 65 72 2e 22 0a 20 20 7d 0a 7d 20 65 6c 73 65 20 er.". }.} else
7330: 7b 0a 20 20 70 75 74 73 20 22 44 69 73 61 62 6c {. puts "Disabl
7340: 69 6e 67 20 63 6f 6d 70 69 6c 65 5f 63 6f 6d 6d ing compile_comm
7350: 61 6e 64 73 2e 6a 73 6f 6e 20 63 68 65 63 6b 20 ands.json check
7360: 66 6f 72 20 6f 75 74 2d 6f 66 2d 74 72 65 65 20 for out-of-tree
7370: 62 75 69 6c 64 2e 22 0a 20 20 23 20 54 68 69 73 build.". # This
7380: 20 69 73 20 61 6e 20 61 74 74 65 6d 70 74 20 74 is an attempt t
7390: 6f 20 72 65 73 6f 6c 76 65 20 74 68 65 20 70 72 o resolve the pr
73a0: 6f 62 6c 65 6d 20 72 65 70 6f 72 74 65 64 20 61 oblem reported a
73b0: 74 0a 20 20 23 20 68 74 74 70 73 3a 2f 2f 66 6f t. # https://fo
73c0: 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 66 6f 72 ssil-scm.org/for
73d0: 75 6d 2f 66 6f 72 75 6d 70 6f 73 74 2f 64 31 39 um/forumpost/d19
73e0: 30 36 31 64 30 39 61 38 31 37 39 64 30 0a 7d 0a 061d09a8179d0.}.
73f0: 0a 23 20 41 64 64 20 2d 66 73 61 6e 69 74 69 7a .# Add -fsanitiz
7400: 65 20 63 6f 6d 70 69 6c 65 20 61 6e 64 20 6c 69 e compile and li
7410: 6e 6b 20 6f 70 74 69 6f 6e 73 20 6c 61 74 65 3a nk options late:
7420: 20 77 65 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 we don't want t
7430: 68 65 20 43 0a 23 20 63 68 65 63 6b 73 20 61 62 he C.# checks ab
7440: 6f 76 65 20 74 6f 20 72 75 6e 20 77 69 74 68 20 ove to run with
7450: 74 68 6f 73 65 20 73 61 6e 69 74 69 7a 65 72 73 those sanitizers
7460: 20 65 6e 61 62 6c 65 64 2e 20 20 49 74 20 63 61 enabled. It ca
7470: 6e 20 6e 6f 74 20 6f 6e 6c 79 0a 23 20 62 65 20 n not only.# be
7480: 70 6f 69 6e 74 6c 65 73 73 2c 20 69 74 20 63 61 pointless, it ca
7490: 6e 20 61 63 74 75 61 6c 6c 79 20 62 72 65 61 6b n actually break
74a0: 20 63 6f 72 72 65 63 74 20 74 65 73 74 73 2e 0a correct tests..
74b0: 73 65 74 20 66 73 61 6e 20 5b 6f 70 74 2d 76 61 set fsan [opt-va
74c0: 6c 20 77 69 74 68 2d 73 61 6e 69 74 69 7a 65 72 l with-sanitizer
74d0: 5d 0a 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 ].if {[string le
74e0: 6e 67 74 68 20 24 66 73 61 6e 5d 7d 20 7b 0a 20 ngth $fsan]} {.
74f0: 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 define-append
7500: 20 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 2d EXTRA_CFLAGS -
7510: 66 73 61 6e 69 74 69 7a 65 3d 24 66 73 61 6e 0a fsanitize=$fsan.
7520: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
7530: 64 20 45 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 d EXTRA_LDFLAGS
7540: 2d 66 73 61 6e 69 74 69 7a 65 3d 24 66 73 61 6e -fsanitize=$fsan
7550: 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 . if {[string
7560: 20 66 69 72 73 74 20 22 75 6e 64 65 66 69 6e 65 first "undefine
7570: 64 22 20 24 66 73 61 6e 5d 20 21 3d 20 2d 31 7d d" $fsan] != -1}
7580: 20 7b 0a 20 20 20 20 20 20 20 20 23 20 57 65 20 {. # We
7590: 6e 65 65 64 20 74 6f 20 6c 69 6e 6b 20 77 69 74 need to link wit
75a0: 68 20 6c 69 62 75 62 73 61 6e 20 69 66 20 77 65 h libubsan if we
75b0: 27 72 65 20 63 6f 6d 70 69 6c 69 6e 67 20 75 6e 're compiling un
75c0: 64 65 72 0a 20 20 20 20 20 20 20 20 23 20 47 43 der. # GC
75d0: 43 20 77 69 74 68 20 2d 66 73 61 6e 69 74 69 7a C with -fsanitiz
75e0: 65 3d 75 6e 64 65 66 69 6e 65 64 2e 0a 20 20 20 e=undefined..
75f0: 20 20 20 20 20 63 63 2d 63 68 65 63 6b 2d 66 75 cc-check-fu
7600: 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 5f 5f nction-in-lib __
7610: 75 62 73 61 6e 5f 68 61 6e 64 6c 65 5f 61 64 64 ubsan_handle_add
7620: 5f 6f 76 65 72 66 6c 6f 77 20 75 62 73 61 6e 0a _overflow ubsan.
7630: 20 20 20 20 7d 0a 7d 0a 0a 23 20 46 69 6e 61 6c }.}..# Final
7640: 6c 79 2c 20 61 70 70 65 6e 64 20 6c 69 62 72 61 ly, append libra
7650: 72 69 65 73 20 74 68 61 74 20 6d 75 73 74 20 62 ries that must b
7660: 65 20 6c 61 73 74 2e 20 54 68 69 73 20 6d 61 74 e last. This mat
7670: 74 65 72 73 20 6d 6f 72 65 20 6f 6e 20 73 6f 6d ters more on som
7680: 65 0a 23 20 4f 53 65 73 20 74 68 61 6e 20 6f 74 e.# OSes than ot
7690: 68 65 72 73 2c 20 62 75 74 20 69 73 20 6d 6f 73 hers, but is mos
76a0: 74 20 62 72 6f 61 64 6c 79 20 72 65 71 75 69 72 t broadly requir
76b0: 65 64 20 66 6f 72 20 73 74 61 74 69 63 20 6c 69 ed for static li
76c0: 6e 6b 69 6e 67 2e 0a 69 66 20 7b 5b 63 68 65 63 nking..if {[chec
76d0: 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 k-function-in-li
76e0: 62 20 64 6c 6f 70 65 6e 20 64 6c 5d 7d 20 7b 0a b dlopen dl]} {.
76f0: 20 20 20 20 23 20 53 6f 6d 65 20 70 6c 61 74 66 # Some platf
7700: 6f 72 6d 73 20 28 2a 42 53 44 29 20 68 61 76 65 orms (*BSD) have
7710: 20 74 68 65 20 64 6c 20 66 75 6e 63 74 69 6f 6e the dl function
7720: 73 20 61 6c 72 65 61 64 79 20 69 6e 20 6c 69 62 s already in lib
7730: 63 20 61 6e 64 20 6e 6f 20 6c 69 62 64 6c 2e 0a c and no libdl..
7740: 20 20 20 20 23 20 49 6e 20 73 75 63 68 20 63 61 # In such ca
7750: 73 65 20 77 65 20 63 61 6e 20 6c 69 6e 6b 20 64 se we can link d
7760: 69 72 65 63 74 6c 79 20 77 69 74 68 6f 75 74 20 irectly without
7770: 2d 6c 64 6c 2e 0a 20 20 20 20 64 65 66 69 6e 65 -ldl.. define
7780: 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 5b 67 65 -append LIBS [ge
7790: 74 2d 64 65 66 69 6e 65 20 6c 69 62 5f 64 6c 6f t-define lib_dlo
77a0: 70 65 6e 5d 0a 7d 0a 69 66 20 7b 5b 6f 70 74 2d pen].}.if {[opt-
77b0: 62 6f 6f 6c 20 73 74 61 74 69 63 5d 7d 20 7b 0a bool static]} {.
77c0: 20 20 20 20 23 20 4c 69 6e 75 78 20 63 61 6e 20 # Linux can
77d0: 6f 6e 6c 79 20 69 6e 66 65 72 20 74 68 65 20 64 only infer the d
77e0: 65 70 65 6e 64 65 6e 63 79 20 6f 6e 20 70 74 68 ependency on pth
77f0: 72 65 61 64 20 66 72 6f 6d 20 4f 70 65 6e 53 53 read from OpenSS
7800: 4c 20 77 68 65 6e 0a 20 20 20 20 23 20 64 6f 69 L when. # doi
7810: 6e 67 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 61 ng dynamic linka
7820: 67 65 2e 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 ge.. define-a
7830: 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 70 74 68 ppend LIBS -lpth
7840: 72 65 61 64 0a 7d 0a 0a 69 66 20 7b 5b 67 65 74 read.}..if {[get
7850: 2d 64 65 66 69 6e 65 20 45 4d 53 44 4b 5f 48 4f -define EMSDK_HO
7860: 4d 45 5d 20 6e 65 20 22 22 7d 20 7b 0a 20 20 64 ME] ne ""} {. d
7870: 65 66 69 6e 65 20 45 4d 43 43 5f 57 52 41 50 50 efine EMCC_WRAPP
7880: 45 52 20 24 3a 3a 61 75 74 6f 73 65 74 75 70 28 ER $::autosetup(
7890: 64 69 72 29 2f 2e 2e 2f 74 6f 6f 6c 73 2f 65 6d dir)/../tools/em
78a0: 63 63 2e 73 68 0a 20 20 6d 61 6b 65 2d 74 65 6d cc.sh. make-tem
78b0: 70 6c 61 74 65 20 74 6f 6f 6c 73 2f 65 6d 63 63 plate tools/emcc
78c0: 2e 73 68 2e 69 6e 0a 20 20 63 61 74 63 68 20 7b .sh.in. catch {
78d0: 65 78 65 63 20 63 68 6d 6f 64 20 75 2b 78 20 74 exec chmod u+x t
78e0: 6f 6f 6c 73 2f 65 6d 63 63 2e 73 68 7d 0a 7d 20 ools/emcc.sh}.}
78f0: 65 6c 73 65 20 7b 0a 20 20 64 65 66 69 6e 65 20 else {. define
7900: 45 4d 43 43 5f 57 52 41 50 50 45 52 20 22 22 0a EMCC_WRAPPER "".
7910: 20 20 63 61 74 63 68 20 7b 65 78 65 63 20 72 6d catch {exec rm
7920: 20 2d 66 20 74 6f 6f 6c 73 2f 65 6d 63 63 2e 73 -f tools/emcc.s
7930: 68 7d 0a 7d 0a 0a 23 20 54 61 67 20 63 6f 6e 74 h}.}..# Tag cont
7940: 61 69 6e 65 72 20 62 75 69 6c 64 73 20 77 69 74 ainer builds wit
7950: 68 20 61 20 70 72 65 66 69 78 20 6f 66 20 74 68 h a prefix of th
7960: 65 20 63 68 65 63 6b 69 6e 20 49 44 20 6f 66 20 e checkin ID of
7970: 74 68 65 20 76 65 72 73 69 6f 6e 0a 23 20 6f 66 the version.# of
7980: 20 46 6f 73 73 69 6c 20 65 61 63 68 20 6f 6e 65 Fossil each one
7990: 20 63 6f 6e 74 61 69 6e 73 2e 20 20 54 68 69 73 contains. This
79a0: 20 6e 6f 74 20 6f 6e 6c 79 20 61 6c 6c 6f 77 73 not only allows
79b0: 20 6d 75 6c 74 69 70 6c 65 20 69 6d 61 67 65 73 multiple images
79c0: 0a 23 20 74 6f 20 63 6f 65 78 69 73 74 20 61 6e .# to coexist an
79d0: 64 20 6d 75 6c 74 69 70 6c 65 20 63 6f 6e 74 61 d multiple conta
79e0: 69 6e 65 72 73 20 74 6f 20 62 65 20 63 72 65 61 iners to be crea
79f0: 74 65 64 20 75 6e 61 6d 67 69 67 75 6f 73 6c 79 ted unamgiguosly
7a00: 20 66 72 6f 6d 0a 23 20 74 68 65 6d 2c 20 69 74 from.# them, it
7a10: 20 61 6c 73 6f 20 63 68 61 6e 67 65 73 20 74 68 also changes th
7a20: 65 20 55 52 4c 20 77 65 20 66 65 74 63 68 20 74 e URL we fetch t
7a30: 68 65 20 73 6f 75 72 63 65 20 74 61 72 62 61 6c he source tarbal
7a40: 6c 20 66 72 6f 6d 2c 20 73 6f 0a 23 20 72 65 70 l from, so.# rep
7a50: 65 61 74 65 64 20 62 75 69 6c 64 73 20 6f 66 20 eated builds of
7a60: 61 20 67 69 76 65 6e 20 76 65 72 73 69 6f 6e 20 a given version
7a70: 67 65 6e 65 72 61 74 65 20 61 6e 64 20 66 65 74 generate and fet
7a80: 63 68 20 74 68 65 20 73 6f 75 72 63 65 0a 23 20 ch the source.#
7a90: 74 61 72 62 61 6c 6c 20 6f 6e 63 65 20 6f 6e 6c tarball once onl
7aa0: 79 2c 20 6b 65 65 70 69 6e 67 20 69 74 20 69 6e y, keeping it in
7ab0: 20 74 68 65 20 6c 6f 63 61 6c 20 44 6f 63 6b 65 the local Docke
7ac0: 72 2f 50 6f 64 6d 61 6e 20 63 61 63 68 65 2e 0a r/Podman cache..
7ad0: 73 65 74 20 63 69 20 5b 72 65 61 64 66 69 6c 65 set ci [readfile
7ae0: 20 22 24 3a 3a 61 75 74 6f 73 65 74 75 70 28 73 "$::autosetup(s
7af0: 72 63 64 69 72 29 2f 6d 61 6e 69 66 65 73 74 2e rcdir)/manifest.
7b00: 75 75 69 64 22 5d 0a 64 65 66 69 6e 65 20 46 4f uuid"].define FO
7b10: 53 53 49 4c 5f 43 49 5f 50 46 58 20 5b 73 74 72 SSIL_CI_PFX [str
7b20: 69 6e 67 20 72 61 6e 67 65 20 24 63 69 20 30 20 ing range $ci 0
7b30: 31 31 5d 0a 0a 6d 61 6b 65 2d 74 65 6d 70 6c 61 11]..make-templa
7b40: 74 65 20 4d 61 6b 65 66 69 6c 65 2e 69 6e 0a 6d te Makefile.in.m
7b50: 61 6b 65 2d 63 6f 6e 66 69 67 2d 68 65 61 64 65 ake-config-heade
7b60: 72 20 61 75 74 6f 63 6f 6e 66 69 67 2e 68 20 2d r autoconfig.h -
7b70: 61 75 74 6f 20 7b 55 53 45 5f 2a 20 46 4f 53 53 auto {USE_* FOSS
7b80: 49 4c 5f 2a 7d 0a IL_*}.