Artifact
7d0a4e5f3296516db2692356b9682f991416a990c64d4d9929e1ac7971480bb4 :
File
auto.def
— part of check-in
[b6cc6f68]
at
2021-08-11 18:56:12
on branch trunk
— Adjusted the optional cscope feature so it collects symbols only from
the src subdir, primarily to get the bld/* stuff out of the way.
(user:
wyoung
size: 24166)
[more...]
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 6d 69 6e 69 7a 3d 30 20 20 20 20 with-miniz=0
0170: 20 20 20 20 20 3d 3e 20 7b 55 73 65 20 6d 69 6e => {Use min
0180: 69 7a 20 66 72 6f 6d 20 74 68 65 20 73 6f 75 72 iz from the sour
0190: 63 65 20 74 72 65 65 7d 0a 20 20 20 20 77 69 74 ce tree}. wit
01a0: 68 2d 7a 6c 69 62 3a 70 61 74 68 7c 61 75 74 6f h-zlib:path|auto
01b0: 7c 74 72 65 65 0a 20 20 20 20 20 20 20 20 20 20 |tree.
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d =
01d0: 3e 20 7b 4c 6f 6f 6b 20 66 6f 72 20 7a 6c 69 62 > {Look for zlib
01e0: 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 70 61 in the given pa
01f0: 74 68 2c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c th, automaticall
0200: 79 2c 20 6f 72 20 69 6e 20 74 68 65 20 73 6f 75 y, or in the sou
0210: 72 63 65 20 74 72 65 65 7d 0a 20 20 20 20 77 69 rce tree}. wi
0220: 74 68 2d 65 78 65 63 2d 72 65 6c 2d 70 61 74 68 th-exec-rel-path
0230: 73 3d 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 s=0.
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3e 20 =>
0250: 7b 45 6e 61 62 6c 65 20 72 65 6c 61 74 69 76 65 {Enable relative
0260: 20 70 61 74 68 73 20 66 6f 72 20 65 78 74 65 72 paths for exter
0270: 6e 61 6c 20 64 69 66 66 2f 67 64 69 66 66 7d 0a nal diff/gdiff}.
0280: 20 20 20 20 77 69 74 68 2d 73 61 6e 69 74 69 7a with-sanitiz
0290: 65 72 3a 20 20 20 20 20 20 3d 3e 20 7b 42 75 69 er: => {Bui
02a0: 6c 64 20 77 69 74 68 20 43 20 63 6f 6d 70 69 6c ld with C compil
02b0: 65 72 27 73 20 2d 66 73 61 6e 69 74 69 7a 65 3d er's -fsanitize=
02c0: 4c 49 53 54 3b 20 65 2e 67 2e 20 61 64 64 72 65 LIST; e.g. addre
02d0: 73 73 2c 65 6e 75 6d 2c 6e 75 6c 6c 2c 75 6e 64 ss,enum,null,und
02e0: 65 66 69 6e 65 64 7d 0a 20 20 20 20 77 69 74 68 efined}. with
02f0: 2d 74 68 31 2d 64 6f 63 73 3d 30 20 20 20 20 20 -th1-docs=0
0300: 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 54 48 31 20 => {Enable TH1
0310: 66 6f 72 20 65 6d 62 65 64 64 65 64 20 64 6f 63 for embedded doc
0320: 75 6d 65 6e 74 61 74 69 6f 6e 20 70 61 67 65 73 umentation pages
0330: 7d 0a 20 20 20 20 77 69 74 68 2d 74 68 31 2d 68 }. with-th1-h
0340: 6f 6f 6b 73 3d 30 20 20 20 20 20 3d 3e 20 7b 45 ooks=0 => {E
0350: 6e 61 62 6c 65 20 54 48 31 20 68 6f 6f 6b 73 20 nable TH1 hooks
0360: 66 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 for commands and
0370: 20 77 65 62 20 70 61 67 65 73 7d 0a 20 20 20 20 web pages}.
0380: 77 69 74 68 2d 74 63 6c 3a 70 61 74 68 20 20 20 with-tcl:path
0390: 20 20 20 20 20 3d 3e 20 7b 45 6e 61 62 6c 65 20 => {Enable
03a0: 54 63 6c 20 69 6e 74 65 67 72 61 74 69 6f 6e 2c Tcl integration,
03b0: 20 77 69 74 68 20 54 63 6c 20 69 6e 20 74 68 65 with Tcl in the
03c0: 20 73 70 65 63 69 66 69 65 64 20 70 61 74 68 7d specified path}
03d0: 0a 20 20 20 20 77 69 74 68 2d 74 63 6c 2d 73 74 . with-tcl-st
03e0: 75 62 73 3d 30 20 20 20 20 20 3d 3e 20 7b 45 6e ubs=0 => {En
03f0: 61 62 6c 65 20 54 63 6c 20 69 6e 74 65 67 72 61 able Tcl integra
0400: 74 69 6f 6e 20 76 69 61 20 73 74 75 62 73 20 6c tion via stubs l
0410: 69 62 72 61 72 79 20 6d 65 63 68 61 6e 69 73 6d ibrary mechanism
0420: 7d 0a 20 20 20 20 77 69 74 68 2d 74 63 6c 2d 70 }. with-tcl-p
0430: 72 69 76 61 74 65 2d 73 74 75 62 73 3d 30 0a 20 rivate-stubs=0.
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0450: 20 20 20 20 20 20 20 20 3d 3e 20 7b 45 6e 61 62 => {Enab
0460: 6c 65 20 54 63 6c 20 69 6e 74 65 67 72 61 74 69 le Tcl integrati
0470: 6f 6e 20 76 69 61 20 70 72 69 76 61 74 65 20 73 on via private s
0480: 74 75 62 73 20 6d 65 63 68 61 6e 69 73 6d 7d 0a tubs mechanism}.
0490: 20 20 20 20 77 69 74 68 2d 6d 6d 61 6e 3d 30 20 with-mman=0
04a0: 20 20 20 20 20 20 20 20 20 3d 3e 20 7b 45 6e 61 => {Ena
04b0: 62 6c 65 20 75 73 65 20 6f 66 20 50 4f 53 49 58 ble use of POSIX
04c0: 20 6d 65 6d 6f 72 79 20 41 50 49 73 20 66 72 6f memory APIs fro
04d0: 6d 20 22 73 79 73 2f 6d 6d 61 6e 2e 68 22 7d 0a m "sys/mman.h"}.
04e0: 20 20 20 20 77 69 74 68 2d 73 65 65 3d 30 20 20 with-see=0
04f0: 20 20 20 20 20 20 20 20 20 3d 3e 20 7b 45 6e 61 => {Ena
0500: 62 6c 65 20 74 68 65 20 53 51 4c 69 74 65 20 45 ble the SQLite E
0510: 6e 63 72 79 70 74 69 6f 6e 20 45 78 74 65 6e 73 ncryption Extens
0520: 69 6f 6e 20 28 53 45 45 29 7d 0a 20 20 20 20 70 ion (SEE)}. p
0530: 72 69 6e 74 2d 6d 69 6e 69 6d 75 6d 2d 73 71 6c rint-minimum-sql
0540: 69 74 65 2d 76 65 72 73 69 6f 6e 3d 30 0a 20 20 ite-version=0.
0550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0560: 20 20 20 20 20 20 20 3d 3e 20 7b 70 72 69 6e 74 => {print
0570: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 53 51 4c the minimum SQL
0580: 69 74 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 ite version numb
0590: 65 72 20 72 65 71 75 69 72 65 64 2c 20 61 6e 64 er required, and
05a0: 20 65 78 69 74 7d 0a 20 20 20 20 69 6e 74 65 72 exit}. inter
05b0: 6e 61 6c 2d 73 71 6c 69 74 65 3d 31 20 20 20 20 nal-sqlite=1
05c0: 3d 3e 20 7b 44 6f 6e 27 74 20 75 73 65 20 74 68 => {Don't use th
05d0: 65 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 e internal SQLit
05e0: 65 2c 20 75 73 65 20 74 68 65 20 73 79 73 74 65 e, use the syste
05f0: 6d 20 6f 6e 65 7d 0a 20 20 20 20 73 74 61 74 69 m one}. stati
0600: 63 3d 30 20 20 20 20 20 20 20 20 20 20 20 20 20 c=0
0610: 3d 3e 20 7b 4c 69 6e 6b 20 61 20 73 74 61 74 69 => {Link a stati
0620: 63 20 65 78 65 63 75 74 61 62 6c 65 7d 0a 20 20 c executable}.
0630: 20 20 66 75 73 65 66 73 3d 31 20 20 20 20 20 20 fusefs=1
0640: 20 20 20 20 20 20 20 3d 3e 20 7b 44 69 73 61 62 => {Disab
0650: 6c 65 20 74 68 65 20 46 75 73 65 20 46 69 6c 65 le the Fuse File
0660: 73 79 73 74 65 6d 7d 0a 20 20 20 20 66 6f 73 73 system}. foss
0670: 69 6c 2d 64 65 62 75 67 3d 30 20 20 20 20 20 20 il-debug=0
0680: 20 3d 3e 20 7b 42 75 69 6c 64 20 77 69 74 68 20 => {Build with
0690: 66 6f 73 73 69 6c 20 64 65 62 75 67 67 69 6e 67 fossil debugging
06a0: 20 65 6e 61 62 6c 65 64 7d 0a 20 20 20 20 6e 6f enabled}. no
06b0: 2d 6f 70 74 3d 30 20 20 20 20 20 20 20 20 20 20 -opt=0
06c0: 20 20 20 3d 3e 20 7b 42 75 69 6c 64 20 77 69 74 => {Build wit
06d0: 68 6f 75 74 20 6f 70 74 69 6d 69 7a 61 74 69 6f hout optimizatio
06e0: 6e 7d 0a 20 20 20 20 6a 73 6f 6e 3d 30 20 20 20 n}. json=0
06f0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 3e 20 7b => {
0700: 42 75 69 6c 64 20 77 69 74 68 20 66 6f 73 73 69 Build with fossi
0710: 6c 20 4a 53 4f 4e 20 41 50 49 20 65 6e 61 62 6c l JSON API enabl
0720: 65 64 7d 0a 7d 0a 0a 23 20 55 70 64 61 74 65 20 ed}.}..# Update
0730: 74 68 65 20 6d 69 6e 69 6d 75 6d 20 72 65 71 75 the minimum requ
0740: 69 72 65 64 20 53 51 4c 69 74 65 20 76 65 72 73 ired SQLite vers
0750: 69 6f 6e 20 6e 75 6d 62 65 72 20 68 65 72 65 2c ion number here,
0760: 20 61 6e 64 20 61 6c 73 6f 0a 23 20 69 6e 20 73 and also.# in s
0770: 72 63 2f 6d 61 69 6e 2e 63 20 6e 65 61 72 20 74 rc/main.c near t
0780: 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 he sqlite3_libve
0790: 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20 63 rsion_number() c
07a0: 61 6c 6c 2e 20 20 54 61 6b 65 20 63 61 72 65 0a all. Take care.
07b0: 23 20 74 68 61 74 20 62 6f 74 68 20 70 6c 61 63 # that both plac
07c0: 65 73 20 61 67 72 65 65 21 0a 64 65 66 69 6e 65 es agree!.define
07d0: 20 4d 49 4e 49 4d 55 4d 5f 53 51 4c 49 54 45 5f MINIMUM_SQLITE_
07e0: 56 45 52 53 49 4f 4e 20 22 33 2e 33 35 2e 30 22 VERSION "3.35.0"
07f0: 0a 0a 23 20 54 68 69 73 20 69 73 20 75 73 65 66 ..# This is usef
0800: 75 6c 20 66 6f 72 20 70 65 6f 70 6c 65 20 77 61 ul for people wa
0810: 6e 74 69 6e 67 20 46 6f 73 73 69 6c 20 74 6f 20 nting Fossil to
0820: 75 73 65 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 use an external
0830: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 23 SQLite library.#
0840: 20 74 6f 20 63 6f 6d 70 61 72 65 20 74 68 65 20 to compare the
0850: 6f 6e 65 20 74 68 65 79 20 68 61 76 65 20 61 67 one they have ag
0860: 61 69 6e 73 74 20 74 68 65 20 6d 69 6e 69 6d 75 ainst the minimu
0870: 6d 20 72 65 71 75 69 72 65 64 0a 69 66 20 7b 5b m required.if {[
0880: 6f 70 74 2d 62 6f 6f 6c 20 70 72 69 6e 74 2d 6d opt-bool print-m
0890: 69 6e 69 6d 75 6d 2d 73 71 6c 69 74 65 2d 76 65 inimum-sqlite-ve
08a0: 72 73 69 6f 6e 5d 7d 20 7b 0a 20 20 20 20 70 75 rsion]} {. pu
08b0: 74 73 20 5b 67 65 74 2d 64 65 66 69 6e 65 20 4d ts [get-define M
08c0: 49 4e 49 4d 55 4d 5f 53 51 4c 49 54 45 5f 56 45 INIMUM_SQLITE_VE
08d0: 52 53 49 4f 4e 5d 0a 20 20 20 20 65 78 69 74 20 RSION]. exit
08e0: 30 0a 7d 0a 0a 23 20 73 71 6c 69 74 65 20 77 61 0.}..# sqlite wa
08f0: 6e 74 73 20 74 68 65 73 65 20 74 79 70 65 73 20 nts these types
0900: 69 66 20 70 6f 73 73 69 62 6c 65 0a 63 63 2d 77 if possible.cc-w
0910: 69 74 68 20 7b 2d 69 6e 63 6c 75 64 65 73 20 7b ith {-includes {
0920: 73 74 64 69 6e 74 2e 68 20 69 6e 74 74 79 70 65 stdint.h inttype
0930: 73 2e 68 7d 7d 20 7b 0a 20 20 20 20 63 63 2d 63 s.h}} {. cc-c
0940: 68 65 63 6b 2d 74 79 70 65 73 20 75 69 6e 74 33 heck-types uint3
0950: 32 5f 74 20 75 69 6e 74 31 36 5f 74 20 69 6e 74 2_t uint16_t int
0960: 31 36 5f 74 20 75 69 6e 74 38 5f 74 0a 7d 0a 0a 16_t uint8_t.}..
0970: 23 20 55 73 65 20 70 72 65 61 64 2f 70 77 72 69 # Use pread/pwri
0980: 74 65 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20 te system calls
0990: 69 6e 20 70 6c 61 63 65 20 6f 66 20 73 65 65 6b in place of seek
09a0: 20 2b 20 72 65 61 64 2f 77 72 69 74 65 20 69 66 + read/write if
09b0: 20 70 6f 73 73 69 62 6c 65 0a 64 65 66 69 6e 65 possible.define
09c0: 20 55 53 45 5f 50 52 45 41 44 20 5b 63 63 2d 63 USE_PREAD [cc-c
09d0: 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 70 heck-functions p
09e0: 72 65 61 64 5d 0a 0a 23 20 49 66 20 77 65 20 68 read]..# If we h
09f0: 61 76 65 20 63 73 63 6f 70 65 20 68 65 72 65 2c ave cscope here,
0a00: 20 77 65 27 6c 6c 20 75 73 65 20 69 74 20 69 6e we'll use it in
0a10: 20 74 68 65 20 22 74 61 67 73 22 20 74 61 72 67 the "tags" targ
0a20: 65 74 0a 69 66 20 7b 5b 63 63 2d 63 68 65 63 6b et.if {[cc-check
0a30: 2d 70 72 6f 67 73 20 63 73 63 6f 70 65 5d 7d 20 -progs cscope]}
0a40: 7b 0a 20 20 20 20 64 65 66 69 6e 65 20 43 4f 4c {. define COL
0a50: 4c 45 43 54 5f 43 53 43 4f 50 45 5f 44 41 54 41 LECT_CSCOPE_DATA
0a60: 20 22 63 73 63 6f 70 65 20 2d 62 52 20 24 3a 3a "cscope -bR $::
0a70: 61 75 74 6f 73 65 74 75 70 28 73 72 63 64 69 72 autosetup(srcdir
0a80: 29 2f 73 72 63 2f 2a 2e 5c 5b 63 68 5c 5d 22 0a )/src/*.\[ch\]".
0a90: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 64 65 66 } else {. def
0aa0: 69 6e 65 20 43 4f 4c 4c 45 43 54 5f 43 53 43 4f ine COLLECT_CSCO
0ab0: 50 45 5f 44 41 54 41 20 22 22 0a 7d 0a 0a 23 20 PE_DATA "".}..#
0ac0: 46 69 6e 64 20 74 63 6c 73 68 20 66 6f 72 20 74 Find tclsh for t
0ad0: 68 65 20 74 65 73 74 20 73 75 69 74 65 2e 0a 23 he test suite..#
0ae0: 0a 23 20 57 65 20 63 61 6e 27 74 20 75 73 65 20 .# We can't use
0af0: 6a 69 6d 73 68 20 66 6f 72 20 74 68 69 73 3a 20 jimsh for this:
0b00: 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20 75 the test suite u
0b10: 73 65 73 20 66 65 61 74 75 72 65 73 20 6f 66 20 ses features of
0b20: 54 63 6c 20 74 68 61 74 0a 23 20 4a 69 6d 20 64 Tcl that.# Jim d
0b30: 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 2c 20 oesn't support,
0b40: 65 69 74 68 65 72 20 73 74 61 74 69 63 61 6c 6c either staticall
0b50: 79 20 6f 72 20 64 75 65 20 74 6f 20 74 68 65 20 y or due to the
0b60: 77 61 79 20 69 74 27 73 20 62 75 69 6c 74 20 62 way it's built b
0b70: 79 0a 23 20 61 75 74 6f 73 65 74 75 70 2e 20 20 y.# autosetup.
0b80: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 4a 69 6d For example, Jim
0b90: 20 73 75 70 70 6f 72 74 73 20 60 66 69 6c 65 20 supports `file
0ba0: 6e 6f 72 6d 61 6c 69 7a 65 60 2c 20 62 75 74 20 normalize`, but
0bb0: 6f 6e 6c 79 20 69 66 0a 23 20 79 6f 75 20 62 75 only if.# you bu
0bc0: 69 6c 64 20 69 74 20 77 69 74 68 20 48 41 56 45 ild it with HAVE
0bd0: 5f 52 45 41 4c 50 41 54 48 2c 20 77 68 69 63 68 _REALPATH, which
0be0: 20 77 6f 6e 27 74 20 65 76 65 72 20 62 65 20 64 won't ever be d
0bf0: 65 66 69 6e 65 64 20 69 6e 20 74 68 69 73 0a 23 efined in this.#
0c00: 20 63 6f 6e 74 65 78 74 20 62 65 63 61 75 73 65 context because
0c10: 20 61 75 74 6f 73 65 74 75 70 20 64 6f 65 73 6e autosetup doesn
0c20: 27 74 20 74 72 79 20 74 6f 20 64 69 73 63 6f 76 't try to discov
0c30: 65 72 20 70 6c 61 74 66 6f 72 6d 2d 73 70 65 63 er platform-spec
0c40: 69 66 69 63 0a 23 20 64 65 74 61 69 6c 73 20 6c ific.# details l
0c50: 69 6b 65 20 74 68 61 74 20 62 65 66 6f 72 65 20 ike that before
0c60: 69 74 20 64 65 63 69 64 65 73 20 74 6f 20 62 75 it decides to bu
0c70: 69 6c 64 20 6a 69 6d 73 68 30 2e 20 20 42 65 73 ild jimsh0. Bes
0c80: 69 64 65 73 20 77 68 69 63 68 2c 0a 23 20 61 75 ides which,.# au
0c90: 74 6f 73 65 74 75 70 20 77 6f 6e 27 74 20 62 75 tosetup won't bu
0ca0: 69 6c 64 20 6a 69 6d 73 68 30 20 61 74 20 61 6c ild jimsh0 at al
0cb0: 6c 20 69 66 20 69 74 20 63 61 6e 20 66 69 6e 64 l if it can find
0cc0: 20 74 63 6c 73 68 20 69 74 73 65 6c 66 2e 0a 23 tclsh itself..#
0cd0: 20 49 72 6f 6e 69 63 61 6c 6c 79 2c 20 74 68 69 Ironically, thi
0ce0: 73 20 6d 65 61 6e 73 20 77 65 20 6d 61 79 20 72 s means we may r
0cf0: 69 67 68 74 20 6e 6f 77 20 62 65 20 72 75 6e 6e ight now be runn
0d00: 69 6e 67 20 75 6e 64 65 72 20 65 69 74 68 65 72 ing under either
0d10: 20 6a 69 6d 73 68 30 0a 23 20 6f 72 20 61 20 76 jimsh0.# or a v
0d20: 65 72 73 69 6f 6e 20 6f 66 20 74 63 6c 73 68 20 ersion of tclsh
0d30: 74 68 61 74 20 77 65 20 66 69 6e 64 20 75 6e 73 that we find uns
0d40: 75 69 74 61 62 6c 65 20 62 65 6c 6f 77 21 0a 63 uitable below!.c
0d50: 63 2d 63 68 65 63 6b 2d 70 72 6f 67 73 20 74 63 c-check-progs tc
0d60: 6c 73 68 0a 73 65 74 20 68 62 74 64 20 2f 75 73 lsh.set hbtd /us
0d70: 72 2f 6c 6f 63 61 6c 2f 43 65 6c 6c 61 72 2f 74 r/local/Cellar/t
0d80: 63 6c 2d 74 6b 0a 69 66 20 7b 5b 73 74 72 69 6e cl-tk.if {[strin
0d90: 67 20 65 71 75 61 6c 20 66 61 6c 73 65 20 5b 67 g equal false [g
0da0: 65 74 2d 64 65 66 69 6e 65 20 54 43 4c 53 48 5d et-define TCLSH]
0db0: 5d 7d 20 7b 0a 20 20 20 20 6d 73 67 2d 72 65 73 ]} {. msg-res
0dc0: 75 6c 74 20 22 57 41 52 4e 49 4e 47 3a 20 27 6d ult "WARNING: 'm
0dd0: 61 6b 65 20 74 65 73 74 27 20 77 69 6c 6c 20 6e ake test' will n
0de0: 6f 74 20 72 75 6e 20 68 65 72 65 2e 22 0a 7d 20 ot run here.".}
0df0: 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 76 else {. set v
0e00: 20 5b 65 78 65 63 20 2f 62 69 6e 2f 73 68 20 2d [exec /bin/sh -
0e10: 63 20 22 65 63 68 6f 20 27 70 75 74 73 20 5c 24 c "echo 'puts \$
0e20: 74 63 6c 5f 76 65 72 73 69 6f 6e 27 20 7c 20 74 tcl_version' | t
0e30: 63 6c 73 68 22 5d 0a 20 20 20 20 69 66 20 7b 5b clsh"]. if {[
0e40: 65 78 70 72 20 7b 24 76 20 3e 3d 20 38 2e 36 7d expr {$v >= 8.6}
0e50: 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 ]} {. msg
0e60: 2d 72 65 73 75 6c 74 20 22 46 6f 75 6e 64 20 54 -result "Found T
0e70: 63 6c 73 68 20 76 65 72 73 69 6f 6e 20 24 76 20 clsh version $v
0e80: 69 6e 20 74 68 65 20 50 41 54 48 2e 22 0a 20 20 in the PATH.".
0e90: 20 20 20 20 20 20 64 65 66 69 6e 65 20 54 43 4c define TCL
0ea0: 53 48 20 74 63 6c 73 68 0a 20 20 20 20 7d 20 65 SH tclsh. } e
0eb0: 6c 73 65 69 66 20 7b 5b 66 69 6c 65 20 69 73 64 lseif {[file isd
0ec0: 69 72 65 63 74 6f 72 79 20 24 68 62 74 64 5d 7d irectory $hbtd]}
0ed0: 20 7b 0a 20 20 20 20 20 20 20 20 23 20 54 68 69 {. # Thi
0ee0: 73 20 69 73 20 61 20 6d 61 63 4f 53 20 73 79 73 s is a macOS sys
0ef0: 74 65 6d 20 77 69 74 68 20 74 68 65 20 48 6f 6d tem with the Hom
0f00: 65 62 72 65 77 20 76 65 72 73 69 6f 6e 20 6f 66 ebrew version of
0f10: 20 54 63 6c 2f 54 6b 0a 20 20 20 20 20 20 20 20 Tcl/Tk.
0f20: 23 20 69 6e 73 74 61 6c 6c 65 64 2e 20 20 53 65 # installed. Se
0f30: 6c 65 63 74 20 74 68 65 20 6e 65 77 65 73 74 20 lect the newest
0f40: 76 65 72 73 69 6f 6e 2e 20 20 49 74 20 77 6f 6e version. It won
0f50: 27 74 20 6e 6f 72 6d 61 6c 6c 79 20 62 65 0a 20 't normally be.
0f60: 20 20 20 20 20 20 20 23 20 69 6e 20 74 68 65 20 # in the
0f70: 50 41 54 48 20 74 6f 20 61 76 6f 69 64 20 73 68 PATH to avoid sh
0f80: 61 64 6f 77 69 6e 67 20 2f 75 73 72 2f 62 69 6e adowing /usr/bin
0f90: 2f 74 63 6c 73 68 2c 20 61 6e 64 20 65 76 65 6e /tclsh, and even
0fa0: 20 69 66 20 69 74 0a 20 20 20 20 20 20 20 20 23 if it. #
0fb0: 20 77 65 72 65 20 69 6e 20 74 68 65 20 50 41 54 were in the PAT
0fc0: 48 2c 20 69 74 27 73 20 62 61 64 20 70 72 61 63 H, it's bad prac
0fd0: 74 69 63 65 20 74 6f 20 70 75 74 20 2f 75 73 72 tice to put /usr
0fe0: 2f 6c 6f 63 61 6c 2f 62 69 6e 20 28 74 68 65 0a /local/bin (the.
0ff0: 20 20 20 20 20 20 20 20 23 20 48 6f 6d 65 62 72 # Homebr
1000: 65 77 20 64 65 66 61 75 6c 74 29 20 61 68 65 61 ew default) ahea
1010: 64 20 6f 66 20 2f 75 73 72 2f 62 69 6e 2c 20 65 d of /usr/bin, e
1020: 73 70 65 63 69 61 6c 6c 79 20 67 69 76 65 6e 20 specially given
1030: 74 68 61 74 0a 20 20 20 20 20 20 20 20 23 20 69 that. # i
1040: 74 27 73 20 75 73 65 72 2d 77 72 69 74 65 61 62 t's user-writeab
1050: 6c 65 20 62 79 20 64 65 66 61 75 6c 74 20 77 69 le by default wi
1060: 74 68 20 48 6f 6d 65 62 72 65 77 2e 20 20 54 68 th Homebrew. Th
1070: 75 73 2c 20 77 65 20 63 61 6e 20 62 65 0a 20 20 us, we can be.
1080: 20 20 20 20 20 20 23 20 70 72 65 74 74 79 20 73 # pretty s
1090: 75 72 65 20 74 68 65 20 6f 6e 6c 79 20 77 61 79 ure the only way
10a0: 20 74 6f 20 63 61 6c 6c 20 69 74 20 69 73 20 77 to call it is w
10b0: 69 74 68 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 ith an absolute
10c0: 70 61 74 68 2e 0a 20 20 20 20 20 20 20 20 73 65 path.. se
10d0: 74 20 76 20 5b 65 78 65 63 20 6c 73 20 2d 74 72 t v [exec ls -tr
10e0: 20 24 68 62 74 64 20 7c 20 74 61 69 6c 20 2d 31 $hbtd | tail -1
10f0: 5d 0a 20 20 20 20 20 20 20 20 73 65 74 20 70 61 ]. set pa
1100: 74 68 20 22 24 68 62 74 64 2f 24 76 2f 62 69 6e th "$hbtd/$v/bin
1110: 2f 74 63 6c 73 68 22 0a 20 20 20 20 20 20 20 20 /tclsh".
1120: 64 65 66 69 6e 65 20 54 43 4c 53 48 20 24 70 61 define TCLSH $pa
1130: 74 68 0a 20 20 20 20 20 20 20 20 6d 73 67 2d 72 th. msg-r
1140: 65 73 75 6c 74 20 22 55 73 69 6e 67 20 48 6f 6d esult "Using Hom
1150: 65 62 72 65 77 20 54 63 6c 2f 54 6b 20 76 65 72 ebrew Tcl/Tk ver
1160: 73 69 6f 6e 20 24 70 61 74 68 2e 22 0a 20 20 20 sion $path.".
1170: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
1180: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 57 41 msg-result "WA
1190: 52 4e 49 4e 47 3a 20 74 63 6c 73 68 20 24 76 20 RNING: tclsh $v
11a0: 66 6f 75 6e 64 3b 20 6e 65 65 64 20 3e 3d 20 38 found; need >= 8
11b0: 2e 36 20 66 6f 72 20 27 6d 61 6b 65 20 74 65 73 .6 for 'make tes
11c0: 74 27 2e 22 0a 20 20 20 20 20 20 20 20 64 65 66 t'.". def
11d0: 69 6e 65 20 54 43 4c 53 48 20 66 61 6c 73 65 20 ine TCLSH false
11e0: 20 20 20 20 3b 23 20 66 6f 72 63 65 20 22 6d 61 ;# force "ma
11f0: 6b 65 20 74 65 73 74 22 20 66 61 69 6c 75 72 65 ke test" failure
1200: 20 76 69 61 20 2f 75 73 72 2f 62 69 6e 2f 66 61 via /usr/bin/fa
1210: 6c 73 65 0a 20 20 20 20 7d 0a 7d 0a 0a 64 65 66 lse. }.}..def
1220: 69 6e 65 20 45 58 54 52 41 5f 43 46 4c 41 47 53 ine EXTRA_CFLAGS
1230: 20 22 2d 57 61 6c 6c 22 0a 64 65 66 69 6e 65 20 "-Wall".define
1240: 45 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 22 22 EXTRA_LDFLAGS ""
1250: 0a 64 65 66 69 6e 65 20 55 53 45 5f 53 59 53 54 .define USE_SYST
1260: 45 4d 5f 53 51 4c 49 54 45 20 30 0a 64 65 66 69 EM_SQLITE 0.defi
1270: 6e 65 20 55 53 45 5f 4c 49 4e 45 4e 4f 49 53 45 ne USE_LINENOISE
1280: 20 30 0a 64 65 66 69 6e 65 20 46 4f 53 53 49 4c 0.define FOSSIL
1290: 5f 45 4e 41 42 4c 45 5f 4d 49 4e 49 5a 20 30 0a _ENABLE_MINIZ 0.
12a0: 64 65 66 69 6e 65 20 55 53 45 5f 4d 4d 41 4e 5f define USE_MMAN_
12b0: 48 20 30 0a 64 65 66 69 6e 65 20 55 53 45 5f 53 H 0.define USE_S
12c0: 45 45 20 30 0a 0a 0a 23 20 4d 61 69 6e 74 61 69 EE 0...# Maintai
12d0: 6e 20 74 68 65 20 43 38 39 2f 43 39 30 2d 73 74 n the C89/C90-st
12e0: 79 6c 65 20 6f 72 64 65 72 20 6f 66 20 76 61 72 yle order of var
12f0: 69 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f iable declaratio
1300: 6e 73 20 62 65 66 6f 72 65 20 73 74 61 74 65 6d ns before statem
1310: 65 6e 74 73 2e 0a 23 20 43 68 65 63 6b 20 69 66 ents..# Check if
1320: 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 73 75 the compiler su
1330: 70 70 6f 72 74 73 20 74 68 65 20 72 65 73 70 65 pports the respe
1340: 63 74 69 76 65 20 77 61 72 6e 69 6e 67 20 66 6c ctive warning fl
1350: 61 67 2e 0a 69 66 20 7b 5b 63 63 74 65 73 74 20 ag..if {[cctest
1360: 2d 63 66 6c 61 67 73 20 2d 57 64 65 63 6c 61 72 -cflags -Wdeclar
1370: 61 74 69 6f 6e 2d 61 66 74 65 72 2d 73 74 61 74 ation-after-stat
1380: 65 6d 65 6e 74 5d 7d 20 7b 0a 20 20 20 20 64 65 ement]} {. de
1390: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
13a0: 41 5f 43 46 4c 41 47 53 20 2d 57 64 65 63 6c 61 A_CFLAGS -Wdecla
13b0: 72 61 74 69 6f 6e 2d 61 66 74 65 72 2d 73 74 61 ration-after-sta
13c0: 74 65 6d 65 6e 74 0a 7d 0a 0a 0a 23 20 54 68 69 tement.}...# Thi
13d0: 73 20 70 72 6f 63 65 64 75 72 65 20 69 73 20 61 s procedure is a
13e0: 20 63 75 73 74 6f 6d 69 7a 65 64 20 76 65 72 73 customized vers
13f0: 69 6f 6e 20 6f 66 20 22 63 63 2d 63 68 65 63 6b ion of "cc-check
1400: 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 -function-in-lib
1410: 22 2c 0a 23 20 74 68 61 74 20 64 6f 65 73 20 6e ",.# that does n
1420: 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 4c 49 ot modify the LI
1430: 42 53 20 76 61 72 69 61 62 6c 65 2e 20 20 49 74 BS variable. It
1440: 73 20 75 73 65 20 70 72 65 76 65 6e 74 73 20 70 s use prevents p
1450: 72 65 6d 61 74 75 72 65 6c 79 0a 23 20 70 75 6c rematurely.# pul
1460: 6c 69 6e 67 20 69 6e 20 6c 69 62 72 61 72 69 65 ling in librarie
1470: 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 61 s that will be a
1480: 64 64 65 64 20 6c 61 74 65 72 20 61 6e 79 68 6f dded later anyho
1490: 77 20 28 65 2e 67 2e 20 22 2d 6c 64 6c 22 29 2e w (e.g. "-ldl").
14a0: 0a 70 72 6f 63 20 63 68 65 63 6b 2d 66 75 6e 63 .proc check-func
14b0: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 7b 66 75 6e tion-in-lib {fun
14c0: 63 74 69 6f 6e 20 6c 69 62 73 20 7b 6f 74 68 65 ction libs {othe
14d0: 72 6c 69 62 73 20 7b 7d 7d 7d 20 7b 0a 20 20 20 rlibs {}}} {.
14e0: 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e if {[string len
14f0: 67 74 68 20 24 6f 74 68 65 72 6c 69 62 73 5d 7d gth $otherlibs]}
1500: 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 2d 63 {. msg-c
1510: 68 65 63 6b 69 6e 67 20 22 43 68 65 63 6b 69 6e hecking "Checkin
1520: 67 20 66 6f 72 20 24 66 75 6e 63 74 69 6f 6e 20 g for $function
1530: 69 6e 20 24 6c 69 62 73 20 77 69 74 68 20 24 6f in $libs with $o
1540: 74 68 65 72 6c 69 62 73 2e 2e 2e 22 0a 20 20 20 therlibs...".
1550: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
1560: 20 20 6d 73 67 2d 63 68 65 63 6b 69 6e 67 20 22 msg-checking "
1570: 43 68 65 63 6b 69 6e 67 20 66 6f 72 20 24 66 75 Checking for $fu
1580: 6e 63 74 69 6f 6e 20 69 6e 20 24 6c 69 62 73 2e nction in $libs.
1590: 2e 2e 22 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 ..". }. se
15a0: 74 20 66 6f 75 6e 64 20 30 0a 20 20 20 20 63 63 t found 0. cc
15b0: 2d 77 69 74 68 20 5b 6c 69 73 74 20 2d 6c 69 62 -with [list -lib
15c0: 73 20 24 6f 74 68 65 72 6c 69 62 73 5d 20 7b 0a s $otherlibs] {.
15d0: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 74 if {[cct
15e0: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 20 24 66 75 est_function $fu
15f0: 6e 63 74 69 6f 6e 5d 7d 20 7b 0a 20 20 20 20 20 nction]} {.
1600: 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 6c msg-resul
1610: 74 20 22 6e 6f 6e 65 20 6e 65 65 64 65 64 22 0a t "none needed".
1620: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 69 defi
1630: 6e 65 20 6c 69 62 5f 24 66 75 6e 63 74 69 6f 6e ne lib_$function
1640: 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 "".
1650: 69 6e 63 72 20 66 6f 75 6e 64 0a 20 20 20 20 20 incr found.
1660: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
1670: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 foreach
1680: 6c 69 62 20 24 6c 69 62 73 20 7b 0a 20 20 20 20 lib $libs {.
1690: 20 20 20 20 20 20 20 20 20 20 20 20 63 63 2d 77 cc-w
16a0: 69 74 68 20 5b 6c 69 73 74 20 2d 6c 69 62 73 20 ith [list -libs
16b0: 2d 6c 24 6c 69 62 5d 20 7b 0a 20 20 20 20 20 20 -l$lib] {.
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
16d0: 20 7b 5b 63 63 74 65 73 74 5f 66 75 6e 63 74 69 {[cctest_functi
16e0: 6f 6e 20 24 66 75 6e 63 74 69 6f 6e 5d 7d 20 7b on $function]} {
16f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1700: 20 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 msg-res
1710: 75 6c 74 20 2d 6c 24 6c 69 62 0a 20 20 20 20 20 ult -l$lib.
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1730: 20 20 20 64 65 66 69 6e 65 20 6c 69 62 5f 24 66 define lib_$f
1740: 75 6e 63 74 69 6f 6e 20 2d 6c 24 6c 69 62 0a 20 unction -l$lib.
1750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1760: 20 20 20 20 20 20 20 69 6e 63 72 20 66 6f 75 6e incr foun
1770: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.
1780: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a break.
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17a0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
17b0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
17c0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a }. }.
17d0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 24 66 }. if {$f
17e0: 6f 75 6e 64 7d 20 7b 0a 20 20 20 20 20 20 20 20 ound} {.
17f0: 64 65 66 69 6e 65 20 5b 66 65 61 74 75 72 65 2d define [feature-
1800: 64 65 66 69 6e 65 2d 6e 61 6d 65 20 24 66 75 6e define-name $fun
1810: 63 74 69 6f 6e 5d 0a 20 20 20 20 7d 20 65 6c 73 ction]. } els
1820: 65 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 2d e {. msg-
1830: 72 65 73 75 6c 74 20 22 6e 6f 22 0a 20 20 20 20 result "no".
1840: 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 24 66 6f }. return $fo
1850: 75 6e 64 0a 7d 0a 0a 69 66 20 7b 21 5b 6f 70 74 und.}..if {![opt
1860: 2d 62 6f 6f 6c 20 69 6e 74 65 72 6e 61 6c 2d 73 -bool internal-s
1870: 71 6c 69 74 65 5d 7d 20 7b 0a 20 20 70 72 6f 63 qlite]} {. proc
1880: 20 66 69 6e 64 5f 73 79 73 74 65 6d 5f 73 71 6c find_system_sql
1890: 69 74 65 20 7b 7d 20 7b 0a 0a 20 20 20 20 23 20 ite {} {.. #
18a0: 4f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 20 On some systems
18b0: 28 73 6c 61 63 6b 77 61 72 65 29 2c 20 6c 69 62 (slackware), lib
18c0: 73 71 6c 69 74 65 33 20 72 65 71 75 69 72 65 73 sqlite3 requires
18d0: 20 2d 6c 64 6c 20 74 6f 20 6c 69 6e 6b 2e 20 53 -ldl to link. S
18e0: 6f 0a 20 20 20 20 23 20 73 65 61 72 63 68 20 66 o. # search f
18f0: 6f 72 20 74 68 65 20 73 79 73 74 65 6d 20 53 51 or the system SQ
1900: 4c 69 74 65 20 6f 6e 63 65 20 77 69 74 68 20 2d Lite once with -
1910: 6c 64 6c 2c 20 61 6e 64 20 6f 6e 63 65 20 77 69 ldl, and once wi
1920: 74 68 6f 75 74 2e 20 49 66 0a 20 20 20 20 23 20 thout. If. #
1930: 74 68 65 20 6c 69 62 72 61 72 79 20 63 61 6e 20 the library can
1940: 6f 6e 6c 79 20 62 65 20 66 6f 75 6e 64 20 77 69 only be found wi
1950: 74 68 20 24 65 78 74 72 61 6c 69 62 73 20 73 65 th $extralibs se
1960: 74 20 74 6f 20 2d 6c 64 6c 2c 20 74 68 65 6e 0a t to -ldl, then.
1970: 20 20 20 20 23 20 74 68 65 20 63 6f 64 65 20 62 # the code b
1980: 65 6c 6f 77 20 77 69 6c 6c 20 61 70 70 65 6e 64 elow will append
1990: 20 2d 6c 64 6c 20 74 6f 20 4c 49 42 53 2e 0a 20 -ldl to LIBS..
19a0: 20 20 20 23 0a 20 20 20 20 66 6f 72 65 61 63 68 #. foreach
19b0: 20 65 78 74 72 61 6c 69 62 73 20 7b 7b 7d 20 7b extralibs {{} {
19c0: 2d 6c 64 6c 7d 7d 20 7b 0a 0a 20 20 20 20 20 20 -ldl}} {..
19d0: 23 20 4c 6f 63 61 74 65 20 74 68 65 20 73 79 73 # Locate the sys
19e0: 74 65 6d 20 53 51 4c 69 74 65 20 62 79 20 73 65 tem SQLite by se
19f0: 61 72 63 68 69 6e 67 20 66 6f 72 20 73 71 6c 69 arching for sqli
1a00: 74 65 33 5f 6f 70 65 6e 28 29 2e 20 54 68 65 6e te3_open(). Then
1a10: 20 63 68 65 63 6b 0a 20 20 20 20 20 20 23 20 69 check. # i
1a20: 66 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 69 f sqlite3_stmt_i
1a30: 73 65 78 70 6c 61 69 6e 20 63 61 6e 20 62 65 20 sexplain can be
1a40: 66 6f 75 6e 64 20 61 73 20 77 65 6c 6c 2e 20 49 found as well. I
1a50: 66 20 77 65 20 63 61 6e 20 66 69 6e 64 20 6f 70 f we can find op
1a60: 65 6e 28 29 20 62 75 74 0a 20 20 20 20 20 20 23 en() but. #
1a70: 20 6e 6f 74 20 73 74 6d 74 5f 69 73 65 78 70 6c not stmt_isexpl
1a80: 61 69 6e 28 29 2c 20 74 68 65 6e 20 74 68 65 20 ain(), then the
1a90: 73 79 73 74 65 6d 20 53 51 4c 69 74 65 20 69 73 system SQLite is
1aa0: 20 74 6f 6f 20 6f 6c 64 20 74 6f 20 6c 69 6e 6b too old to link
1ab0: 20 61 67 61 69 6e 73 74 0a 20 20 20 20 20 20 23 against. #
1ac0: 20 66 6f 73 73 69 6c 2e 0a 20 20 20 20 20 20 23 fossil.. #
1ad0: 0a 20 20 20 20 20 20 69 66 20 7b 5b 63 68 65 63 . if {[chec
1ae0: 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 k-function-in-li
1af0: 62 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 20 73 b sqlite3_open s
1b00: 71 6c 69 74 65 33 20 24 65 78 74 72 61 6c 69 62 qlite3 $extralib
1b10: 73 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 23 20 s]} {. #
1b20: 53 75 63 63 65 73 73 2e 20 55 70 64 61 74 65 20 Success. Update
1b30: 73 79 6d 62 6f 6c 73 20 61 6e 64 20 72 65 74 75 symbols and retu
1b40: 72 6e 2e 0a 20 20 20 20 20 20 20 20 23 0a 20 20 rn.. #.
1b50: 20 20 20 20 20 20 64 65 66 69 6e 65 20 55 53 45 define USE
1b60: 5f 53 59 53 54 45 4d 5f 53 51 4c 49 54 45 20 31 _SYSTEM_SQLITE 1
1b70: 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 2d . define-
1b80: 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 73 71 append LIBS -lsq
1b90: 6c 69 74 65 33 0a 20 20 20 20 20 20 20 20 64 65 lite3. de
1ba0: 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 fine-append LIBS
1bb0: 20 24 65 78 74 72 61 6c 69 62 73 0a 20 20 20 20 $extralibs.
1bc0: 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 return.
1bd0: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 75 73 65 }. }. use
1be0: 72 2d 65 72 72 6f 72 20 22 73 79 73 74 65 6d 20 r-error "system
1bf0: 73 71 6c 69 74 65 33 20 6e 6f 74 20 66 6f 75 6e sqlite3 not foun
1c00: 64 22 0a 20 20 7d 0a 0a 20 20 66 69 6e 64 5f 73 d". }.. find_s
1c10: 79 73 74 65 6d 5f 73 71 6c 69 74 65 0a 0a 20 20 ystem_sqlite..
1c20: 70 72 6f 63 20 74 65 73 74 5f 73 79 73 74 65 6d proc test_system
1c30: 5f 73 71 6c 69 74 65 20 7b 7d 20 7b 0a 20 20 20 _sqlite {} {.
1c40: 20 23 20 43 68 65 63 6b 20 63 6f 6d 70 61 74 69 # Check compati
1c50: 62 69 6c 69 74 79 20 6f 66 20 74 68 65 20 73 79 bility of the sy
1c60: 73 74 65 6d 20 53 51 4c 69 74 65 20 6c 69 62 72 stem SQLite libr
1c70: 61 72 79 20 62 79 20 72 75 6e 6e 69 6e 67 20 74 ary by running t
1c80: 68 65 20 73 71 6c 63 6f 6d 70 74 74 65 73 74 2e he sqlcompttest.
1c90: 63 0a 20 20 20 20 23 20 70 72 6f 67 72 61 6d 20 c. # program
1ca0: 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 in the source tr
1cb0: 65 65 0a 20 20 20 20 23 20 70 61 73 73 65 73 20 ee. # passes
1cc0: 4d 49 4e 49 4d 55 4d 5f 53 51 4c 49 54 45 5f 56 MINIMUM_SQLITE_V
1cd0: 45 52 53 49 4f 4e 20 73 65 74 20 61 74 20 74 68 ERSION set at th
1ce0: 65 20 74 6f 70 20 6f 66 20 74 68 69 73 20 66 69 e top of this fi
1cf0: 6c 65 20 74 6f 20 73 71 6c 63 6f 6d 70 74 74 65 le to sqlcomptte
1d00: 73 74 2e 63 0a 20 20 20 20 23 0a 20 20 20 20 73 st.c. #. s
1d10: 65 74 20 63 6d 64 6c 69 6e 65 20 7b 7d 0a 20 20 et cmdline {}.
1d20: 20 20 6c 61 70 70 65 6e 64 20 63 6d 64 6c 69 6e lappend cmdlin
1d30: 65 20 7b 2a 7d 5b 67 65 74 2d 64 65 66 69 6e 65 e {*}[get-define
1d40: 20 43 43 41 43 48 45 5d 0a 20 20 20 20 6c 61 70 CCACHE]. lap
1d50: 70 65 6e 64 20 63 6d 64 6c 69 6e 65 20 7b 2a 7d pend cmdline {*}
1d60: 5b 67 65 74 2d 64 65 66 69 6e 65 20 43 43 5d 20 [get-define CC]
1d70: 7b 2a 7d 5b 67 65 74 2d 64 65 66 69 6e 65 20 43 {*}[get-define C
1d80: 46 4c 41 47 53 5d 0a 20 20 20 20 6c 61 70 70 65 FLAGS]. lappe
1d90: 6e 64 20 63 6d 64 6c 69 6e 65 20 24 3a 3a 61 75 nd cmdline $::au
1da0: 74 6f 73 65 74 75 70 28 64 69 72 29 2f 2e 2e 2f tosetup(dir)/../
1db0: 73 72 63 2f 73 71 6c 63 6f 6d 70 61 74 74 65 73 src/sqlcompattes
1dc0: 74 2e 63 20 2d 6f 20 63 6f 6e 66 74 65 73 74 5f t.c -o conftest_
1dd0: 5f 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 63 6d _. lappend cm
1de0: 64 6c 69 6e 65 20 7b 2a 7d 5b 67 65 74 2d 64 65 dline {*}[get-de
1df0: 66 69 6e 65 20 4c 44 46 4c 41 47 53 5d 0a 20 20 fine LDFLAGS].
1e00: 20 20 6c 61 70 70 65 6e 64 20 63 6d 64 6c 69 6e lappend cmdlin
1e10: 65 20 7b 2a 7d 5b 67 65 74 2d 64 65 66 69 6e 65 e {*}[get-define
1e20: 20 4c 49 42 53 5d 0a 20 20 20 20 73 65 74 20 73 LIBS]. set s
1e30: 71 6c 69 74 65 2d 76 65 72 73 69 6f 6e 20 5b 73 qlite-version [s
1e40: 74 72 69 6e 67 20 63 61 74 20 22 2d 44 20 4d 49 tring cat "-D MI
1e50: 4e 49 4d 55 4d 5f 53 51 4c 49 54 45 5f 56 45 52 NIMUM_SQLITE_VER
1e60: 53 49 4f 4e 3d 22 20 5b 67 65 74 2d 64 65 66 69 SION=" [get-defi
1e70: 6e 65 20 4d 49 4e 49 4d 55 4d 5f 53 51 4c 49 54 ne MINIMUM_SQLIT
1e80: 45 5f 56 45 52 53 49 4f 4e 5d 5d 0a 20 20 20 20 E_VERSION]].
1e90: 6c 61 70 70 65 6e 64 20 63 6d 64 6c 69 6e 65 20 lappend cmdline
1ea0: 7b 2a 7d 5b 73 65 74 20 73 71 6c 69 74 65 2d 76 {*}[set sqlite-v
1eb0: 65 72 73 69 6f 6e 5d 0a 20 20 20 20 73 65 74 20 ersion]. set
1ec0: 6f 6b 20 31 0a 20 20 20 20 73 65 74 20 65 72 72 ok 1. set err
1ed0: 20 5b 63 61 74 63 68 20 7b 65 78 65 63 2d 77 69 [catch {exec-wi
1ee0: 74 68 2d 73 74 64 65 72 72 20 7b 2a 7d 24 63 6d th-stderr {*}$cm
1ef0: 64 6c 69 6e 65 7d 20 72 65 73 75 6c 74 20 65 72 dline} result er
1f00: 72 69 6e 66 6f 5d 0a 20 20 20 20 69 66 20 7b 24 rinfo]. if {$
1f10: 65 72 72 7d 20 7b 0a 20 20 20 20 20 20 20 63 6f err} {. co
1f20: 6e 66 69 67 6c 6f 67 20 22 46 61 69 6c 65 64 3a nfiglog "Failed:
1f30: 20 5b 6a 6f 69 6e 20 24 63 6d 64 6c 69 6e 65 5d [join $cmdline]
1f40: 22 0a 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 ". if {[st
1f50: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 72 65 73 ring length $res
1f60: 75 6c 74 5d 3e 30 7d 20 7b 63 6f 6e 66 69 67 6c ult]>0} {configl
1f70: 6f 67 20 24 72 65 73 75 6c 74 7d 0a 20 20 20 20 og $result}.
1f80: 20 20 20 63 6f 6e 66 69 67 6c 6f 67 20 22 3d 3d configlog "==
1f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 22 0a 20 20 20 20 ==========".
1fa0: 20 20 20 73 65 74 20 6f 6b 20 30 0a 20 20 20 20 set ok 0.
1fb0: 7d 20 65 6c 73 65 69 66 20 7b 24 3a 3a 61 75 74 } elseif {$::aut
1fc0: 6f 73 65 74 75 70 28 64 65 62 75 67 29 7d 20 7b osetup(debug)} {
1fd0: 0a 20 20 20 20 20 20 20 63 6f 6e 66 69 67 6c 6f . configlo
1fe0: 67 20 22 43 6f 6d 70 69 6c 65 64 20 4f 4b 3a 20 g "Compiled OK:
1ff0: 5b 6a 6f 69 6e 20 24 63 6d 64 6c 69 6e 65 5d 22 [join $cmdline]"
2000: 0a 20 20 20 20 20 20 20 63 6f 6e 66 69 67 6c 6f . configlo
2010: 67 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 22 g "============"
2020: 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 21 . }. if {!
2030: 24 6f 6b 7d 20 7b 0a 20 20 20 20 20 20 75 73 65 $ok} {. use
2040: 72 2d 65 72 72 6f 72 20 22 75 6e 61 62 6c 65 20 r-error "unable
2050: 74 6f 20 63 6f 6d 70 69 6c 65 20 53 51 4c 69 74 to compile SQLit
2060: 65 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 e compatibility
2070: 74 65 73 74 20 70 72 6f 67 72 61 6d 22 0a 20 20 test program".
2080: 20 20 7d 0a 20 20 20 20 73 65 74 20 65 72 72 20 }. set err
2090: 5b 63 61 74 63 68 20 7b 65 78 65 63 2d 77 69 74 [catch {exec-wit
20a0: 68 2d 73 74 64 65 72 72 20 2e 2f 63 6f 6e 66 74 h-stderr ./conft
20b0: 65 73 74 5f 5f 7d 20 72 65 73 75 6c 74 20 65 72 est__} result er
20c0: 72 69 6e 66 6f 5d 0a 20 20 20 20 69 66 20 7b 5b rinfo]. if {[
20d0: 67 65 74 2d 64 65 66 69 6e 65 20 62 75 69 6c 64 get-define build
20e0: 5d 20 65 71 20 5b 67 65 74 2d 64 65 66 69 6e 65 ] eq [get-define
20f0: 20 68 6f 73 74 5d 7d 20 7b 0a 20 20 20 20 20 20 host]} {.
2100: 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b set err [catch {
2110: 65 78 65 63 2d 77 69 74 68 2d 73 74 64 65 72 72 exec-with-stderr
2120: 20 2e 2f 63 6f 6e 66 74 65 73 74 5f 5f 7d 20 72 ./conftest__} r
2130: 65 73 75 6c 74 20 65 72 72 69 6e 66 6f 5d 0a 20 esult errinfo].
2140: 20 20 20 20 20 69 66 20 7b 24 65 72 72 7d 20 7b if {$err} {
2150: 0a 20 20 20 20 20 20 20 20 75 73 65 72 2d 65 72 . user-er
2160: 72 6f 72 20 24 72 65 73 75 6c 74 0a 20 20 20 20 ror $result.
2170: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 69 }. }. fi
2180: 6c 65 20 64 65 6c 65 74 65 20 2e 2f 63 6f 6e 66 le delete ./conf
2190: 74 65 73 74 5f 5f 0a 20 20 7d 0a 20 20 74 65 73 test__. }. tes
21a0: 74 5f 73 79 73 74 65 6d 5f 73 71 6c 69 74 65 0a t_system_sqlite.
21b0: 0a 7d 0a 0a 70 72 6f 63 20 69 73 5f 6d 69 6e 67 .}..proc is_ming
21c0: 77 20 7b 7d 20 7b 0a 20 20 20 20 72 65 74 75 72 w {} {. retur
21d0: 6e 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 n [string match
21e0: 2a 6d 69 6e 67 77 2a 20 5b 67 65 74 2d 64 65 66 *mingw* [get-def
21f0: 69 6e 65 20 68 6f 73 74 5d 5d 0a 7d 0a 0a 69 66 ine host]].}..if
2200: 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 7b 0a {[is_mingw]} {.
2210: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
2220: 64 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 2d d EXTRA_CFLAGS -
2230: 44 42 52 4f 4b 45 4e 5f 4d 49 4e 47 57 5f 43 4d DBROKEN_MINGW_CM
2240: 44 4c 49 4e 45 0a 20 20 20 20 64 65 66 69 6e 65 DLINE. define
2250: 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 6b -append LIBS -lk
2260: 65 72 6e 65 6c 33 32 20 2d 6c 77 73 32 5f 33 32 ernel32 -lws2_32
2270: 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 23 0a .} else {. #.
2280: 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 6c 6c 20 # NOTE: All
2290: 70 6c 61 74 66 6f 72 6d 73 20 65 78 63 65 70 74 platforms except
22a0: 20 4d 69 6e 47 57 20 73 68 6f 75 6c 64 20 75 73 MinGW should us
22b0: 65 20 74 68 65 20 6c 69 6e 65 6e 6f 69 73 65 0a e the linenoise.
22c0: 20 20 20 20 23 20 20 20 20 20 20 20 70 61 63 6b # pack
22d0: 61 67 65 2e 20 20 49 74 20 69 73 20 63 75 72 72 age. It is curr
22e0: 65 6e 74 6c 79 20 75 6e 73 75 70 70 6f 72 74 65 ently unsupporte
22f0: 64 20 6f 6e 20 57 69 6e 33 32 2e 0a 20 20 20 20 d on Win32..
2300: 23 0a 20 20 20 20 64 65 66 69 6e 65 20 55 53 45 #. define USE
2310: 5f 4c 49 4e 45 4e 4f 49 53 45 20 31 0a 7d 0a 0a _LINENOISE 1.}..
2320: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63 if {[string matc
2330: 68 20 2a 2d 73 6f 6c 61 72 69 73 2a 20 5b 67 65 h *-solaris* [ge
2340: 74 2d 64 65 66 69 6e 65 20 68 6f 73 74 5d 5d 7d t-define host]]}
2350: 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 {. define-ap
2360: 70 65 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 pend EXTRA_CFLAG
2370: 53 20 7b 2d 44 5f 58 4f 50 45 4e 5f 53 4f 55 52 S {-D_XOPEN_SOUR
2380: 43 45 3d 35 30 30 20 2d 44 5f 5f 45 58 54 45 4e CE=500 -D__EXTEN
2390: 53 49 4f 4e 53 5f 5f 7d 0a 7d 0a 0a 69 66 20 7b SIONS__}.}..if {
23a0: 5b 6f 70 74 2d 62 6f 6f 6c 20 66 6f 73 73 69 6c [opt-bool fossil
23b0: 2d 64 65 62 75 67 5d 7d 20 7b 0a 20 20 20 20 64 -debug]} {. d
23c0: 65 66 69 6e 65 20 43 46 4c 41 47 53 20 7b 2d 67 efine CFLAGS {-g
23d0: 20 2d 4f 30 20 2d 57 61 6c 6c 7d 0a 20 20 20 20 -O0 -Wall}.
23e0: 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 define-append CF
23f0: 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f 44 45 LAGS -DFOSSIL_DE
2400: 42 55 47 0a 20 20 20 20 6d 73 67 2d 72 65 73 75 BUG. msg-resu
2410: 6c 74 20 22 44 65 62 75 67 67 69 6e 67 20 73 75 lt "Debugging su
2420: 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 7d pport enabled".}
2430: 0a 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 ..if {[opt-bool
2440: 6e 6f 2d 6f 70 74 5d 7d 20 7b 0a 20 20 20 20 64 no-opt]} {. d
2450: 65 66 69 6e 65 20 43 46 4c 41 47 53 20 7b 2d 67 efine CFLAGS {-g
2460: 20 2d 4f 30 20 2d 57 61 6c 6c 7d 0a 20 20 20 20 -O0 -Wall}.
2470: 6d 73 67 2d 72 65 73 75 6c 74 20 22 42 75 69 6c msg-result "Buil
2480: 74 69 6e 67 20 77 69 74 68 6f 75 74 20 63 6f 6d ting without com
2490: 70 69 6c 65 72 20 6f 70 74 69 6d 69 7a 61 74 69 piler optimizati
24a0: 6f 6e 22 0a 20 20 20 20 69 66 20 7b 5b 6f 70 74 on". if {[opt
24b0: 2d 62 6f 6f 6c 20 66 6f 73 73 69 6c 2d 64 65 62 -bool fossil-deb
24c0: 75 67 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 64 ug]} {. d
24d0: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 43 46 4c efine-append CFL
24e0: 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f 44 45 42 AGS -DFOSSIL_DEB
24f0: 55 47 0a 20 20 20 20 7d 0a 7d 0a 0a 69 66 20 7b UG. }.}..if {
2500: 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 68 2d 6d [opt-bool with-m
2510: 6d 61 6e 5d 7d 20 7b 0a 20 20 20 20 64 65 66 69 man]} {. defi
2520: 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f ne-append EXTRA_
2530: 43 46 4c 41 47 53 20 2d 44 55 53 45 5f 4d 4d 41 CFLAGS -DUSE_MMA
2540: 4e 5f 48 0a 20 20 20 20 64 65 66 69 6e 65 20 55 N_H. define U
2550: 53 45 5f 4d 4d 41 4e 5f 48 20 31 0a 20 20 20 20 SE_MMAN_H 1.
2560: 6d 73 67 2d 72 65 73 75 6c 74 20 22 45 6e 61 62 msg-result "Enab
2570: 6c 69 6e 67 20 5c 22 73 79 73 2f 6d 6d 61 6e 2e ling \"sys/mman.
2580: 68 5c 22 20 73 75 70 70 6f 72 74 22 0a 7d 0a 0a h\" support".}..
2590: 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 if {[opt-bool wi
25a0: 74 68 2d 73 65 65 5d 7d 20 7b 0a 20 20 20 20 64 th-see]} {. d
25b0: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 efine-append EXT
25c0: 52 41 5f 43 46 4c 41 47 53 20 2d 44 55 53 45 5f RA_CFLAGS -DUSE_
25d0: 53 45 45 0a 20 20 20 20 64 65 66 69 6e 65 20 55 SEE. define U
25e0: 53 45 5f 53 45 45 20 31 0a 20 20 20 20 6d 73 67 SE_SEE 1. msg
25f0: 2d 72 65 73 75 6c 74 20 22 45 6e 61 62 6c 69 6e -result "Enablin
2600: 67 20 65 6e 63 72 79 70 74 69 6f 6e 20 73 75 70 g encryption sup
2610: 70 6f 72 74 22 0a 7d 0a 0a 69 66 20 7b 5b 6f 70 port".}..if {[op
2620: 74 2d 62 6f 6f 6c 20 6a 73 6f 6e 5d 7d 20 7b 0a t-bool json]} {.
2630: 20 20 20 20 23 20 52 65 6d 69 6e 64 65 72 2f 46 # Reminder/F
2640: 49 58 4d 45 20 28 73 74 65 70 68 61 6e 29 3a 20 IXME (stephan):
2650: 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 4a 53 FOSSIL_ENABLE_JS
2660: 4f 4e 0a 20 20 20 20 23 20 69 73 20 72 65 71 75 ON. # is requ
2670: 69 72 65 64 20 69 6e 20 74 68 65 20 43 46 4c 41 ired in the CFLA
2680: 47 53 20 62 65 63 61 75 73 65 20 6a 73 6f 6e 2a GS because json*
2690: 2e 63 0a 20 20 20 20 23 20 68 61 76 65 20 23 69 .c. # have #i
26a0: 66 64 65 66 20 67 75 61 72 64 73 20 61 72 6f 75 fdef guards arou
26b0: 6e 64 20 74 68 65 20 77 68 6f 6c 65 20 66 69 6c nd the whole fil
26c0: 65 20 77 69 74 68 6f 75 74 0a 20 20 20 20 23 20 e without. #
26d0: 72 65 61 64 69 6e 67 20 63 6f 6e 66 69 67 2e 68 reading config.h
26e0: 20 66 69 72 73 74 2e 0a 20 20 20 20 64 65 66 69 first.. defi
26f0: 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f ne-append EXTRA_
2700: 43 46 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f CFLAGS -DFOSSIL_
2710: 45 4e 41 42 4c 45 5f 4a 53 4f 4e 0a 20 20 20 20 ENABLE_JSON.
2720: 64 65 66 69 6e 65 20 46 4f 53 53 49 4c 5f 45 4e define FOSSIL_EN
2730: 41 42 4c 45 5f 4a 53 4f 4e 0a 20 20 20 20 6d 73 ABLE_JSON. ms
2740: 67 2d 72 65 73 75 6c 74 20 22 4a 53 4f 4e 20 73 g-result "JSON s
2750: 75 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a upport enabled".
2760: 7d 0a 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c }..if {[opt-bool
2770: 20 77 69 74 68 2d 65 78 65 63 2d 72 65 6c 2d 70 with-exec-rel-p
2780: 61 74 68 73 5d 7d 20 7b 0a 20 20 20 20 64 65 66 aths]} {. def
2790: 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 ine-append EXTRA
27a0: 5f 43 46 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c _CFLAGS -DFOSSIL
27b0: 5f 45 4e 41 42 4c 45 5f 45 58 45 43 5f 52 45 4c _ENABLE_EXEC_REL
27c0: 5f 50 41 54 48 53 0a 20 20 20 20 64 65 66 69 6e _PATHS. defin
27d0: 65 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f e FOSSIL_ENABLE_
27e0: 45 58 45 43 5f 52 45 4c 5f 50 41 54 48 53 0a 20 EXEC_REL_PATHS.
27f0: 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 52 msg-result "R
2800: 65 6c 61 74 69 76 65 20 70 61 74 68 73 20 69 6e elative paths in
2810: 20 65 78 74 65 72 6e 61 6c 20 64 69 66 66 2f 67 external diff/g
2820: 64 69 66 66 20 65 6e 61 62 6c 65 64 22 0a 7d 0a diff enabled".}.
2830: 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 77 .if {[opt-bool w
2840: 69 74 68 2d 74 68 31 2d 64 6f 63 73 5d 7d 20 7b ith-th1-docs]} {
2850: 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 . define-appe
2860: 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 nd EXTRA_CFLAGS
2870: 2d 44 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f -DFOSSIL_ENABLE_
2880: 54 48 31 5f 44 4f 43 53 0a 20 20 20 20 64 65 66 TH1_DOCS. def
2890: 69 6e 65 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c ine FOSSIL_ENABL
28a0: 45 5f 54 48 31 5f 44 4f 43 53 0a 20 20 20 20 6d E_TH1_DOCS. m
28b0: 73 67 2d 72 65 73 75 6c 74 20 22 54 48 31 20 65 sg-result "TH1 e
28c0: 6d 62 65 64 64 65 64 20 64 6f 63 75 6d 65 6e 74 mbedded document
28d0: 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 65 6e ation support en
28e0: 61 62 6c 65 64 22 0a 7d 0a 0a 69 66 20 7b 5b 6f abled".}..if {[o
28f0: 70 74 2d 62 6f 6f 6c 20 77 69 74 68 2d 74 68 31 pt-bool with-th1
2900: 2d 68 6f 6f 6b 73 5d 7d 20 7b 0a 20 20 20 20 64 -hooks]} {. d
2910: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 efine-append EXT
2920: 52 41 5f 43 46 4c 41 47 53 20 2d 44 46 4f 53 53 RA_CFLAGS -DFOSS
2930: 49 4c 5f 45 4e 41 42 4c 45 5f 54 48 31 5f 48 4f IL_ENABLE_TH1_HO
2940: 4f 4b 53 0a 20 20 20 20 64 65 66 69 6e 65 20 46 OKS. define F
2950: 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 54 48 31 OSSIL_ENABLE_TH1
2960: 5f 48 4f 4f 4b 53 0a 20 20 20 20 6d 73 67 2d 72 _HOOKS. msg-r
2970: 65 73 75 6c 74 20 22 54 48 31 20 68 6f 6f 6b 73 esult "TH1 hooks
2980: 20 73 75 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 support enabled
2990: 22 0a 7d 0a 0a 23 69 66 20 7b 5b 6f 70 74 2d 62 ".}..#if {[opt-b
29a0: 6f 6f 6c 20 6d 61 72 6b 64 6f 77 6e 5d 7d 20 7b ool markdown]} {
29b0: 0a 23 20 20 20 20 23 20 6e 6f 2d 6f 70 2e 20 20 .# # no-op.
29c0: 4d 61 72 6b 64 6f 77 6e 20 69 73 20 6e 6f 77 20 Markdown is now
29d0: 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 enabled by defau
29e0: 6c 74 2e 0a 23 20 20 20 20 6d 73 67 2d 72 65 73 lt..# msg-res
29f0: 75 6c 74 20 22 4d 61 72 6b 64 6f 77 6e 20 73 75 ult "Markdown su
2a00: 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 22 0a 23 pport enabled".#
2a10: 7d 0a 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c }..if {[opt-bool
2a20: 20 73 74 61 74 69 63 5d 7d 20 7b 0a 20 20 20 20 static]} {.
2a30: 23 20 58 58 58 3a 20 54 68 69 73 20 77 69 6c 6c # XXX: This will
2a40: 20 6e 6f 74 20 77 6f 72 6b 20 6f 6e 20 61 6c 6c not work on all
2a50: 20 73 79 73 74 65 6d 73 2e 0a 20 20 20 20 64 65 systems.. de
2a60: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
2a70: 41 5f 4c 44 46 4c 41 47 53 20 2d 73 74 61 74 69 A_LDFLAGS -stati
2a80: 63 0a 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 c. msg-result
2a90: 20 22 54 72 79 69 6e 67 20 74 6f 20 6c 69 6e 6b "Trying to link
2aa0: 20 73 74 61 74 69 63 61 6c 6c 79 22 0a 7d 20 65 statically".} e
2ab0: 6c 73 65 20 7b 0a 20 20 20 20 64 65 66 69 6e 65 lse {. define
2ac0: 2d 61 70 70 65 6e 64 20 45 58 54 52 41 5f 43 46 -append EXTRA_CF
2ad0: 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c 5f 44 59 LAGS -DFOSSIL_DY
2ae0: 4e 41 4d 49 43 5f 42 55 49 4c 44 3d 31 0a 20 20 NAMIC_BUILD=1.
2af0: 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c 5f define FOSSIL_
2b00: 44 59 4e 41 4d 49 43 5f 42 55 49 4c 44 0a 7d 0a DYNAMIC_BUILD.}.
2b10: 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 6c 69 62 .# Check for lib
2b20: 72 61 72 69 65 73 20 74 68 61 74 20 6e 65 65 64 raries that need
2b30: 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20 6f 75 to be sorted ou
2b40: 74 20 65 61 72 6c 79 0a 63 63 2d 63 68 65 63 6b t early.cc-check
2b50: 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 -function-in-lib
2b60: 20 69 63 6f 6e 76 20 69 63 6f 6e 76 0a 0a 23 20 iconv iconv..#
2b70: 48 65 6c 70 65 72 20 66 6f 72 20 4f 70 65 6e 53 Helper for OpenS
2b80: 53 4c 20 63 68 65 63 6b 69 6e 67 0a 70 72 6f 63 SL checking.proc
2b90: 20 63 68 65 63 6b 2d 66 6f 72 2d 6f 70 65 6e 73 check-for-opens
2ba0: 73 6c 20 7b 6d 73 67 20 7b 63 66 6c 61 67 73 20 sl {msg {cflags
2bb0: 7b 7d 7d 20 7b 6c 69 62 73 20 7b 2d 6c 73 73 6c {}} {libs {-lssl
2bc0: 20 2d 6c 63 72 79 70 74 6f 20 2d 6c 70 74 68 72 -lcrypto -lpthr
2bd0: 65 61 64 7d 7d 7d 20 7b 0a 20 20 20 20 6d 73 67 ead}}} {. msg
2be0: 2d 63 68 65 63 6b 69 6e 67 20 22 43 68 65 63 6b -checking "Check
2bf0: 69 6e 67 20 66 6f 72 20 24 6d 73 67 2e 2e 2e 22 ing for $msg..."
2c00: 0a 20 20 20 20 73 65 74 20 72 63 20 30 0a 20 20 . set rc 0.
2c10: 20 20 69 66 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d if {[is_mingw]
2c20: 7d 20 7b 0a 20 20 20 20 20 20 20 20 6c 61 70 70 } {. lapp
2c30: 65 6e 64 20 6c 69 62 73 20 2d 6c 67 64 69 33 32 end libs -lgdi32
2c40: 20 2d 6c 77 73 6f 63 6b 33 32 20 2d 6c 63 72 79 -lwsock32 -lcry
2c50: 70 74 33 32 0a 20 20 20 20 7d 0a 20 20 20 20 69 pt32. }. i
2c60: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 f {[info exists
2c70: 3a 3a 7a 6c 69 62 5f 6c 69 62 5d 7d 20 7b 0a 20 ::zlib_lib]} {.
2c80: 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6c lappend l
2c90: 69 62 73 20 24 3a 3a 7a 6c 69 62 5f 6c 69 62 0a ibs $::zlib_lib.
2ca0: 20 20 20 20 7d 0a 20 20 20 20 6d 73 67 2d 71 75 }. msg-qu
2cb0: 69 65 74 20 63 63 2d 77 69 74 68 20 5b 6c 69 73 iet cc-with [lis
2cc0: 74 20 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 67 t -cflags $cflag
2cd0: 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 7b s -libs $libs] {
2ce0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 . if {[cc
2cf0: 2d 63 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 20 -check-includes
2d00: 6f 70 65 6e 73 73 6c 2f 73 73 6c 2e 68 5d 20 26 openssl/ssl.h] &
2d10: 26 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 & \.
2d20: 20 20 20 20 5b 63 63 2d 63 68 65 63 6b 2d 66 75 [cc-check-fu
2d30: 6e 63 74 69 6f 6e 73 20 53 53 4c 5f 6e 65 77 5d nctions SSL_new]
2d40: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 } {.
2d50: 69 6e 63 72 20 72 63 0a 20 20 20 20 20 20 20 20 incr rc.
2d60: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b }. }. if {
2d70: 21 24 72 63 20 26 26 20 21 5b 69 73 5f 6d 69 6e !$rc && ![is_min
2d80: 67 77 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 23 gw]} {. #
2d90: 20 4f 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 On some systems
2da0: 2c 20 4f 70 65 6e 53 53 4c 20 61 70 70 65 61 72 , OpenSSL appear
2db0: 73 20 74 6f 20 72 65 71 75 69 72 65 20 2d 6c 64 s to require -ld
2dc0: 6c 20 74 6f 20 6c 69 6e 6b 2e 0a 20 20 20 20 20 l to link..
2dd0: 20 20 20 6c 61 70 70 65 6e 64 20 6c 69 62 73 20 lappend libs
2de0: 2d 6c 64 6c 0a 20 20 20 20 20 20 20 20 6d 73 67 -ldl. msg
2df0: 2d 71 75 69 65 74 20 63 63 2d 77 69 74 68 20 5b -quiet cc-with [
2e00: 6c 69 73 74 20 2d 63 66 6c 61 67 73 20 24 63 66 list -cflags $cf
2e10: 6c 61 67 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 lags -libs $libs
2e20: 5d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ] {.
2e30: 69 66 20 7b 5b 63 63 2d 63 68 65 63 6b 2d 69 6e if {[cc-check-in
2e40: 63 6c 75 64 65 73 20 6f 70 65 6e 73 73 6c 2f 73 cludes openssl/s
2e50: 73 6c 2e 68 5d 20 26 26 20 5c 0a 20 20 20 20 20 sl.h] && \.
2e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b [
2e70: 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f cc-check-functio
2e80: 6e 73 20 53 53 4c 5f 6e 65 77 5d 7d 20 7b 0a 20 ns SSL_new]} {.
2e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
2ea0: 6e 63 72 20 72 63 0a 20 20 20 20 20 20 20 20 20 ncr rc.
2eb0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
2ec0: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 24 72 63 }. if {$rc
2ed0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 6d 73 67 2d } {. msg-
2ee0: 72 65 73 75 6c 74 20 22 6f 6b 22 0a 20 20 20 20 result "ok".
2ef0: 20 20 20 20 72 65 74 75 72 6e 20 31 0a 20 20 20 return 1.
2f00: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
2f10: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 6e 6f msg-result "no
2f20: 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ". return
2f30: 20 30 0a 20 20 20 20 7d 0a 7d 0a 0a 69 66 20 7b 0. }.}..if {
2f40: 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 68 2d 6d [opt-bool with-m
2f50: 69 6e 69 7a 5d 7d 20 7b 0a 20 20 20 20 64 65 66 iniz]} {. def
2f60: 69 6e 65 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c ine FOSSIL_ENABL
2f70: 45 5f 4d 49 4e 49 5a 20 31 0a 20 20 20 20 6d 73 E_MINIZ 1. ms
2f80: 67 2d 72 65 73 75 6c 74 20 22 55 73 69 6e 67 20 g-result "Using
2f90: 6d 69 6e 69 7a 20 66 6f 72 20 63 6f 6d 70 72 65 miniz for compre
2fa0: 73 73 69 6f 6e 22 0a 7d 20 65 6c 73 65 20 7b 0a ssion".} else {.
2fb0: 20 20 20 20 23 20 43 68 65 63 6b 20 66 6f 72 20 # Check for
2fc0: 7a 6c 69 62 2c 20 75 73 69 6e 67 20 74 68 65 20 zlib, using the
2fd0: 67 69 76 65 6e 20 6c 6f 63 61 74 69 6f 6e 20 69 given location i
2fe0: 66 20 73 70 65 63 69 66 69 65 64 0a 20 20 20 20 f specified.
2ff0: 73 65 74 20 7a 6c 69 62 70 61 74 68 20 5b 6f 70 set zlibpath [op
3000: 74 2d 76 61 6c 20 77 69 74 68 2d 7a 6c 69 62 5d t-val with-zlib]
3010: 0a 20 20 20 20 69 66 20 7b 24 7a 6c 69 62 70 61 . if {$zlibpa
3020: 74 68 20 65 71 20 22 74 72 65 65 22 7d 20 7b 0a th eq "tree"} {.
3030: 20 20 20 20 20 20 20 20 73 65 74 20 7a 6c 69 62 set zlib
3040: 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d dir [file dirnam
3050: 65 20 24 61 75 74 6f 73 65 74 75 70 28 64 69 72 e $autosetup(dir
3060: 29 5d 2f 63 6f 6d 70 61 74 2f 7a 6c 69 62 0a 20 )]/compat/zlib.
3070: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 66 69 6c if {![fil
3080: 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 24 7a e isdirectory $z
3090: 6c 69 62 64 69 72 5d 7d 20 7b 0a 20 20 20 20 20 libdir]} {.
30a0: 20 20 20 20 20 20 20 75 73 65 72 2d 65 72 72 6f user-erro
30b0: 72 20 22 54 68 65 20 7a 6c 69 62 20 69 6e 20 73 r "The zlib in s
30c0: 6f 75 72 63 65 20 74 72 65 65 20 64 69 72 65 63 ource tree direc
30d0: 74 6f 72 79 20 64 6f 65 73 20 6e 6f 74 20 65 78 tory does not ex
30e0: 69 73 74 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 ist". }.
30f0: 20 20 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b cc-with [
3100: 6c 69 73 74 20 2d 63 66 6c 61 67 73 20 22 2d 49 list -cflags "-I
3110: 24 7a 6c 69 62 64 69 72 20 2d 4c 24 7a 6c 69 62 $zlibdir -L$zlib
3120: 64 69 72 22 5d 0a 20 20 20 20 20 20 20 20 64 65 dir"]. de
3130: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
3140: 41 5f 43 46 4c 41 47 53 20 2d 49 24 7a 6c 69 62 A_CFLAGS -I$zlib
3150: 64 69 72 0a 20 20 20 20 20 20 20 20 64 65 66 69 dir. defi
3160: 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 24 ne-append LIBS $
3170: 7a 6c 69 62 64 69 72 2f 6c 69 62 7a 2e 61 0a 20 zlibdir/libz.a.
3180: 20 20 20 20 20 20 20 73 65 74 20 3a 3a 7a 6c 69 set ::zli
3190: 62 5f 6c 69 62 20 24 7a 6c 69 62 64 69 72 2f 6c b_lib $zlibdir/l
31a0: 69 62 7a 2e 61 0a 20 20 20 20 20 20 20 20 6d 73 ibz.a. ms
31b0: 67 2d 72 65 73 75 6c 74 20 22 55 73 69 6e 67 20 g-result "Using
31c0: 7a 6c 69 62 20 69 6e 20 73 6f 75 72 63 65 20 74 zlib in source t
31d0: 72 65 65 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 ree". } else
31e0: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 7b 24 7a {. if {$z
31f0: 6c 69 62 70 61 74 68 20 6e 69 20 7b 61 75 74 6f libpath ni {auto
3200: 20 22 22 7d 7d 20 7b 0a 20 20 20 20 20 20 20 20 ""}} {.
3210: 20 20 20 20 63 63 2d 77 69 74 68 20 5b 6c 69 73 cc-with [lis
3220: 74 20 2d 63 66 6c 61 67 73 20 22 2d 49 24 7a 6c t -cflags "-I$zl
3230: 69 62 70 61 74 68 20 2d 4c 24 7a 6c 69 62 70 61 ibpath -L$zlibpa
3240: 74 68 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 th"].
3250: 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 define-append E
3260: 58 54 52 41 5f 43 46 4c 41 47 53 20 2d 49 24 7a XTRA_CFLAGS -I$z
3270: 6c 69 62 70 61 74 68 0a 20 20 20 20 20 20 20 20 libpath.
3280: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
3290: 64 20 45 58 54 52 41 5f 4c 44 46 4c 41 47 53 20 d EXTRA_LDFLAGS
32a0: 2d 4c 24 7a 6c 69 62 70 61 74 68 0a 20 20 20 20 -L$zlibpath.
32b0: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
32c0: 6c 74 20 22 55 73 69 6e 67 20 7a 6c 69 62 20 66 lt "Using zlib f
32d0: 72 6f 6d 20 24 7a 6c 69 62 70 61 74 68 22 0a 20 rom $zlibpath".
32e0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
32f0: 20 69 66 20 7b 21 5b 63 63 2d 63 68 65 63 6b 2d if {![cc-check-
3300: 69 6e 63 6c 75 64 65 73 20 7a 6c 69 62 2e 68 5d includes zlib.h]
3310: 20 7c 7c 20 21 5b 63 68 65 63 6b 2d 66 75 6e 63 || ![check-func
3320: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 69 6e 66 6c tion-in-lib infl
3330: 61 74 65 45 6e 64 20 7a 5d 7d 20 7b 0a 20 20 20 ateEnd z]} {.
3340: 20 20 20 20 20 20 20 20 20 75 73 65 72 2d 65 72 user-er
3350: 72 6f 72 20 22 7a 6c 69 62 20 6e 6f 74 20 66 6f ror "zlib not fo
3360: 75 6e 64 20 70 6c 65 61 73 65 20 69 6e 73 74 61 und please insta
3370: 6c 6c 20 69 74 20 6f 72 20 73 70 65 63 69 66 79 ll it or specify
3380: 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 77 69 the location wi
3390: 74 68 20 2d 2d 77 69 74 68 2d 7a 6c 69 62 22 0a th --with-zlib".
33a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
33b0: 20 20 73 65 74 20 3a 3a 7a 6c 69 62 5f 6c 69 62 set ::zlib_lib
33c0: 20 2d 6c 7a 0a 20 20 20 20 7d 0a 7d 0a 0a 73 65 -lz. }.}..se
33d0: 74 20 73 73 6c 64 69 72 73 20 5b 6f 70 74 2d 76 t ssldirs [opt-v
33e0: 61 6c 20 77 69 74 68 2d 6f 70 65 6e 73 73 6c 5d al with-openssl]
33f0: 0a 69 66 20 7b 24 73 73 6c 64 69 72 73 20 6e 65 .if {$ssldirs ne
3400: 20 22 6e 6f 6e 65 22 7d 20 7b 0a 20 20 20 20 69 "none"} {. i
3410: 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 77 69 74 f {[opt-bool wit
3420: 68 2d 6d 69 6e 69 7a 5d 7d 20 7b 0a 20 20 20 20 h-miniz]} {.
3430: 20 20 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 user-error "
3440: 54 68 65 20 2d 2d 77 69 74 68 2d 6d 69 6e 69 7a The --with-miniz
3450: 20 6f 70 74 69 6f 6e 20 69 73 20 69 6e 63 6f 6d option is incom
3460: 70 61 74 69 62 6c 65 20 77 69 74 68 20 4f 70 65 patible with Ope
3470: 6e 53 53 4c 22 0a 20 20 20 20 7d 0a 20 20 20 20 nSSL". }.
3480: 73 65 74 20 66 6f 75 6e 64 20 30 0a 20 20 20 20 set found 0.
3490: 69 66 20 7b 24 73 73 6c 64 69 72 73 20 65 71 20 if {$ssldirs eq
34a0: 22 74 72 65 65 22 7d 20 7b 0a 20 20 20 20 20 20 "tree"} {.
34b0: 20 20 73 65 74 20 73 73 6c 64 69 72 20 5b 66 69 set ssldir [fi
34c0: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 75 74 6f le dirname $auto
34d0: 73 65 74 75 70 28 64 69 72 29 5d 2f 63 6f 6d 70 setup(dir)]/comp
34e0: 61 74 2f 6f 70 65 6e 73 73 6c 0a 20 20 20 20 20 at/openssl.
34f0: 20 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 69 73 if {![file is
3500: 64 69 72 65 63 74 6f 72 79 20 24 73 73 6c 64 69 directory $ssldi
3510: 72 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 r]} {.
3520: 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 54 68 user-error "Th
3530: 65 20 4f 70 65 6e 53 53 4c 20 69 6e 20 73 6f 75 e OpenSSL in sou
3540: 72 63 65 20 74 72 65 65 20 64 69 72 65 63 74 6f rce tree directo
3550: 72 79 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 ry does not exis
3560: 74 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t". }.
3570: 20 20 20 20 20 73 65 74 20 6d 73 67 20 22 73 73 set msg "ss
3580: 6c 20 69 6e 20 24 73 73 6c 64 69 72 22 0a 20 20 l in $ssldir".
3590: 20 20 20 20 20 20 73 65 74 20 63 66 6c 61 67 73 set cflags
35a0: 20 22 2d 49 24 73 73 6c 64 69 72 2f 69 6e 63 6c "-I$ssldir/incl
35b0: 75 64 65 22 0a 20 20 20 20 20 20 20 20 73 65 74 ude". set
35c0: 20 6c 64 66 6c 61 67 73 20 22 2d 4c 24 73 73 6c ldflags "-L$ssl
35d0: 64 69 72 22 0a 20 20 20 20 20 20 20 20 73 65 74 dir". set
35e0: 20 73 73 6c 6c 69 62 73 20 22 24 73 73 6c 64 69 ssllibs "$ssldi
35f0: 72 2f 6c 69 62 73 73 6c 2e 61 20 24 73 73 6c 64 r/libssl.a $ssld
3600: 69 72 2f 6c 69 62 63 72 79 70 74 6f 2e 61 20 2d ir/libcrypto.a -
3610: 6c 70 74 68 72 65 61 64 22 0a 20 20 20 20 20 20 lpthread".
3620: 20 20 73 65 74 20 66 6f 75 6e 64 20 5b 63 68 65 set found [che
3630: 63 6b 2d 66 6f 72 2d 6f 70 65 6e 73 73 6c 20 22 ck-for-openssl "
3640: 73 73 6c 20 69 6e 20 73 6f 75 72 63 65 20 74 72 ssl in source tr
3650: 65 65 22 20 22 24 63 66 6c 61 67 73 20 24 6c 64 ee" "$cflags $ld
3660: 66 6c 61 67 73 22 20 24 73 73 6c 6c 69 62 73 5d flags" $ssllibs]
3670: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 . } else {.
3680: 20 20 20 20 20 20 69 66 20 7b 24 73 73 6c 64 69 if {$ssldi
3690: 72 73 20 69 6e 20 7b 61 75 74 6f 20 22 22 7d 7d rs in {auto ""}}
36a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c
36b0: 61 74 63 68 20 7b 0a 20 20 20 20 20 20 20 20 20 atch {.
36c0: 20 20 20 20 20 20 20 73 65 74 20 63 66 6c 61 67 set cflag
36d0: 73 20 5b 65 78 65 63 20 70 6b 67 2d 63 6f 6e 66 s [exec pkg-conf
36e0: 69 67 20 6f 70 65 6e 73 73 6c 20 2d 2d 63 66 6c ig openssl --cfl
36f0: 61 67 73 2d 6f 6e 6c 79 2d 49 5d 0a 20 20 20 20 ags-only-I].
3700: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
3710: 6c 64 66 6c 61 67 73 20 5b 65 78 65 63 20 70 6b ldflags [exec pk
3720: 67 2d 63 6f 6e 66 69 67 20 6f 70 65 6e 73 73 6c g-config openssl
3730: 20 2d 2d 6c 69 62 73 2d 6f 6e 6c 79 2d 4c 5d 0a --libs-only-L].
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3750: 73 65 74 20 66 6f 75 6e 64 20 5b 63 68 65 63 6b set found [check
3760: 2d 66 6f 72 2d 6f 70 65 6e 73 73 6c 20 22 73 73 -for-openssl "ss
3770: 6c 20 76 69 61 20 70 6b 67 2d 63 6f 6e 66 69 67 l via pkg-config
3780: 22 20 22 24 63 66 6c 61 67 73 20 24 6c 64 66 6c " "$cflags $ldfl
3790: 61 67 73 22 5d 0a 20 20 20 20 20 20 20 20 20 20 ags"].
37a0: 20 20 7d 20 6d 73 67 0a 20 20 20 20 20 20 20 20 } msg.
37b0: 20 20 20 20 69 66 20 7b 21 24 66 6f 75 6e 64 7d if {!$found}
37c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
37d0: 20 20 20 73 65 74 20 73 73 6c 64 69 72 73 20 22 set ssldirs "
37e0: 7b 7d 20 2f 75 73 72 2f 73 66 77 20 2f 75 73 72 {} /usr/sfw /usr
37f0: 2f 6c 6f 63 61 6c 2f 73 73 6c 20 2f 75 73 72 2f /local/ssl /usr/
3800: 6c 69 62 2f 73 73 6c 20 2f 75 73 72 2f 73 73 6c lib/ssl /usr/ssl
3810: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 \.
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3830: 2f 75 73 72 2f 70 6b 67 20 2f 75 73 72 2f 6c 6f /usr/pkg /usr/lo
3840: 63 61 6c 20 2f 75 73 72 20 2f 75 73 72 2f 6c 6f cal /usr /usr/lo
3850: 63 61 6c 2f 6f 70 74 2f 6f 70 65 6e 73 73 6c 20 cal/opt/openssl
3860: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \.
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
3880: 6f 70 74 2f 68 6f 6d 65 62 72 65 77 2f 6f 70 74 opt/homebrew/opt
3890: 2f 6f 70 65 6e 73 73 6c 22 0a 20 20 20 20 20 20 /openssl".
38a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
38b0: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 }. if {!$
38c0: 66 6f 75 6e 64 7d 20 7b 0a 20 20 20 20 20 20 20 found} {.
38d0: 20 20 20 20 20 66 6f 72 65 61 63 68 20 64 69 72 foreach dir
38e0: 20 24 73 73 6c 64 69 72 73 20 7b 0a 20 20 20 20 $ssldirs {.
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
3900: 24 64 69 72 20 65 71 20 22 22 7d 20 7b 0a 20 20 $dir eq ""} {.
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3920: 20 20 73 65 74 20 6d 73 67 20 22 73 79 73 74 65 set msg "syste
3930: 6d 20 73 73 6c 22 0a 20 20 20 20 20 20 20 20 20 m ssl".
3940: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63 set c
3950: 66 6c 61 67 73 20 22 22 0a 20 20 20 20 20 20 20 flags "".
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
3970: 20 6c 64 66 6c 61 67 73 20 22 22 0a 20 20 20 20 ldflags "".
3980: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
3990: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 se {.
39a0: 20 20 20 20 20 20 20 20 20 73 65 74 20 6d 73 67 set msg
39b0: 20 22 73 73 6c 20 69 6e 20 24 64 69 72 22 0a 20 "ssl in $dir".
39c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
39d0: 20 20 20 73 65 74 20 63 66 6c 61 67 73 20 22 2d set cflags "-
39e0: 49 24 64 69 72 2f 69 6e 63 6c 75 64 65 22 0a 20 I$dir/include".
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a00: 20 20 20 73 65 74 20 6c 64 66 6c 61 67 73 20 22 set ldflags "
3a10: 2d 4c 24 64 69 72 2f 6c 69 62 22 0a 20 20 20 20 -L$dir/lib".
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }.
3a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
3a40: 20 7b 5b 63 68 65 63 6b 2d 66 6f 72 2d 6f 70 65 {[check-for-ope
3a50: 6e 73 73 6c 20 24 6d 73 67 20 22 24 63 66 6c 61 nssl $msg "$cfla
3a60: 67 73 20 24 6c 64 66 6c 61 67 73 22 5d 7d 20 7b gs $ldflags"]} {
3a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3a80: 20 20 20 20 20 69 6e 63 72 20 66 6f 75 6e 64 0a incr found.
3a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3aa0: 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 break.
3ab0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }.
3ac0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
3ad0: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 }. }. if
3ae0: 20 7b 24 66 6f 75 6e 64 7d 20 7b 0a 20 20 20 20 {$found} {.
3af0: 20 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 define FOSSI
3b00: 4c 5f 45 4e 41 42 4c 45 5f 53 53 4c 0a 20 20 20 L_ENABLE_SSL.
3b10: 20 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 define-appe
3b20: 6e 64 20 45 58 54 52 41 5f 43 46 4c 41 47 53 20 nd EXTRA_CFLAGS
3b30: 24 63 66 6c 61 67 73 0a 20 20 20 20 20 20 20 20 $cflags.
3b40: 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 define-append EX
3b50: 54 52 41 5f 4c 44 46 4c 41 47 53 20 24 6c 64 66 TRA_LDFLAGS $ldf
3b60: 6c 61 67 73 0a 20 20 20 20 20 20 20 20 69 66 20 lags. if
3b70: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 73 {[info exists ss
3b80: 6c 6c 69 62 73 5d 7d 20 7b 0a 20 20 20 20 20 20 llibs]} {.
3b90: 20 20 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 define-app
3ba0: 65 6e 64 20 4c 49 42 53 20 24 73 73 6c 6c 69 62 end LIBS $ssllib
3bb0: 73 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 s. } else
3bc0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 {. d
3bd0: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 efine-append LIB
3be0: 53 20 2d 6c 73 73 6c 20 2d 6c 63 72 79 70 74 6f S -lssl -lcrypto
3bf0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }.
3c00: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 if {[info exi
3c10: 73 74 73 20 3a 3a 7a 6c 69 62 5f 6c 69 62 5d 7d sts ::zlib_lib]}
3c20: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 {. d
3c30: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 efine-append LIB
3c40: 53 20 24 3a 3a 7a 6c 69 62 5f 6c 69 62 0a 20 20 S $::zlib_lib.
3c50: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
3c60: 69 66 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 if {[is_mingw]}
3c70: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 {. de
3c80: 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 fine-append LIBS
3c90: 20 2d 6c 67 64 69 33 32 20 2d 6c 77 73 6f 63 6b -lgdi32 -lwsock
3ca0: 33 32 20 2d 6c 63 72 79 70 74 33 32 0a 20 20 20 32 -lcrypt32.
3cb0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 6d }. m
3cc0: 73 67 2d 72 65 73 75 6c 74 20 22 48 54 54 50 53 sg-result "HTTPS
3cd0: 20 73 75 70 70 6f 72 74 20 65 6e 61 62 6c 65 64 support enabled
3ce0: 22 0a 0a 20 20 20 20 20 20 20 20 23 20 53 69 6c ".. # Sil
3cf0: 65 6e 63 65 20 4f 70 65 6e 53 53 4c 20 64 65 70 ence OpenSSL dep
3d00: 72 65 63 61 74 69 6f 6e 20 77 61 72 6e 69 6e 67 recation warning
3d10: 73 20 6f 6e 20 4d 61 63 20 4f 53 20 58 20 31 30 s on Mac OS X 10
3d20: 2e 37 2e 0a 20 20 20 20 20 20 20 20 69 66 20 7b .7.. if {
3d30: 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 2a 2d [string match *-
3d40: 64 61 72 77 69 6e 2a 20 5b 67 65 74 2d 64 65 66 darwin* [get-def
3d50: 69 6e 65 20 68 6f 73 74 5d 5d 7d 20 7b 0a 20 20 ine host]]} {.
3d60: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 if {[c
3d70: 63 74 65 73 74 20 2d 63 66 6c 61 67 73 20 7b 2d ctest -cflags {-
3d80: 57 64 65 70 72 65 63 61 74 65 64 2d 64 65 63 6c Wdeprecated-decl
3d90: 61 72 61 74 69 6f 6e 73 7d 5d 7d 20 7b 0a 20 20 arations}]} {.
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 de
3db0: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
3dc0: 41 5f 43 46 4c 41 47 53 20 2d 57 64 65 70 72 65 A_CFLAGS -Wdepre
3dd0: 63 61 74 65 64 2d 64 65 63 6c 61 72 61 74 69 6f cated-declaratio
3de0: 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ns. }
3df0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. }
3e00: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
3e10: 75 73 65 72 2d 65 72 72 6f 72 20 22 4f 70 65 6e user-error "Open
3e20: 53 53 4c 20 6e 6f 74 20 66 6f 75 6e 64 2e 20 43 SSL not found. C
3e30: 6f 6e 73 69 64 65 72 20 2d 2d 77 69 74 68 2d 6f onsider --with-o
3e40: 70 65 6e 73 73 6c 3d 6e 6f 6e 65 20 74 6f 20 64 penssl=none to d
3e50: 69 73 61 62 6c 65 20 48 54 54 50 53 20 73 75 70 isable HTTPS sup
3e60: 70 6f 72 74 22 0a 20 20 20 20 7d 0a 7d 20 65 6c port". }.} el
3e70: 73 65 20 7b 0a 20 20 20 20 69 66 20 7b 5b 69 6e se {. if {[in
3e80: 66 6f 20 65 78 69 73 74 73 20 3a 3a 7a 6c 69 62 fo exists ::zlib
3e90: 5f 6c 69 62 5d 7d 20 7b 0a 20 20 20 20 20 20 20 _lib]} {.
3ea0: 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 4c define-append L
3eb0: 49 42 53 20 24 3a 3a 7a 6c 69 62 5f 6c 69 62 0a IBS $::zlib_lib.
3ec0: 20 20 20 20 7d 0a 7d 0a 0a 73 65 74 20 74 63 6c }.}..set tcl
3ed0: 70 61 74 68 20 5b 6f 70 74 2d 76 61 6c 20 77 69 path [opt-val wi
3ee0: 74 68 2d 74 63 6c 5d 0a 69 66 20 7b 24 74 63 6c th-tcl].if {$tcl
3ef0: 70 61 74 68 20 6e 65 20 22 22 7d 20 7b 0a 20 20 path ne ""} {.
3f00: 20 20 73 65 74 20 74 63 6c 70 72 69 76 61 74 65 set tclprivate
3f10: 73 74 75 62 73 20 5b 6f 70 74 2d 62 6f 6f 6c 20 stubs [opt-bool
3f20: 77 69 74 68 2d 74 63 6c 2d 70 72 69 76 61 74 65 with-tcl-private
3f30: 2d 73 74 75 62 73 5d 0a 20 20 20 20 23 20 4e 6f -stubs]. # No
3f40: 74 65 20 70 61 72 73 65 2d 74 63 6c 63 6f 6e 66 te parse-tclconf
3f50: 69 67 2d 73 68 20 69 73 20 69 6e 20 61 75 74 6f ig-sh is in auto
3f60: 73 65 74 75 70 2f 6c 6f 63 61 6c 2e 74 63 6c 0a setup/local.tcl.
3f70: 20 20 20 20 69 66 20 7b 24 74 63 6c 70 61 74 68 if {$tclpath
3f80: 20 65 71 20 22 31 22 7d 20 7b 0a 20 20 20 20 20 eq "1"} {.
3f90: 20 20 20 73 65 74 20 74 63 6c 64 69 72 20 5b 66 set tcldir [f
3fa0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 75 74 ile dirname $aut
3fb0: 6f 73 65 74 75 70 28 64 69 72 29 5d 2f 63 6f 6d osetup(dir)]/com
3fc0: 70 61 74 2f 74 63 6c 2d 38 2e 36 0a 20 20 20 20 pat/tcl-8.6.
3fd0: 20 20 20 20 69 66 20 7b 24 74 63 6c 70 72 69 76 if {$tclpriv
3fe0: 61 74 65 73 74 75 62 73 7d 20 7b 0a 20 20 20 20 atestubs} {.
3ff0: 20 20 20 20 20 20 20 20 73 65 74 20 74 63 6c 63 set tclc
4000: 6f 6e 66 69 67 28 54 43 4c 5f 49 4e 43 4c 55 44 onfig(TCL_INCLUD
4010: 45 5f 53 50 45 43 29 20 2d 49 24 74 63 6c 64 69 E_SPEC) -I$tcldi
4020: 72 2f 67 65 6e 65 72 69 63 0a 20 20 20 20 20 20 r/generic.
4030: 20 20 20 20 20 20 73 65 74 20 74 63 6c 63 6f 6e set tclcon
4040: 66 69 67 28 54 43 4c 5f 56 45 52 53 49 4f 4e 29 fig(TCL_VERSION)
4050: 20 7b 50 72 69 76 61 74 65 20 53 74 75 62 73 7d {Private Stubs}
4060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 . set
4070: 20 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 tclconfig(TCL_P
4080: 41 54 43 48 5f 4c 45 56 45 4c 29 20 7b 7d 0a 20 ATCH_LEVEL) {}.
4090: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 set t
40a0: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 52 45 clconfig(TCL_PRE
40b0: 46 49 58 29 20 24 74 63 6c 64 69 72 0a 20 20 20 FIX) $tcldir.
40c0: 20 20 20 20 20 20 20 20 20 73 65 74 20 74 63 6c set tcl
40d0: 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f 46 4c config(TCL_LD_FL
40e0: 41 47 53 29 20 7b 20 7d 0a 20 20 20 20 20 20 20 AGS) { }.
40f0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
4100: 20 20 20 20 20 20 23 20 55 73 65 20 74 68 65 20 # Use the
4110: 73 79 73 74 65 6d 20 54 63 6c 2e 20 4c 6f 6f 6b system Tcl. Look
4120: 20 69 6e 20 73 6f 6d 65 20 6c 69 6b 65 6c 79 20 in some likely
4130: 70 6c 61 63 65 73 2e 0a 20 20 20 20 20 20 20 20 places..
4140: 20 20 20 20 61 72 72 61 79 20 73 65 74 20 74 63 array set tc
4150: 6c 63 6f 6e 66 69 67 20 5b 70 61 72 73 65 2d 74 lconfig [parse-t
4160: 63 6c 63 6f 6e 66 69 67 2d 73 68 20 5c 0a 20 20 clconfig-sh \.
4170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 $t
4180: 63 6c 64 69 72 2f 75 6e 69 78 20 24 74 63 6c 64 cldir/unix $tcld
4190: 69 72 2f 77 69 6e 20 5c 0a 20 20 20 20 20 20 20 ir/win \.
41a0: 20 20 20 20 20 20 20 20 20 2f 75 73 72 20 2f 75 /usr /u
41b0: 73 72 2f 6c 6f 63 61 6c 20 2f 75 73 72 2f 73 68 sr/local /usr/sh
41c0: 61 72 65 20 2f 6f 70 74 2f 6c 6f 63 61 6c 5d 0a are /opt/local].
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
41e0: 6d 73 67 20 22 6f 6e 20 79 6f 75 72 20 73 79 73 msg "on your sys
41f0: 74 65 6d 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 tem". }.
4200: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
4210: 20 20 20 20 61 72 72 61 79 20 73 65 74 20 74 63 array set tc
4220: 6c 63 6f 6e 66 69 67 20 5b 70 61 72 73 65 2d 74 lconfig [parse-t
4230: 63 6c 63 6f 6e 66 69 67 2d 73 68 20 24 74 63 6c clconfig-sh $tcl
4240: 70 61 74 68 5d 0a 20 20 20 20 20 20 20 20 73 65 path]. se
4250: 74 20 6d 73 67 20 22 61 74 20 24 74 63 6c 70 61 t msg "at $tclpa
4260: 74 68 22 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 th". }. if
4270: 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 73 74 61 74 {[opt-bool stat
4280: 69 63 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 ic]} {. s
4290: 65 74 20 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c et tclconfig(TCL
42a0: 5f 4c 44 5f 46 4c 41 47 53 29 20 7b 20 7d 0a 20 _LD_FLAGS) { }.
42b0: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 21 5b 69 }. if {![i
42c0: 6e 66 6f 20 65 78 69 73 74 73 20 74 63 6c 63 6f nfo exists tclco
42d0: 6e 66 69 67 28 54 43 4c 5f 49 4e 43 4c 55 44 45 nfig(TCL_INCLUDE
42e0: 5f 53 50 45 43 29 5d 7d 20 7b 0a 20 20 20 20 20 _SPEC)]} {.
42f0: 20 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 43 user-error "C
4300: 61 6e 6e 6f 74 20 66 69 6e 64 20 54 63 6c 20 24 annot find Tcl $
4310: 6d 73 67 22 0a 20 20 20 20 7d 0a 20 20 20 20 73 msg". }. s
4320: 65 74 20 74 63 6c 73 74 75 62 73 20 5b 6f 70 74 et tclstubs [opt
4330: 2d 62 6f 6f 6c 20 77 69 74 68 2d 74 63 6c 2d 73 -bool with-tcl-s
4340: 74 75 62 73 5d 0a 20 20 20 20 69 66 20 7b 24 74 tubs]. if {$t
4350: 63 6c 70 72 69 76 61 74 65 73 74 75 62 73 7d 20 clprivatestubs}
4360: 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 {. define
4370: 20 46 4f 53 53 49 4c 5f 45 4e 41 42 4c 45 5f 54 FOSSIL_ENABLE_T
4380: 43 4c 5f 50 52 49 56 41 54 45 5f 53 54 55 42 53 CL_PRIVATE_STUBS
4390: 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 20 . define
43a0: 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 0a 20 20 USE_TCL_STUBS.
43b0: 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 74 63 6c } elseif {$tcl
43c0: 73 74 75 62 73 20 26 26 20 24 74 63 6c 63 6f 6e stubs && $tclcon
43d0: 66 69 67 28 54 43 4c 5f 53 55 50 50 4f 52 54 53 fig(TCL_SUPPORTS
43e0: 5f 53 54 55 42 53 29 7d 20 7b 0a 20 20 20 20 20 _STUBS)} {.
43f0: 20 20 20 73 65 74 20 6c 69 62 73 20 22 24 74 63 set libs "$tc
4400: 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 53 54 55 42 lconfig(TCL_STUB
4410: 5f 4c 49 42 5f 53 50 45 43 29 22 0a 20 20 20 20 _LIB_SPEC)".
4420: 20 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 define FOSSI
4430: 4c 5f 45 4e 41 42 4c 45 5f 54 43 4c 5f 53 54 55 L_ENABLE_TCL_STU
4440: 42 53 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e BS. defin
4450: 65 20 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 0a e USE_TCL_STUBS.
4460: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 } else {.
4470: 20 20 20 20 20 73 65 74 20 6c 69 62 73 20 22 24 set libs "$
4480: 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 49 tclconfig(TCL_LI
4490: 42 5f 53 50 45 43 29 20 24 74 63 6c 63 6f 6e 66 B_SPEC) $tclconf
44a0: 69 67 28 54 43 4c 5f 4c 49 42 53 29 22 0a 20 20 ig(TCL_LIBS)".
44b0: 20 20 7d 0a 20 20 20 20 73 65 74 20 63 66 6c 61 }. set cfla
44c0: 67 73 20 24 74 63 6c 63 6f 6e 66 69 67 28 54 43 gs $tclconfig(TC
44d0: 4c 5f 49 4e 43 4c 55 44 45 5f 53 50 45 43 29 0a L_INCLUDE_SPEC).
44e0: 20 20 20 20 69 66 20 7b 21 24 74 63 6c 70 72 69 if {!$tclpri
44f0: 76 61 74 65 73 74 75 62 73 7d 20 7b 0a 20 20 20 vatestubs} {.
4500: 20 20 20 20 20 73 65 74 20 66 6f 75 6e 64 74 63 set foundtc
4510: 6c 20 30 3b 20 23 20 44 69 64 20 77 65 20 66 69 l 0; # Did we fi
4520: 6e 64 20 61 20 77 6f 72 6b 69 6e 67 20 54 63 6c nd a working Tcl
4530: 20 6c 69 62 72 61 72 79 3f 0a 20 20 20 20 20 20 library?.
4540: 20 20 63 63 2d 77 69 74 68 20 5b 6c 69 73 74 20 cc-with [list
4550: 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 67 73 20 -cflags $cflags
4560: 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 7b 0a 20 -libs $libs] {.
4570: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 24 if {$
4580: 74 63 6c 73 74 75 62 73 7d 20 7b 0a 20 20 20 20 tclstubs} {.
4590: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
45a0: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
45b0: 6f 6e 73 20 54 63 6c 5f 49 6e 69 74 53 74 75 62 ons Tcl_InitStub
45c0: 73 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s]} {.
45d0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f set fo
45e0: 75 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 undtcl 1.
45f0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
4600: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
4610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4620: 69 66 20 7b 5b 63 63 2d 63 68 65 63 6b 2d 66 75 if {[cc-check-fu
4630: 6e 63 74 69 6f 6e 73 20 54 63 6c 5f 43 72 65 61 nctions Tcl_Crea
4640: 74 65 49 6e 74 65 72 70 5d 7d 20 7b 0a 20 20 20 teInterp]} {.
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4660: 20 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a set foundtcl 1.
4670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4680: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. }.
4690: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
46a0: 20 20 69 66 20 7b 21 24 66 6f 75 6e 64 74 63 6c if {!$foundtcl
46b0: 20 26 26 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 && [string matc
46c0: 68 20 2a 2d 6c 69 65 65 65 2a 20 24 6c 69 62 73 h *-lieee* $libs
46d0: 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ]} {.
46e0: 20 23 20 4f 6e 20 73 6f 6d 65 20 73 79 73 74 65 # On some syste
46f0: 6d 73 2c 20 75 73 69 6e 67 20 22 2d 6c 69 65 65 ms, using "-liee
4700: 65 22 20 66 72 6f 6d 20 54 43 4c 5f 4c 49 42 5f e" from TCL_LIB_
4710: 53 50 45 43 20 61 70 70 65 61 72 73 0a 20 20 20 SPEC appears.
4720: 20 20 20 20 20 20 20 20 20 23 20 74 6f 20 63 61 # to ca
4730: 75 73 65 20 69 73 73 75 65 73 2e 0a 20 20 20 20 use issues..
4740: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
4750: 6c 74 20 22 52 65 6d 6f 76 69 6e 67 20 5c 22 2d lt "Removing \"-
4760: 6c 69 65 65 65 5c 22 20 61 6e 64 20 72 65 74 72 lieee\" and retr
4770: 79 69 6e 67 20 66 6f 72 20 54 63 6c 2e 2e 2e 22 ying for Tcl..."
4780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 . set
4790: 20 6c 69 62 73 20 5b 73 74 72 69 6e 67 20 6d 61 libs [string ma
47a0: 70 20 5b 6c 69 73 74 20 2d 6c 69 65 65 65 20 22 p [list -lieee "
47b0: 22 5d 20 24 6c 69 62 73 5d 0a 20 20 20 20 20 20 "] $libs].
47c0: 20 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b 6c cc-with [l
47d0: 69 73 74 20 2d 63 66 6c 61 67 73 20 24 63 66 6c ist -cflags $cfl
47e0: 61 67 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 5d ags -libs $libs]
47f0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
4800: 20 20 20 69 66 20 7b 24 74 63 6c 73 74 75 62 73 if {$tclstubs
4810: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 } {.
4820: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 2d if {[cc-
4830: 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 check-functions
4840: 54 63 6c 5f 49 6e 69 74 53 74 75 62 73 5d 7d 20 Tcl_InitStubs]}
4850: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
4860: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f set fo
4870: 75 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 undtcl 1.
4880: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }.
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
48a0: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {.
48b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b if {
48c0: 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 [cc-check-functi
48d0: 6f 6e 73 20 54 63 6c 5f 43 72 65 61 74 65 49 6e ons Tcl_CreateIn
48e0: 74 65 72 70 5d 7d 20 7b 0a 20 20 20 20 20 20 20 terp]} {.
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4900: 20 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a set foundtcl 1.
4910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4920: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
4930: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
4940: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a }. }.
4950: 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 66 6f if {!$fo
4960: 75 6e 64 74 63 6c 20 26 26 20 21 5b 73 74 72 69 undtcl && ![stri
4970: 6e 67 20 6d 61 74 63 68 20 2a 2d 6c 70 74 68 72 ng match *-lpthr
4980: 65 61 64 2a 20 24 6c 69 62 73 5d 7d 20 7b 0a 20 ead* $libs]} {.
4990: 20 20 20 20 20 20 20 20 20 20 20 23 20 4f 6e 20 # On
49a0: 73 6f 6d 65 20 73 79 73 74 65 6d 73 2c 20 54 43 some systems, TC
49b0: 4c 5f 4c 49 42 5f 53 50 45 43 20 61 70 70 65 61 L_LIB_SPEC appea
49c0: 72 73 20 74 6f 20 62 65 20 6d 69 73 73 69 6e 67 rs to be missing
49d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 22 . # "
49e0: 2d 6c 70 74 68 72 65 61 64 22 2e 20 20 54 72 79 -lpthread". Try
49f0: 20 61 64 64 69 6e 67 20 69 74 2e 0a 20 20 20 20 adding it..
4a00: 20 20 20 20 20 20 20 20 6d 73 67 2d 72 65 73 75 msg-resu
4a10: 6c 74 20 22 41 64 64 69 6e 67 20 5c 22 2d 6c 70 lt "Adding \"-lp
4a20: 74 68 72 65 61 64 5c 22 20 61 6e 64 20 72 65 74 thread\" and ret
4a30: 72 79 69 6e 67 20 66 6f 72 20 54 63 6c 2e 2e 2e rying for Tcl...
4a40: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 ". se
4a50: 74 20 6c 69 62 73 20 22 24 6c 69 62 73 20 2d 6c t libs "$libs -l
4a60: 70 74 68 72 65 61 64 22 0a 20 20 20 20 20 20 20 pthread".
4a70: 20 20 20 20 20 63 63 2d 77 69 74 68 20 5b 6c 69 cc-with [li
4a80: 73 74 20 2d 63 66 6c 61 67 73 20 24 63 66 6c 61 st -cflags $cfla
4a90: 67 73 20 2d 6c 69 62 73 20 24 6c 69 62 73 5d 20 gs -libs $libs]
4aa0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
4ab0: 20 20 69 66 20 7b 24 74 63 6c 73 74 75 62 73 7d if {$tclstubs}
4ac0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
4ad0: 20 20 20 20 20 20 20 69 66 20 7b 5b 63 63 2d 63 if {[cc-c
4ae0: 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 54 heck-functions T
4af0: 63 6c 5f 49 6e 69 74 53 74 75 62 73 5d 7d 20 7b cl_InitStubs]} {
4b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4b10: 20 20 20 20 20 20 20 20 20 73 65 74 20 66 6f 75 set fou
4b20: 6e 64 74 63 6c 20 31 0a 20 20 20 20 20 20 20 20 ndtcl 1.
4b30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }.
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
4b50: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {.
4b60: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b if {[
4b70: 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f cc-check-functio
4b80: 6e 73 20 54 63 6c 5f 43 72 65 61 74 65 49 6e 74 ns Tcl_CreateInt
4b90: 65 72 70 5d 7d 20 7b 0a 20 20 20 20 20 20 20 20 erp]} {.
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4bb0: 73 65 74 20 66 6f 75 6e 64 74 63 6c 20 31 0a 20 set foundtcl 1.
4bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4bd0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }.
4be0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }.
4bf0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
4c00: 20 20 20 20 20 20 20 69 66 20 7b 21 24 66 6f 75 if {!$fou
4c10: 6e 64 74 63 6c 7d 20 7b 0a 20 20 20 20 20 20 20 ndtcl} {.
4c20: 20 20 20 20 20 69 66 20 7b 24 74 63 6c 73 74 75 if {$tclstu
4c30: 62 73 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 bs} {.
4c40: 20 20 20 20 20 20 75 73 65 72 2d 65 72 72 6f 72 user-error
4c50: 20 22 43 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 "Cannot find a
4c60: 75 73 61 62 6c 65 20 54 63 6c 20 73 74 75 62 73 usable Tcl stubs
4c70: 20 6c 69 62 72 61 72 79 20 24 6d 73 67 22 0a 20 library $msg".
4c80: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
4c90: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {.
4ca0: 20 20 20 20 75 73 65 72 2d 65 72 72 6f 72 20 22 user-error "
4cb0: 43 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 75 73 Cannot find a us
4cc0: 61 62 6c 65 20 54 63 6c 20 6c 69 62 72 61 72 79 able Tcl library
4cd0: 20 24 6d 73 67 22 0a 20 20 20 20 20 20 20 20 20 $msg".
4ce0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }.
4cf0: 20 20 20 7d 0a 20 20 20 20 73 65 74 20 76 65 72 }. set ver
4d00: 73 69 6f 6e 20 24 74 63 6c 63 6f 6e 66 69 67 28 sion $tclconfig(
4d10: 54 43 4c 5f 56 45 52 53 49 4f 4e 29 24 74 63 6c TCL_VERSION)$tcl
4d20: 63 6f 6e 66 69 67 28 54 43 4c 5f 50 41 54 43 48 config(TCL_PATCH
4d30: 5f 4c 45 56 45 4c 29 0a 20 20 20 20 6d 73 67 2d _LEVEL). msg-
4d40: 72 65 73 75 6c 74 20 22 46 6f 75 6e 64 20 54 63 result "Found Tc
4d50: 6c 20 24 76 65 72 73 69 6f 6e 20 61 74 20 24 74 l $version at $t
4d60: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 50 52 45 clconfig(TCL_PRE
4d70: 46 49 58 29 22 0a 20 20 20 20 69 66 20 7b 21 24 FIX)". if {!$
4d80: 74 63 6c 70 72 69 76 61 74 65 73 74 75 62 73 7d tclprivatestubs}
4d90: 20 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e {. defin
4da0: 65 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 24 6c e-append LIBS $l
4db0: 69 62 73 0a 20 20 20 20 7d 0a 20 20 20 20 64 65 ibs. }. de
4dc0: 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 fine-append EXTR
4dd0: 41 5f 43 46 4c 41 47 53 20 24 63 66 6c 61 67 73 A_CFLAGS $cflags
4de0: 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 . if {[info e
4df0: 78 69 73 74 73 20 7a 6c 69 62 70 61 74 68 5d 20 xists zlibpath]
4e00: 26 26 20 24 7a 6c 69 62 70 61 74 68 20 65 71 20 && $zlibpath eq
4e10: 22 74 72 65 65 22 7d 20 7b 0a 20 20 20 20 20 20 "tree"} {.
4e20: 23 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 #. # NOTE:
4e30: 57 68 65 6e 20 75 73 69 6e 67 20 7a 6c 69 62 20 When using zlib
4e40: 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 in the source tr
4e50: 65 65 2c 20 70 72 65 76 65 6e 74 20 54 63 6c 20 ee, prevent Tcl
4e60: 66 72 6f 6d 0a 20 20 20 20 20 20 23 20 20 20 20 from. #
4e70: 20 20 20 70 75 6c 6c 69 6e 67 20 69 6e 20 74 68 pulling in th
4e80: 65 20 73 79 73 74 65 6d 20 6f 6e 65 2e 0a 20 20 e system one..
4e90: 20 20 20 20 23 0a 20 20 20 20 20 20 73 65 74 20 #. set
4ea0: 74 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 tclconfig(TCL_LD
4eb0: 5f 46 4c 41 47 53 29 20 5b 73 74 72 69 6e 67 20 _FLAGS) [string
4ec0: 6d 61 70 20 5b 6c 69 73 74 20 2d 6c 7a 20 22 22 map [list -lz ""
4ed0: 5d 20 5c 0a 20 20 20 20 20 20 20 20 20 20 24 74 ] \. $t
4ee0: 63 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f clconfig(TCL_LD_
4ef0: 46 4c 41 47 53 29 5d 0a 20 20 20 20 7d 0a 20 20 FLAGS)]. }.
4f00: 20 20 23 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 #. # NOTE:
4f10: 52 65 6d 6f 76 65 20 22 2d 6c 64 6c 22 20 66 72 Remove "-ldl" fr
4f20: 6f 6d 20 74 68 65 20 54 43 4c 5f 4c 44 5f 46 4c om the TCL_LD_FL
4f30: 41 47 53 20 62 65 63 61 75 73 65 20 69 74 20 77 AGS because it w
4f40: 69 6c 6c 20 62 65 0a 20 20 20 20 23 20 20 20 20 ill be. #
4f50: 20 20 20 62 65 20 63 68 65 63 6b 65 64 20 66 6f be checked fo
4f60: 72 20 6e 65 61 72 20 74 68 65 20 62 6f 74 74 6f r near the botto
4f70: 6d 20 6f 66 20 74 68 69 73 20 66 69 6c 65 2e 0a m of this file..
4f80: 20 20 20 20 23 0a 20 20 20 20 73 65 74 20 74 63 #. set tc
4f90: 6c 63 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f 46 lconfig(TCL_LD_F
4fa0: 4c 41 47 53 29 20 5b 73 74 72 69 6e 67 20 6d 61 LAGS) [string ma
4fb0: 70 20 5b 6c 69 73 74 20 2d 6c 64 6c 20 22 22 5d p [list -ldl ""]
4fc0: 20 5c 0a 20 20 20 20 20 20 20 20 24 74 63 6c 63 \. $tclc
4fd0: 6f 6e 66 69 67 28 54 43 4c 5f 4c 44 5f 46 4c 41 onfig(TCL_LD_FLA
4fe0: 47 53 29 5d 0a 20 20 20 20 64 65 66 69 6e 65 2d GS)]. define-
4ff0: 61 70 70 65 6e 64 20 45 58 54 52 41 5f 4c 44 46 append EXTRA_LDF
5000: 4c 41 47 53 20 24 74 63 6c 63 6f 6e 66 69 67 28 LAGS $tclconfig(
5010: 54 43 4c 5f 4c 44 5f 46 4c 41 47 53 29 0a 20 20 TCL_LD_FLAGS).
5020: 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c 5f define FOSSIL_
5030: 45 4e 41 42 4c 45 5f 54 43 4c 0a 7d 0a 0a 23 20 ENABLE_TCL.}..#
5040: 4e 65 74 77 6f 72 6b 20 66 75 6e 63 74 69 6f 6e Network function
5050: 73 20 72 65 71 75 69 72 65 20 6c 69 62 72 61 72 s require librar
5060: 69 65 73 20 6f 6e 20 73 6f 6d 65 20 73 79 73 74 ies on some syst
5070: 65 6d 73 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e ems.cc-check-fun
5080: 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 67 65 74 ction-in-lib get
5090: 68 6f 73 74 62 79 6e 61 6d 65 20 6e 73 6c 0a 69 hostbyname nsl.i
50a0: 66 20 7b 21 5b 63 63 2d 63 68 65 63 6b 2d 66 75 f {![cc-check-fu
50b0: 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 73 6f nction-in-lib so
50c0: 63 6b 65 74 20 7b 73 6f 63 6b 65 74 20 6e 65 74 cket {socket net
50d0: 77 6f 72 6b 7d 5d 7d 20 7b 0a 20 20 20 20 23 20 work}]} {. #
50e0: 4c 61 73 74 20 72 65 73 6f 72 74 2c 20 6d 61 79 Last resort, may
50f0: 20 62 65 20 57 69 6e 64 6f 77 73 0a 20 20 20 20 be Windows.
5100: 69 66 20 7b 5b 69 73 5f 6d 69 6e 67 77 5d 7d 20 if {[is_mingw]}
5110: 7b 0a 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 {. define
5120: 2d 61 70 70 65 6e 64 20 4c 49 42 53 20 2d 6c 77 -append LIBS -lw
5130: 73 6f 63 6b 33 32 0a 20 20 20 20 7d 0a 7d 0a 0a sock32. }.}..
5140: 23 20 54 68 65 20 53 4d 54 50 20 6d 6f 64 75 6c # The SMTP modul
5150: 65 20 72 65 71 75 69 72 65 73 20 73 70 65 63 69 e requires speci
5160: 61 6c 20 6c 69 62 72 61 72 69 65 73 20 61 6e 64 al libraries and
5170: 20 68 65 61 64 65 72 73 20 66 6f 72 20 4d 58 20 headers for MX
5180: 44 4e 53 0a 23 20 72 65 63 6f 72 64 20 6c 6f 6f DNS.# record loo
5190: 6b 75 70 73 20 61 6e 64 20 73 75 63 68 2e 0a 63 kups and such..c
51a0: 63 2d 63 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 c-check-includes
51b0: 20 61 72 70 61 2f 6e 61 6d 65 73 65 72 2e 68 0a arpa/nameser.h.
51c0: 63 63 2d 69 6e 63 6c 75 64 65 2d 6e 65 65 64 73 cc-include-needs
51d0: 20 62 69 6e 64 2f 72 65 73 6f 6c 76 2e 68 20 6e bind/resolv.h n
51e0: 65 74 69 6e 65 74 2f 69 6e 2e 68 0a 63 63 2d 63 etinet/in.h.cc-c
51f0: 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 20 62 69 heck-includes bi
5200: 6e 64 2f 72 65 73 6f 6c 76 2e 68 0a 63 63 2d 63 nd/resolv.h.cc-c
5210: 68 65 63 6b 2d 69 6e 63 6c 75 64 65 73 20 72 65 heck-includes re
5220: 73 6f 6c 76 2e 68 0a 69 66 20 7b 20 20 20 20 21 solv.h.if { !
5230: 28 28 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 (([cc-check-func
5240: 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 64 6e 5f 65 tion-in-lib dn_e
5250: 78 70 61 6e 64 20 72 65 73 6f 6c 76 5d 20 7c 7c xpand resolv] ||
5260: 0a 20 20 20 20 20 20 20 20 20 20 20 5b 63 63 2d . [cc-
5270: 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 check-function-i
5280: 6e 2d 6c 69 62 20 20 20 6e 73 5f 6e 61 6d 65 5f n-lib ns_name_
5290: 75 6e 63 6f 6d 70 72 65 73 73 20 7b 62 69 6e 64 uncompress {bind
52a0: 20 72 65 73 6f 6c 76 7d 5d 20 7c 7c 0a 20 20 20 resolv}] ||.
52b0: 20 20 20 20 20 20 20 20 5b 63 63 2d 63 68 65 63 [cc-chec
52c0: 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 k-function-in-li
52d0: 62 20 5f 5f 6e 73 5f 6e 61 6d 65 5f 75 6e 63 6f b __ns_name_unco
52e0: 6d 70 72 65 73 73 20 7b 62 69 6e 64 20 72 65 73 mpress {bind res
52f0: 6f 6c 76 7d 5d 29 20 26 26 0a 20 20 20 20 20 20 olv}]) &&.
5300: 20 20 20 20 28 5b 63 63 2d 63 68 65 63 6b 2d 66 ([cc-check-f
5310: 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 20 unction-in-lib
5320: 20 6e 73 5f 70 61 72 73 65 72 72 20 7b 62 69 6e ns_parserr {bin
5330: 64 20 72 65 73 6f 6c 76 7d 5d 20 7c 7c 0a 20 20 d resolv}] ||.
5340: 20 20 20 20 20 20 20 20 20 5b 63 63 2d 63 68 65 [cc-che
5350: 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c ck-function-in-l
5360: 69 62 20 5f 5f 6e 73 5f 70 61 72 73 65 72 72 20 ib __ns_parserr
5370: 7b 62 69 6e 64 20 72 65 73 6f 6c 76 7d 5d 29 20 {bind resolv}])
5380: 26 26 0a 20 20 20 20 20 20 20 20 20 20 28 5b 63 &&. ([c
5390: 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e c-check-function
53a0: 2d 69 6e 2d 6c 69 62 20 20 20 72 65 73 5f 71 75 -in-lib res_qu
53b0: 65 72 79 20 7b 62 69 6e 64 20 72 65 73 6f 6c 76 ery {bind resolv
53c0: 7d 5d 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 }] ||.
53d0: 20 5b 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 [cc-check-funct
53e0: 69 6f 6e 2d 69 6e 2d 6c 69 62 20 5f 5f 72 65 73 ion-in-lib __res
53f0: 5f 71 75 65 72 79 20 7b 62 69 6e 64 20 72 65 73 _query {bind res
5400: 6f 6c 76 7d 5d 29 29 7d 20 7b 0a 20 20 20 20 6d olv}]))} {. m
5410: 73 67 2d 72 65 73 75 6c 74 20 22 57 41 52 4e 49 sg-result "WARNI
5420: 4e 47 3a 20 53 4d 54 50 20 66 65 61 74 75 72 65 NG: SMTP feature
5430: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 62 6c will not be abl
5440: 65 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 6c 6f 63 e to look up loc
5450: 61 6c 20 4d 58 2e 22 0a 7d 0a 63 63 2d 63 68 65 al MX.".}.cc-che
5460: 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d 6c ck-function-in-l
5470: 69 62 20 72 65 73 5f 39 5f 6e 73 5f 69 6e 69 74 ib res_9_ns_init
5480: 70 61 72 73 65 20 72 65 73 6f 6c 76 0a 0a 23 20 parse resolv..#
5490: 4f 74 68 65 72 20 6e 6f 6e 73 74 61 6e 64 61 72 Other nonstandar
54a0: 64 20 66 75 6e 63 74 69 6f 6e 20 63 68 65 63 6b d function check
54b0: 73 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 s.cc-check-funct
54c0: 69 6f 6e 73 20 75 74 69 6d 65 0a 63 63 2d 63 68 ions utime.cc-ch
54d0: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 75 73 eck-functions us
54e0: 6c 65 65 70 0a 63 63 2d 63 68 65 63 6b 2d 66 75 leep.cc-check-fu
54f0: 6e 63 74 69 6f 6e 73 20 73 74 72 63 68 72 6e 75 nctions strchrnu
5500: 6c 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 l.cc-check-funct
5510: 69 6f 6e 73 20 70 6c 65 64 67 65 0a 63 63 2d 63 ions pledge.cc-c
5520: 68 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 62 heck-functions b
5530: 61 63 6b 74 72 61 63 65 0a 0a 23 20 54 65 72 6d acktrace..# Term
5540: 75 78 20 6f 6e 20 41 6e 64 72 6f 69 64 20 61 64 ux on Android ad
5550: 64 73 20 22 67 65 74 70 61 73 73 28 63 68 61 72 ds "getpass(char
5560: 20 2a 29 22 20 74 6f 20 75 6e 69 73 74 64 2e 68 *)" to unistd.h
5570: 2c 20 73 6f 20 63 68 65 63 6b 20 74 68 69 73 20 , so check this
5580: 73 6f 20 77 65 0a 23 20 67 75 61 72 64 20 61 67 so we.# guard ag
5590: 61 69 6e 73 74 20 69 6e 63 6c 75 64 69 6e 67 20 ainst including
55a0: 69 74 20 61 67 61 69 6e 3b 20 75 73 65 20 63 63 it again; use cc
55b0: 74 65 73 74 20 61 73 20 63 63 2d 63 68 65 63 6b test as cc-check
55c0: 2d 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20 0a -functions and .
55d0: 23 20 63 63 74 65 73 74 5f 66 75 6e 63 74 69 6f # cctest_functio
55e0: 6e 20 63 68 65 63 6b 20 66 6f 72 20 22 67 65 74 n check for "get
55f0: 70 61 73 73 28 29 22 20 77 69 74 68 20 6e 6f 20 pass()" with no
5600: 61 72 67 73 20 61 6e 64 20 66 61 69 6c 0a 69 66 args and fail.if
5610: 20 7b 5b 63 63 74 65 73 74 20 2d 6c 69 6e 6b 20 {[cctest -link
5620: 31 20 2d 69 6e 63 6c 75 64 65 73 20 7b 75 6e 69 1 -includes {uni
5630: 73 74 64 2e 68 7d 20 2d 63 6f 64 65 20 22 67 65 std.h} -code "ge
5640: 74 70 61 73 73 28 30 29 3b 22 5d 7d 20 7b 0a 20 tpass(0);"]} {.
5650: 20 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c define FOSSIL
5660: 5f 48 41 56 45 5f 47 45 54 50 41 53 53 20 31 0a _HAVE_GETPASS 1.
5670: 20 20 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 msg-result "
5680: 46 6f 75 6e 64 20 67 65 74 70 61 73 73 28 29 20 Found getpass()
5690: 77 69 74 68 20 75 6e 69 73 74 64 2e 68 22 0a 7d with unistd.h".}
56a0: 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 67 65 ..# Check for ge
56b0: 74 6c 6f 61 64 61 76 67 28 29 2c 20 61 6e 64 20 tloadavg(), and
56c0: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 65 78 if it doesn't ex
56d0: 69 73 74 2c 20 64 65 66 69 6e 65 20 46 4f 53 53 ist, define FOSS
56e0: 49 4c 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 41 56 45 IL_OMIT_LOAD_AVE
56f0: 52 41 47 45 0a 69 66 20 7b 21 5b 63 63 2d 63 68 RAGE.if {![cc-ch
5700: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 67 65 eck-functions ge
5710: 74 6c 6f 61 64 61 76 67 5d 7d 20 7b 0a 20 20 64 tloadavg]} {. d
5720: 65 66 69 6e 65 20 46 4f 53 53 49 4c 5f 4f 4d 49 efine FOSSIL_OMI
5730: 54 5f 4c 4f 41 44 5f 41 56 45 52 41 47 45 20 31 T_LOAD_AVERAGE 1
5740: 0a 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 4c . msg-result "L
5750: 6f 61 64 20 61 76 65 72 61 67 65 20 73 75 70 70 oad average supp
5760: 6f 72 74 20 75 6e 61 76 61 69 6c 61 62 6c 65 22 ort unavailable"
5770: 0a 7d 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 .}..# Check for
5780: 67 65 74 70 61 73 73 70 68 72 61 73 65 28 29 20 getpassphrase()
5790: 66 6f 72 20 53 6f 6c 61 72 69 73 20 31 30 20 77 for Solaris 10 w
57a0: 68 65 72 65 20 67 65 74 70 61 73 73 28 29 20 74 here getpass() t
57b0: 72 75 6e 63 61 74 65 73 20 74 6f 20 31 30 20 63 runcates to 10 c
57c0: 68 61 72 73 0a 69 66 20 7b 21 5b 63 63 2d 63 68 hars.if {![cc-ch
57d0: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 73 20 67 65 eck-functions ge
57e0: 74 70 61 73 73 70 68 72 61 73 65 5d 7d 20 7b 0a tpassphrase]} {.
57f0: 20 20 20 20 23 20 48 61 69 6b 75 20 6e 65 65 64 # Haiku need
5800: 73 20 74 68 69 73 0a 20 20 20 20 63 63 2d 63 68 s this. cc-ch
5810: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d eck-function-in-
5820: 6c 69 62 20 67 65 74 70 61 73 73 20 62 73 64 0a lib getpass bsd.
5830: 7d 0a 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 }.cc-check-funct
5840: 69 6f 6e 2d 69 6e 2d 6c 69 62 20 73 69 6e 20 6d ion-in-lib sin m
5850: 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 74 68 ..# Check for th
5860: 65 20 46 75 73 65 46 53 20 6c 69 62 72 61 72 79 e FuseFS library
5870: 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c 20 66 .if {[opt-bool f
5880: 75 73 65 66 73 5d 7d 20 7b 0a 20 20 69 66 20 7b usefs]} {. if {
5890: 5b 6f 70 74 2d 62 6f 6f 6c 20 73 74 61 74 69 63 [opt-bool static
58a0: 5d 7d 20 7b 0a 20 20 20 20 20 6d 73 67 2d 72 65 ]} {. msg-re
58b0: 73 75 6c 74 20 22 46 75 73 65 46 53 20 73 75 70 sult "FuseFS sup
58c0: 70 6f 72 74 20 64 69 73 61 62 6c 65 64 20 64 75 port disabled du
58d0: 65 20 74 6f 20 2d 73 74 61 74 69 63 22 0a 20 20 e to -static".
58e0: 7d 20 65 6c 73 65 69 66 20 7b 5b 63 63 2d 63 68 } elseif {[cc-ch
58f0: 65 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 69 6e 2d eck-function-in-
5900: 6c 69 62 20 66 75 73 65 5f 6d 6f 75 6e 74 20 66 lib fuse_mount f
5910: 75 73 65 5d 7d 20 7b 0a 20 20 20 20 20 64 65 66 use]} {. def
5920: 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 54 52 41 ine-append EXTRA
5930: 5f 43 46 4c 41 47 53 20 2d 44 46 4f 53 53 49 4c _CFLAGS -DFOSSIL
5940: 5f 48 41 56 45 5f 46 55 53 45 46 53 0a 20 20 20 _HAVE_FUSEFS.
5950: 20 20 64 65 66 69 6e 65 20 46 4f 53 53 49 4c 5f define FOSSIL_
5960: 48 41 56 45 5f 46 55 53 45 46 53 20 31 0a 20 20 HAVE_FUSEFS 1.
5970: 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 define-append
5980: 20 4c 49 42 53 20 2d 6c 66 75 73 65 0a 20 20 20 LIBS -lfuse.
5990: 20 20 6d 73 67 2d 72 65 73 75 6c 74 20 22 46 75 msg-result "Fu
59a0: 73 65 46 53 20 73 75 70 70 6f 72 74 20 65 6e 61 seFS support ena
59b0: 62 6c 65 64 22 0a 20 20 7d 0a 7d 0a 0a 23 20 41 bled". }.}..# A
59c0: 64 64 20 2d 66 73 61 6e 69 74 69 7a 65 20 63 6f dd -fsanitize co
59d0: 6d 70 69 6c 65 20 61 6e 64 20 6c 69 6e 6b 20 6f mpile and link o
59e0: 70 74 69 6f 6e 73 20 6c 61 74 65 3a 20 77 65 20 ptions late: we
59f0: 64 6f 6e 27 74 20 77 61 6e 74 20 74 68 65 20 43 don't want the C
5a00: 0a 23 20 63 68 65 63 6b 73 20 61 62 6f 76 65 20 .# checks above
5a10: 74 6f 20 72 75 6e 20 77 69 74 68 20 74 68 6f 73 to run with thos
5a20: 65 20 73 61 6e 69 74 69 7a 65 72 73 20 65 6e 61 e sanitizers ena
5a30: 62 6c 65 64 2e 20 20 49 74 20 63 61 6e 20 6e 6f bled. It can no
5a40: 74 20 6f 6e 6c 79 0a 23 20 62 65 20 70 6f 69 6e t only.# be poin
5a50: 74 6c 65 73 73 2c 20 69 74 20 63 61 6e 20 61 63 tless, it can ac
5a60: 74 75 61 6c 6c 79 20 62 72 65 61 6b 20 63 6f 72 tually break cor
5a70: 72 65 63 74 20 74 65 73 74 73 2e 0a 73 65 74 20 rect tests..set
5a80: 66 73 61 6e 20 5b 6f 70 74 2d 76 61 6c 20 77 69 fsan [opt-val wi
5a90: 74 68 2d 73 61 6e 69 74 69 7a 65 72 5d 0a 69 66 th-sanitizer].if
5aa0: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 {[string length
5ab0: 20 24 66 73 61 6e 5d 7d 20 7b 0a 20 20 20 20 64 $fsan]} {. d
5ac0: 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 20 45 58 efine-append EX
5ad0: 54 52 41 5f 43 46 4c 41 47 53 20 2d 66 73 61 6e TRA_CFLAGS -fsan
5ae0: 69 74 69 7a 65 3d 24 66 73 61 6e 0a 20 20 20 20 itize=$fsan.
5af0: 64 65 66 69 6e 65 2d 61 70 70 65 6e 64 20 45 58 define-append EX
5b00: 54 52 41 5f 4c 44 46 4c 41 47 53 20 2d 66 73 61 TRA_LDFLAGS -fsa
5b10: 6e 69 74 69 7a 65 3d 24 66 73 61 6e 0a 20 20 20 nitize=$fsan.
5b20: 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 66 69 72 if {[string fir
5b30: 73 74 20 22 75 6e 64 65 66 69 6e 65 64 22 20 24 st "undefined" $
5b40: 66 73 61 6e 5d 20 21 3d 20 2d 31 7d 20 7b 0a 20 fsan] != -1} {.
5b50: 20 20 20 20 20 20 20 23 20 57 65 20 6e 65 65 64 # We need
5b60: 20 74 6f 20 6c 69 6e 6b 20 77 69 74 68 20 6c 69 to link with li
5b70: 62 75 62 73 61 6e 20 69 66 20 77 65 27 72 65 20 bubsan if we're
5b80: 63 6f 6d 70 69 6c 69 6e 67 20 75 6e 64 65 72 0a compiling under.
5b90: 20 20 20 20 20 20 20 20 23 20 47 43 43 20 77 69 # GCC wi
5ba0: 74 68 20 2d 66 73 61 6e 69 74 69 7a 65 3d 75 6e th -fsanitize=un
5bb0: 64 65 66 69 6e 65 64 2e 0a 20 20 20 20 20 20 20 defined..
5bc0: 20 63 63 2d 63 68 65 63 6b 2d 66 75 6e 63 74 69 cc-check-functi
5bd0: 6f 6e 2d 69 6e 2d 6c 69 62 20 5f 5f 75 62 73 61 on-in-lib __ubsa
5be0: 6e 5f 68 61 6e 64 6c 65 5f 61 64 64 5f 6f 76 65 n_handle_add_ove
5bf0: 72 66 6c 6f 77 20 75 62 73 61 6e 0a 20 20 20 20 rflow ubsan.
5c00: 7d 0a 7d 0a 0a 23 20 46 69 6e 61 6c 6c 79 2c 20 }.}..# Finally,
5c10: 61 70 70 65 6e 64 20 6c 69 62 72 61 72 69 65 73 append libraries
5c20: 20 74 68 61 74 20 6d 75 73 74 20 62 65 20 6c 61 that must be la
5c30: 73 74 2e 20 54 68 69 73 20 6d 61 74 74 65 72 73 st. This matters
5c40: 20 6d 6f 72 65 20 6f 6e 20 73 6f 6d 65 0a 23 20 more on some.#
5c50: 4f 53 65 73 20 74 68 61 6e 20 6f 74 68 65 72 73 OSes than others
5c60: 2c 20 62 75 74 20 69 73 20 6d 6f 73 74 20 62 72 , but is most br
5c70: 6f 61 64 6c 79 20 72 65 71 75 69 72 65 64 20 66 oadly required f
5c80: 6f 72 20 73 74 61 74 69 63 20 6c 69 6e 6b 69 6e or static linkin
5c90: 67 2e 0a 69 66 20 7b 5b 63 68 65 63 6b 2d 66 75 g..if {[check-fu
5ca0: 6e 63 74 69 6f 6e 2d 69 6e 2d 6c 69 62 20 64 6c nction-in-lib dl
5cb0: 6f 70 65 6e 20 64 6c 5d 7d 20 7b 0a 20 20 20 20 open dl]} {.
5cc0: 23 20 53 6f 6d 65 20 70 6c 61 74 66 6f 72 6d 73 # Some platforms
5cd0: 20 28 2a 42 53 44 29 20 68 61 76 65 20 74 68 65 (*BSD) have the
5ce0: 20 64 6c 20 66 75 6e 63 74 69 6f 6e 73 20 61 6c dl functions al
5cf0: 72 65 61 64 79 20 69 6e 20 6c 69 62 63 20 61 6e ready in libc an
5d00: 64 20 6e 6f 20 6c 69 62 64 6c 2e 0a 20 20 20 20 d no libdl..
5d10: 23 20 49 6e 20 73 75 63 68 20 63 61 73 65 20 77 # In such case w
5d20: 65 20 63 61 6e 20 6c 69 6e 6b 20 64 69 72 65 63 e can link direc
5d30: 74 6c 79 20 77 69 74 68 6f 75 74 20 2d 6c 64 6c tly without -ldl
5d40: 2e 0a 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 .. define-app
5d50: 65 6e 64 20 4c 49 42 53 20 5b 67 65 74 2d 64 65 end LIBS [get-de
5d60: 66 69 6e 65 20 6c 69 62 5f 64 6c 6f 70 65 6e 5d fine lib_dlopen]
5d70: 0a 7d 0a 69 66 20 7b 5b 6f 70 74 2d 62 6f 6f 6c .}.if {[opt-bool
5d80: 20 73 74 61 74 69 63 5d 7d 20 7b 0a 20 20 20 20 static]} {.
5d90: 23 20 4c 69 6e 75 78 20 63 61 6e 20 6f 6e 6c 79 # Linux can only
5da0: 20 69 6e 66 65 72 20 74 68 65 20 64 65 70 65 6e infer the depen
5db0: 64 65 6e 63 79 20 6f 6e 20 70 74 68 72 65 61 64 dency on pthread
5dc0: 20 66 72 6f 6d 20 4f 70 65 6e 53 53 4c 20 77 68 from OpenSSL wh
5dd0: 65 6e 0a 20 20 20 20 23 20 64 6f 69 6e 67 20 64 en. # doing d
5de0: 79 6e 61 6d 69 63 20 6c 69 6e 6b 61 67 65 2e 0a ynamic linkage..
5df0: 20 20 20 20 64 65 66 69 6e 65 2d 61 70 70 65 6e define-appen
5e00: 64 20 4c 49 42 53 20 2d 6c 70 74 68 72 65 61 64 d LIBS -lpthread
5e10: 0a 7d 0a 0a 0a 6d 61 6b 65 2d 74 65 6d 70 6c 61 .}...make-templa
5e20: 74 65 20 4d 61 6b 65 66 69 6c 65 2e 69 6e 0a 6d te Makefile.in.m
5e30: 61 6b 65 2d 63 6f 6e 66 69 67 2d 68 65 61 64 65 ake-config-heade
5e40: 72 20 61 75 74 6f 63 6f 6e 66 69 67 2e 68 20 2d r autoconfig.h -
5e50: 61 75 74 6f 20 7b 55 53 45 5f 2a 20 46 4f 53 53 auto {USE_* FOSS
5e60: 49 4c 5f 2a 7d 0a IL_*}.