From: stephan Date: Sat, 28 Sep 2024 11:03:00 +0000 (+0000) Subject: For wasm builds: automatically use higher optimization (but slower build) levels... X-Git-Tag: version-3.47.0~86 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51fb37db61f4602a074dd56bf3f688c5a57ac2cd;p=thirdparty%2Fsqlite.git For wasm builds: automatically use higher optimization (but slower build) levels when a target related to deliverables (as opposed to dev mode) is explicitly invoked. FossilOrigin-Name: 45361ab9744ccac3419d97fe8951838f14bd28220e3f7f747b39e46cfc3b5a1d --- diff --git a/ext/wasm/GNUmakefile b/ext/wasm/GNUmakefile index ae989040ee..9c0322ea8b 100644 --- a/ext/wasm/GNUmakefile +++ b/ext/wasm/GNUmakefile @@ -145,11 +145,19 @@ $(sqlite3.h): $(MAKE) -C $(dir.top) sqlite3.c $(sqlite3.c): $(sqlite3.h) +######################################################################## +# Special-case builds for which we require certain pre-conditions +# which, if not met, may cause warnings or fatal errors in the build. +# This also affects the default optimization level flags. Note that +# the fiddle targets are in this list because they are used for +# generating sqlite.org/fiddle. +OPTIMIZED_TARGETS := dist snapshot fiddle fiddle.debug + ifneq (1,$(MAKING_CLEAN)) - ifeq (,$(filter release snapshot,$(MAKECMDGOALS))) + ifeq (,$(filter $(OPTIMIZED_TARGETS),$(MAKECMDGOALS))) $(info ==============================================================) - $(info == Development build. Use 'release' or 'snapshot' target) - $(info == for a smaller release build.) + $(info == Development build. Make one of (dist, snapshot) for a) + $(info == smaller release build.) $(info ==============================================================) endif endif @@ -193,11 +201,11 @@ else $(info WARNING: on Ubuntu-like systems it can be installed with:) $(info WARNING: sudo apt install wabt) $(info WARNING: *******************************************************************) + ifneq (,$(filter $(OPTIMIZED_TARGETS),$(MAKECMDGOALS))) + $(error Cannot make release-quality binary because wasm-strip is not available.) + endif wasm-strip.bin := echo "not wasm-stripping" endif - ifneq (,$(filter release snapshot,$(MAKECMDGOALS))) - $(error Cannot make release-quality binary because wasm-strip is not available.) - endif endif maybe-wasm-strip := $(wasm-strip.bin) @@ -443,7 +451,14 @@ emcc.WASM_BIGINT ?= 1 # emcc_opt = optimization-related flags. These are primarily used by # the various oX targets. build times for -O levels higher than 0 are # painful at dev-time. -emcc_opt ?= -O0 +# +# When running any of the $(OPTIMIZED_TARGETS) explicitly, e.g. for +# a release distribution +ifeq (,$(filter $(OPTIMIZED_TARGETS),$(MAKECMDGOALS))) + emcc_opt ?= -O0 +else + emcc_opt ?= -Oz +endif # When passing emcc_opt from the CLI, += and re-assignment have no # effect, so emcc_opt+=-g3 doesn't work. So... diff --git a/ext/wasm/fiddle.make b/ext/wasm/fiddle.make index 5c97209122..d0e811cac8 100644 --- a/ext/wasm/fiddle.make +++ b/ext/wasm/fiddle.make @@ -68,6 +68,8 @@ fiddle.cses := $(dir.top)/shell.c $(sqlite3-wasm.c) # emit rules for one of the two fiddle builds. $1 must be # either $(dir.fiddle) or $(dir.fiddle-debug). $2 must be empty # in the former case and .debug in the latter. +# +# TODO: move this into mkwasmbuilds.c. define make-fiddle-rules fiddle-module.js$(2) := $(1)/fiddle-module.js fiddle-module.wasm$(2) := $$(subst .js,.wasm,$$(fiddle-module.js$(2))) diff --git a/manifest b/manifest index b16eb9e49b..ccedf55294 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Minor\smakefile\sdoc\sfixes.\sNo\sfunctional\schanges. -D 2024-09-28T00:39:19.799 +C For\swasm\sbuilds:\sautomatically\suse\shigher\soptimization\s(but\sslower\sbuild)\slevels\swhen\sa\starget\srelated\sto\sdeliverables\s(as\sopposed\sto\sdev\smode)\sis\sexplicitly\sinvoked. +D 2024-09-28T11:03:00.874 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -603,7 +603,7 @@ F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3 F ext/userauth/user-auth.txt ca7e9ee82ca4e1c1744295f8184dd70edfae1992865d26c64303f539eb6c084c F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c -F ext/wasm/GNUmakefile a35f8f9cd8fca7a8ea5c76492c3b72f8656ff6e62dd770f755d9b024dbdb2a4b +F ext/wasm/GNUmakefile e9ec8800b8f403e43c905e931beb1c4f921eaf7008932aaab749047fb5f0f14f F ext/wasm/README-dist.txt 6382cb9548076fca472fb3330bbdba3a55c1ea0b180ff9253f084f07ff383576 F ext/wasm/README.md a8a2962c3aebdf8d2104a9102e336c5554e78fc6072746e5daf9c61514e7d193 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff @@ -655,7 +655,7 @@ F ext/wasm/demo-worker1.html 2c178c1890a2beb5a5fecb1453e796d067a4b8d3d2a04d65ca2 F ext/wasm/demo-worker1.js 836bece8615b17b1b572584f7b15912236a5947fe8c68b98d2737d7e287447ef F ext/wasm/dist.make 653e212c1e84aa3be168d62a10616ccea45ee9585b0192745d2706707a5248ce F ext/wasm/example_extra_init.c 2347cd69d19d839ef4e5e77b7855103a7fe3ef2af86f2e8c95839afd8b05862f -F ext/wasm/fiddle.make 8ccee74606582336ba885df75fbd6b40c0bb0d0a686f6472d4b6dacec1393145 +F ext/wasm/fiddle.make fecd12fc78f5ae3fba5387fee59f83a2bfb012c073e2d956151a8957bfff4731 F ext/wasm/fiddle/fiddle-worker.js 850e66fce39b89d59e161d1abac43a181a4caa89ddeea162765d660277cd84ce F ext/wasm/fiddle/fiddle.js b444a5646a9aac9f3fc06c53d78af5e1912eb235d69a8e6010723e4eb0e9d4a1 F ext/wasm/fiddle/index.html c79b1741cbeba78f88af0a84cf5ec7de87a909a6a8d10a369b1f4824c66c2088 @@ -2213,8 +2213,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 208c27714646c9bc26eef11266086a71da04bc24e87078de0955e7beb68a821e -R 2a15755da1c3e9e619c193a945de5bc6 +P b3ad58e1fc73941f2d32bab0e0fac0b95849ae69f84788a431e65bb072e42db5 +R 31eec55429d58e8299eead65de81d192 U stephan -Z 991ac6d8780a391427387df58194645e +Z baebfcdbf257af1c75327d449926f47d # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c3fe76067a..81251ec111 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b3ad58e1fc73941f2d32bab0e0fac0b95849ae69f84788a431e65bb072e42db5 +45361ab9744ccac3419d97fe8951838f14bd28220e3f7f747b39e46cfc3b5a1d