]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Re-order the auto.def flags logical groups. Add some discrete bold formatting to...
authorstephan <stephan@noemail.net>
Sun, 27 Oct 2024 22:18:33 +0000 (22:18 +0000)
committerstephan <stephan@noemail.net>
Sun, 27 Oct 2024 22:18:33 +0000 (22:18 +0000)
FossilOrigin-Name: ab95ee33dfe56bd3b223f978626e6014414881c30443a2b88c782de724c39ae1

auto.def
autosetup/hwaci-common.tcl
main.mk
manifest
manifest.uuid

index 9ea09c8d11f564f82e02c96f96bd52e792175ccd..07502b966f7a72bd61809af40e5c33af220d07cf 100644 (file)
--- a/auto.def
+++ b/auto.def
 #
 use cc cc-db cc-shared cc-lib hwaci-common pkg-config
 
-# Are we cross-compiling?
-set cross_compiling [hwaci-is-cross-compiling]
-if {0
-    && !$cross_compiling
-    && "nope" eq [get-env CC_FOR_BUILD "nope"]
-    && [get-define CC] ne [get-define CC_FOR_BUILD]} {
-  # Arguable/debatable...
-  #
-  # When _not_ cross-compiling and CC_FOR_BUILD is _not_ explcitely
-  # specified, force CC_FOR_BUILD to be the same as CC, so that:
-  #
-  # ./configure CC=clang
-  #
-  # will use CC_FOR_BUILD=clang, instead of cc, for building in-tree
-  # tools. This is based off of an email discussion and is thought to
-  # be likely to cause less confusion than seeing 'cc' invocations
-  # will when the user passes CC=clang.
-  #
-  # Sidebar: if we do this before the cc package is installed, it gets
-  # reverted by that package. Ergo, the cc package init will tell the
-  # user "Build C compiler...cc" shortly before we tell them:
-  msg-result "Re-defining CC_FOR_BUILD to CC=[get-define CC]. To avoid this, explicitly pass CC_FOR_BUILD=..."
-  define CC_FOR_BUILD [get-define CC]
-}
-
 # $DUMP_DEFINES_TXT is the file emitted by --dump-defines, intended
 # only for build debugging and not part of the public build interface.
 set DUMP_DEFINES_TXT ./config.defines.txt
@@ -151,23 +126,42 @@ set DUMP_DEFINES_JSON ""; #./config.defines.json
 #
 ########################################################################
 set flags {
+  # <build-modes>
   with-debug:=1        => {Enable debug build flags}
+  shared=1             => {Disable build of shared libary}
+  static=1             => {Disable build of static library (mostly)}
+  amalgamation=1       => {Disable the amalgamation and instead build all files separately.}
+  # </build-modes>
+  # <lib-feature>
+  threadsafe=1         => {Disable mutexing}
+  with-tempstore:=no   => {Use an in-ram database for temporary tables: never,no,yes,always}
+  largefile=1          => {Disable large file support}
+  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}
+  # </lib-feature>
+  # <tcl>
   with-tclsh:PATH      => {Full pathname of tclsh to use}
   with-tcl:DIR         => {Directory containing tclConfig.sh}
   tcl=1                => {Disable components which require TCL-dev}
-  test-status          => {Enable status of tests}
-  threadsafe=1         => {Disable mutexing}
-  with-tempstore:=no   => {Use an in-ram database for temporary tables: never,no,yes,always}
-  editline=0           => {BSD editline support}
+  # <tcl>
+  # <line-editing>
   readline=1           => {Disable readline support}
-  largefile=1          => {Disable large file support}
-  shared=1             => {Disable build of shared libary}
-  static=1             => {Disable build of static library}
   # --with-readline-lib is a backwards-compatible alias for
   # --with-readline-ldflags
   with-readline-lib:
   with-readline-ldflags:=auto
-                       => {Readline LDFLAGS, e.g. -lreadline -lncurses}
+                     => {Readline LDFLAGS, e.g. -lreadline -lncurses}
   # --with-readline-inc is a backwards-compatible alias for
   # --with-readline-cflags
   with-readline-inc:
@@ -176,28 +170,23 @@ set flags {
   with-readline-header:PATH
                        => {Full path to readline.h, from which --with-readline-cflags will be derived}
   with-linenoise:DIR   => {Source directory for linenoise.c and linenoise.h}
+  editline=0           => {BSD editline support}
+  # </line-editing>
+  # <icu>
   with-icu-ldflags:LDFLAGS => {Enable SQLITE_ENABLE_ICU and add the given linker flags for the ICU libraries}
   icu-collations=0     => {Enable SQLITE_ENABLE_ICU_COLLATIONS. Requires --with-icu-ldflags=...}
-  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.}
+  # </icu>
+  # <alternative-builds>
   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}
+  # </alternative-builds>
+  # <developer>
+  test-status          => {Enable status of tests}
+  gcov=0               => {Enable coverage testing using gcov}
+  linemacros           => {Enable #line macros in the amalgamation.}
   dump-defines=0       => {Dump autosetup defines to $DUMP_DEFINES_TXT (for build debugging)}
+  # </developer>
 }
 if {"" ne $DUMP_DEFINES_JSON} {
   lappend flags \
@@ -227,7 +216,7 @@ define PACKAGE_BUGREPORT [get-define PACKAGE_URL]/forum
 
 msg-result "srcdir = $srcdir"
 msg-result "top_srcdir = $top_srcdir"
-msg-result "VERSION = $PACKAGE_VERSION"
+msg-result [hwaci-bold "Configuring SQLite version $PACKAGE_VERSION"]
 
 define-append SQLITE_AUTOREMAKE cd '$srcdir' && '$top_srcdir/configure'
 #{*}$::autosetup(argv) breaks with --flag='val with spaces', so...
@@ -235,90 +224,36 @@ foreach arg $::autosetup(argv) {
   define-append SQLITE_AUTOREMAKE '$arg'
 }
 
-set outOfTreeBuild 0
+
+# Are we cross-compiling?
+set cross_compiling [hwaci-is-cross-compiling]
 if {![file exists sqlite3.pc.in]} {
   msg-result "This appears to be an out-of-tree build."
-  set outOfTreeBuild 1
 }
 
 cc-check-tools ld ar
 
+define OPT_FEATURE_FLAGS {} ; # -DSQLITE_OMIT/ENABLE flags.
+define OPT_SHELL {}         ; # CFLAGS for the sqlite3 CLI app
 ########################################################################
-# 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 {}
-define OPT_SHELL {}; # CFLAGS for the sqlite3 CLI app
-
 # Adds $args, if not empty, to OPT_FEATURE_FLAGS.
-proc add-feature-flag {args} {
+# If the first arg is -shell then it strips that arg
+# and passes the remaining args th sqlite-add-shell-opt
+# before adding them to OPF_FEATURE_FLAGS.
+proc sqlite-add-feature-flag {args} {
+  set shell ""
+  if {"-shell" eq [lindex $args 0]} {
+    set args [lassign $args shell]
+  }
   if {"" ne $args} {
+    if {"" ne $shell} {
+      sqlite-add-shell-opt {*}$args
+    }
     define-append OPT_FEATURE_FLAGS {*}$args
   }
 }
-# add-feature-flag -DSQLITE_JUST_TESTING=3
-
-# Adds $args, if not empty, to OPT_SHELL.
-proc add-shell-opt {args} {
+# Appends $args, if not empty, to OPT_SHELL.
+proc sqlite-add-shell-opt {args} {
   if {"" ne $args} {
     define-append OPT_SHELL {*}$args
   }
@@ -328,11 +263,11 @@ hwaci-file-extensions
 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?
+  # todo? add -DSQLITE_OS_WIN=1 to CFLAGS or CFLAGS_sqlite3_os?
 } else {
   define SQLITE_OS_UNIX 1
   define SQLITE_OS_WIN 0
-  # todo? add -DSQLITE_OS_UNIX=1 to CFLAGS?
+  # todo? add -DSQLITE_OS_UNIX=1 to CFLAGS or CFLAGS_sqlite3_os
 }
 
 #########
@@ -448,7 +383,7 @@ if {[cc-check-includes zlib.h] && [hwaci-check-function-in-lib deflate z]} {
   # Note that -DSQLITE_HAVE_ZLIB=1 is handled separately from the
   # other feature flags in the autotools build. Do we need to emulate
   # that?
-  add-shell-opt -DSQLITE_HAVE_ZLIB=1
+  sqlite-add-shell-opt -DSQLITE_HAVE_ZLIB=1
 } else {
   define HAVE_ZLIB 0
   define LDFLAGS_ZLIB ""
@@ -745,7 +680,7 @@ unset cgtcl
 msg-checking "Support threadsafe operation? "
 hwaci-if-opt-truthy threadsafe {
   msg-result yes
-  add-feature-flag -DSQLITE_THREADSAFE=1
+  sqlite-add-feature-flag -DSQLITE_THREADSAFE=1
   if {![hwaci-check-function-in-lib pthread_create pthread]
       || ![hwaci-check-function-in-lib pthread_mutexattr_init pthread]} {
     user-error "Missing required pthread bits"
@@ -754,7 +689,7 @@ hwaci-if-opt-truthy threadsafe {
   undefine lib_pthread_create
 } {
   msg-result no
-  add-feature-flag -DSQLITE_THREADSAFE=0
+  sqlite-add-feature-flag -DSQLITE_THREADSAFE=0
   define LDFLAGS_PTHREAD ""
 }
 
@@ -799,6 +734,7 @@ if {1} {
 # Returns a string describing which line-editing approach to use, or
 # "none" if no option is available.
 proc sqlite-check-line-editing {} {
+  msg-result "Checking for line-editing capability..."
   define HAVE_READLINE 0
   define HAVE_LINENOISE 0
   define HAVE_EDITLINE 0
@@ -815,10 +751,10 @@ proc sqlite-check-line-editing {} {
     } elseif {![file exists $dirLn/linenoise.h] } {
       hwaci-fatal "Cannot find linenoise.h in $dirLn"
     }
-    user-notice "Using linenoise from $dirLn"
+    msg-result "Using linenoise from $dirLn"
     define CFLAGS_READLINE "-I$dirLn $dirLn/linenoise.c"
     define HAVE_LINENOISE 1
-    add-shell-opt -DHAVE_LINENOISE=1
+    sqlite-add-shell-opt -DHAVE_LINENOISE=1
     return "linenoise"
   } elseif {[opt-bool editline]} {
     # --enable-editline. The problem is finding a system which has it
@@ -848,7 +784,7 @@ proc sqlite-check-line-editing {} {
     }
     return "none"
   } elseif {![opt-bool readline]} {
-    user-notice "Readline support explicitly disabled with --disable-readline"
+    msg-result "Readline support explicitly disabled with --disable-readline"
     return "none"
   }
 
@@ -920,8 +856,8 @@ proc sqlite-check-line-editing {} {
     define LDFLAGS_READLINE $rlLib
     define CFLAGS_READLINE $rlInc
     define HAVE_READLINE 1
-    add-shell-opt -DHAVE_READLINE=1
-    user-notice "Using readline flags: $rlInc $rlLib"
+    sqlite-add-shell-opt -DHAVE_READLINE=1
+    msg-result "Using readline flags: $rlInc $rlLib"
 
     # Now check whether rl_completion_matches() has a signature we can use.
     # cctest is producing unexpected test output when using:
@@ -937,10 +873,10 @@ proc sqlite-check-line-editing {} {
                return 0;
              }
            }]} {
-      user-notice "Readline completion enabled"
+      msg-result "Readline completion enabled"
     } else {
       user-notice "WARNING: readline completion disabled due to rl_completion_matches() signature mismatch"
-      add-shell-opt -DSQLITE_OMIT_READLINE_COMPLETION
+      sqlite-add-shell-opt -DSQLITE_OMIT_READLINE_COMPLETION
     }
     return "readline"
   }
@@ -958,7 +894,7 @@ hwaci-if-opt-truthy load-extension {
   }
 } {
   define LDFLAGS_DLOPEN ""
-  add-feature-flag {-DSQLITE_OMIT_LOAD_EXTENSION=1}
+  sqlite-add-feature-flag {-DSQLITE_OMIT_LOAD_EXTENSION=1}
   msg-result "Disabling loadable extensions."
 }
 
@@ -968,7 +904,7 @@ hwaci-if-opt-truthy math {
   }
   define LDFLAGS_MATH [get-define lib_ceil]
   undefine lib_ceil
-  add-feature-flag {-DSQLITE_ENABLE_MATH_FUNCTIONS}
+  sqlite-add-feature-flag {-DSQLITE_ENABLE_MATH_FUNCTIONS}
   msg-result "Enabling math SQL functions [get-define LDFLAGS_MATH]"
 } {
   define LDFLAGS_MATH ""
@@ -992,16 +928,18 @@ if {![get-define HAVE_WASI_SDK] && [hwaci-check-emsdk]} {
 unset emccsh
 
 ########################################################################
-# ICU
+# ICU - International Components for Unicode
 if {"" ne [define LDFLAGS_ICU [join [opt-val with-icu-ldflags ""]]]} {
   # Flags sets seen in the wild for ICU:
-  # {-licui18n -licuuc -licudata} {-licui18n -licuuc}
-  add-feature-flag -DSQLITE_ENABLE_ICU
-  add-shell-opt -DSQLITE_ENABLE_ICU
+  # - -licui18n -licuuc -licudata
+  # - -licui18n -licuuc
+  # - /usr/local/bin/icu-config --ldflags
+  sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU
   msg-result "Enabling ICU support with libs: [get-define LDFLAGS_ICU]"
   if {[opt-bool icu-collations]} {
     msg-result "Enabling ICU collations."
-    add-feature-flag -DSQLITE_ENABLE_ICU_COLLATIONS
+    sqlite-add-feature-flag -shell -DSQLITE_ENABLE_ICU_COLLATIONS
+    # Recall that shell.c builds with sqlite3.c
   }
 } elseif {[opt-bool icu-collations]} {
   hwaci-warn "ignoring --enable-icu-collations because --with-icu-ldflags was not specified"
@@ -1014,7 +952,7 @@ if {"" ne [define LDFLAGS_ICU [join [opt-val with-icu-ldflags ""]]]} {
 # required linker flags (which may be empty even if the math APIs are
 # found, depending on the OS).
 proc affirm-have-math {why} {
-  if {![hwaci-check-function-in-lib log m]} {
+  if {![msg-quiet hwaci-check-function-in-lib log m]} {
     user-error "Missing math APIs for $why"
   }
   define LDFLAGS_MATH [get-define lib_log ""]
@@ -1023,6 +961,7 @@ proc affirm-have-math {why} {
 
 ########################################################################
 # Handle various SQLITE_ENABLE_... feature flags.
+msg-result "Feature flags..."
 foreach {boolFlag featureFlag ifSetEvalThis} {
   all         {} {
     hwaci-opt-set fts4
@@ -1043,33 +982,33 @@ foreach {boolFlag featureFlag ifSetEvalThis} {
       hwaci-warn "not enabling memsys3 because memsys5 is enabled."
       expr 0
     } else {
-      add-feature-flag -DSQLITE_ENABLE_MEMSYS3
+      sqlite-add-feature-flag -DSQLITE_ENABLE_MEMSYS3
     }
   }
 } {
   hwaci-if-opt-truthy $boolFlag {
-    add-feature-flag $featureFlag
+    sqlite-add-feature-flag $featureFlag
     if {0 != [eval $ifSetEvalThis] && "all" ne $boolFlag} {
-      msg-result "Enabling $boolFlag"
+      msg-result " - Enabling $boolFlag"
     }
   } {
-    msg-result "Not enabling $boolFlag"
+    msg-result " - Not enabling $boolFlag"
   }
 }
 
 ########################################################################
 # Invert the above loop's logic for some explicit SQLITE_OMIT_...
-# cases. If config option $boolFlag is set, [add-feature-flag
+# cases. If config option $boolFlag is set, [sqlite-add-feature-flag
 # $featureFlag], where $featureFlag is intended to be
 # -DSQLITE_OMIT_...
 foreach {boolFlag featureFlag} {
   json        -DSQLITE_OMIT_JSON
 } {
   if {[hwaci-opt-truthy $boolFlag]} {
-    msg-result "Enabling $boolFlag"
+    msg-result " - Enabling $boolFlag"
   } else {
-    add-feature-flag $featureFlag
-    msg-result "Disabling $boolFlag"
+    sqlite-add-feature-flag $featureFlag
+    msg-result " - Disabling $boolFlag"
   }
 }
 
@@ -1155,9 +1094,8 @@ if {"" ne $DUMP_DEFINES_JSON} {
 ########################################################################
 # Some build-dev/debug-only output
 hwaci-if-opt-truthy dump-defines {
-  global DUMP_DEFINES_TXT
-  msg-result "--dump-defines is creating $DUMP_DEFINES_TXT"
-  make-config-header $DUMP_DEFINES_TXT \
+  msg-result "--dump-defines is creating $::DUMP_DEFINES_TXT"
+  make-config-header $::DUMP_DEFINES_TXT \
     -bare {SQLITE_OS* SQLITE_DEBUG USE_*} \
     -str {BIN_* CC LD AR LDFLAG* OPT_*} \
     -auto {*}
@@ -1170,4 +1108,4 @@ hwaci-if-opt-truthy dump-defines {
   }
 }
 
-msg-result "Done! Now run make."
+msg-result [hwaci-bold "Source tree is configured! Run make to build it."]
index 611238f080dd203b24edbf3d1d56d248e2e27821..1cde5703c7db3fee0e68da5e31c0abc51f931aad 100644 (file)
 # Routines for Steve Bennett's autosetup which are common to trees
 # managed in and around the umbrella of the SQLite project.
 #
-# Routines with a suffix of _ are intended for internal use,
-# within this file, and are not part of the API which auto.def files
-# should rely on.
-#
 # This file was initially derived from one used in the libfossil
-# project, authored by the same person who ported it here, noted here
-# only as an indication that there are no licensing issue despite this
-# code having at least two near-twins running around in other trees.
+# project, authored by the same person who ported it here, and this is
+# noted here only as an indication that there are no licensing issues
+# despite this code having at least two near-twins running around a
+# handful of third-party source trees.
 #
 ########################################################################
 #
-# Design notes: by and large, autosetup prefers to update global state
-# with the results of feature checks, e.g. whether the compiler
-# supports flag --X.  In this developer's opinion that (A) causes more
-# confusion than it solves[^1] and (B) adds an unnecessary layer of
-# "voodoo" between the autosetup user and its internals. This module,
-# in contrast, instead injects the results of its own tests into
-# well-defined variables and leaves the integration of those values to
-# the caller's discretion.
+# Design notes:
+#
+# - Symbols with a suffix of _ are intended for internal use within
+#   this file, and are not part of the API which auto.def files should
+#   rely on.
+#
+# - By and large, autosetup prefers to update global state with the
+#   results of feature checks, e.g. whether the compiler supports flag
+#   --X.  In this developer's opinion that (A) causes more confusion
+#   than it solves[^1] and (B) adds an unnecessary layer of "voodoo"
+#   between the autosetup user and its internals. This module, in
+#   contrast, instead injects the results of its own tests into
+#   well-defined variables and leaves the integration of those values
+#   to the caller's discretion.
 #
 # [1]: As an example: testing for the -rpath flag, using
 # cc-check-flags, can break later checks which use
 # $hwaci_ is an internal-use-only array for storing whatever generic
 # internal stuff we need stored.
 array set hwaci_ {}
+set hwaci_(isatty) [isatty? stdout]
 
 proc hwaci-warn {msg} {
   puts stderr "WARNING: $msg"
 }
-#proc hwaci-notice {msg} {
-#  puts stderr "NOTICE: $msg"
-#}
 proc hwaci-fatal {msg} {
-  user-error "ERROR: $msg"
+  show-notices
+  puts stderr "ERROR: $msg"
+  exit 1
+}
+
+########################################################################
+# If this function believes that the current console might support
+# ANSI escape sequences then this returns $str wrapped in a sequence
+# to bold that text, else it returns $str as-is.
+proc hwaci-bold {str} {
+  if {$::autosetup(iswin) || !$::hwaci_(isatty)} {
+    return $str
+  }
+  return "\033\[1m${str}\033\[0m"
 }
 
 ########################################################################
 # Takes a multi-line message and emits it with consistent indentation
-# using user-notice (which means its rendering will be delayed until
-# the next time autosetup goes to output a message).
+# using [user-notice] (which means its rendering will (A) go to stderr
+# and (B) be delayed until the next time autosetup goes to output a
+# message).
 proc hwaci-indented-notice {msg} {
   set lines [split $msg \n]
   foreach line $lines {
-    user-notice "      [string trim $line]"
+    user-notice "      [string trimleft $line]"
   }
 }
 
@@ -98,7 +113,7 @@ proc hwaci-lshift_ {listVar {count 1}} {
 # out any lines which begin with an number of whitespace followed by a
 # '#', and returns a value containing the [append]ed results of each
 # remaining line with a \n between each.
-proc hwaci-strip-comments {val} {
+proc hwaci-strip-hash-comments_ {val} {
   set x {}
   foreach line [split $val \n] {
     if {![string match "#*" [string trimleft $line]]} {
@@ -1020,7 +1035,7 @@ proc hwaci-dump-defs-json {file args} {
 # names, so that in the above example [opt-value canonical] will
 # return X if --alias=X is passed in.
 proc hwaci-xfer-options-aliases {mapping} {
-  foreach {hidden => canonical} [hwaci-strip-comments $mapping] {
+  foreach {hidden => canonical} [hwaci-strip-hash-comments_ $mapping] {
     set x [opt-val $hidden "~9~9~9~"]
     if {"~9~9~9~" ne $x} {
       if {"~0~0~0~" eq [opt-val $canonical "~0~0~0~"]} {
@@ -1031,3 +1046,28 @@ proc hwaci-xfer-options-aliases {mapping} {
     }
   }
 }
+
+########################################################################
+# Arguable/debatable...
+#
+# When _not_ cross-compiling and CC_FOR_BUILD is _not_ explcitely
+# specified, force CC_FOR_BUILD to be the same as CC, so that:
+#
+# ./configure CC=clang
+#
+# will use CC_FOR_BUILD=clang, instead of cc, for building in-tree
+# tools. This is based off of an email discussion and is thought to
+# be likely to cause less confusion than seeing 'cc' invocations
+# will when the user passes CC=clang.
+#
+# Sidebar: if we do this before the cc package is installed, it gets
+# reverted by that package. Ergo, the cc package init will tell the
+# user "Build C compiler...cc" shortly before we tell them:
+proc hwaci-redefine-cc-for-build {} {
+  if {![hwaci-is-cross-compiling]
+     && "nope" eq [get-env CC_FOR_BUILD "nope"]
+     && [get-define CC] ne [get-define CC_FOR_BUILD]} {
+    user-notice "Re-defining CC_FOR_BUILD to CC=[get-define CC]. To avoid this, explicitly pass CC_FOR_BUILD=..."
+    define CC_FOR_BUILD [get-define CC]
+  }
+}
diff --git a/main.mk b/main.mk
index 3b58767c2b0e2d6c786ea56e18df656e13493443..2c8f64324ed0c61e07a29ba117eda46c5ea50830 100644 (file)
--- a/main.mk
+++ b/main.mk
@@ -2075,6 +2075,15 @@ sqlite3.dll: $(LIBOBJ) sqlite3.def
        $(T.cc.sqlite) $(LDFLAGS.shobj) -o $@ sqlite3.def \
                -Wl,"--strip-all" $(LIBOBJ)
 
+#
+# Emit a list of commonly-used targets
+help:
+       @echo "Frequently-used high-level make targets:"; \
+       echo " - all (default) = builds most components"; \
+       echo " - clean         = cleans up most build products"; \
+       echo " - distclean     = cleans up all build products"; \
+       echo "...and many more"
+
 
 # Remove build products sufficient so that subsequent makes will recompile
 # everything from scratch.  Do not remove:
index 9d556045944b3abbf0ed070f5c26adf6659470b1..b44839c98882e46592999b7e38543f065bea6447 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Generic\scleanups\sin\sauto.def\sand\shwaci-common.tcl.
-D 2024-10-27T20:46:09.058
+C Re-order\sthe\sauto.def\sflags\slogical\sgroups.\sAdd\ssome\sdiscrete\sbold\sformatting\sto\sselect\sconfigure\soutput.\sRemove\ssome\sdead\scode.\sAccount\sfor\sbehavior\smisunderstanding\sof\suser-notice.\sAdd\sthe\sstart\sof\sa\s'make\shelp'\starget.\sGeneral\scosmetic\scleanups.
+D 2024-10-27T22:18:33.718
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md b6e6c1baf38e4339bd3f1e0e5e5bfd0a9a93d133360691b2785c2d4b2f2dcec2
@@ -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 dd9bda48dc2a4c515d1a518f342b992c1cdea46c0d4e20a25d515ab423de2d49
+F auto.def 10eac711b57bce9705555c052e8970e62aa6754b91e1ff37a51c50b040cc4897
 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
@@ -47,7 +47,7 @@ F autosetup/cc-lib.tcl 493c5935b5dd3bf9bd4eca89b07c8b1b1a9356d61783035144e21795f
 F autosetup/cc-shared.tcl 4f024e94a47f427ba61de1739f6381ef0080210f9fae89112d5c1de1e5460d78
 F autosetup/cc.tcl 7e2fe943ae9d45cf39e9f5b05b6230df8e719415edea5af06c30eb68680bde14
 F autosetup/default.auto 5cdf016de2140e50f1db190a02039dc42fb390af1dda4cc4853e3042a9ef0e82
-F autosetup/hwaci-common.tcl c6a68fe4ad416db70260bc0f8a85ee9f52d6976ca796aaa8ae013a1bf632b49d
+F autosetup/hwaci-common.tcl bc48c6ddfcd33a0eaf17f1709cde60622ff29c479e0356e8c6bcabe5b58a4d51
 F autosetup/jimsh0.c 27ea5f221359ef6c58780fc6c185aadbf8d3bee9a021331a3e5de0eba0dc6de6
 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
 F autosetup/system.tcl 3a39d6e0b3bfba526fd39afe07c1d0d325e5a31925013a1ba7c671e1128e31bb
@@ -707,7 +707,7 @@ F ext/wasm/wasmfs.make bc8bb227f35d5bd3863a7bd2233437c37472a0d81585979f058f9b9b5
 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
 F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
-F main.mk d943a2d0a0deb14daea10e036ef3a55e1b641cd57f5893a2fba29e65cc33acc0
+F main.mk 7533ef1b3a1338b96445a672ba6dbfa48279f05089a0555ff8822dcd1dcb000a
 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
@@ -2237,8 +2237,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 37a1da038195365cd7eb866b3aa749ad8060a656ac38063520fdb70cf0a0e5f1
-R 4a5971ae5787ab5ca5bc6c1b2940924e
+P 428e542452bac99d48950f1f62b65b4e235636540b946151747e2d5b59dbfd99
+R c11fb367c51c71ad6dcdc1b5cebfcffd
 U stephan
-Z f7c559f6f234bc23301783ef1baa5b93
+Z 989475d21f0d39382974a32645a7533c
 # Remove this line to create a well-formed Fossil manifest.
index bc0860a1332ee731e2f15acb4bdbc82e80f5fe31..31638cc682ccdd131e895c26b990738549acc1c2 100644 (file)
@@ -1 +1 @@
-428e542452bac99d48950f1f62b65b4e235636540b946151747e2d5b59dbfd99
+ab95ee33dfe56bd3b223f978626e6014414881c30443a2b88c782de724c39ae1