]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Get much of the --with-tcl-related bits working.
authorstephan <stephan@noemail.net>
Wed, 9 Oct 2024 04:01:14 +0000 (04:01 +0000)
committerstephan <stephan@noemail.net>
Wed, 9 Oct 2024 04:01:14 +0000 (04:01 +0000)
FossilOrigin-Name: 4e4a740369d3edc58d35c660b1ea73ee381503f82a98a4b770fd07cef1704e8b

Makefile.in
auto.def
manifest
manifest.uuid
tool/tclConfigShToTcl.sh [new file with mode: 0755]

index 2e4bfec762b402e14913bb8a9fafc35c0028bf10..86aaa6cba4b8eb40eb8c2268c95d07040a6c851b 100644 (file)
@@ -143,6 +143,14 @@ HAVE_TCL = @HAVE_TCL@
 # know the specific version we want to use
 #
 TCLSH_CMD = @TCLSH_CMD@
+TCL_CONFIG_SH = @TCL_CONFIG_SH@
+
+# TCL config info from tclConfig.sh
+TCL_INCLUDE_SPEC = @TCL_INCLUDE_SPEC@
+TCL_LIB_SPEC = @TCL_LIB_SPEC@
+TCL_STUB_LIB_SPEC = @TCL_STUB_LIB_SPEC@
+TCL_EXEC_PREFIX = @TCL_EXEC_PREFIX@
+
 
 # Additional options when running tests using testrunner.tcl
 # This is usually either blank, or else --status
@@ -844,13 +852,14 @@ sourcetest:       srcck1$(BEXE) sqlite3.c
 src-verify:    $(TOP)/tool/src-verify.c
        $(BCC) -o src-verify$(BEXE) $(TOP)/tool/src-verify.c
 
-
-# JimTCL is part of the autosetup suite and is suitable for certain
-# in-tree TCL jobs, but it requires that we build it with non-default
-# flags. Note that the build tree will, if no system-level tclsh is
-# found, also have a ./jimsh0. That one is a bare-bones build for the
-# configure process, whereas we need to build it with another option
-# enabled for use with the various code generators.
+#
+# JimTCL is part of the autosetup suite and is suitable for all
+# current in-tree code-generation TCL jobs, but it requires that we
+# build it with non-default flags. Note that the build tree will, if
+# no system-level tclsh is found, also have a ./jimsh0. That one is a
+# bare-bones build for the configure process, whereas we need to build
+# it with another option enabled for use with the various code
+# generators.
 #
 JIMSH = @srcdir@/jimsh
 @if CFLAGS_JIMSH
index 36ff88a1e9c87738ec71dcd2adcca829778ad9cf..455d71d36c6b2e3ea61e64c72aa2251355885b33 100644 (file)
--- a/auto.def
+++ b/auto.def
@@ -30,8 +30,8 @@ define cross_compiling ${cross_compiling}
 #
 options {
   with-debug:=1        => {Enable debug build flags}
-  with-tclsh:          => {Full pathname of tclsh to use}
-  with-tcl:            => {Directory containing tclConfig.sh}
+  with-tclsh:PATH      => {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}
@@ -69,7 +69,7 @@ options {
 #
 #  --releasemode: libtool-specific (which we don't have now)
 #
-########################################################################
+#
 
 
 set srcdir $autosetup(srcdir)
@@ -94,6 +94,7 @@ if {![file exists sqlite3.pc.in]} {
 
 cc-check-tools ld ar
 
+########################################################################
 # 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
@@ -154,7 +155,7 @@ cc-check-tools ld ar
 #        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 {}
 define OPT_SHELL {}; # CFLAGS for the sqlite3 CLI app
@@ -218,6 +219,7 @@ define BUILD_CFLAGS [get-env CFLAGS {-g}]
 #
 # 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]"
@@ -256,30 +258,16 @@ if {1} {
   unset wasiSdkDir
 }; # --wasi-sdk-dir
 
-########################################################################
-# Check which TCL to use as a code generator
-define CFLAGS_JIMSH {}
-puts "Looking for path-resolution function for JimTCL... "
-define BTCL "\$(JIMSH)"
-if {[cc-check-functions realpath]} {
-  define-append CFLAGS_JIMSH -DHAVE_REALPATH
-} elseif {[cc-check-functions _fullpath]} {
-  # _fullpath() is a Windows API
-  define-append CFLAGS_JIMSH -DHAVE__FULLPATH
-} else {
-  puts "Cannot find realpath() or _fullpath(). Falling back to system's TCL for code generation."
-}
-
-########################################################################
+#
 # 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
 
-########################################################################
+#
 # Check for needed/wanted functions
 cc-check-functions gmtime_r isnan localtime_r localtime_s \
   malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64
@@ -288,7 +276,7 @@ hwaci-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 sys/stat.h dlfcn.h unistd.h \
@@ -296,7 +284,8 @@ cc-check-includes \
   string.h strings.h \
   stdint.h inttypes.h
 
-# These are optional for JimTCL:
+# These are optional for JimTCL but necessary if we want to use it for
+# code generation:
 cc-check-includes dirent.h sys/time.h
 
 if {[cc-check-includes zlib.h] && [hwaci-check-function-in-lib deflate z]} {
@@ -337,157 +326,135 @@ hwaci-if-opt-truthy with-debug {
 
 ########################################################################
 # TCL...
+#
+# Under construction. An attempt to port most of the
+# --with-tcl/--with-tclsh logic from configure.ac to autosetup.  This
+# part would actually be easier in the shell, and some of it will
+# seemingly be impossible without shell code.
 define HAVE_TCL 0
 define TCLSH_CMD {exit 1}
-if {"" eq [get-define CFLAGS_JIMSH]} {
-  # We can't use JimTCL for in-tree generation on this system, so...
-  #
-  # Temporary solution for finding "a" tclsh. TODO is port the
-  # full-featured check which lives in the elseif part of this block.
-  set tclsh [hwaci-first-bin-of tclsh8.6 tclsh tclsh9.0]
-  if {"" eq $tclsh} {
-    user-error "Cannot find tclsh, which is required to build certain files."
-  }
-  define TCLSH_CMD $tclsh
-  define BTCL $tclsh
-  define HAVE_TCL 0 ; # until the following elseif block is ported
-} elseif {0} {
-  # Porting this section of configure.ac is going to be a bit of a slog...
-  set tEnable [hwaci-opt-truthy tcl]
-  set use_tcl $tEnable
+proc hwaci-check-tcl {} {
+  global top_srcdir
+  puts "Checking for a suitable tcl... "
+  set optTcl [hwaci-opt-truthy tcl]
+  set use_tcl $optTcl
   set tclsh ""
-  #set original_use_tcl ${use_tcl}
-  #########
-  # 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)])
   set with_tclsh [opt-val with-tclsh]
   set with_tcl [opt-val with-tcl]
-
+#  puts "hwaci-check-tcl: use_tcl ${use_tcl}"
+#  puts "hwaci-check-tcl: with_tclsh=${with_tclsh}"
+#  puts "hwaci-check-tcl: with_tcl=$with_tcl"
   if {"" eq $with_tclsh && "" eq $with_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
     set with_tclsh [hwaci-first-bin-of tclsh8.6 tclsh tclsh9.0]
   }
 
-  if {"" ne $with_tclsh } {
-    # XXX if test x"${with_tclsh}" != x -a x"${with_tclsh}" != xnone; then
-    # XXX TCLSH_CMD=${with_tclsh}
-    set tclsh $with_tclsh
-    puts "using tclsh at \"$tclsh\""
+  if {"" ne $with_tclsh} {
+    if {![file isfile $with_tclsh]} {
+      hwaci-error "TCL shell $with_tclsh is not a file"
+    } elseif {![file executable $with_tclsh]} {
+      hwaci-error "TCL shell $with_tclsh is not executable"
+    } else {
+      define TCLSH_CMD $with_tclsh
+      puts "Using tclsh at \"$with_tclsh\""
+    }
     if {$use_tcl} {
-      # 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
+      #set with_tcl [exec $with_tclsh $top_srcdir/tool/find_tclconfig.tcl]
+      if {[catch {exec $with_tclsh $top_srcdir/tool/find_tclconfig.tcl} result] == 0} {
+        set with_tcl $result
+      }
+      if {"" ne $with_tcl && [file isdir $with_tcl]} {
+        puts "$with_tclsh recommends the tclConfig.sh from $with_tcl"
+      } else {
+        puts "$with_tclsh is unable to recommand a tclConfig.sh"
+        set use_tcl 0
+      }
     }
-    # 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
+  set cfg ""
+  set tclSubdirs {tcl8.6 tcl9.0 lib}
+  if {$use_tcl} {
+    if {"" ne $with_tcl} {
+      if {[file readable "${with_tcl}/tclConfig.sh"]} {
+        set cfg "${with_tcl}/tclConfig.sh"
+      } else {
+        foreach i $tclSubdirs {
+          if {[file readable "${with_tcl}/$i/tclConfig.sh"]} {
+            set cfg "${with_tcl}/$i/tclConfig.sh"
+            break
+          }
+        }
+      }
+      if {"" eq $cfg} {
+        hwaci-error "No tclConfig.sh found under ${with_tcl}"
+      }
+    } else {
+      # If we have not yet found a tclConfig.sh file, look in $libdir which is
+      # set automatically by autosetup or by the --prefix command-line option.
+      # See https://sqlite.org/forum/forumpost/e04e693439a22457
+      set libdir [get-define libdir]
+      if {[file readable "${libdir}/tclConfig.sh"]} {
+        set cfg "${libdir}/tclConfig.sh"
+      } else {
+        foreach i $tclSubdirs {
+          if {[file readable "${libdir}/$i/tclConfig.sh"]} {
+            set cfg "${libdir}/$i/tclConfig.sh"
+            break
+          }
+        }
+      }
+      if {![file readable $cfg]} {
+        hwaci-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.
+        }
+      }
+    }
+  } elseif {!$optTcl} {
+    puts "Unable to run tests because of --disable-tcl"
+  } else {
+    puts "Unable to run tests because no tclConfig.sh file could be located"
+  }
 
-  unset tEnable with_tclsh with_tcl
-}; # end of tcl
+  define HAVE_TCL $use_tcl
+  define TCL_CONFIG_SH $cfg
+#  puts "hwaci-check-tcl: with_tclsh=$with_tclsh"
+#  puts "hwaci-check-tcl: with_tcl=$with_tcl"
+#  puts "hwaci-check-tcl: cfg=$cfg"
+#  puts "hwaci-check-tcl: use_tcl ${use_tcl}"
+}
 
+hwaci-check-tcl
 
-hwaci-check-rpath
+# The historical configure.ac sources tclConfig.sh so that it can use
+# the several TCL_... env vars. We obviously cannot do that from TCL,
+# so we apply a level of indirection. Note that if the config is not
+# available, this generates empty-string entries for the various
+# options we're interested in.
+eval [exec "${top_srcdir}/tool/tclConfigShToTcl.sh" "[get-define TCL_CONFIG_SH]"]
+
+########################################################################
+# Check which TCL to use as a code generator. Prefer jimsh simply
+# because we have it in-tree (it's part of autosetup).
+define CFLAGS_JIMSH {}
+puts "Looking for path-resolution function for JimTCL... "
+if {[cc-check-functions realpath]} {
+  define-append CFLAGS_JIMSH -DHAVE_REALPATH
+  define BTCL "\$(JIMSH)"
+} elseif {[cc-check-functions _fullpath]} {
+  # _fullpath() is a Windows API
+  define-append CFLAGS_JIMSH -DHAVE__FULLPATH
+  define BTCL "\$(JIMSH)"
+} elseif {"" ne [get-define TCLSH_CMD]} {
+  define BTCL "\$(TCLSH_CMD)"
+} else {
+  hwaci-error "Cannot find a tclsh to use for code generation."
+}
+
+# /TCL
+########################################################################
 
 ########################################################################
 # Thread safety?
@@ -507,34 +474,6 @@ hwaci-if-opt-truthy threadsafe {
   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?
 #
@@ -706,57 +645,6 @@ hwaci-if-opt-truthy math {
   msg-result "Disabling math 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.
 #
@@ -813,10 +701,10 @@ foreach {boolFlag featureFlag ifSetEvalThis} {
 }
 
 ########################################################################
-# Invert the above loop's logic for some explicit
-# SQLITE_OMIT_... cases. If config option $boolFlag is set,
-# [add-feature-flag $featureFlag], where $featureFlag is intended to
-# be -DSQLITE_OMIT_...
+# Invert the above loop's logic for some explicit SQLITE_OMIT_...
+# cases. If config option $boolFlag is set, [add-feature-flag
+# $featureFlag], where $featureFlag is intended to be
+# -DSQLITE_OMIT_...
 foreach {boolFlag featureFlag} {
   json        -DSQLITE_OMIT_JSON
 } {
@@ -830,15 +718,16 @@ foreach {boolFlag featureFlag} {
 
 ########################################################################
 # Maybe extend JimTCL a bit. As of this writing (2024-09-27) it only
-# needs -DHAVE_REALPATH or -DHAVE__FULLPATH to be compatible with our
-# code generators. It can, however, be slightly extended via
-# easy-to-detect features, should we need them.
+# needs (-DHAVE_REALPATH or -DHAVE__FULLPATH) and -DHAVE_DIRENT_H to
+# be compatible with our code generators. It can, however, be slightly
+# extended via easy-to-detect features, should we need them.
 if {0 && "" ne [get-define CFLAGS_JIMSH]} {
   foreach jimFunc {opendir fsync isascii} {
     if {[cc-check-functions $jimFunc]} {
       define-append CFLAGS_JIMSH -DHAVE_[string toupper $jimFunc]
     }
   }
+  #These are hard-coded into jimsh0.c, so we must not -D them:
   #foreach jimDef {HAVE_UNISTD_H HAVE_DIRENT_H} {
   #  if {[is-defined $jimDef]} {
   #    define-append CFLAGS_JIMSH -D$jimDef
@@ -849,6 +738,11 @@ if {0 && "" ne [get-define CFLAGS_JIMSH]} {
 
 define ENABLE_SHARED $enable_shared
 
+
+########################################################################
+# Determine proper rpath-handling flags
+hwaci-check-rpath
+
 ########################################################################
 # Generate the output files.
 #
@@ -884,6 +778,8 @@ if {"" ne $oFF} {
 }
 unset oFF
 
+########################################################################
+# Some build-dev/debug-only output
 hwaci-if-opt-truthy dump-defines {
   global DUMP_DEFINES_FILE
   msg-result "--dump-defines is creating file: $DUMP_DEFINES_FILE"
index c0dca8ca8ec5b298de9424801e605b6df3718691..60c7f85e38a740bab24eb59f24afd73d040639ec 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Fix\sbuild\sportability\sproblems\sdiscovered\son\san\sARM\sOpenBSD\ssystem.
-D 2024-10-08T16:33:42.863
+C Get\smuch\sof\sthe\s--with-tcl-related\sbits\sworking.
+D 2024-10-09T04:01:14.131
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
-F Makefile.in 4cb6e44af5d0ed2a1ad347f008c00d3ddeae8f1dd2089a1348e7c6aa6be8e63d
+F Makefile.in 3d237163c5cf5817eb63f2ce20119372e36f5cf48609dd22292160a26b599de4
 F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
 F Makefile.msc 9c6d80d9d103fa42e931f4c464884a5e577fae8563acc7589bff4e43fbe8f864
 F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159
@@ -14,7 +14,7 @@ F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d
 F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
-F auto.def afec3012da348dd0214047f575131d0a69e1aa67588e212daf604d4393453a3b
+F auto.def 6c4f3b9d88ae343f0634a1534d3918cb3f7a215c65c85d1c3d0cce2f5dd47686
 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
@@ -2207,6 +2207,7 @@ F tool/stack_usage.tcl f8e71b92cdb099a147dad572375595eae55eca43
 F tool/stripccomments.c 20b8aabc4694d0d4af5566e42da1f1a03aff057689370326e9269a9ddcffdc37
 F tool/symbols-mingw.sh 4dbcea7e74768305384c9fd2ed2b41bbf9f0414d
 F tool/symbols.sh 1612bd947750e21e7b47befad5f6b3825b06cce0705441f903bf35ced65ae9b9
+F tool/tclConfigShToTcl.sh e385583402655b1626f7ff737a607687f84aa4660d2125c2bd7daeb91ba424ba x
 F tool/varint.c 5d94cb5003db9dbbcbcc5df08d66f16071aee003
 F tool/vdbe-compress.tcl 1dcb7632e57cf57105248029e6e162fddaf6c0fccb3bb9e6215603752c5a2d4a
 F tool/vdbe_profile.tcl 3ac5a4a9449f4baf77059358ea050db3e34395ccf59c5464d29b91746d5b961e
@@ -2235,8 +2236,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P e9ab211f82f789c89ab52e8d5fe7526c09943b2b8b3002fa7a16fb2b40addc8f
-R 83d7d512ee4d92805faea47e6da138cb
+P ef5348dc3f5b9fbe19753ff85e4da461ee962f0790e5f9cfda6eba522576451b
+R 53257972217ca0415948a8eb62c6c23b
 U stephan
-Z 65540e91f90dac7f75bdfc0fac8976f3
+Z f49c2f1fcffe6fc0ebe3c9d93e81fc78
 # Remove this line to create a well-formed Fossil manifest.
index 24c3e11ae94dbd91b8ed3a318f7a1d02a98a845b..594a612658cd7f777941aec34b26cb48729e9207 100644 (file)
@@ -1 +1 @@
-ef5348dc3f5b9fbe19753ff85e4da461ee962f0790e5f9cfda6eba522576451b
+4e4a740369d3edc58d35c660b1ea73ee381503f82a98a4b770fd07cef1704e8b
diff --git a/tool/tclConfigShToTcl.sh b/tool/tclConfigShToTcl.sh
new file mode 100755 (executable)
index 0000000..e4eefc1
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# A level of indirection for use soley by the configure script
+# (auto.def).
+#
+# Expects to be passed a full path to a tclConfig.sh. It sources it
+# and emits TCL code which sets some vars which are exported by
+# tclConfig.sh.
+#
+# This script expects that the caller has already validated that the
+# file exists, is not a directory, and is readable.
+#
+# If passed no filename, or an empty one, then it emits config code
+# suitable for the "config not found" case.
+if test x = "x$1"; then
+  TCL_INCLUDE_SPEC=
+  TCL_LIB_SPEC=
+  TCL_STUB_LIB_SPEC=
+  TCL_EXEC_PREFIX=
+else
+  . "$1"
+fi
+
+echo "define TCL_INCLUDE_SPEC {$TCL_INCLUDE_SPEC} ;"
+echo "define TCL_LIB_SPEC {$TCL_LIB_SPEC} ;"
+echo "define TCL_STUB_LIB_SPEC {$TCL_STUB_LIB_SPEC} ;"
+echo "define TCL_EXEC_PREFIX {$TCL_EXEC_PREFIX} ;"