]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge current trunk into this branch.
authorstephan <stephan@noemail.net>
Thu, 26 Sep 2024 08:53:37 +0000 (08:53 +0000)
committerstephan <stephan@noemail.net>
Thu, 26 Sep 2024 08:53:37 +0000 (08:53 +0000)
FossilOrigin-Name: 683a9e1e2f68a5c34fe524867576a4405fa2460880ad0bf4c07799744fea4192

1  2 
auto.def
manifest
manifest.uuid

diff --cc auto.def
index 7d55af78bdbcee5938483713b2ba273dc20458e9,0000000000000000000000000000000000000000..6cac92c5c7c063ccd7405dbdd62106435efa5f8e
mode 100644,000000..100644
--- /dev/null
+++ b/auto.def
@@@ -1,782 -1,0 +1,782 @@@
-   hwaci-make-from-dot-in $wrapper 1
 +# Created by migrate-autoconf - fix items marked XXX
 +global autosetup
 +use cc cc-db cc-shared cc-lib hwaci-common
 +set DUMP_DEFINES_FILE defines.list
 +set enable_shared 1
 +
 +# Are we cross compiling?
 +set cross_compiling 0
 +if {[get-define host] ne [get-define build]} {
 +  set cross_compiling 1
 +}
 +define cross_compiling ${cross_compiling}
 +
 +########################################################################
 +# A very long story made short, autosetup's --flag handling has
 +# some behaviors which make it impossible to implement 100% identical
 +# flags, compared to the historical autotools build. The differences
 +# are documented here:
 +#
 +#
 +# 1) --debug is used by autosetup itself, so we have to rename it to
 +# --with-debug. We cannot use --enable-debug because that is, for
 +# autosetup, and alias for --debug=1.
 +#
 +# 2) In autosetup, all flags starting with (--enable, --disable) are
 +# forced to be booleans and received special handling in how they're
 +# resolved. Because of that we have to rename:
 +#
 +#   2.1) --enable-tempstore[=no] to --with-tempstore[=no].
 +#
 +options {
 +  with-debug:=1        => {Enable debug build flags}
 +  with-tclsh:PATHNAME  => {Full pathname of tclsh to use}
 +  with-tcl:DIR         => {Directory containing tclConfig.sh}
 +  tcl=1                => {Disable building accessory programs that require TCL-dev}
 +  test-status          => {Enable status of tests}
 +  threadsafe=1         => {Disable mutexing}
 +  releasemode          => {libtool link to release mode}
 +  with-tempstore:=no => {Use an in-ram database for temporary tables: never,no,yes,always}
 +  editline=0           => {BSD editline support}
 +  readline=0           => {readline support}
 +  largefile=1          => {Disable large file support}
 +  with-readline-lib    => {readline library}
 +  with-readline-inc    => {readline include paths}
 +  with-linenoise:DIR   => {}
 +  amalgamation=1       => {Disable the amalgamation and instead build all files separately}
 +  load-extension=1     => {Disable loading of external extensions}
 +  math=1               => {Disable math functions}
 +  json=1               => {Disable JSON functions}
 +  all                  => {Enable FTS4, FTS5, Geopoly, RTree, Sessions}
 +  memsys5              => {Enable MEMSYS5}
 +  memsys3              => {Enable MEMSYS3}
 +  fts3                 => {Enable the FTS3 extension}
 +  fts4                 => {Enable the FTS4 extension}
 +  fts5                 => {Enable the FTS5 extension}
 +  update-limit         => {Enable the UPDATE/DELETE LIMIT clause}
 +  geopoly              => {Enable the GEOPOLY extension}
 +  rtree                => {Enable the RTREE extension}
 +  session              => {Enable the SESSION extension}
 +  gcov=0               => {Enable coverage testing using gcov}
 +  linemacros           => {Enable #line macros in the amalgamation.}
 +  with-wasi-sdk:=/opt/wasi-sdk
 +                       => {Top-most dir of the wasi-sdk for a WASI build}
 +  with-emsdk:DIR       => {Top-most dir of the Emscripten SDK installation}
 +  dump-defines=1       => {Dump autosetup defines to $DUMP_DEFINES_FILE}
 +}
 +
 +set srcdir $autosetup(srcdir)
 +#puts "srcdir = $srcdir"
 +set VERSION [readfile $autosetup(srcdir)/VERSION]
 +puts "VERSION = $VERSION"
 +define VERSION $VERSION
 +#puts "with-wasi-sdk? = [opt-val with-wasi-sdk]"
 +#puts "with-debug? = [opt-val with-debug]"
 +
 +set outOfTreeBuild 0
 +if {![file exists sqlite3.pc.in]} {
 +  puts "This appears to be an out-of-tree build."
 +  set outOfTreeBuild 1
 +}
 +
 +#
 +# The build process allows for using a cross-compiler.  But the default
 +# action is to target the same platform that we are running on.  The
 +# configure script needs to discover the following properties of the
 +# build and target systems:
 +#
 +#    srcdir
 +#
 +#        The is the name of the directory that contains the
 +#        "configure" shell script.  All source files are
 +#        located relative to this directory.
 +#
 +#    bindir
 +#
 +#        The name of the directory where executables should be
 +#        written by the "install" target of the makefile.
 +#
 +#    program_prefix
 +#
 +#        Add this prefix to the names of all executables that run
 +#        on the target machine.  Default: ""
 +#
 +#    ENABLE_SHARED
 +#
 +#        True if shared libraries should be generated.
 +#
 +#    BUILD_CC
 +#
 +#        The name of a command that is used to convert C
 +#        source files into executables that run on the build
 +#        platform.
 +#
 +#    BUILD_CFLAGS
 +#
 +#        Switches that the build compiler needs in order to construct
 +#        command-line programs.
 +#
 +#    BUILD_LIBS
 +#
 +#        Libraries that the build compiler needs in order to construct
 +#        command-line programs.
 +#
 +#    TCL_*
 +#
 +#        Lots of values are read in from the tclConfig.sh script,
 +#        if that script is available.  This values are used for
 +#        constructing and installing the TCL extension.
 +#
 +#    TARGET_READLINE_LIBS
 +#
 +#        This is the library directives passed to the target linker
 +#        that cause the executable to link against the readline library.
 +#        This might be a switch like "-lreadline" or pathnames of library
 +#        file like "../../src/libreadline.a".
 +#
 +#    TARGET_READLINE_INC
 +#
 +#        This variables define the directory that contain header
 +#        files for the readline library.  If the compiler is able
 +#        to find <readline.h> on its own, then this can be blank.
 +
 +########################################################################
 +# OPT_FEATURE_FLAGS = -DSQLITE_OMIT/ENABLE flags.
 +define OPT_FEATURE_FLAGS {}
 +# Adds $flag, if not empty, to OPT_FEATURE_FLAGS.
 +proc add-feature-flag {flag} {
 +  if {"" ne $flag} {
 +    define-append OPT_FEATURE_FLAGS $flag
 +  }
 +}
 +# add-feature-flag -DSQLITE_JUST_TESTING=3
 +
 +hwaci-check-exeext
 +if {".exe" eq [get-define TARGET_EXEEXT]} {
 +  define SQLITE_OS_UNIX 0
 +  define SQLITE_OS_WIN 1
 +  # todo? add -DSQLITE_OS_WIN=1 to CFLAGS?
 +} else {
 +  define SQLITE_OS_UNIX 1
 +  define SQLITE_OS_WIN 0
 +  # todo? add -DSQLITE_OS_UNIX=1 to CFLAGS?
 +}
 +
 +#########
 +# Programs needed
 +if {"" eq [hwaci-bin-define install]} {
 +  msg-result "Cannot find install binary, so 'make install' will not work."
 +}
 +
 +#########
 +# Locate a compiler for the build machine.  This compiler should
 +# generate command-line programs that run on the build machine.
 +#
 +# XXX if test x"$cross_compiling" = xno; then
 +# XXX BUILD_CC=$CC
 +# XXX BUILD_CFLAGS=$CFLAGS
 +# XXX else
 +# XXX if test "${BUILD_CC+set}" != set; then
 +# XXX AC_CHECK_PROGS BUILD_CC gcc cc cl
 +# XXX fi
 +# XXX if test "${BUILD_CFLAGS+set}" != set; then
 +# XXX BUILD_CFLAGS="-g"
 +# XXX fi
 +# XXX fi
 +# XXX AC_SUBST BUILD_CC
 +
 +##########
 +# Handle --with-wasi-sdk=DIR
 +#
 +# This must be early because it may change the toolchain and several
 +# config options.
 +#
 +# It's unclear whether we can actually get away with making these
 +# changes to the autosetup environment.
 +if {1} {
 +  set wasiSdkDir [opt-val with-wasi-sdk] ; # ??? [lindex [opt-val with-wasi-sdk] end]
 +  #puts "x wasiSdkDir=$wasiSdkDir foo=[lindex [opt-val with-wasi-sdk] end]"
 +  if {$wasiSdkDir eq ""} {
 +    define HAVE_WASI_SDK 0
 +    define WASI_SDK_DIR ""
 +  } else {
 +    msg-checking "Checking WASI SDK directory \[$wasiSdkDir]... "
 +    if {![file exists $wasiSdkDir/bin/clang]} {
 +      user-error "--with-wasi-sdk=${wasiSdkDir} directory does not contain bin/clang"
 +    }
 +    msg-result "using wasi-sdk clang, disabling: tcl, CLI shell, DLL, threading"
 +    define HAVE_WASI_SDK 1
 +    define WASI_SDK_DIR $wasiSdkDir
 +    hwaci-opt-set tcl 0
 +    hwaci-opt-set threadsafe 0
 +    set cross_compiling 1
 +    set enable_shared 0
 +
 +    # Changing --host and --target have no effect here except to possibly
 +    # cause confusion. autoconf has finished processing them by this
 +    # point.
 +    #
 +    #  host_alias=wasm32-wasi
 +    #  target=wasm32-wasi
 +    #
 +    # Merely changing CC and LD to the wasi-sdk's is enough to get
 +    # sqlite3.o building in WASM format.
 +    # XXX CC="${wasiSdkDir}/bin/clang"
 +    # XXX LD="${wasiSdkDir}/bin/wasm-ld"
 +    # XXX RANLIB="${wasiSdkDir}/bin/llvm-ranlib"
 +    #  set cross_compiling yes
 +    #  hwaci-opt-set threadsafe 0
 +    #  set use_tcl no
 +    #  hwaci-opt-set tcl 0
 +    # libtool is apparently hard-coded to use gcc for linking DLLs, so
 +    # we disable the DLL build...
 +    #  set enable_shared no
 +  }
 +  unset wasiSdkDir
 +}; # --wasi-sdk-dir
 +
 +#########
 +# Enable large file support (if special flags are necessary)
 +cc-check-lfs
 +
 +#########
 +# Check for needed/wanted data types
 +cc-check-types int8_t int16_t int32_t int64_t intptr_t \
 +  uint8_t uint16_t uint32_t uint64_t uintptr_t
 +
 +cc-check-functions gmtime_r isnan localtime_r localtime_s \
 +  malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64
 +
 +cc-check-function-in-lib fdatasync rt
 +define LDFLAGS_FDATASYNC [get-define lib_fdatasync]
 +undefine lib_fdatasync
 +
 +#########
 +# Check for needed/wanted headers
 +cc-check-includes sys/types.h stdlib.h stdint.h inttypes.h malloc.h
 +if {[cc-check-includes zlib.h] && [cc-check-function-in-lib deflate z]} {
 +  # TODO: port over the more sophisticated zlib search from the fossil auto.def
 +  define HAVE_ZLIB 1; # "-DSQLITE_HAVE_ZLIB=1"
 +  define LDFLAGS_ZLIB -lz
 +} else {
 +  define HAVE_ZLIB 0
 +  define LDFLAGS_ZLIB ""
 +}
 +
 +hwaci-define-if-opt-truthy amalgamation USE_AMALGAMATION \
 +  "Use amalgamation for builds?"
 +hwaci-define-if-opt-truthy gcov USE_GCOV "Use gcov?"
 +hwaci-define-if-opt-truthy test-status TSTRNNR_OPTS \
 +  "test-runner flags:" {--status} {}
 +hwaci-define-if-opt-truthy linemacros AMALGAMATION_LINE_MACROS \
 +  "Use #line macros in the amalgamation:" {--linemacros=1} {--linemacros=0}
 +msg-checking "Debug build? "
 +hwaci-if-opt-truthy with-debug {
 +  define SQLITE_DEBUG 1
 +  define TARGET_DEBUG {-DSQLITE_DEBUG=1 -DSQLITE_ENABLE_SELECTTRACE -DSQLITE_ENABLE_WHERETRACE -O0 -Wall}
 +  msg-result yes
 +} {
 +  define TARGET_DEBUG {-DNDEBUG}
 +  msg-result no
 +}
 +
 +if {1} {
 +  # Temporary quick hack for finding "a" tclsh. TODO is port the
 +  # full-featured check which lives in the elseif part of this block.
 +  #
 +  # Also TODO is figure out whether we can use jimtcl for our internal
 +  # build-tool uses (as opposed to testing purposes, which requires
 +  # the tcl SQLite module).
 +  if {![cc-path-progs tclsh]} {
 +    user-error "Cannot find tclsh"
 +  }
 +} elseif {0} {
 +  #########
 +  # Figure out all the name of a working tclsh and parameters needed to compile against Tcl.
 +  # The --with-tcl= and/or --with-tclsh= configuration arguments might be useful for this.
 +  #
 +  # XXX AC_ARG_WITH tclsh AS_HELP_STRING([--with-tclsh=PATHNAME],[full pathname of a tclsh to use])
 +  # XXX AC_ARG_WITH tcl AS_HELP_STRING([--with-tcl=DIR],[directory containing (tclConfig.sh)])
 +  # if {![opt-bool tcl]} {
 +  #   set use_tcl $enableval
 +  # } else {
 +  #   set use_tcl yes
 +  # }
 +  #set original_use_tcl ${use_tcl}
 +  # XXX if test x"${with_tclsh}" == x -a x"${with_tcl}" == x; then
 +  # XXX AC_CHECK_PROGS TCLSH_CMD tclsh8.6 tclsh tclsh9.0 none
 +  #set with_tclsh ${TCLSH_CMD}
 +  # XXX fi
 +  # XXX if test x"${with_tclsh}" != x -a x"${with_tclsh}" != xnone; then
 +  # XXX TCLSH_CMD=${with_tclsh}
 +  #msg-result "using tclsh at \"$TCLSH_CMD\""
 +  # XXX if test x"${use_tcl}" = "xyes"; then
 +  #set with_tcl `${with_tclsh} <${srcdir}/tool/find_tclconfig.tcl`
 +  # XXX if test x"${with_tcl}" != x; then
 +  #msg-result "$TCLSH_CMD recommends the tclConfig.sh at ${with_tcl}"
 +  # XXX else
 +  #msg-result Warning: "$TCLSH_CMD is unable to recommend a tclConfig.sh"
 +  #set use_tcl no
 +  # XXX fi
 +  # XXX fi
 +  # XXX fi
 +  # XXX if test x"${use_tcl}" = "xyes"; then
 +  # XXX if test x"${with_tcl}" != x; then
 +  # XXX if test -r ${with_tcl}/tclConfig.sh; then
 +  # set tclconfig "${with_tcl}/tclConfig.sh"
 +  # XXX else
 +  # XXX for i in tcl8.6 tcl9.0 lib; do
 +  # XXX if test -r ${with_tcl}/$i/tclConfig.sh; then
 +  #set tclconfig ${with_tcl}/$i/tclConfig.sh
 +  # XXX break
 +  # XXX fi
 +  # XXX done
 +  # XXX fi
 +  # XXX if test ! -r "${tclconfig}"; then
 +  #user-error "no tclConfig.sh file found under ${with_tcl}"
 +  # XXX fi
 +  # XXX else
 +  # If we have not yet found a tclConfig.sh file, look in $libdir whic is
 +  # set automatically by autoconf or by the --prefix command-line option.
 +  # See https://sqlite.org/forum/forumpost/e04e693439a22457
 +  #set libdir ${prefix}/lib
 +  # XXX if test -r ${libdir}/tclConfig.sh; then
 +  #set tclconfig ${libdir}/tclConfig.sh
 +  # XXX else
 +  # XXX for i in tcl8.6 tcl9.0 lib; do
 +  # XXX if test -r ${libdir}/$i/tclConfig.sh; then
 +  #set tclconfig ${libdir}/$i/tclConfig.sh
 +  # XXX break
 +  # XXX fi
 +  # XXX done
 +  # XXX fi
 +  # XXX if test ! -r "${tclconfig}"; then
 +  #user-error "cannot find a usable tclConfig.sh file.
 +  #        Use --with-tcl=DIR to specify a directory where tclConfig.sh can be found.
 +  #        SQLite does not use TCL internally, but TCL is required to build SQLite
 +  #        from canonical sources and TCL is required for testing."
 +  # XXX fi
 +  # XXX fi
 +  # msg-result "loading TCL configuration from ${tclconfig}"
 +  # XXX . ${tclconfig}
 +  # XXX autosetup automatically substitutes all define'd values
 +  #     In general, simply 'define' the value rather than using a shell
 +  #     variable and AC_SUBST.
 +  #
 +  # XXX AC_SUBST TCL_INCLUDE_SPEC
 +  # XXX AC_SUBST TCL_LIB_SPEC
 +  # XXX AC_SUBST TCL_STUB_LIB_SPEC
 +  # There are lots of other configuration variables that are provided by the
 +  # tclConfig.sh file and that could be included here.  But as of right now,
 +  # TCL_LIB_SPEC is the only what that the Makefile uses.
 +  # XXX HAVE_TCL=1
 +  # XXX elif test x"${original_use_tcl}" = "xno"; then
 +  # msg-result "unable to run tests because of --disable-tcl"
 +  # XXX HAVE_TCL=0
 +  # XXX else
 +  # msg-result "unable to run tests because no tclConfig.sh file could be located"
 +  # XXX HAVE_TCL=0
 +  # XXX fi
 +  # XXX AC_SUBST HAVE_TCL
 +  # XXX if test x"$TCLSH_CMD" == x; then
 +  # XXX TCLSH_CMD=${TCL_EXEC_PREFIX}/bin/tclsh${TCL_VERSION}
 +  # XXX if test ! -x ${TCLSH_CMD}; then
 +  # set _2 ${TCL_EXEC_PREFIX}/bin/tclsh
 +  # XXX if test ! -x ${TCLSH_CMD_2}; then
 +  # msg-result Warning: "cannot find a usable tclsh at either ${TCLSH_CMD} or ${TCLSH_CMD_2}"
 +  # XXX TCLSH_CMD=none
 +  # XXX else
 +  # XXX TCLSH_CMD=${TCLSH_CMD_2}
 +  # XXX fi
 +  # XXX fi
 +  # XXX fi
 +  # XXX if test "$TCLSH_CMD" = "none"; then
 +  # If we can't find a local tclsh, then building the amalgamation will fail.
 +  # We act as though --disable-amalgamation has been used.
 +  # msg-result Warning: "Warning: can't find tclsh - defaulting to non-amalgamation build."
 +  # XXX USE_AMALGAMATION=0
 +  # XXX TCLSH_CMD="tclsh"
 +  # XXX fi
 +  # XXX AC_SUBST TCLSH_CMD
 +
 +  # XXX AC_ARG_VAR TCLLIBDIR Where to install tcl plugin
 +  # XXX if test "x${TCLLIBDIR+set}" != "xset" ; then
 +  # XXX for i in `echo 'puts stdout $auto_path' | ${TCLSH_CMD}` ; do
 +  # XXX if test -d $i ; then
 +  # XXX TCLLIBDIR=$i
 +  # XXX break
 +  # XXX fi
 +  # XXX done
 +  # XXX TCLLIBDIR="${TCLLIBDIR}/sqlite3"
 +  # XXX fi
 +}
 +
 +
 +msg-checking "Support threadsafe operation? "
 +hwaci-if-opt-truthy threadsafe {
 +  msg-result yes
 +  add-feature-flag -DSQLITE_THREADSAFE=1
 +  if {![cc-check-function-in-lib pthread_create pthread]
 +      || ![cc-check-function-in-lib pthread_mutexattr_init pthread]} {
 +    user-error "Missing required pthread bits"
 +  }
 +  define LDFLAGS_PTHREAD [get-define lib_pthread_create]
 +  undefine lib_pthread_create
 +} {
 +  msg-result no
 +  add-feature-flag -DSQLITE_THREADSAFE=0
 +  define LDFLAGS_PTHREAD ""
 +}
 +
 +##########
 +# Do we want to support release?
 +#
 +# Maintenance note: this might be irrelevant with an autosetup port,
 +# as it appears to be related to libtool (part of the autotools).
 +#
 +if {0} {
 +  hwaci-if-opt-truthy releasemode {
 +    msg-result "Release-mode build."
 +    set enable_releasemode 1
 +  } {
 +    msg-result "Non-release-mode build."
 +    set enable_releasemode 0
 +  }
 +}
 +
 +if {0} {
 +  msg-checking "Checking whether to support shared library linked as release mode or not..."
 +  # XXX if test "$enable_releasemode" = "no"; then
 +  # XXX ALLOWRELEASE=""
 +  msg-result "no"
 +  # XXX else
 +  # XXX ALLOWRELEASE="-release `cat $srcdir/VERSION`"
 +  msg-result "yes"
 +  # XXX fi
 +  # XXX AC_SUBST ALLOWRELEASE
 +}
 +
 +##########
 +# Do we want temporary databases in memory?
 +#
 +if {1} {
 +  set ts [opt-val with-tempstore no]
 +  set tsn 1
 +  msg-checking "Use an in-ram database for temporary tables? "
 +  switch -- $ts {
 +    never  { set tsn 0 }
 +    no     { set tsn 1 }
 +    yes    { set tsn 2 }
 +    always { set tsn 3 }
 +    default {
 +      user-error "Invalid with-tempstore value \[$ts]. Use one of: never, no, yes, always"
 +    }
 +  }
 +  msg-result $ts
 +  define TEMP_STORE $tsn
 +  unset ts tsn
 +}
 +
 +if {0} {
 +  ##########
 +  # Figure out what C libraries are required to compile programs
 +  # that use "readline()" library.
 +  #
 +  # XXX TARGET_READLINE_LIBS=""
 +  # XXX TARGET_READLINE_INC=""
 +  # XXX TARGET_HAVE_READLINE=0
 +  # XXX TARGET_HAVE_EDITLINE=0
 +  if {[opt-bool editline]} {
 +    set with_editline $enableval
 +  } else {
 +    set with_editline auto
 +  }
 +  if {![opt-bool readline]} {
 +    set with_readline $enableval
 +  } else {
 +    set with_readline auto
 +  }
 +
 +  # XXX if test x"$with_editline" != xno; then
 +  # XXX sLIBS=$LIBS
 +  # XXX LIBS=""
 +  # XXX TARGET_HAVE_EDITLINE=1
 +  if {[cc-check-function-in-lib readline edit]} {
 +    set with_readline no
 +  } else {
 +    # XXX TARGET_HAVE_EDITLINE=0
 +  }
 +  # XXX TARGET_READLINE_LIBS=$LIBS
 +  # XXX LIBS=$sLIBS
 +  # XXX fi
 +  # XXX if test x"$with_readline" != xno; then
 +  set found "yes"
 +
 +  if {[opt-val with-readline-lib] ne {}} {
 +    set withval [lindex [opt-val with-readline-lib] end]
 +    set with_readline_lib $withval
 +  } else {
 +    set with_readline_lib "auto"
 +  }
 +  # XXX if test "x$with_readline_lib" = xauto; then
 +  # XXX save_LIBS="$LIBS"
 +  # XXX LIBS=""
 +  if {[cc-check-function-in-lib tgetent readline ncurses curses termcap]} {
 +    # XXX term_LIBS="$LIBS"
 +  } else {
 +    # XXX term_LIBS=""
 +  }
 +  if {[cc-check-function-in-lib readline readline]} {
 +    # XXX TARGET_READLINE_LIBS="-lreadline"
 +  } else {
 +    set found "no"
 +  }
 +  # XXX TARGET_READLINE_LIBS="$TARGET_READLINE_LIBS $term_LIBS"
 +  # XXX LIBS="$save_LIBS"
 +  # XXX else
 +  # XXX TARGET_READLINE_LIBS="$with_readline_lib"
 +  # XXX fi
 +
 +  if {[opt-val with-readline-inc] ne {}} {
 +    set withval [lindex [opt-val with-readline-inc] end]
 +    set with_readline_inc $withval
 +  } else {
 +    set with_readline_inc "auto"
 +  }
 +  # XXX if test "x$with_readline_inc" = xauto; then
 +  if {[cc-check-includes readline.h]} {
 +    set found "yes"
 +  } else {
 +    set found "no"
 +    # XXX if test "$cross_compiling" != yes; then
 +    # XXX for dir in /usr /usr/local /usr/local/readline /usr/contrib /mingw; do
 +    # XXX for subdir in include include/readline; do
 +    # XXX AC_CHECK_FILE $dir/$subdir/readline.h found=yes
 +    # XXX if test "$found" = "yes"; then
 +    # XXX TARGET_READLINE_INC="-I$dir/$subdir"
 +    # XXX break
 +    # XXX fi
 +    # XXX done
 +    # XXX test "$found" = "yes" && break
 +    # XXX done
 +    # XXX fi
 +  }
 +  # XXX else
 +  # XXX TARGET_READLINE_INC="$with_readline_inc"
 +  # XXX fi
 +
 +  # XXX if test x"$found" = xno; then
 +  # XXX TARGET_READLINE_LIBS=""
 +  # XXX TARGET_READLINE_INC=""
 +  # XXX TARGET_HAVE_READLINE=0
 +  # XXX else
 +  # XXX TARGET_HAVE_READLINE=1
 +  # XXX fi
 +  # XXX fi
 +  if {[opt-val with-linenoise] ne {}} {
 +    set withval [lindex [opt-val with-linenoise] end]
 +    set with_linenoise $withval
 +  } else {
 +    set with_linenoise "no"
 +  }
 +  # XXX if test "x$with_linenoise" != "xno"; then
 +  # XXX TARGET_HAVE_READLINE=0
 +  # XXX TARGET_HAVE_EDITLINE=0
 +  # XXX TARGET_HAVE_LINENOISE=1
 +  # XXX TARGET_READLINE_INC="-I${with_linenoise}"
 +  # XXX TARGET_READLINE_LIBS="${with_linenoise}/linenoise.c"
 +  # XXX echo "using linenoise source code at ${with_linenoise}"
 +  # XXX else
 +  # XXX TARGET_HAVE_LINENOISE=0
 +  # XXX echo "not using linenoise"
 +  # XXX fi
 +
 +  # XXX AC_SUBST TARGET_READLINE_LIBS
 +  # XXX AC_SUBST TARGET_READLINE_INC
 +  # XXX AC_SUBST TARGET_HAVE_READLINE
 +  # XXX AC_SUBST TARGET_HAVE_EDITLINE
 +  # XXX AC_SUBST TARGET_HAVE_LINENOISE
 +}
 +
 +hwaci-if-opt-truthy load-extension {
 +  if {[cc-check-function-in-lib dlopen dl]} {
 +    define LDFLAGS_DLOPEN [get-define lib_dlopen]
 +    undefine lib_dlopen
 +  } else {
 +    user-error "dlopen() not found. Use --disable-load-extension to bypass this check."
 +  }
 +} {
 +  define LDFLAGS_DLOPEN ""
 +  add-feature-flag {-DSQLITE_OMIT_LOAD_EXTENSION=1}
 +  msg-result "Disabling loadable extensions."
 +}
 +
 +hwaci-if-opt-truthy math {
 +  if {![cc-check-function-in-lib ceil m]} {
 +    user-error "Cannot find libm functions. Use --disable-math to bypass this."
 +  }
 +  define LDFLAGS_MATH [get-define lib_ceil]
 +  undefine lib_ceil
 +  add-feature-flag {-DSQLITE_ENABLE_MATH_FUNCTIONS}
 +  msg-result "Enabling math SQL functions"
 +} {
 +  define LDFLAGS_MATH ""
 +  msg-result "Disabling math SQL functions"
 +}
 +
 +hwaci-if-opt-truthy json {
 +  msg-result "Enabling JSON SQL functions"
 +} {
 +  add-feature-flag {-DSQLITE_OMIT_JSON}
 +  msg-result "Disabling JSON SQL functions"
 +}
 +
 +if {0} {
 +  # is this still relevant?
 +
 +  #########
 +  # attempt to duplicate any OMITS and ENABLES into the ${OPT_FEATURE_FLAGS} parameter
 +  # XXX for option in $CFLAGS $CPPFLAGS
 +  # XXX do
 +  # XXX case $option in
 +  # XXX -DSQLITE_OMIT*) OPT_FEATURE_FLAGS="$OPT_FEATURE_FLAGS $option";;
 +  # XXX -DSQLITE_ENABLE*) OPT_FEATURE_FLAGS="$OPT_FEATURE_FLAGS $option";;
 +  # XXX esac
 +  # XXX done
 +  # XXX AC_SUBST OPT_FEATURE_FLAGS
 +
 +  # attempt to remove any OMITS and ENABLES from the $(CFLAGS) parameter
 +  # XXX ac_temp_CFLAGS=""
 +  # XXX for option in $CFLAGS
 +  # XXX do
 +  # XXX case $option in
 +  # XXX -DSQLITE_OMIT*) ;;
 +  # XXX -DSQLITE_ENABLE*) ;;
 +  # XXX *) ac_temp_CFLAGS="$ac_temp_CFLAGS $option";;
 +  # XXX esac
 +  # XXX done
 +  # XXX CFLAGS=$ac_temp_CFLAGS
 +
 +  # attempt to remove any OMITS and ENABLES from the $(CPPFLAGS) parameter
 +  # XXX ac_temp_CPPFLAGS=""
 +  # XXX for option in $CPPFLAGS
 +  # XXX do
 +  # XXX case $option in
 +  # XXX -DSQLITE_OMIT*) ;;
 +  # XXX -DSQLITE_ENABLE*) ;;
 +  # XXX *) ac_temp_CPPFLAGS="$ac_temp_CPPFLAGS $option";;
 +  # XXX esac
 +  # XXX done
 +  # XXX CPPFLAGS=$ac_temp_CPPFLAGS
 +
 +  # attempt to remove any OMITS and ENABLES from the $(BUILD_CFLAGS) parameter
 +  # XXX ac_temp_BUILD_CFLAGS=""
 +  # XXX for option in $BUILD_CFLAGS
 +  # XXX do
 +  # XXX case $option in
 +  # XXX -DSQLITE_OMIT*) ;;
 +  # XXX -DSQLITE_ENABLE*) ;;
 +  # XXX *) ac_temp_BUILD_CFLAGS="$ac_temp_BUILD_CFLAGS $option";;
 +  # XXX esac
 +  # XXX done
 +  # XXX BUILD_CFLAGS=$ac_temp_BUILD_CFLAGS
 +}
 +
 +##########
 +# Emscripten SDK for building the web-based wasm components.
 +#
 +if {[hwaci-check-emsdk]} {
 +  set wrapper $srcdir/tool/emcc.sh
 +  define EMCC_WRAPPER $wrapper
++  hwaci-make-from-dot-in $wrapper
 +  catch {exec chmod u+x $wrapper}
 +  unset wrapper
 +} else {
 +  define EMCC_WRAPPER ""
 +  catch {exec rm -f $srcdir/tool/emcc.sh}
 +}
 +
 +proc affirm-have-math {} {
 +  if {![cc-check-function-in-lib log m]} {
 +    user-error "Missing required math APIs"
 +  }
 +  define LDFLAGS_MATH [get-define lib_log ""]
 +}
 +
 +########################################################################
 +# Handle various SQLITE_ENABLE_... feature flags.
 +foreach {boolFlag featureFlag ifSetEvalThis} {
 +  all         {} {
 +    hwaci-opt-set fts4
 +    hwaci-opt-set fts5
 +    hwaci-opt-set geopoly
 +    hwaci-opt-set rtree
 +    hwaci-opt-set session
 +  }
 +  fts4         -DSQLITE_ENABLE_FTS4    {affirm-have-math}
 +  fts5         -DSQLITE_ENABLE_FTS5    {affirm-have-math}
 +  geopoly      -DSQLITE_ENABLE_GEOPOLY {hwaci-opt-set rtree}
 +  rtree        -DSQLITE_ENABLE_RTREE   {}
 +  session      {-DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK} {}
 +  update-limit -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT {}
 +  memsys3      {} {
 +    if {[opt-bool memsys5]} {
 +      msg-result "NOT enabling memsys3 because memsys5 is enabled."
 +    } else {
 +      add-feature-flag -DSQLITE_ENABLE_MEMSYS3
 +    }
 +  }
 +  memsys5      -DSQLITE_ENABLE_MEMSYS5 {}
 +} {
 +  if {[hwaci-opt-truthy $boolFlag]} {
 +    add-feature-flag $featureFlag
 +    msg-result "Enabling $boolFlag"
 +    eval $ifSetEvalThis
 +  } else {
 +    msg-result "Not enabling $boolFlag"
 +  }
 +}
 +
 +
 +#########
 +# Generate the output files.
 +#
 +if {1} {
 +  # mystery: why are defines (srcdir, top_srcdir) both absolute when emitted
 +  # from make-config-header but relative when emitted via make-template?
 +
 +  hwaci-make-from-dot-in Makefile
 +  hwaci-make-from-dot-in sqlite3.pc
 +  #hwaci-make-from-dot-in ext/wasm/GNUmakefile
 +  if {0} {
 +    # output from make-config-header is not quite the same as that from the
 +    # autotools. We may need to write a custom replacement.
 +    # hwaci-make-from-dot-in sqlite_cfg.h
 +    # make-config-header sqlite_cfg.h -bare {SIZEOF_* HAVE_DECL_*} -auto HAVE_* -none *
 +    # make-config-header sqlite_cfg.h -bare {SIZEOF_* HAVE_*} -none *
 +    # make-config-header sqlite_cfg.h
 +  }
 +}
 +
 +set oFF [get-define OPT_FEATURE_FLAGS]
 +if {"" ne $oFF} {
 +  define OPT_FEATURE_FLAGS [lsort -unique $oFF]
 +  msg-result "Final feature flags: [get-define OPT_FEATURE_FLAGS]"
 +}
 +unset oFF
 +
 +hwaci-if-opt-truthy dump-defines {
 +  global DUMP_DEFINES_FILE
 +  msg-result "--dump-defines is creating file: $DUMP_DEFINES_FILE"
 +  make-config-header $DUMP_DEFINES_FILE \
 +    -bare {OPT_FEATURE_FLAGS SQLITE_OS* SQLITE_DEBUG LDFLAGS_* USE_*} \
 +    -str {BIN_* CC LD AR} \
 +    -auto {*}
 +  # achtung: ^^^^ whichever SQLITE_OS_foo flag which is set to 0 will
 +  # get _undefined_ here unless it's part of the -bare set.
 +  if {0} {
 +    foreach x $::define {
 +      puts "\t$x"
 +    }
 +  }
 +}
diff --cc manifest
index 05ab0fd794092025f1968ddfa2a1c5b49e77c675,e74bcacf3c8fd268aacac4d8723436420408a940..05618500029904d259f269216b9738711dcf58e3
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Remove\sa\smisled\sacrobatics\srelated\sto\scross-compilation,\sbased\son\ssuggestions\sfrom\sSteve\sBennett.\sAdd\sa\squick-n-dirty\splaceholder\scheck\sfor\stclsh\sto\smove\sthat\spart\salong.
- D 2024-09-26T08:25:10.543
 -C In\sthe\sCLI,\sfor\scolumnar\soutput\sformats,\stry\sto\saccount\sfor\sthe\spresence\sof\nzero-width\sand\sdouble-width\scharacters\sin\sthe\soutput\sand\sadjust\scolumn\swidths\naccordingly.
 -D 2024-09-25T09:39:11.501
++C Merge\scurrent\strunk\sinto\sthis\sbranch.
++D 2024-09-26T08:53:37.393
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -14,7 -14,6 +14,7 @@@ F art/icon-80x90.gif 65509ce3e5f86a9cd6
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
  F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
  F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
- F auto.def 7fb946ca447e7139764c8a8c7902f374ea11219fee12dcb236607ada9f49ee2d
++F auto.def caf598afa0fb40cb86bbfa24be170984a16095b36e317c99f3d2521858e89d9c
  F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
  F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
  F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
@@@ -2233,8 -2213,9 +2233,8 @@@ F vsixtest/vsixtest.tcl 6195aba1f12a5e1
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 1d29cd9095595b7b027b90d644dc4767fde0b6f98316c0eb82014b7aad6770d7
- R 69eca432a82c8eab4ae5d756a58d2b01
 -P 42bb941584a1ac922ee6b0b6ecadce71c9259555563cf49913a6f820f3f9b887 b217e3004b58af0e777726bdd652b999ad41815261299ef4ce8f8d2f6b0afe8d
 -R 5fcf6775e686fdd76943c66cce860cb0
 -T +closed b217e3004b58af0e777726bdd652b999ad41815261299ef4ce8f8d2f6b0afe8d
 -U drh
 -Z af457fc67e3efab459ef7260d9a5da46
++P c419168938b009b2cf8a42a01272971497b5329792ccb8cef235f47ab5f142e2 9592b9ba3ad7a842cdd4c4010da278485a6fdec7e811bda01ebe640162a8c3b6
++R af319e126fc6fc33c648f8f6f76c92f2
 +U stephan
- Z 44573c215dc1833642057c91ccefe177
++Z b233c57887cfbb961cc652ff444473d0
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 28cf2f01435b64447abc8972076244cd5e2cbcfd,5d05a8c7ec528f03bd7b493653796b31cb18399f..15e6e68ed73bab62cd2589f015537cc4f182394a
@@@ -1,1 -1,1 +1,1 @@@
- c419168938b009b2cf8a42a01272971497b5329792ccb8cef235f47ab5f142e2
 -9592b9ba3ad7a842cdd4c4010da278485a6fdec7e811bda01ebe640162a8c3b6
++683a9e1e2f68a5c34fe524867576a4405fa2460880ad0bf4c07799744fea4192