]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
proj.tcl: correct the auto-reconfigure rules to include any X=Y passed to configure...
authorstephan <stephan@noemail.net>
Sun, 27 Apr 2025 06:01:26 +0000 (06:01 +0000)
committerstephan <stephan@noemail.net>
Sun, 27 Apr 2025 06:01:26 +0000 (06:01 +0000)
FossilOrigin-Name: 7a2f4f319c90b768c6acc96671a3173c0ef0493180f3c4d5443f1ca03d92f6b4

autosetup/proj.tcl
manifest
manifest.uuid

index 3ebb5f2500b66eb9d92d961e5549c69e4a0b1a0f..bdc593cd4398ac052333c3678961741465a2d5aa 100644 (file)
@@ -1760,7 +1760,7 @@ proc proj-validate-no-unresolved-ats {args} {
 }
 
 #
-# @proj-first-found tgtVar fileList
+# @proj-first-file-found tgtVar fileList
 #
 # Searches $fileList for an existing file. If one is found, its name is
 # assigned to tgtVar and 1 is returned, else tgtVar is not modified
@@ -1783,19 +1783,10 @@ proc proj-first-file-found {tgtVar fileList} {
 # can be used to automatically reconfigure.
 #
 proc proj-setup-autoreconfig {defName} {
-  set squote {{arg} {
-    # Wrap $arg in single-quotes if it looks like it might need that
-    # to avoid mis-handling as a shell argument. We assume that $arg
-    # will never contain any single-quote characters.
-    if {[string match {*[ &;$*"]*} $arg]} { return '$arg' }
-    return $arg
-  }}
-  define-append $defName cd [apply $squote $::autosetup(builddir)] \
-    && [apply $squote $::autosetup(srcdir)/configure]
-  #{*}$::autosetup(argv) breaks with --flag='val with spaces', so...
-  foreach arg $::autosetup(argv) {
-    define-append $defName [apply $squote $arg]
-  }
+  define $defName \
+    [join [list \
+             cd \"$::autosetup(builddir)\" \
+             && [get-define AUTOREMAKE "error - missing @AUTOREMAKE@"]]]
 }
 
 #
@@ -1813,21 +1804,22 @@ proc proj-define-append {defineName args} {
 }
 
 #
-# @prod-define-amend ?-p|-prepend? ?-define? FLAG args...
+# @prod-define-amend ?-p|-prepend? ?-d|-define? defineName args...
 #
 # A proxy for Autosetup's [define-append].
 #
-# Appends all non-empty $args to the define named by $FLAG unless.  If
+# Appends all non-empty $args to the define named by $defineName.  If
 # one of (-p | -prepend) are used it instead prepends them, in their
-# given order, to $FLAG.
+# given order, to $defineName.
 #
 # If -define is used then each argument is assumed to be a [define]'d
 # flag and [get-define X ""] is used to fetch it.
 #
-# Typically, -lXYZ flags need to be in "reverse" order, with each -lY
-# resolving symbols for -lX's to its left. This order is largely
-# historical, and not relevant on all environments, but it is
-# technically correct and still relevant on some environments.
+# Re. linker flags: typically, -lXYZ flags need to be in "reverse"
+# order, with each -lY resolving symbols for -lX's to its left. This
+# order is largely historical, and not relevant on all environments,
+# but it is technically correct and still relevant on some
+# environments.
 #
 # See: proj-append-to
 #
@@ -1838,9 +1830,9 @@ proc proj-define-amend {args} {
   set xargs [list]
   foreach arg $args {
     switch -exact -- $arg {
-      -p - -prepend { set prepend 1 }
-      -d - -define  { set isdefs 1 }
       "" {}
+      -p - -prepend { incr prepend }
+      -d - -define  { incr isdefs }
       default {
         if {"" eq $defName} {
           set defName $arg
@@ -1850,6 +1842,9 @@ proc proj-define-amend {args} {
       }
     }
   }
+  if {"" eq $defName} {
+    proj-error "Missing defineName argument in call from [proj-current-scope 1]"
+  }
   if {$isdefs} {
     set args $xargs
     set xargs [list]
@@ -1871,47 +1866,51 @@ proc proj-define-amend {args} {
 }
 
 #
-# @proj-define-to-cflag ?-list? defineName...
+# @proj-define-to-cflag ?-list? ?-quote? ?-zero-undef? defineName...
 #
-# Treat each argument as the name of a [define]
-# and attempt to render it like a CFLAGS value:
+# Treat each argument as the name of a [define] and renders it like a
+# CFLAGS value in one of the following forms:
 #
 #  -D$name
-#  -D$name=value
+#  -D$name=integer   (strict integer matches only)
+#  '-D$name=value'   (without -quote)
+#  '-D$name="value"' (with -quote)
 #
-# If treats integers as numbers and everything else as a quoted
+# It treats integers as numbers and everything else as a quoted
 # string, noting that it does not handle strings which themselves
 # contain quotes.
 #
+# The -zero-undef flag causes no -D to be emitted for integer values
+# of 0.
+#
 # By default it returns the result as string of all -D... flags,
 # but if passed the -list flag it will return a list of the
 # individual CFLAGS.
 #
 proc proj-define-to-cflag {args} {
   set rv {}
-  set xargs {}
-  set returnList 0;
-  foreach arg $args {
-    switch -exact -- $arg {
-      -list {incr returnList}
-      default {
-        lappend xargs $arg
-      }
-    }
+  proj-parse-simple-flags args flags {
+    -list       0 {expr 1}
+    -quote      0 {expr 1}
+    -zero-undef 0 {expr 1}
   }
-  foreach d $xargs {
+  foreach d $args {
     set v [get-define $d ""]
-    set li [list -D${d}]
-    if {[string is integer -strict $v]} {
-      lappend li = $v
-    } elseif {"" eq $d} {
+    set li {}
+    if {"" eq $d} {
+      set v "-D${d}"
+    } elseif {[string is integer -strict $v]} {
+      if {!$flags(-zero-undef) || $v ne "0"} {
+        set v "-D${d}=$v"
+      }
+    } elseif {$flags(-quote)} {
+      set v "'-D${d}=\"$v\"'"
     } else {
-      lappend li = {"} $v {"}
+      set v "'-D${d}=$v'"
     }
-    lappend rv [join $li ""]
+    lappend rv $v
   }
-  if {$returnList} { return $rv }
-  return [join $rv]
+  expr {$flags(-list) ? $rv : [join $rv]}
 }
 
 
index ecf49a35dc3cb4ff142a70e0fd28757f32e36759..15e4fa0d6b0ae0bea935863ca362883c527ee778 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C autoconf/tea:\sthe\sdefault\svalue\sof\s--threadsafe=X\sis\snow\sbased\son\sa\spkgconfig\squery\susing\sthe\starget\stclsh,\swhich\sis\smuch\smore\sreliable\sthan\sgrepping\sTcl's\slinker\sflags.\sDoc\stouchups.
-D 2025-04-27T04:21:27.214
+C proj.tcl:\scorrect\sthe\sauto-reconfigure\srules\sto\sinclude\sany\sX=Y\spassed\sto\sconfigure.\sImprove\shandling\sof\squoted\sCFLAGS.
+D 2025-04-27T06:01:26.900
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -51,7 +51,7 @@ F autosetup/cc.tcl c0fcc50ca91deff8741e449ddad05bcd08268bc31177e613a6343bbd1fd3e
 F autosetup/find_tclconfig.tcl e64886ffe3b982d4df42cd28ed91fe0b5940c2c5785e126c1821baf61bc86a7e
 F autosetup/jimsh0.c 563b966c137a4ce3c9333e5196723b7ac0919140a9d7989eb440463cd855c367
 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
-F autosetup/proj.tcl 7eff53437b4e0a5cc9215221487129ea8c53b89e8b651ee2d2713cdc6e1d0642
+F autosetup/proj.tcl d2c0c6da22b4b6e0da6d054851079477815f8acc265e718f16879f3e88ffd819
 F autosetup/sqlite-config.tcl 54c88abadda1a42c6276186afcf6534e9bcb08350d96676c4ec08b99f2ada484
 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
@@ -2216,8 +2216,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 3e627d66ebdef8dfe41bd12a0474d1afca9f50051771774679d25bd1833e69ae
-R 56906ec6bb47507a448b4eb61a665ed8
+P 4aeec30443b282f10353cdb9415fdce436287280f0f5d5d6b9917da831744898
+R d75d037808a96903ea777bfc48335881
 U stephan
-Z 6249b8349b5cb161fd945b7e77195de1
+Z 7e9da962d1e2273ff3dad52e3e71aeeb
 # Remove this line to create a well-formed Fossil manifest.
index ee89ce3655fd6ba92951422c083fe70618bdc5d1..6428295eb6ea25cbe5968743274458cc161cf371 100644 (file)
@@ -1 +1 @@
-4aeec30443b282f10353cdb9415fdce436287280f0f5d5d6b9917da831744898
+7a2f4f319c90b768c6acc96671a3173c0ef0493180f3c4d5443f1ca03d92f6b4