#!/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-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

}
