]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When --with-wasi-sdk is active, temporarily swap CC and CC_FOR_BUILD for purposes...
authorstephan <stephan@noemail.net>
Thu, 31 Oct 2024 06:38:30 +0000 (06:38 +0000)
committerstephan <stephan@noemail.net>
Thu, 31 Oct 2024 06:38:30 +0000 (06:38 +0000)
FossilOrigin-Name: 435f2ee818d7181551c6860b6bc4db97f82d76b58fd82765a6cf49e2d02ff18c

auto.def
manifest
manifest.uuid

index 3242b3cbd31f25fee1169f85bf4a0040577001a3..47ea017a4856061faca87401898489318472601e 100644 (file)
--- a/auto.def
+++ b/auto.def
@@ -225,7 +225,6 @@ define PACKAGE_URL {https://sqlite.org}
 define PACKAGE_VERSION $PACKAGE_VERSION
 define PACKAGE_STRING "[get-define PACKAGE_NAME] $PACKAGE_VERSION"
 define PACKAGE_BUGREPORT [get-define PACKAGE_URL]/forum
-
 msg-result "srcdir = $srcdir"
 msg-result "top_srcdir = $top_srcdir"
 msg-result [proj-bold "Configuring SQLite version $PACKAGE_VERSION"]
@@ -242,7 +241,7 @@ foreach arg $::autosetup(argv) {
 }
 
 # Are we cross-compiling?
-set cross_compiling [proj-is-cross-compiling]
+set isCrossCompiling [proj-is-cross-compiling]
 if {![file exists sqlite3.pc.in]} {
   msg-result "This appears to be an out-of-tree build."
 }
@@ -314,41 +313,51 @@ define BUILD_CFLAGS [get-env BUILD_CFLAGS {-g}]
 ########################################################################
 # Handle --with-wasi-sdk=DIR
 #
-# This must be early because it may change the toolchain and disable
-# several config options.
+# This MUST be run early on because it may change the toolchain and
+# disable a number of config options.
 proc sqlite-check-wasi-sdk {} {
   set wasiSdkDir [opt-val with-wasi-sdk] ; # ??? [lindex [opt-val with-wasi-sdk] end]
   define HAVE_WASI_SDK 0
-  #puts "x wasiSdkDir=$wasiSdkDir foo=[lindex [opt-val with-wasi-sdk] end]"
   if {$wasiSdkDir eq ""} {
     return 0
-  } elseif {$::cross_compiling} {
+  } elseif {$::isCrossCompiling} {
     proj-fatal "Cannot combine --with-wasi-sdk with cross-compilation"
   }
   msg-result "Checking WASI SDK directory \[$wasiSdkDir]... "
   #puts "prefix = [prefix $wasiSdkDir/bin {clang ld}]"
   proj-affirm-files-exist -v {*}[prefix "$wasiSdkDir/bin/" {clang wasm-ld}]
-  msg-result "Using wasi-sdk clang, disabling: tcl, CLI shell, DLL, loadable extensions, threading"
   define HAVE_WASI_SDK 1
   define WASI_SDK_DIR $wasiSdkDir
-  proj-opt-set load-extension 0 ;# ==> --disable-load-extension
-  proj-opt-set threadsafe 0     ;# ==> --threadsafe=0
-  proj-opt-set tcl 0            ;# ==> --disable-tcl
-  proj-opt-set shared 0         ;# ==> --disable-shared
-  set cross_compiling 1
+  # Disable numerous options which we know either can't work or are
+  # not useful in this build...
+  msg-result [proj-bold "Using wasi-sdk clang. Disabling CLI shell and forcing:"]
+  foreach opt {
+    editline
+    gcov
+    load-extension
+    readline
+    shared
+    tcl
+    threadsafe
+  } {
+    msg-result "  --disable-$opt"
+    proj-opt-set $opt 0
+  }
+  # Remember that we now have a discrepancy beteween
+  # $::isCrossCompiling and [proj-is-cross-compiling].
+  set ::isCrossCompiling 1
 
-  # Changing --host and --target have no effect here except to possibly
-  # cause confusion. autoconf has finished processing them by this
-  # point.
+  #
+  # Changing --host and --target have no effect here except to
+  # possibly cause confusion. Autosetup 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"
+  #
   define CC "${wasiSdkDir}/bin/clang"
   define LD "${wasiSdkDir}/bin/wasm-ld"
   #define STRIP "${wasiSdkDir}/bin/strip"
@@ -387,7 +396,7 @@ cc-check-includes \
   inttypes.h
 
 if {[cc-check-includes zlib.h] && [proj-check-function-in-lib deflate z]} {
-  # TODO: port over the more sophisticated zlib search from the fossil auto.def
+  # TODO? port over the more sophisticated zlib search from the fossil auto.def
   define HAVE_ZLIB 1
   define LDFLAGS_ZLIB -lz
   sqlite-add-shell-opt -DSQLITE_HAVE_ZLIB=1
@@ -648,45 +657,51 @@ proc sqlite-determine-codegen-tcl {} {
   msg-result "Checking for TCL to use for code generation... "
   define CFLAGS_JIMSH {}
   set cgtcl [opt-val with-tclsh jimsh]
-  if {"jimsh" ne $cgtcl} {
-    # When --with-tclsh=X is used, use that for all TCL purposes,
-    # including in-tree code generation, per developer request.
-    define BTCLSH "\$(TCLSH_CMD)"
-  } else {
-    # These headers are technically optional for JimTCL but necessary if
-    # we want to use it for code generation:
-    set sysh [cc-check-includes dirent.h sys/time.h]
-    if {$sysh && [cc-check-functions realpath]} {
-      define-append CFLAGS_JIMSH -DHAVE_REALPATH
-      define BTCLSH "\$(JIMSH)"
-    } elseif {$sysh && [cc-check-functions _fullpath]} {
-      # _fullpath() is a Windows API
-      define-append CFLAGS_JIMSH -DHAVE__FULLPATH
-      define BTCLSH "\$(JIMSH)"
-    } elseif {[file exists [get-define TCLSH_CMD]]} {
-      set cgtcl [get-define TCLSH_CMD]
+  define-push {CC} {
+    # We have to swap CC to CC_FOR_BUILD for purposes of the various
+    # [cc-...] tests below. Recall that --with-wasi-sdk may have
+    # swapped out CC with one which is not appropriate for this block.
+    define CC [get-define CC_FOR_BUILD]
+    if {"jimsh" ne $cgtcl} {
+      # When --with-tclsh=X is used, use that for all TCL purposes,
+      # including in-tree code generation, per developer request.
       define BTCLSH "\$(TCLSH_CMD)"
     } else {
-      # One last-ditch effort to find TCLSH_CMD: use info from
-      # tclConfig.sh to try to find a tclsh
-      if {"" eq [get-define TCLSH_CMD]} {
-        set tpre [get-define TCL_EXEC_PREFIX]
-        if {"" ne $tpre} {
-          set tv [get-define TCL_VERSION]
-          if {[file-isexec "${tpre}/bin/tclsh${tv}"]} {
-            define TCLSH_CMD "${tpre}/bin/tclsh${tv}"
-          } elseif {[file-isexec "${tpre}/bin/tclsh"]} {
-            define TCLSH_CMD "${tpre}/bin/tclsh"
+      # These headers are technically optional for JimTCL but necessary if
+      # we want to use it for code generation:
+      set sysh [cc-check-includes dirent.h sys/time.h]
+      if {$sysh && [cc-check-functions realpath]} {
+        define-append CFLAGS_JIMSH -DHAVE_REALPATH
+        define BTCLSH "\$(JIMSH)"
+      } elseif {$sysh && [cc-check-functions _fullpath]} {
+        # _fullpath() is a Windows API
+        define-append CFLAGS_JIMSH -DHAVE__FULLPATH
+        define BTCLSH "\$(JIMSH)"
+      } elseif {[file exists [get-define TCLSH_CMD]]} {
+        set cgtcl [get-define TCLSH_CMD]
+        define BTCLSH "\$(TCLSH_CMD)"
+      } else {
+        # One last-ditch effort to find TCLSH_CMD: use info from
+        # tclConfig.sh to try to find a tclsh
+        if {"" eq [get-define TCLSH_CMD]} {
+          set tpre [get-define TCL_EXEC_PREFIX]
+          if {"" ne $tpre} {
+            set tv [get-define TCL_VERSION]
+            if {[file-isexec "${tpre}/bin/tclsh${tv}"]} {
+              define TCLSH_CMD "${tpre}/bin/tclsh${tv}"
+            } elseif {[file-isexec "${tpre}/bin/tclsh"]} {
+              define TCLSH_CMD "${tpre}/bin/tclsh"
+            }
           }
         }
+        set cgtcl [get-define TCLSH_CMD]
+        if {![file exists $cgtcl]} {
+          proj-fatal "Cannot find a tclsh to use for code generation."
+        }
+        define BTCLSH "\$(TCLSH_CMD)"
       }
-      set cgtcl [get-define TCLSH_CMD]
-      if {![file exists $cgtcl]} {
-        proj-fatal "Cannot find a tclsh to use for code generation."
-      }
-      define BTCLSH "\$(TCLSH_CMD)"
     }
-  }
+  }; # CC swap-out
   return $cgtcl
 }; # sqlite-determine-codegen-tcl
 msg-result "TCL for code generation: [sqlite-determine-codegen-tcl]"
@@ -859,7 +874,7 @@ proc sqlite-check-line-editing {} {
   set rlInc [opt-val with-readline-cflags auto]
   if {"auto" eq $rlInc} {
     set rlInc ""
-    if {$::cross_compiling} {
+    if {$::isCrossCompiling} {
       # ^^^ this check is derived from the legacy configure script.
       proj-warn "Skipping check for readline.h because we're cross-compiling."
     } else {
index 10640680b77c4076f555f2f08f85519fafcb3afe..3ba8a1be7068d0836be0e99b98e4aec902464225 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sdefault\sCFLAGS\sto\s{-g\s-O2}\sto\smatch\sthe\slegacy\sbuild.
-D 2024-10-31T05:47:56.652
+C When\s--with-wasi-sdk\sis\sactive,\stemporarily\sswap\sCC\sand\sCC_FOR_BUILD\sfor\spurposes\sof\slooking\sfor\sAPIs\srequired\sby\sB.cc.
+D 2024-10-31T06:38:30.018
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md c5b4009dca54d127d2d6033c22fd9cc34f53bedb6ef12c7cbaa468381c74ab28
@@ -13,7 +13,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 b4d03e1a29472666304c17e4cad8957bf9608fdb69ba604fae42280cfe6d76b1
+F auto.def d1e7ea57121be95dce59cd908a72e871c3217664d9a9cd6bcfbefbb602d94f67
 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
@@ -2198,8 +2198,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 1d2ecae1304d9f677bd50eaae6bd9cb25cb75c611d88a30839f5287a7a97d7d5
-R 7bbd44495a31d853a8cdadac4c7a9a6c
+P 511774942903277b3d38f28336599667df20f94a8de79746b6c236b827b7ffc6
+R 826bef03c13c186e5e25d69159376b65
 U stephan
-Z d036e10613b3c2839c9ebbb2201382e3
+Z 31d99618f66414cd664007258185ba71
 # Remove this line to create a well-formed Fossil manifest.
index b760684c13a83fb352c1463876aeb968710b08ba..a76ab71634abbadc02618e8962be19a751d4eeb5 100644 (file)
@@ -1 +1 @@
-511774942903277b3d38f28336599667df20f94a8de79746b6c236b827b7ffc6
+435f2ee818d7181551c6860b6bc4db97f82d76b58fd82765a6cf49e2d02ff18c