commit af6ce89b698314c8c4e9c74d0b82ef7b2b37f1d4
parent d5f33314b3aa0bffcdd283f56036e724caa7c76e
Author: Greg Stoll <gstoll@mozilla.com>
Date: Mon, 6 Oct 2025 11:18:29 +0000
Bug 1947324 part 2 - make Windows Firefox builds depend on the Windows App SDK r=glandium
This also copies the needed DLLs to the dist/bin directory so Firefox
will be able to load them at runtime.
Differential Revision: https://phabricator.services.mozilla.com/D263603
Diffstat:
7 files changed, 115 insertions(+), 1 deletion(-)
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
@@ -98,6 +98,15 @@
#endif
@BINPATH@/@MSVC_CXX_RUNTIME_DLL@
#endif
+; Windows App SDK DLLs
+@BINPATH@/@DLL_PREFIX@CoreMessagingXP@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@marshal@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.InputStateManager@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.Internal.FrameworkUdk@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.UI.Composition.OSSupport@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.UI.Input@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.UI.Windowing.Core@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@Microsoft.UI.Windowing@DLL_SUFFIX@
#endif
#ifdef MOZ_GTK
; This is a standalone binary launched by Firefox on Linux to verify
@@ -432,4 +441,4 @@ bin/libfreebl_64int_3.so
#if defined(DESKTOP_LAUNCHER_ENABLED)
@BINPATH@/desktop-launcher/desktop-launcher@BIN_SUFFIX@
-#endif
+#endif
+\ No newline at end of file
diff --git a/taskcluster/kinds/build/windows.yml b/taskcluster/kinds/build/windows.yml
@@ -56,6 +56,7 @@ win32/debug:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -106,6 +107,7 @@ win32/opt:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -156,6 +158,7 @@ win32-fuzzing/debug:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -209,6 +212,7 @@ win64/debug:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -259,6 +263,7 @@ win64-non-unified/plain:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -309,6 +314,7 @@ win64-fuzzing/debug:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -356,6 +362,7 @@ win64-plain/debug:
- sysroot-wasm32-wasi
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
optimization:
skip-unless-expanded: null
@@ -406,6 +413,7 @@ win64/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -451,6 +459,7 @@ win64-plain/opt:
- sysroot-wasm32-wasi
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
optimization:
skip-unless-expanded: null
@@ -514,6 +523,7 @@ win32-shippable/opt:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -569,6 +579,7 @@ win64-shippable/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -621,6 +632,7 @@ win64-nightlyasrelease/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -666,6 +678,7 @@ win32-add-on-devel/opt:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -712,6 +725,7 @@ win64-add-on-devel/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -758,6 +772,7 @@ win64-noopt/debug:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -803,6 +818,7 @@ win32-noopt/debug:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -846,6 +862,7 @@ win32-rusttests/opt:
- win64-mozmake
- win64-dump_syms
- vs
+ - winappsdk-x86-pc-windows-msvc
optimization:
test-inclusive: [rusttests]
@@ -889,6 +906,7 @@ win32-rusttests/debug:
- win64-mozmake
- win64-dump_syms
- vs
+ - winappsdk-x86-pc-windows-msvc
optimization:
test-inclusive: [rusttests]
@@ -930,6 +948,7 @@ win64-rusttests/opt:
- win64-dump_syms
- vs
- dxc-x86_64-pc-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
optimization:
test-inclusive: [rusttests]
@@ -971,6 +990,7 @@ win64-rusttests/debug:
- win64-dump_syms
- vs
- dxc-x86_64-pc-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
optimization:
test-inclusive: [rusttests]
@@ -1025,6 +1045,7 @@ win64-ccov/opt:
- sysroot-wasm32-wasi
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
win64-fuzzing-ccov/opt:
description: "Win64 Fuzzing Opt w/ Coverage"
@@ -1077,6 +1098,7 @@ win64-fuzzing-ccov/opt:
- sysroot-wasm32-wasi
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
win64-asan/debug:
description: "Win64 Debug ASAN"
@@ -1123,6 +1145,7 @@ win64-asan/debug:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -1174,6 +1197,7 @@ win64-asan/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -1236,6 +1260,7 @@ win64-asan-reporter-shippable/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -1283,6 +1308,7 @@ win64-asan-fuzzing/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -1348,6 +1374,7 @@ win32-devedition/opt:
- sysroot-wasm32-wasi
- vs
- onnxruntime-i686-windows-msvc
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -1404,6 +1431,7 @@ win64-devedition/opt:
- vs
- dxc-x86_64-pc-windows-msvc
- onnxruntime-x86_64-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -1452,6 +1480,7 @@ win64-aarch64/debug:
- sysroot-wasm32-wasi
- vs
- dxc-aarch64-pc-windows-msvc
+ - winappsdk-aarch64-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -1503,6 +1532,7 @@ win64-aarch64/opt:
- sysroot-wasm32-wasi
- vs
- dxc-aarch64-pc-windows-msvc
+ - winappsdk-aarch64-pc-windows-msvc
fetch:
- upx-3.95-win
optimization:
@@ -1559,6 +1589,7 @@ win64-aarch64-shippable/opt:
- sysroot-wasm32-wasi
- vs
- dxc-aarch64-pc-windows-msvc
+ - winappsdk-aarch64-pc-windows-msvc
fetch:
- upx-3.95-win
@@ -1614,5 +1645,6 @@ win64-aarch64-devedition/opt:
- sysroot-wasm32-wasi
- vs
- dxc-aarch64-pc-windows-msvc
+ - winappsdk-aarch64-pc-windows-msvc
fetch:
- upx-3.95-win
diff --git a/taskcluster/kinds/instrumented-build/kind.yml b/taskcluster/kinds/instrumented-build/kind.yml
@@ -398,6 +398,7 @@ tasks:
- sysroot-x86_64-linux-gnu
- sysroot-wasm32-wasi
- vs
+ - winappsdk-x86-pc-windows-msvc
fetch:
- upx-3.95-win
- windows-rs
@@ -439,6 +440,7 @@ tasks:
- sysroot-wasm32-wasi
- vs
- dxc-x86_64-pc-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
- windows-rs
@@ -478,6 +480,7 @@ tasks:
- sysroot-wasm32-wasi
- vs
- dxc-x86_64-pc-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
- windows-rs
@@ -517,6 +520,7 @@ tasks:
- sysroot-wasm32-wasi
- vs
- dxc-aarch64-pc-windows-msvc
+ - winappsdk-aarch64-pc-windows-msvc
fetch:
- upx-3.95-win
- windows-rs
diff --git a/taskcluster/kinds/searchfox/kind.yml b/taskcluster/kinds/searchfox/kind.yml
@@ -221,6 +221,7 @@ tasks:
- sysroot-wasm32-wasi
- vs
- dxc-x86_64-pc-windows-msvc
+ - winappsdk-x86_64-pc-windows-msvc
fetch:
- upx-3.95-win
- windows-rs
diff --git a/toolkit/content/license.html b/toolkit/content/license.html
@@ -4171,6 +4171,16 @@ product.
<li><code>toolkit/components/ml/vendor/wllama-module-dev.mjs</code></li>
#endif
<li><code>toolkit/components/ml/vendor/wllama-module.mjs</code></li>
+#ifdef XP_WIN
+ <li>CoreMessagingXP.dll</li>
+ <li>marshal.dll</li>
+ <li>Microsoft.InputStateManager.dll</li>
+ <li>Microsoft.Internal.FrameworkUdk.dll</li>
+ <li>Microsoft.UI.Composition.OSSupport.dll</li>
+ <li>Microsoft.UI.Input.dll</li>
+ <li>Microsoft.UI.Windowing.Core.dll</li>
+ <li>Microsoft.UI.Windowing.dll</li>
+#endif
</ul>
See the individual LICENSE files or headers for copyright owners.</p>
</td>
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
@@ -2787,6 +2787,46 @@ with only_when(target_is_windows):
with only_when(dxcompiler.from_sdk):
set_config("MOZ_DXC_DLL_PATH", dxcompiler.dxc_path)
+with only_when(target_is_windows & compile_environment):
+ option(
+ env="MOZ_WINDOWS_APP_SDK_DIR",
+ nargs=1,
+ help="Path to the DLLs from the Windows App SDK redistributable",
+ )
+
+ @depends(target)
+ def windows_app_sdk_task_job_name(target):
+ return f"winappsdk-{target.cpu}-pc-windows-msvc"
+
+ @depends(
+ "MOZ_WINDOWS_APP_SDK_DIR",
+ bootstrap_path(
+ windows_app_sdk_task_job_name,
+ when=depends("MOZ_WINDOWS_APP_SDK_DIR")(lambda x: not x),
+ ),
+ )
+ @checking("for the Windows App SDK")
+ @imports("os")
+ def windows_app_sdk(dir, bootstrapped):
+ if bootstrapped:
+ dir = bootstrapped
+ elif dir:
+ dir = dir[0]
+
+ if not dir:
+ raise FatalCheckError("Windows App SDK dir not present!")
+ if not os.path.exists(dir):
+ raise FatalCheckError(f"Could not find Windows App SDK directory at {dir}")
+ if not os.path.isdir(dir):
+ raise FatalCheckError(
+ f"Windows App SDK directory is not a directory at {dir}"
+ )
+ if len(os.listdir(dir)) == 0:
+ raise FatalCheckError(f"Windows App SDK directory is empty at {dir}")
+ return dir
+
+ set_config("MOZ_WINDOWSAPPSDK_DIR", windows_app_sdk)
+
# Remoting protocol support
# ==============================================================
diff --git a/widget/windows/moz.build b/widget/windows/moz.build
@@ -220,3 +220,20 @@ if CONFIG["CC_TYPE"] == "clang-cl":
]
SPHINX_TREES["/widget/windows"] = "docs"
+
+if CONFIG["MOZ_WINDOWSAPPSDK_DIR"]:
+ # These are the few DLLs that Firefox needs instead of the
+ # whole Windows App SDK.
+ FINAL_TARGET_FILES += [
+ f'%{CONFIG["MOZ_WINDOWSAPPSDK_DIR"]}/{f}'
+ for f in (
+ "CoreMessagingXP.dll",
+ "marshal.dll",
+ "Microsoft.InputStateManager.dll",
+ "Microsoft.Internal.FrameworkUdk.dll",
+ "Microsoft.UI.Composition.OSSupport.dll",
+ "Microsoft.UI.Input.dll",
+ "Microsoft.UI.Windowing.Core.dll",
+ "Microsoft.UI.Windowing.dll",
+ )
+ ]