From dd5b962a15d2dcba9620e9ca733b65a9ae9a7299 Mon Sep 17 00:00:00 2001 From: stephan Date: Wed, 25 Sep 2024 04:20:58 +0000 Subject: [PATCH] Get --enable-all flag essentially working. FossilOrigin-Name: 0a49436c983848c3d88f3f5ec33fb9ac31cce62e94bf515ab1c357a10f5cd515 --- auto.def | 143 ++++++++++++++++++++++++++++++++------------------ manifest | 12 ++--- manifest.uuid | 2 +- 3 files changed, 98 insertions(+), 59 deletions(-) diff --git a/auto.def b/auto.def index e08ba720d7..a386ecb0ee 100644 --- a/auto.def +++ b/auto.def @@ -14,35 +14,48 @@ set DUMP_DEFINES_FILE defines.list # # 3) If they default to true, the actual flag mapped to them is # --disable-FLAG. +# +# 4) For boolean options, configure will accept any of --flag, --enable-flag, +# or --disable-flag. Unfortunately, it reserves --debug for its own use. +# +# 5) Mapping with their full name, e.g. enable-foo=1 or disable-bar=0, +# will lead to breakage in calls to either [opt-bool foo] or +# [opt-bool enable-foo]. +# +# (2) and (3) mean that the help text for flag=1 should start with +# "Disable" and flag=0 should start with "Enable". +# +# In trying to helpfully map between --foo/--enable-foo/--disable-foo, +# it ends up creating some degree of confusion. options { with-tclsh:PATHNAME => {Full pathname of tclsh to use} with-tcl:DIR => {Directory containing tclConfig.sh} - disable-tcl=0 => {building accessory programs that require TCL-dev} - enable-test-status=0 => {status of tests} - with-wasi-sdk:=/opt/wasi-sdk => {Path to the wasi-dsk} - disable-threadsafe=0 => mutexing - enable-releasemode=0 => {libtool link to release mode} - enable-tempstore=0 => {an in-ram database for temporary tables never,no,yes,always} - enable-editline=0 => {BSD editline support} - disable-readline=0 => {readline support} + 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} + tempstore=0 => {an in-ram database for temporary tables never,no,yes,always} + editline=0 => {BSD editline support} + readline=0 => {readline support} with-readline-lib => {readline library} with-readline-inc => {readline include paths} with-linenoise:DIR => {} - disable-amalgamation=0 => {Disable the amalgamation and instead build all files separately} - load-extension=1 => {loading of external extensions} - math=1 => {math functions} - json=1 => {JSON functions} - all=0 => {Enable FTS4, FTS5, Geopoly, RTree, Sessions} - enable-memsys5=0 => MEMSYS5 - enable-memsys3=0 => MEMSYS3 - enable-fts3=0 => {Enable the FTS3 extension} - enable-fts4=0 => {Enable the FTS4 extension} - enable-fts5=0 => {Enable the FTS5 extension} - enable-update-limit=0 => {Enable the UPDATE/DELETE LIMIT clause} - enable-geopoly=0 => {Enable the GEOPOLY extension} - enable-rtree=0 => {Enable the RTREE extension} - enable-session=0 => {Enable the SESSION extension} - enable-gcov=0 => {Enable coverage testing using gcov} + 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 => {Enable coverage testing using gcov} + with-wasi-sdk:=/opt/wasi-sdk => {Top-most dir of the wasi-sdk for a WASI build} dump-defines=1 => {Dump autosetup defines to $DUMP_DEFINES_FILE} } # debug=0 => {debugging & verbose explain} @@ -124,6 +137,29 @@ proc add-feature-flag {flag} { } # add-feature-flag -DSQLITE_JUST_TESTING=3 +######################################################################## +# Force-set autosetup option $flag to $val. +proc opt-bool-set {flag {val 1}} { + if {![dict exists ::autosetup(options) $flag]} { + # We have to add this to autosetup(options) or else future calls + # to [opt-bool $flag] will fail validation of $flag. + dict set ::autosetup(options) $flag {} + } + dict set ::autosetup(optset) $flag $val +} + +######################################################################## +# If [opt-bool $boolFlag] is true, eval $then, else eval $else. +proc if-enabled {boolFlag then {else {}}} { + if {[opt-bool $boolFlag]} {eval $then} else {eval $else} +} + +######################################################################## +# If [opt-bool $boolFlag] is false, eval $then, else eval $else. +proc if-disabled {boolFlag then {else {}}} { + if {![opt-bool $boolFlag]} {eval $then} else {eval $else} +} + ######### # Programs needed if {1} { @@ -158,7 +194,6 @@ if {1} { malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64 } - ########## # Handle --with-wasi-sdk=DIR # @@ -362,6 +397,14 @@ if {0} { # XXX fi # XXX AC_SUBST BUILD_CC +if-enabled all { + opt-bool-set fts4 + opt-bool-set fts5 + opt-bool-set geopoly + opt-bool-set rtree + opt-bool-set session +} + ########## # Do we want to support multithreaded use of sqlite # @@ -387,9 +430,11 @@ if {0} { ########## # Do we want to support release # -if {[opt-bool enable-releasemode]} { +if-enabled releasemode { + msg-result "Release-mode build." set enable_releasemode 1 -} else { +} { + msg-result "Non-release-mode build." set enable_releasemode 0 } @@ -658,22 +703,6 @@ if {0} { # XXX AC_SUBST HAVE_ZLIB } -proc if-disabled {boolFlag then {else {}}} { - if {![opt-bool $boolFlag]} { - eval $then - } else { - eval $else - } -} - -proc if-enabled {boolFlag then {else {}}} { - if {[opt-bool $boolFlag]} { - eval $then - } else { - eval $else - } -} - if-enabled load-extension { if {[cc-check-function-in-lib dlopen dl]} { define LDFLAGS_DLOPEN [get-define lib_dlopen] @@ -693,21 +722,17 @@ if-enabled math { define LDFLAGS_MATH [get-define lib_ceil] undefine lib_ceil add-feature-flag {-DSQLITE_ENABLE_MATH_FUNCTIONS} - msg-result "Enabling math functions." + msg-result "Enabling math SQL functions" } { define LDFLAGS_MATH "" - msg-result "Disabling math functions." + msg-result "Disabling math SQL functions" } if-enabled json { - msg-result "Enabling JSON SQL functions." + msg-result "Enabling JSON SQL functions" } { add-feature-flag {-DSQLITE_OMIT_JSON} - msg-result "Disabling JSON SQL functions." -} - -if-enabled all { - msg-result "TODO: handle --enable-all" + msg-result "Disabling JSON SQL functions" } if {0} { @@ -909,8 +934,18 @@ if {0} { # XXX AC_SUBST AMALGAMATION_LINE_MACROS } -######### -# Output the config header +foreach {boolFlag featureFlag} { + fts4 -DSQLITE_ENABLE_FTS4 + fts5 -DSQLITE_ENABLE_FTS5 + geopoly -DSQLITE_ENABLE_GEOPOLY + rtree -DSQLITE_ENABLE_GEOPOLY + session -DSQLITE_ENABLE_GEOPOLY +} { + if {[opt-bool $boolFlag]} { + add-feature-flag $featureFlag + msg-result "Enabling $boolFlag" + } +} if {0} { ######### @@ -922,6 +957,10 @@ if {0} { make-config-header sqlite_cfg.h } +if {"" ne [get-define OPT_FEATURE_FLAGS]} { + msg-result "Final feature flags: [get-define OPT_FEATURE_FLAGS]" +} + if {[opt-bool dump-defines]} { msg-result "--dump-defines is creating file: $DUMP_DEFINES_FILE" make-config-header $DUMP_DEFINES_FILE -bare OPT_FEATURE_FLAGS -auto {*} diff --git a/manifest b/manifest index 0b72c18d59..b68744013f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Get\sseveral\sof\sthe\s--enable/--disable\sconfigure\sflags\sworking. -D 2024-09-25T03:37:34.226 +C Get\s--enable-all\sflag\sessentially\sworking. +D 2024-09-25T04:20:58.189 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -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 1c121db3f48b25002887220168e1120b5f8865f2d0468d62dca4220192367bef +F auto.def 0b1a9058f9082f5583b7335eed55bbbfe480b17a0f9f0bac00c7538a82a242c9 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac @@ -2232,8 +2232,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 4b104926bf0862a5088e51549c2d688c2af649d45bf0e396cc48e171bed06b0a -R 5abab1c4da63e377666cdbb79ca9e337 +P fd16d53d3a95cd4f5f81f4b1b09955f04c89116586aa16fa01627ae4904d587b +R f6136e043e4d9fa45a54af863cc98153 U stephan -Z 675f689497b17977048f4ba0ec321727 +Z 3a634646a8a85d4b2cf979a7d9e5b89f # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 2d2859b16a..e5a87b78c5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fd16d53d3a95cd4f5f81f4b1b09955f04c89116586aa16fa01627ae4904d587b +0a49436c983848c3d88f3f5ec33fb9ac31cce62e94bf515ab1c357a10f5cd515