]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Start reworking the wasm build (again) with an eye towards simplifying it. Currently...
authorstephan <stephan@noemail.net>
Tue, 23 Sep 2025 05:10:19 +0000 (05:10 +0000)
committerstephan <stephan@noemail.net>
Tue, 23 Sep 2025 05:10:19 +0000 (05:10 +0000)
FossilOrigin-Name: 102c4a35b86405273d1f7e9e34466c9deed7831099a8207b6f48746b998193f9

ext/wasm/GNUmakefile
ext/wasm/mkwasmbuilds.c
manifest
manifest.tags
manifest.uuid

index a9b4af209a6097c677a1f58557ac3e6dabff5e4e..2d42834d5cc02010190b4eaa19075ed23c2cbe99 100644 (file)
@@ -440,7 +440,7 @@ define SQLITE.CALL.C-PP.FILTER
 # $3 = optional c-pp -D... flags
 $(2): $(1) $$(MAKEFILE_LIST) $$(bin.c-pp)
        @mkdir -p $$(dir $$@)
-       $$(bin.c-pp) -f $(1) -o $$@ $(3) $(SQLITE.CALL.C-PP.FILTER.global)
+       cat $(1) | $$(bin.c-pp) -o $$@ $(3) $(SQLITE.CALL.C-PP.FILTER.global)
 CLEAN_FILES += $(2)
 endef
 # /end SQLITE.CALL.C-PP.FILTER
@@ -549,57 +549,18 @@ EXPORTED_FUNCTIONS.api = $(dir.tmp)/EXPORTED_FUNCTIONS.api
 $(EXPORTED_FUNCTIONS.api): $(MKDIR.bld) $(EXPORTED_FUNCTIONS.api.in) $(sqlite3.c) $(MAKEFILE)
        cat $(EXPORTED_FUNCTIONS.api.in) > $@
 
-########################################################################
-# sqlite3-license-version.js = generated JS file with the license
-# header and version info.
-sqlite3-license-version.js = $(dir.tmp)/sqlite3-license-version.js
-# sqlite3-api-build-version.js = generated JS file which populates the
-# sqlite3.version object using $(bin.version-info).
-sqlite3-api-build-version.js = $(dir.tmp)/sqlite3-api-build-version.js
-# sqlite3-api.jses = the list of JS files which make up
-# $(sqlite3-api.js.in), in the order they need to be assembled.
-sqlite3-api.jses = $(sqlite3-license-version.js)
-# sqlite3-api-prologue.js: initial bootstrapping bits:
-sqlite3-api.jses += $(dir.api)/sqlite3-api-prologue.js
-# whwhasm.js and jaccwabyt.js: Low-level utils, mostly replacing
-# Emscripten glue:
-sqlite3-api.jses += $(dir.common)/whwasmutil.js
-sqlite3-api.jses += $(dir.jacc)/jaccwabyt.js
-# sqlite3-api-glue Glues the previous part together with sqlite:
-sqlite3-api.jses += $(dir.api)/sqlite3-api-glue.c-pp.js
-# $(sqlite3-api-build-version.js) = library version info
-sqlite3-api.jses += $(sqlite3-api-build-version.js)
-# sqlite3-api-oo1 = the oo1 API:
-sqlite3-api.jses += $(dir.api)/sqlite3-api-oo1.c-pp.js
-# sqlite3-api-worker = the Worker1 API:
-sqlite3-api.jses += $(dir.api)/sqlite3-api-worker1.c-pp.js
-# sqlite3-vfs-helper = helper APIs for VFSes:
-sqlite3-api.jses += $(dir.api)/sqlite3-vfs-helper.c-pp.js
-ifeq (0,$(wasm-bare-bones))
-  # sqlite3-vtab-helper = helper APIs for VTABLEs:
-  sqlite3-api.jses += $(dir.api)/sqlite3-vtab-helper.c-pp.js
-endif
-# sqlite3-vfs-opfs = the first OPFS VFS:
-sqlite3-api.jses += $(dir.api)/sqlite3-vfs-opfs.c-pp.js
-# sqlite3-vfs-opfs-sahpool = the second OPFS VFS:
-sqlite3-api.jses += $(dir.api)/sqlite3-vfs-opfs-sahpool.c-pp.js
-# sqlite3-api-cleanup.js = "finalizes" the build and cleans up
-# any extraneous global symbols which are needed temporarily
-# by the previous files.
-sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js
-
 ########################################################################
 # SOAP.js is an external API file which is part of our distribution
 # but not part of the sqlite3-api.js amalgamation. It's a component of
 # the first OPFS VFS and necessarily an external file.
 SOAP.js = $(dir.api)/sqlite3-opfs-async-proxy.js
-SOAP.js.bld = $(dir.dout)/$(notdir $(SOAP.js))
+SOAP.js.out = $(dir.dout)/sqlite3-opfs-async-proxy.js
 #
 # $(sqlite3-api.ext.jses) = API-related files which are standalone files,
 #   not part of the amalgamation.
 #
-sqlite3-api.ext.jses = $(SOAP.js.bld)
-$(SOAP.js.bld): $(SOAP.js)
+sqlite3-api.ext.jses = $(SOAP.js.out)
+$(SOAP.js.out): $(SOAP.js)
        cp $< $@
 
 ########################################################################
@@ -806,26 +767,6 @@ $(sqlite3-api-build-version.js): $(MKDIR.bld) $(bin.version-info) $(MAKEFILE)
     echo '});'; \
   } > $@
 
-########################################################################
-# $(sqlite3-license-version.js) contains the license header and
-# in-comment build version info.
-#
-# Maintenance reminder: there are awk binaries out there which do not
-# support -e SCRIPT.
-$(sqlite3-license-version.js): $(MKDIR.bld) $(sqlite3.h) \
-  $(dir.api)/sqlite3-license-version-header.js $(MAKEFILE)
-       @echo "Making $@..."; { \
-    cat $(dir.api)/sqlite3-license-version-header.js; \
-    echo '/*'; \
-    echo '** This code was built from sqlite3 version...'; \
-    echo "**"; \
-    awk '/define SQLITE_VERSION/{$$1=""; print "**" $$0}' $(sqlite3.h); \
-    awk '/define SQLITE_SOURCE_ID/{$$1=""; print "**" $$0}' $(sqlite3.h); \
-    echo "**"; \
-    echo "** with the help of Emscripten SDK version $(emcc.version)."; \
-    echo '*/'; \
-   } > $@
-
 ########################################################################
 # --post-js and --pre-js are emcc flags we use to append/prepend JS to
 # the generated emscripten module file. These rules set up the core
@@ -990,39 +931,47 @@ CLEAN_FILES += .wasmbuilds.make $(bin.mkwb)
 # code analyzers and cannot cope with the former.
 #
 # Most of what follows is the generation of those copies.
+
 $(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1.c-pp.js,\
     $(dir.dout)/sqlite3-worker1.js))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1.c-pp.js,\
-    $(dir.dout)/sqlite3-worker1-bundler-friendly.mjs,\
-    $(c-pp.D.sqlite3-bundler-friendly)))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1-promiser.c-pp.js,\
-    $(dir.dout)/sqlite3-worker1-promiser.js))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1-promiser.c-pp.js,\
-    $(dir.dout)/sqlite3-worker1-promiser-bundler-friendly.js,\
-    $(c-pp.D.sqlite3-bundler-friendly)))
+sqlite3-api.ext.jses += $(dir.dout)/sqlite3-worker1.js
+
 $(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1-promiser.c-pp.js,\
     $(dir.dout)/sqlite3-worker1-promiser.mjs,\
     -Dtarget=es6-module -Dtarget=es6-bundler-friendly))
+sqlite3-api.ext.jses += $(dir.dout)/sqlite3-worker1-promiser.mjs
+
+$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1-promiser.c-pp.js,\
+    $(dir.dout)/sqlite3-worker1-promiser.js))
+sqlite3-api.ext.jses += $(dir.dout)/sqlite3-worker1-promiser.js
+
 $(eval $(call SQLITE.CALL.C-PP.FILTER,demo-worker1-promiser.c-pp.js,demo-worker1-promiser.js))
 $(eval $(call SQLITE.CALL.C-PP.FILTER,demo-worker1-promiser.c-pp.js,demo-worker1-promiser.mjs,\
     -Dtarget=es6-module))
 $(eval $(call SQLITE.CALL.C-PP.FILTER,demo-worker1-promiser.c-pp.html,demo-worker1-promiser.html))
 $(eval $(call SQLITE.CALL.C-PP.FILTER,demo-worker1-promiser.c-pp.html,demo-worker1-promiser-esm.html,\
     -Dtarget=es6-module))
+demo-worker1-promiser.html: $(dir.dout)/sqlite3-worker1-promiser.js demo-worker1-promiser.js
+demo-worker1-promiser-esm.html: $(sqlite3-worker1-promiser.mjs) demo-worker1-promiser.mjs
+all: demo-worker1-promiser.html demo-worker1-promiser-esm.html
+
+ifeq (0,1)
+$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1.c-pp.js,\
+    $(dir.dout)/sqlite3-worker1-bundler-friendly.mjs,\
+    $(c-pp.D.sqlite3-bundler-friendly)))
+sqlite3-api.ext.jses += $(dir.dout)/sqlite3-worker1-bundler-friendly.mjs
+
+$(eval $(call SQLITE.CALL.C-PP.FILTER,$(dir.api)/sqlite3-worker1-promiser.c-pp.js,\
+    $(dir.dout)/sqlite3-worker1-promiser-bundler-friendly.js,\
+    $(c-pp.D.sqlite3-bundler-friendly)))
+sqlite3-api.ext.jses += $(dir.dout)/sqlite3-promiser-bundler-friendly.js
 
 $(dir.dout)/sqlite3-bundler-friendly.mjs: \
     $(dir.dout)/sqlite3-worker1-bundler-friendly.mjs \
     $(dir.dout)/sqlite3-worker1-promiser-bundler-friendly.js
 
-demo-worker1-promiser.html: $(dir.dout)/sqlite3-worker1-promiser.js demo-worker1-promiser.js
-demo-worker1-promiser-esm.html: $(sqlite3-worker1-promiser.mjs) demo-worker1-promiser.mjs
-all: demo-worker1-promiser.html demo-worker1-promiser-esm.html
+endif
 
-sqlite3-api.ext.jses += \
-  $(dir.dout)/sqlite3-worker1-promiser.mjs \
-  $(dir.dout)/sqlite3-worker1-promiser.js \
-  $(dir.dout)/sqlite3-worker1-bundler-friendly.mjs \
-  $(dir.dout)/sqlite3-worker1.js
 all quick: $(sqlite3-api.ext.jses)
 q: quick
 64bit: # populated by $(bin.mkwb)
@@ -1124,7 +1073,7 @@ $(speedtest1.js): $(MAKEFILE) $(speedtest1.cfiles) \
        @ls -la $@ $(speedtest1.wasm)
 
 speedtest1: $(speedtest1.js)
-all: speedtest1
+#xxx#all: speedtest1
 # end speedtest1.js
 ########################################################################
 
@@ -1144,10 +1093,10 @@ all: speedtest1
 #  tester1.mjs: cases 3 and 4
 #
 # To create those, we filter tester1.c-pp.js with $(bin.c-pp)...
-$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.js,tester1.js))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.js,tester1.mjs,$(c-pp.D.sqlite3-esm)))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.html,tester1.html))
-$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.html,tester1-esm.html,$(c-pp.D.sqlite3-esm)))
+$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.js,tester1.js,$(c-pp.D.canonical)))
+$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.js,tester1.mjs,$(c-pp.D.esm)))
+$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.html,tester1.html,$(c-pp.D.canonical)))
+$(eval $(call SQLITE.CALL.C-PP.FILTER,tester1.c-pp.html,tester1-esm.html,$(c-pp.D.esm)))
 tester1: tester1.js tester1.mjs tester1.html tester1-esm.html
 # We do not include $(dir.dout)/sqlite3-bundler-friendly.mjs in this
 # because bundlers are client-specific.
index 6d1786094d7f4cdb33c5b993c3ae72cd925c7e7b..83c26b4624f09895b584805833fe3f14824d9133 100644 (file)
 ** purposes: they are not expanded into code anywhere.
 */
 #define JS_BUILD_NAMES sqlite3 sqlite3-wasmfs
-/*
-** Valid build modes. For the "sqlite3-wasmfs" build, only "esm" (ES6
-** Module) is legal.
-*/
-#define JS_BUILD_MODES \
-  vanilla vanilla64 esm esm64 bundler-friendly bundler-friendly64 node
 
 /* Separator to help eyeballs find the different output sections */
-static const char * zBanner =
-  "\n########################################################################\n";
+#define zBanner \
+  "\n########################################################################\n"
 
 /*
 ** Flags for use with BuildDef::flags and the 3rd argument to
@@ -84,16 +78,17 @@ enum LibModeFlags {
 ** legal/sensical.
 */
 struct BuildDef {
-  const char *zName;      /* Name from JS_BUILD_NAMES */
-  const char *zMode;      /* Name from JS_BUILD_MODES */
-  int flags;              /* Flags from LibModeFlags */
+  /**
+     Base name of output JS and WASM files.
+  */
+  const char *zWasmFile;
   const char *zJsOut;     /* Name of generated sqlite3.js/.mjs */
-  /* TODO?: dynamically determine zJsOut based on zName, zMode, and
-     flags. */
   const char *zWasmOut;   /* zJsOut w/ .wasm extension if it needs to
                              be renamed.  Do we still need this? */
   const char *zCmppD;     /* Extra -D... flags for c-pp */
   const char *zEmcc;      /* Extra flags for emcc */
+  const char *zEnv;       /* emcc -sENVIRONMENT=X flag */
+  int flags;              /* Flags from LibModeFlags */
 };
 typedef struct BuildDef BuildDef;
 
@@ -112,15 +107,16 @@ typedef struct BuildDef BuildDef;
 
 /* List of distinct library builds. See next comment block. */
 #define BuildDefs_map(E) \
-  E(canonical)   \
+  E(canonical) \
+  E(esm)
+/*
   E(canonical64) \
-  E(esm) \
   E(esm64) \
   E(bundler) \
   E(bundler64) \
   E(node) \
   E(wasmfs)
-
+*/
 /*
 ** The set of WASM builds for the library (as opposed to the apps
 ** (fiddle, speedtest1)). Their order in BuildDefs_map is mostly
@@ -138,39 +134,46 @@ typedef struct BuildDefs BuildDefs;
 
 const BuildDefs oBuildDefs = {
   .canonical = {
-    .zName ="sqlite3", .zMode = "vanilla",
-    .flags = 0,
-    .zJsOut ="$(sqlite3.js)",
+    .zWasmFile ="sqlite3",
+    .zJsOut ="$(dir.dout)/sqlite3.js",
     .zWasmOut = 0,
-    .zCmppD = 0,
-    .zEmcc =0
-  },
-
-  .canonical64 = {
-    .zName="sqlite3", .zMode= "vanilla64",
-    .flags= LIBMODE_NOT_IN_ALL | LIBMODE_64BIT,
-    .zJsOut="$(sqlite3-64bit.js)",
-    .zWasmOut=0,
-    .zCmppD=0,
-    .zEmcc="-sMEMORY64=1"
+    .zCmppD = "-Djust-testing",
+    .zEmcc =0,
+    .zEnv = "web,worker"
+    /* MUST be non-NULL in the canonical build so it can be used as
+       a default for all others. */,
+    .flags = 0
   },
 
   .esm = {
-    .zName="sqlite3", .zMode= "esm",
-    .flags= LIBMODE_ESM,
+    .zWasmFile="sqlite3",
     .zJsOut="$(sqlite3.mjs)",
     .zWasmOut=0,
     .zCmppD= "-Dtarget=es6-module",
-    .zEmcc=0
+    .zEmcc=0,
+    .zEnv = 0,
+    .flags= LIBMODE_ESM
+  },
+#if 0
+
+  .canonical64 = {
+    .zWasmFile="sqlite3-64bit",
+    .zJsOut="$(sqlite3-64bit.js)",
+    .zWasmOut=0,
+    .zCmppD=0,
+    .zEmcc="-sMEMORY64=1",
+    .zEnv = 0,
+    .flags= LIBMODE_NOT_IN_ALL | LIBMODE_64BIT
   },
 
   .esm64 = {
-    .zName="sqlite3", .zMode= "esm64",
-    .flags= LIBMODE_NOT_IN_ALL | LIBMODE_64BIT,
+    .zWasmFile="sqlite3",
     .zJsOut="$(sqlite3-64bit.mjs)",
     .zWasmOut=0,
     .zCmppD=0,
-    .zEmcc="-sMEMORY64=1"
+    .zEmcc="-sMEMORY64=1",
+    .zEnv = 0,
+    .flags= LIBMODE_NOT_IN_ALL | LIBMODE_64BIT
   },
 
   .bundler = {
@@ -179,42 +182,52 @@ const BuildDefs oBuildDefs = {
     ** Testing these would require special-purpose node-based tools and
     ** custom test apps. Or we can pass them off as-is to the npm
     ** subproject and they spot failures pretty quickly ;). */
-    .zName="sqlite3", .zMode= "bundler-friendly",
-    .flags=LIBMODE_BUNDLER_FRIENDLY | LIBMODE_ESM,
+    .zWasmFile="sqlite3",
     .zJsOut="$(dir.dout)/sqlite3-bundler-friendly.mjs",
     .zWasmOut=0,
     .zCmppD="$(c-pp.D.sqlite3-esm) -Dtarget=es6-bundler-friendly",
-    .zEmcc=0
+    .zEmcc=0,
+    .zEnv = 0,
+    .flags=LIBMODE_BUNDLER_FRIENDLY | LIBMODE_ESM
   },
 
   .bundler64 = {
-    .zName="sqlite3", .zMode= "bundler-friendly64",
-    .flags= LIBMODE_BUNDLER_FRIENDLY | LIBMODE_ESM,
+    .zWasmFile="sqlite3",
     .zJsOut="$(dir.dout)/sqlite3-bundler-friendly-64bit.mjs",
     .zWasmOut=0,
     .zCmppD="$(c-pp.D.sqlite3-esm) -Dtarget=es6-bundler-friendly",
-    .zEmcc="-sMEMORY64=1"
+    .zEmcc="-sMEMORY64=1",
+    .zEnv = 0,
+    .flags= LIBMODE_BUNDLER_FRIENDLY | LIBMODE_ESM
   },
 
   /* Entirely unsupported. */
   .node = {
-    .zName="sqlite3", .zMode= "node",
-    .flags= LIBMODE_UNSUPPORTED | LIBMODE_NODEJS,
+    .zWasmFile="sqlite3",
     .zJsOut="$(dir.dout)/sqlite3-node.mjs",
     .zWasmOut="sqlite3-node.wasm",
     .zCmppD="$(c-pp.D.sqlite3-bundler-friendly) -Dtarget=node",
-    .zEmcc=0
+    .zEmcc=0,
+    .zEnv = "node"
+    /* Adding ",node" to the list for the other -sENVIRONMENT values
+       causes Emscripten to generate code which confuses node: it
+       cannot reliably determine whether the build is for a browser or
+       for node. We neither build nor test node builds on a regular
+       basis. They are fully unsupported. */,
+    .flags= LIBMODE_UNSUPPORTED | LIBMODE_NODEJS
   },
 
   /* Entirely unsupported. */
   .wasmfs = {
-    .zName="sqlite3-wasmfs", .zMode= "esm" ,
-    .flags= LIBMODE_UNSUPPORTED | LIBMODE_WASMFS | LIBMODE_ESM,
+    .zWasmFile="sqlite3-wasmfs",
     .zJsOut="$(dir.wasmfs)/sqlite3-wasmfs.mjs",
     .zWasmOut="sqlite3-wasmfs.wasm",
     .zCmppD="$(c-pp.D.sqlite3-bundler-friendly) -Dwasmfs",
-    .zEmcc="-sEXPORT_ES6 -sUSE_ES6_IMPORT_META"
+    .zEmcc="-sEXPORT_ES6 -sUSE_ES6_IMPORT_META",
+    .zEnv = 0,
+    .flags= LIBMODE_UNSUPPORTED | LIBMODE_WASMFS | LIBMODE_ESM
   }
+#endif
 };
 
 /*
@@ -227,7 +240,6 @@ static void mk_prologue(void){
   char const * aRequiredVars[] = {
     "dir.top",
     "dir.api", "dir.dout", "dir.tmp",
-    "sqlite3-license-version.js",
     "MAKEFILE", "MAKEFILE_LIST",
     /* Fiddle... */
     "dir.fiddle", "dir.fiddle-debug",
@@ -241,24 +253,101 @@ static void mk_prologue(void){
   };
   char const * zVar;
   int i;
-  pf("%s# Build setup sanity checks...\n", zBanner);
+  ps(zBanner "# Build setup sanity checks...");
   for( i = 0; (zVar = aRequiredVars[i]); ++i ){
     pf("ifeq (,$(%s))\n", zVar);
     pf("  $(error build process error: expecting make var $$(%s) to "
        "have been set up by now)\n", zVar);
     ps("endif");
   }
-  pf("%s", zBanner);
-  ps("# extern-post-js* and extern-pre-js* are files for use with");
-  ps("# Emscripten's --extern-pre-js and --extern-post-js flags.");
-  ps("extern-pre-js.js = $(dir.api)/extern-pre-js.js");
-  ps("extern-post-js.js.in = $(dir.api)/extern-post-js.c-pp.js");
-  ps("# Emscripten flags for --[extern-][pre|post]-js=... for the");
-  ps("# various builds.");
-  ps("pre-post-common.flags = --extern-pre-js=$(sqlite3-license-version.js)");
-  ps("# pre-post-jses.deps.* = a list of dependencies for the\n"
-     "# --[extern-][pre/post]-js files.");
-  ps("pre-post-jses.deps.common = $(extern-pre-js.js) $(sqlite3-license-version.js)");
+
+  ps(zBanner
+     "# Inputs for the sqlite3-api.js family.\n"
+     "#\n"
+     "# sqlite3-license-version.js = generated JS file with the license\n"
+     "# header and version info.\n"
+     "sqlite3-license-version.js = $(dir.tmp)/sqlite3-license-version.js\n"
+     "# $(sqlite3-api-build-version.js) = generated JS file which populates the\n"
+     "# sqlite3.version object using $(bin.version-info).\n"
+     "sqlite3-api-build-version.js = $(dir.tmp)/sqlite3-api-build-version.js\n"
+     "# sqlite3-api.jses = the list of JS files which make up\n"
+     "# $(sqlite3-api.js.in), in the order they need to be assembled.\n"
+     "sqlite3-api.jses = $(sqlite3-license-version.js)\n"
+     "# sqlite3-api-prologue.js: initial bootstrapping bits:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-api-prologue.js\n"
+     "# whwhasm.js and jaccwabyt.js: Low-level utils, mostly replacing\n"
+     "# Emscripten glue:\n"
+     "sqlite3-api.jses += $(dir.common)/whwasmutil.js\n"
+     "sqlite3-api.jses += $(dir.jacc)/jaccwabyt.js\n"
+     "# sqlite3-api-glue Glues the previous part together with sqlite:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-api-glue.c-pp.js\n"
+     "sqlite3-api.jses += $(sqlite3-api-build-version.js)\n"
+     "# sqlite3-api-oo1 = the oo1 API:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-api-oo1.c-pp.js\n"
+     "# sqlite3-api-worker = the Worker1 API:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-api-worker1.c-pp.js\n"
+     "# sqlite3-vfs-helper = helper APIs for VFSes:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-vfs-helper.c-pp.js\n"
+     "ifeq (0,$(wasm-bare-bones))\n"
+     "  # sqlite3-vtab-helper = helper APIs for VTABLEs:\n"
+     "  sqlite3-api.jses += $(dir.api)/sqlite3-vtab-helper.c-pp.js\n"
+     "endif\n"
+     "# sqlite3-vfs-opfs = the first OPFS VFS:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-vfs-opfs.c-pp.js\n"
+     "# sqlite3-vfs-opfs-sahpool = the second OPFS VFS:\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-vfs-opfs-sahpool.c-pp.js\n"
+     "# sqlite3-api-cleanup.js = \"finalizes\" the build and cleans up\n"
+     "# any extraneous global symbols which are needed temporarily\n"
+     "# by the previous files.\n"
+     "sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js"
+  );
+
+  ps(zBanner
+     "# $(sqlite3-license-version.js) contains the license header and\n"
+     "# in-comment build version info.\n"
+     "#\n"
+     "# Maintenance reminder: there are awk binaries out there which do not\n"
+     "# support -e SCRIPT.\n"
+     "$(sqlite3-license-version.js): $(MKDIR.bld) $(sqlite3.h) "
+     "$(dir.api)/sqlite3-license-version-header.js $(MAKEFILE)\n"
+     "\t@echo 'Making $@...'; { \\\n"
+     "\t\tcat $(dir.api)/sqlite3-license-version-header.js;  \\\n"
+     "\t\techo '/*'; \\\n"
+     "\t\techo '** This code was built from sqlite3 version...'; \\\n"
+     "\t\techo '**'; \\\n"
+     "\t\tawk '/define SQLITE_VERSION/{$$1=\"\"; print \"**\" $$0}' $(sqlite3.h); \\\n"
+     "\t\tawk '/define SQLITE_SOURCE_ID/{$$1=\"\"; print \"**\" $$0}' $(sqlite3.h); \\\n"
+     "\t\techo '**'; \\\n"
+     "\t\techo '** with the help of Emscripten SDK version $(emcc.version).'; \\\n"
+     "\t\techo '*/'; \\\n"
+     "\t} > $@"
+  );
+
+  ps(zBanner
+     "# $(sqlite3-api-build-version.js) injects the build version info into\n"
+     "# the bundle in JSON form.\n"
+     "$(sqlite3-api-build-version.js): $(MKDIR.bld) $(bin.version-info) $(MAKEFILE)\n"
+     "\t@echo 'Making $@...'; { \\\n"
+     "\t\techo 'globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){'; \\\n"
+     "\t\techo -n '  sqlite3.version = '; \\\n"
+     "\t\t$(bin.version-info) --json; \\\n"
+     "\t\techo ';'; \\\n"
+     "\t\techo '});'; \\\n"
+     "\t} > $@"
+  );
+
+  ps(zBanner
+     "# extern-post-js* and extern-pre-js* are files for use with\n"
+     "# Emscripten's --extern-pre-js and --extern-post-js flags.\n"
+     "extern-pre-js.js = $(dir.api)/extern-pre-js.js\n"
+     "extern-post-js.js.in = $(dir.api)/extern-post-js.c-pp.js\n"
+     "# Emscripten flags for --[extern-][pre|post]-js=... for the\n"
+     "# various builds.\n"
+     "# pre-post-jses.*.deps = lists of dependencies for the\n"
+     "# --[extern-][pre/post]-js files.\n"
+     "pre-post-jses.common.deps = "
+     "$(extern-pre-js.js) $(sqlite3-license-version.js)"
+  );
 
   {
     /* SQLITE.CALL.WASM-OPT = shell code to run $(1) (source wasm file
@@ -305,27 +394,33 @@ static void mk_prologue(void){
       /*"--safe-heap "*/
       /*"--vacuum " saves nothing */
       ;
+    ps(zBanner
+       "# post-compilation WASM file optimization");
     ps("ifeq (,$(bin.wasm-opt))");
-    ps("define SQLITE.CALL.WASM-OPT");
-    ps("echo 'wasm-opt not available for $(1)'");
-    ps("endef");
+    {
+      ps("define SQLITE.CALL.WASM-OPT");
+      ps("echo 'wasm-opt not available for $(1)'");
+      ps("endef");
+    }
     ps("else");
-    ps("define SQLITE.CALL.WASM-OPT");
-    pf("echo -n 'Before wasm-opt:'; ls -l $(1);\\\n"
-       "\trm -f wasm-opt-tmp.wasm;\\\n"
-       /* It's very likely that the set of wasm-opt flags varies from
-       ** version to version, so we'll ignore any errors here. */
-       "\tif $(bin.wasm-opt) $(1) -o wasm-opt-tmp.wasm \\\n"
-       "\t\t%s; then \\\n"
-       "\t\tmv wasm-opt-tmp.wasm $(1); \\\n"
-       "\t\techo -n 'After wasm-opt: '; \\\n"
-       "\t\tls -l $(1); \\\n"
-       "\telse \\\n"
-       "\t\techo 'WARNING: ignoring wasm-opt failure for $(1)'; \\\n"
-       "\tfi\n",
-       zOptFlags
-    );
-    ps("endef");
+    {
+      ps("define SQLITE.CALL.WASM-OPT");
+      pf("echo -n 'Before wasm-opt:'; ls -l $(1);\\\n"
+         "\trm -f wasm-opt-tmp.wasm;\\\n"
+         /* It's very likely that the set of wasm-opt flags varies from
+         ** version to version, so we'll ignore any errors here. */
+         "\tif $(bin.wasm-opt) $(1) -o wasm-opt-tmp.wasm \\\n"
+         "\t\t%s; then \\\n"
+         "\t\tmv wasm-opt-tmp.wasm $(1); \\\n"
+         "\t\techo -n 'After wasm-opt: '; \\\n"
+         "\t\tls -l $(1); \\\n"
+         "\telse \\\n"
+         "\t\techo 'WARNING: ignoring wasm-opt failure for $(1)'; \\\n"
+         "\tfi\n",
+         zOptFlags
+      );
+      ps("endef");
+    }
     ps("endif");
   }
 }
@@ -335,74 +430,81 @@ static void mk_prologue(void){
 ** --post-js=FILE, and --extern-post-js=FILE emcc flags, as well as
 ** populating those files.
 */
-static void mk_pre_post(const char *zName  /* build name */,
-                        const char *zMode  /* build mode */,
+static void mk_pre_post(char const *zBuildName,
                         const char *zCmppD /* optional -D flags for c-pp for the
                                            ** --pre/--post-js files. */,
-                        const char *zWasmOut){
+                        const char *zWasmOut ){
 /* Very common printf() args combo. */
-#define zNM zName, zMode
 
-  pf("%s# Begin --pre/--post flags for %s-%s\n", zBanner, zNM);
+  pf("%s# Begin --pre/--post flags for %s\n", zBanner, zBuildName);
   if( zCmppD && *zCmppD ){
-    pf("c-pp.D.%s-%s = %s\n", zNM, zCmppD ? zCmppD : "");
+    pf("c-pp.D.%s = %s\n", zBuildName, zCmppD);
   }
-  pf("pre-post-%s-%s.flags ?=\n", zNM);
+  pf("pre-post.%s.flags ?=\n", zBuildName);
 
   /* --pre-js=... */
-  pf("pre-js.js.%s-%s = $(dir.tmp)/pre-js.%s-%s.js\n",
-     zNM, zNM);
-  pf("$(pre-js.js.%s-%s): $(MAKEFILE_LIST) "
-     "$(sqlite3-license-version.js)\n", zNM);
+  pf("pre-js.%s.js = $(dir.tmp)/pre-js.%s.js\n",
+     zBuildName, zBuildName);
+  pf("$(pre-js.%s.js): $(MAKEFILE_LIST) "
+     "$(sqlite3-license-version.js)\n", zBuildName);
   if( 0==WASM_CUSTOM_INSTANTIATE || 0==zWasmOut ){
     pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(pre-js.js.in),"
-       "$(pre-js.js.%s-%s),"
-       C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\n", zNM, zNM);
+       "$(pre-js.%s.js),"
+       C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s)))\n",
+       zBuildName, zBuildName);
   }else{
     /* This part is needed for builds which have to rename the wasm file
        in zJsOut so that the loader can find it. */
-    pf("pre-js.js.%s-%s.intermediary = "
-       "$(dir.tmp)/pre-js.%s-%s.intermediary.js\n",
-       zNM, zNM);
+    pf("pre-js.%s.js.intermediary = "
+       "$(dir.tmp)/pre-js.%s.intermediary.js\n",
+       zBuildName, zBuildName);
     pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(pre-js.js.in),"
-       "$(pre-js.js.%s-%s.intermediary),"
-       C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\n", zNM, zNM);
-    pf("$(pre-js.js.%s-%s): $(pre-js.js.%s-%s.intermediary)\n", zNM, zNM);
-    pf("\tcp $(pre-js.js.%s-%s.intermediary) $@\n", zNM);
+       "$(pre-js.%s.js.intermediary),"
+       C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s)))\n",
+       zBuildName, zBuildName);
+    pf("$(pre-js.%s.js): $(pre-js.%s.js.intermediary)\n",
+       zBuildName, zBuildName);
+    pf("\tcp $(pre-js.%s.js.intermediary) $@\n", zBuildName);
     pf("\t@echo 'sIMS.wasmFilename = \"%s\";' >> $@\n", zWasmOut)
       /* see api/pre-js.c-pp.js:Module.instantiateModule() */;
   }
 
   /* --post-js=... */
-  pf("post-js.js.%s-%s = $(dir.tmp)/post-js.%s-%s.js\n", zNM, zNM);
-  pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(post-js.js.in),"
-     "$(post-js.js.%s-%s),$(c-pp.D.%s-%s)))\n", zNM, zNM);
+  pf("post-js.%s.js = $(dir.tmp)/post-js.%s.js\n",
+     zBuildName, zBuildName);
+  pf("post-jses.%s = "
+     "$(dir.api)/post-js-header.js "
+     "$(sqlite3-api.%s.js) "
+     "$(dir.api)/post-js-footer.js\n",
+     zBuildName, zBuildName);
+  pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(post-jses.%s),"
+     "$(post-js.%s.js),$(c-pp.D.%s)))\n",
+     zBuildName, zBuildName, zBuildName);
 
   /* --extern-post-js=... */
-  pf("extern-post-js.js.%s-%s = $(dir.tmp)/extern-post-js.%s-%s.js\n",
-     zNM, zNM);
+  pf("extern-post-js.%s.js = $(dir.tmp)/extern-post-js.%s.js\n",
+     zBuildName, zBuildName);
   pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(extern-post-js.js.in),"
-     "$(extern-post-js.js.%s-%s),"
-     C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\n", zNM, zNM);
+     "$(extern-post-js.%s.js),"
+     C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s)))\n",
+     zBuildName, zBuildName);
 
   /* Combined flags for use with emcc... */
-  pf("pre-post-common.flags.%s-%s = "
-     "$(pre-post-common.flags) "
-     "--post-js=$(post-js.js.%s-%s) "
-     "--extern-post-js=$(extern-post-js.js.%s-%s)\n", zNM, zNM, zNM);
+  pf("pre-post.%s.flags += "
+     "--extern-pre-js=$(sqlite3-license-version.js) "
+     "--pre-js=$(pre-js.%s.js) "
+     "--post-js=$(post-js.%s.js) "
+     "--extern-post-js=$(extern-post-js.%s.js)\n",
+     zBuildName, zBuildName, zBuildName, zBuildName);
 
-  pf("pre-post-%s-%s.flags += $(pre-post-common.flags.%s-%s) "
-     "--pre-js=$(pre-js.js.%s-%s)\n", zNM, zNM, zNM);
 
   /* Set up deps... */
-  pf("pre-post-jses.%s-%s.deps = $(pre-post-jses.deps.common) "
-     "$(post-js.js.%s-%s) $(extern-post-js.js.%s-%s)\n",
-     zNM, zNM, zNM);
-  pf("pre-post-%s-%s.deps = $(pre-post-jses.%s-%s.deps) "
-     "$(dir.tmp)/pre-js.%s-%s.js\n",
-     zNM, zNM, zNM);
-  pf("# End --pre/--post flags for %s-%s%s", zNM, zBanner);
-#undef zNM
+  pf("pre-post.%s.deps = "
+     "$(pre-post-jses.common.deps) "
+     "$(post-js.%s.js) $(extern-post-js.%s.js) "
+     "$(dir.tmp)/pre-js.%s.js\n",
+     zBuildName, zBuildName, zBuildName, zBuildName);
+  pf("# End --pre/--post flags for %s%s", zBuildName, zBanner);
 }
 
 /*
@@ -411,7 +513,7 @@ static void mk_pre_post(const char *zName  /* build name */,
 static void mk_fiddle(void){
   int i = 0;
 
-  mk_pre_post("fiddle-module","vanilla", 0, "fiddle-module.wasm");
+  mk_pre_post("fiddle-module", 0, "fiddle-module.wasm");
   for( ; i < 2; ++i ){
     /* 0==normal, 1==debug */
     const char *zTail = i ? ".debug" : "";
@@ -463,32 +565,63 @@ static void mk_fiddle(void){
 /*
 ** Emits makefile code for one build of the library.
 */
-static void mk_lib_mode(const BuildDef * pB){
+void mk_lib_mode(const char *zBuildName, const BuildDef * pB){
   const char * zWasmOut = "$(basename $@).wasm"
     /* The various targets named X.js or X.mjs (pB->zJsOut) also generate
     ** X.wasm, and we need that part of the name to perform some
     ** post-processing after Emscripten generates X.wasm. */;
-  assert( pB->zName );
-  assert( pB->zMode );
+  const char * zJsExt = (LIBMODE_ESM & pB->flags)
+    ? ".mjs" : ".js";
+  assert( pB->zWasmFile );
   assert( pB->zJsOut );
 /* Very common printf() args combo. */
-#define zNM pB->zName, pB->zMode
 
-  pf("%s# Begin build [%s-%s]. flags=0x%02x\n", zBanner, zNM, pB->flags);
+  pf("%s# Begin build [%s]. flags=0x%02x\n", zBanner, zBuildName, pB->flags);
   pf("# zJsOut=%s\n# zCmppD=%s\n# zWasmOut=%s\n", pB->zJsOut,
      pB->zCmppD ? pB->zCmppD : "<none>",
      pB->zWasmOut ? pB->zWasmOut : "");
-  pf("$(info Setting up build [%s-%s]: %s)\n", zNM, pB->zJsOut);
-  mk_pre_post(zNM, pB->zCmppD, pB->zWasmOut);
-  pf("\nemcc.flags.%s.%s ?=\n", zNM);
-  if( pB->zEmcc && pB->zEmcc[0] ){
-    pf("emcc.flags.%s.%s += %s\n", zNM, pB->zEmcc);
+  pf("$(info Setting up build [%s]: %s)\n", zBuildName, pB->zJsOut);
+
+  assert( oBuildDefs.canonical.zEnv );
+  pf("emcc.environment.%s = %s\n", zBuildName,
+     pB->zEnv ? pB->zEnv : oBuildDefs.canonical.zEnv);
+  pf("emcc.flags.%s =\n", zBuildName);
+  if( pB->zEmcc ){
+    pf("emcc.flags.%s += %s\n", zBuildName, pB->zEmcc);
   }
 
+  pf("sqlite3-api.%s.c-pp.js = $(dir.tmp)/sqlite3-api.%s.c-pp%s\n",
+     zBuildName, zBuildName, zJsExt);
+
+  pf("sqlite3-api.%s.js = $(dir.tmp)/sqlite3-api.%s%s\n",
+     zBuildName, zBuildName, zJsExt);
+  if( pB->zCmppD ){
+    pf("c-pp.D.%s = %s\n", zBuildName, pB->zCmppD );
+  }
+  pf("$(sqlite3-api.%s.c-pp.js): $(sqlite3-api.jses)\n"
+     "\t@echo 'Making $@ ...'; \\\n"
+     "\tfor i in $(sqlite3-api.jses); do \\\n"
+     "\t\techo \"/* BEGIN FILE: $$i */\"; \\\n"
+     "\t\tcat $$i; \\\n"
+     "\t\techo \"/* END FILE: $$i */\"; \\\n"
+     "\tdone > $@\n",
+     zBuildName);
+
+  pf("$(sqlite3-api.%s.js): $(sqlite3-api.%s.c-pp.js)\n"
+     "$(eval $(call SQLITE.CALL.C-PP.FILTER,"
+     "$(sqlite3-api.%s.c-pp.js), " /* $1 = src */
+     "$(sqlite3-api.%s.js), "     /* $2 = tgt */
+     "$(c-pp.D.%s)"           /* $3 = c-pp -Dx=Y flags */
+     "))\n",
+     zBuildName, zBuildName, zBuildName,
+     zBuildName, zBuildName);
+
+  mk_pre_post(zBuildName, pB->zCmppD, pB->zWasmOut);
+
   /* target pB->zJsOut */
   pf("%s: $(MAKEFILE_LIST) $(sqlite3-wasm.cfiles) $(EXPORTED_FUNCTIONS.api) "
      "$(bin.mkwb) "
-     "$(pre-post-%s-%s.deps) "
+     "$(pre-post.%s.deps) "
      "$(sqlite3-api.ext.jses)"
      /* ^^^ maintenance reminder: we set these as deps so that they
      ** get copied into place early. That allows the developer to
@@ -496,7 +629,7 @@ static void mk_lib_mode(const BuildDef * pB){
      ** are still compiling, which is especially helpful when running
      ** builds with long build times (like -Oz). */
      "\n",
-     pB->zJsOut, zNM);
+     pB->zJsOut, zBuildName);
   pf("\t@echo \"Building $@ ...\"\n");
   if( LIBMODE_UNSUPPORTED & pB->flags ){
     ps("\t@echo 'ACHTUNG: $@ is an unsupported build. "
@@ -504,12 +637,15 @@ static void mk_lib_mode(const BuildDef * pB){
   }
   pf("\t$(bin.emcc) -o $@ $(emcc_opt_full) $(emcc.flags) \\\n");
   pf("\t\t$(emcc.jsflags) -sENVIRONMENT=$(emcc.environment.%s) \\\n",
-     pB->zMode);
-  pf("\t\t$(pre-post-%s-%s.flags) \\\n", zNM);
-  pf("\t\t$(emcc.flags.%s) $(emcc.flags.%s.%s) \\\n", pB->zName, zNM);
-  pf("\t\t$(cflags.common) $(SQLITE_OPT) \\\n"
-     "\t\t$(cflags.%s) $(cflags.%s.%s) \\\n"
-     "\t\t$(cflags.wasm_extra_init) $(sqlite3-wasm.cfiles)\n", pB->zName, zNM);
+     zBuildName);
+  pf("\t\t$(pre-post.%s.flags) \\\n", zBuildName);
+  if( pB->zEmcc ){
+    pf("\t\t$(emcc.%s.flags) \\\n", zBuildName);
+  }
+  pf("\t\t$(cflags.common) $(cflags.%s) \\\n"
+     "\t\t$(SQLITE_OPT) \\\n"
+     "\t\t$(cflags.wasm_extra_init) $(sqlite3-wasm.cfiles)\n",
+     zBuildName);
   if( (LIBMODE_ESM & pB->flags) || (LIBMODE_NODEJS & pB->flags) ){
     /* TODO? Replace this $(call) with the corresponding makefile
     ** code.  OTOH, we also use this $(call) in the speedtest1-wasmfs
@@ -531,12 +667,17 @@ static void mk_lib_mode(const BuildDef * pB){
   ** empty.
   */
   if( (LIBMODE_BUNDLER_FRIENDLY & pB->flags) ){
-    pf("\t@echo 'Patching $@ for %s.wasm...'; \\\n", pB->zName);
+#if 1
+    pf("\t@echo 'FIXME: missing build pieces for build %s'; exit 1\n",
+       zBuildName);
+#else
+    fixme;
+    pf("\t@echo 'Patching $@ for %s.wasm...'; \\\n", pB->zWasmFile);
     pf("\t\trm -f %s; \\\n", zWasmOut);
-    pf("\t\tsed -i -e 's/%s-%s.wasm/%s.wasm/g' $@ || exit;\n",
+    pf("\t\tsed -i -e 's/\"%s.wasm\"/\"%s.wasm\"/g' $@ || exit;\n",
        /* ^^^^^^ reminder: Mac/BSD sed has no -i flag but this
        ** build process explicitly requires a Linux system. */
-       zNM, pB->zName);
+       zNM, pB->zWasmFile);
     pf("\t@ls -la $@\n");
     if( LIBMODE_BUNDLER_FRIENDLY & pB->flags ){
       /* Avoid a 3rd occurrence of the bug fixed by 65798c09a00662a3,
@@ -548,6 +689,7 @@ static void mk_lib_mode(const BuildDef * pB){
          "then echo 'ERROR: bug fixed in 65798c09a00662a3 has re-appeared'; "
          "exit 1; fi;\n");
     }
+#endif
   }else{
     pf("\t@ls -la %s $@\n", zWasmOut);
   }
@@ -558,8 +700,7 @@ static void mk_lib_mode(const BuildDef * pB){
             && 0==(LIBMODE_UNSUPPORTED & pB->flags) ){
     pf("all: %s\n", pB->zJsOut);
   }
-  pf("# End build [%s-%s]%s", zNM, zBanner);
-#undef zNM
+  pf("# End build [%s]%s", zBuildName, zBanner);
 }
 
 int main(void){
@@ -567,13 +708,15 @@ int main(void){
   const BuildDef *pB;
   pf("# What follows was GENERATED by %s. Edit at your own risk.\n", __FILE__);
   mk_prologue();
-#define E(N) mk_lib_mode(&oBuildDefs.N);
+#define E(N) mk_lib_mode(# N, &oBuildDefs.N);
   BuildDefs_map(E)
 #undef E
+#if 0
   mk_fiddle();
-  mk_pre_post("speedtest1","vanilla", 0, "speedtest1.wasm");
-  mk_pre_post("speedtest1-wasmfs", "esm",
+  mk_pre_post(0, "speedtest1","vanilla", 0, "speedtest1.wasm");
+  mk_pre_post(0, "speedtest1-wasmfs", "esm",
               "$(c-pp.D.sqlite3-bundler-friendly) -Dwasmfs",
               "speetest1-wasmfs.wasm");
+#endif
   return rc;
 }
index 4fa0d80a9cf05034dbc01ba983f396229ef20a4e..18e083e96315d38ccbb67034f79687cd7dfdcafb 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\smakefile\starget\s'64bit'\sto\sext/wasm/GNUmakefile\sto\sbuild\sthe\s64-bit\sbundles.\sIt\sdoes\snot\syet\sgenerate\scopies\sof\sthe\stest\sapps\sto\sload/test\sthem,\spending\sother\sreworking\sof\sthe\sbuild.
-D 2025-09-23T02:04:07.278
+C Start\sreworking\sthe\swasm\sbuild\s(again)\swith\san\seye\stowards\ssimplifying\sit.\sCurrently\sonly\sthe\scanonical\sand\sesm\sbuilds\swork,\snot\sfiddle,\sspeedtest,\snor\sthe\sbundler\sstuff.
+D 2025-09-23T05:10:19.006
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -578,7 +578,7 @@ F ext/session/sqlite3session.c 9cd47bfefb23c114b7a5d9ee5822d941398902f30516bf0dd
 F ext/session/sqlite3session.h 7404723606074fcb2afdc6b72c206072cdb2b7d8ba097ca1559174a80bc26f7a
 F ext/session/test_session.c 8766b5973a6323934cb51248f621c3dc87ad2a98f023c3cc280d79e7d78d36fb
 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
-F ext/wasm/GNUmakefile 39beef47c945a140f93435998f07df70e7f0157e4c198f6197dc3b8236fec7ca
+F ext/wasm/GNUmakefile 7053c5c34f2bb7d483c8e92835447326b27b40bb326d27cdc3c20efd02e11ef5
 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
 F ext/wasm/README.md 66ace67ae98a45e4116f2ca5425b716887bcee4d64febee804ff6398e1ae9ec7
 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff
@@ -639,7 +639,7 @@ F ext/wasm/index-dist.html 56132399702b15d70c474c3f1952541e25cb0922942868f70daf1
 F ext/wasm/index.html bcaa00eca521b372a6a62c7e7b17a870b0fcdf3e418a5921df1fd61e5344080d
 F ext/wasm/jaccwabyt/jaccwabyt.js bbac67bc7a79dca34afe6215fd16b27768d84e22273507206f888c117e2ede7d
 F ext/wasm/jaccwabyt/jaccwabyt.md 167fc0b624c9bc2c477846e336de9403842d81b1a24fc4d3b24317cb9eba734f
-F ext/wasm/mkwasmbuilds.c fc6044341e6cdc8825ffc07db505c92f83cb62cb7c8d271f293f4dc8a8887468
+F ext/wasm/mkwasmbuilds.c db0ddd41f3a6d7692af1f5be5b0f5fc286ebbfc9ea37f20c6e12ea6f7d8bbe4f
 F ext/wasm/module-symbols.html dc476b403369b26a1a23773e13b80f41b9a49f0825e81435fe3600a7cfbbe337
 F ext/wasm/scratchpad-wasmfs.html a3d7388f3c4b263676b58b526846e9d02dfcb4014ff29d3a5040935286af5b96
 F ext/wasm/scratchpad-wasmfs.mjs 66034b9256b218de59248aad796760a1584c1dd842231505895eff00dbd57c63
@@ -2175,8 +2175,11 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 6455af2703e78fb9b6df19cf4b46873d98ec91c3302dc0093a362d03ac48da91
-R 58099e236bc56168160faf964fe1137e
+P 3e2ea990ad76f9e68d514568f53eaa692a1eb11695fceb1bcc58cea00605fff9
+R 25d42b661484b8b607ad50c1c253dba3
+T *branch * wasm-rebuild-2025
+T *sym-wasm-rebuild-2025 *
+T -sym-trunk * Cancelled\sby\sbranch.
 U stephan
-Z 27a67ec5dfd92ddefa13deed0e4dc8eb
+Z 442c6f30179ffbc3ae701380b6b17efc
 # Remove this line to create a well-formed Fossil manifest.
index bec971799ff1b8ee641c166c7aeb22d12c785393..472cd9ebe1726d9e74f0f5cf35470bff330623a8 100644 (file)
@@ -1,2 +1,2 @@
-branch trunk
-tag trunk
+branch wasm-rebuild-2025
+tag wasm-rebuild-2025
index 097299a308ab949898c7bb2a4d1fcda218c18fde..b710c15ad1c19c4c60277a310bd82817acea1ac8 100644 (file)
@@ -1 +1 @@
-3e2ea990ad76f9e68d514568f53eaa692a1eb11695fceb1bcc58cea00605fff9
+102c4a35b86405273d1f7e9e34466c9deed7831099a8207b6f48746b998193f9