#!/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 should 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-config-bootstrap canonical
sqlite-setup-default-cflags
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-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

#
# Enable large file support (if special flags are necessary)
#
define HAVE_LFS 0
if {[opt-bool largefile]} {
  cc-check-lfs
}

proj-define-for-opt shared ENABLE_SHARED "Build shared library?"

if {![proj-define-for-opt static ENABLE_STATIC \
        "Build static library?"]} {
  proj-warn "Static lib build may be implicitly re-activated by other components, e.g. some test apps."
}

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 LINK_TOOLS_DYNAMICALLY [proj-opt-was-provided dynlink-tools]

proj-check-rpath
sqlite-handle-soname
sqlite-handle-debug
sqlite-handle-tcl
sqlite-handle-threadsafe
sqlite-handle-tempstore
sqlite-handle-line-editing
sqlite-handle-load-extension
sqlite-handle-math
sqlite-handle-icu
sqlite-handle-emsdk
sqlite-config-finalize
