From: stephan Date: Thu, 26 Sep 2024 08:53:37 +0000 (+0000) Subject: Merge current trunk into this branch. X-Git-Tag: major-relase~351^2~120 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1e1d9f3d42e8c06d0eb7d0d28a51ee10e9cce7a;p=thirdparty%2Fsqlite.git Merge current trunk into this branch. FossilOrigin-Name: 683a9e1e2f68a5c34fe524867576a4405fa2460880ad0bf4c07799744fea4192 --- b1e1d9f3d42e8c06d0eb7d0d28a51ee10e9cce7a diff --cc auto.def index 7d55af78bd,0000000000..6cac92c5c7 mode 100644,000000..100644 --- a/auto.def +++ b/auto.def @@@ -1,782 -1,0 +1,782 @@@ +# 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 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 1 ++ 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 05ab0fd794,e74bcacf3c..0561850002 --- a/manifest +++ 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 28cf2f0143,5d05a8c7ec..15e6e68ed7 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - c419168938b009b2cf8a42a01272971497b5329792ccb8cef235f47ab5f142e2 -9592b9ba3ad7a842cdd4c4010da278485a6fdec7e811bda01ebe640162a8c3b6 ++683a9e1e2f68a5c34fe524867576a4405fa2460880ad0bf4c07799744fea4192