aboutsummaryrefslogtreecommitdiff
path: root/auto.def
blob: 43c597551bd80154beaa48e116a6612d3575fd81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/do/not/tclsh
# ^^^ help out editors which guess this file's content type.
#
# This is the main autosetup-compatible configure script for the
# SQLite project.
#
# This script and all of its dependencies must be kept compatible with
# JimTCL, a copy of which is included in this source tree as
# ./autosetup/jimsh0.c. The number of incompatibilities between
# canonical TCL and JimTCL is very low and alternative formulations of
# incompatible constructs have, so far, been easy to find.
#
# JimTCL: https://jim.tcl.tk
#
use sqlite-config
sqlite-configure canonical {
  proj-if-opt-truthy dev {
    # --enable-dev needs to come early so that the downstream tests
    # which check for the following flags use their updated state.
    proj-opt-set all 1
    proj-opt-set debug 1
    proj-opt-set amalgamation 0
    define CFLAGS [get-env CFLAGS {-O0 -g}]
    # -------------^^^^^^^ intentionally using [get-env] instead of
    # [proj-get-env] here because [sqlite-setup-default-cflags] uses
    # [proj-get-env] and we want this to supercede that.
    sqlite-munge-cflags; # straighten out -DSQLITE_ENABLE/OMIT flags
  }
  sqlite-handle-debug      ;# must come after --dev flag check
  sqlite-check-common-bins ;# must come before [sqlite-handle-wasi-sdk]
  sqlite-handle-wasi-sdk   ;# must run relatively early, as it changes the environment
  sqlite-check-common-system-deps

  proj-define-for-opt amalgamation USE_AMALGAMATION "Use amalgamation for builds?"

  proj-define-for-opt gcov USE_GCOV "Use gcov?"

  proj-define-for-opt test-status TSTRNNR_OPTS \
    "test-runner flags:" {--status} {}

  proj-define-for-opt linemacros AMALGAMATION_LINE_MACROS \
    "Use #line macros in the amalgamation:"

  define AMALGAMATION_EXTRA_SRC \
    [join [opt-val amalgamation-extra-src ""] " "]

  define LINK_TOOLS_DYNAMICALLY [proj-opt-was-provided dynlink-tools]

  if {[set fsan [join [opt-val asan-fsanitize] ","]] in {auto ""}} {
    set fsan address,bounds-strict
  }
  define CFLAGS_ASAN_FSANITIZE [proj-check-fsanitize [split $fsan ", "]]

  sqlite-handle-tcl
  sqlite-handle-emsdk

  proj-if-opt-truthy static-shells {
    proj-opt-set static-tclsqlite3 1
    proj-opt-set static-cli-shell 1
  }
  proj-define-for-opt static-tclsqlite3 STATIC_TCLSQLITE3 "Statically link tclsqlite3?"
  proj-define-for-opt static-cli-shell STATIC_CLI_SHELL "Statically link CLI shell?"

}; # sqlite-configure