xbintsc 0.5.51 → 0.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/README.zh-CN.md +9 -3
- package/dist/scripts/fetch-tarball.d.ts +28 -0
- package/dist/scripts/fetch-tarball.js +57 -0
- package/dist/scripts/fetch-tarball.js.map +1 -0
- package/dist/scripts/gui-build-options.d.ts +77 -0
- package/dist/scripts/gui-build-options.js +134 -0
- package/dist/scripts/gui-build-options.js.map +1 -0
- package/dist/src/cli/help.d.ts +1 -1
- package/dist/src/cli/hints.d.ts +6 -2
- package/dist/src/cli/hints.js +16 -2
- package/dist/src/cli/hints.js.map +1 -1
- package/dist/src/cli/main.js +9 -0
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/driver/app-artifacts.d.ts +2 -0
- package/dist/src/driver/app-artifacts.js +3 -3
- package/dist/src/driver/app-artifacts.js.map +1 -1
- package/dist/src/driver/compiler.js +147 -52
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/driver/icon.d.ts +1 -1
- package/dist/src/driver/icon.js +3 -3
- package/dist/src/driver/icon.js.map +1 -1
- package/dist/src/driver/macos-sdk.d.ts +32 -0
- package/dist/src/driver/macos-sdk.js +50 -0
- package/dist/src/driver/macos-sdk.js.map +1 -0
- package/dist/src/driver/options.d.ts +6 -0
- package/dist/src/driver/platform-support.d.ts +45 -0
- package/dist/src/driver/platform-support.js +66 -0
- package/dist/src/driver/platform-support.js.map +1 -0
- package/dist/src/driver/prebuilt.d.ts +26 -0
- package/dist/src/driver/prebuilt.js +58 -0
- package/dist/src/driver/prebuilt.js.map +1 -0
- package/dist/src/driver/runtime-objects.d.ts +11 -0
- package/dist/src/driver/runtime-objects.js +14 -5
- package/dist/src/driver/runtime-objects.js.map +1 -1
- package/dist/src/driver/toolchain-provider.d.ts +8 -0
- package/dist/src/driver/toolchain-provider.js +8 -0
- package/dist/src/driver/toolchain-provider.js.map +1 -1
- package/dist/src/driver/toolchain.d.ts +20 -1
- package/dist/src/driver/toolchain.js +19 -0
- package/dist/src/driver/toolchain.js.map +1 -1
- package/dist/src/driver/version.d.ts +1 -1
- package/dist/src/driver/version.js +1 -1
- package/dist/src/driver/version.js.map +1 -1
- package/dist/src/driver/win-entry.d.ts +1 -1
- package/dist/src/driver/win-entry.js +4 -4
- package/dist/src/driver/win-entry.js.map +1 -1
- package/dist/src/extensions/gui/features.d.ts +9 -6
- package/dist/src/extensions/gui/features.js +14 -9
- package/dist/src/extensions/gui/features.js.map +1 -1
- package/dist/src/extensions/gui/html.d.ts +10 -7
- package/dist/src/extensions/gui/html.js +53 -29
- package/dist/src/extensions/gui/html.js.map +1 -1
- package/dist/src/extensions/node/child_process/index.d.ts +4 -3
- package/dist/src/extensions/node/child_process/index.js +4 -3
- package/dist/src/extensions/node/child_process/index.js.map +1 -1
- package/dist/tests/cli/hints.test.js +9 -1
- package/dist/tests/cli/hints.test.js.map +1 -1
- package/dist/tests/cli/main.test.js +9 -0
- package/dist/tests/cli/main.test.js.map +1 -1
- package/dist/tests/driver/compiler.test.js +107 -0
- package/dist/tests/driver/compiler.test.js.map +1 -1
- package/dist/tests/driver/cxx-compile-flags.test.d.ts +1 -0
- package/dist/tests/driver/cxx-compile-flags.test.js +24 -0
- package/dist/tests/driver/cxx-compile-flags.test.js.map +1 -0
- package/dist/tests/driver/macos-sdk.test.d.ts +1 -0
- package/dist/tests/driver/macos-sdk.test.js +83 -0
- package/dist/tests/driver/macos-sdk.test.js.map +1 -0
- package/dist/tests/driver/platform-support.test.d.ts +1 -0
- package/dist/tests/driver/platform-support.test.js +41 -0
- package/dist/tests/driver/platform-support.test.js.map +1 -0
- package/dist/tests/driver/prebuilt.test.d.ts +1 -0
- package/dist/tests/driver/prebuilt.test.js +44 -0
- package/dist/tests/driver/prebuilt.test.js.map +1 -0
- package/dist/tests/driver/toolchain-provider.test.js +24 -0
- package/dist/tests/driver/toolchain-provider.test.js.map +1 -1
- package/dist/tests/driver/toolchain.test.js +23 -0
- package/dist/tests/driver/toolchain.test.js.map +1 -1
- package/dist/tests/e2e/async-await.test.js +4 -2
- package/dist/tests/e2e/async-await.test.js.map +1 -1
- package/dist/tests/e2e/compile-node.test.js +21 -0
- package/dist/tests/e2e/compile-node.test.js.map +1 -1
- package/dist/tests/e2e/fetch.test.js +34 -6
- package/dist/tests/e2e/fetch.test.js.map +1 -1
- package/dist/tests/e2e/gui-css-coverage.test.d.ts +9 -0
- package/dist/tests/e2e/gui-css-coverage.test.js +333 -0
- package/dist/tests/e2e/gui-css-coverage.test.js.map +1 -0
- package/dist/tests/e2e/gui-css-features.test.d.ts +6 -0
- package/dist/tests/e2e/gui-css-features.test.js +270 -0
- package/dist/tests/e2e/gui-css-features.test.js.map +1 -0
- package/dist/tests/e2e/gui-effects.test.js +92 -11
- package/dist/tests/e2e/gui-effects.test.js.map +1 -1
- package/dist/tests/e2e/gui-example-pelican3d.test.d.ts +10 -0
- package/dist/tests/e2e/gui-example-pelican3d.test.js +94 -0
- package/dist/tests/e2e/gui-example-pelican3d.test.js.map +1 -0
- package/dist/tests/e2e/gui-font-face.test.d.ts +10 -0
- package/dist/tests/e2e/gui-font-face.test.js +142 -0
- package/dist/tests/e2e/gui-font-face.test.js.map +1 -0
- package/dist/tests/e2e/gui-fonts.test.d.ts +10 -0
- package/dist/tests/e2e/gui-fonts.test.js +150 -0
- package/dist/tests/e2e/gui-fonts.test.js.map +1 -0
- package/dist/tests/e2e/gui-helpers.d.ts +5 -0
- package/dist/tests/e2e/gui-helpers.js +4 -0
- package/dist/tests/e2e/gui-helpers.js.map +1 -1
- package/dist/tests/e2e/gui-layout.test.js +3 -2
- package/dist/tests/e2e/gui-layout.test.js.map +1 -1
- package/dist/tests/e2e/gui-script.test.js +48 -0
- package/dist/tests/e2e/gui-script.test.js.map +1 -1
- package/dist/tests/e2e/gui-track-sizing.test.d.ts +6 -0
- package/dist/tests/e2e/gui-track-sizing.test.js +173 -0
- package/dist/tests/e2e/gui-track-sizing.test.js.map +1 -0
- package/dist/tests/e2e/gui-transform.test.js +3 -2
- package/dist/tests/e2e/gui-transform.test.js.map +1 -1
- package/dist/tests/e2e/unhandled-rejection.test.d.ts +14 -0
- package/dist/tests/e2e/unhandled-rejection.test.js +107 -0
- package/dist/tests/e2e/unhandled-rejection.test.js.map +1 -0
- package/dist/tests/extensions/gui-features.test.js +8 -1
- package/dist/tests/extensions/gui-features.test.js.map +1 -1
- package/dist/tests/extensions/gui.test.js +44 -0
- package/dist/tests/extensions/gui.test.js.map +1 -1
- package/dist/tests/scripts/fetch-tarball.test.d.ts +1 -0
- package/dist/tests/scripts/fetch-tarball.test.js +70 -0
- package/dist/tests/scripts/fetch-tarball.test.js.map +1 -0
- package/doc/ai/cli.md +6 -0
- package/doc/ai/extensions.md +10 -5
- package/doc/ai/language-support.md +1 -0
- package/doc/ai/troubleshooting.md +32 -2
- package/doc/ai/zh-CN/cli.md +5 -0
- package/doc/ai/zh-CN/extensions.md +9 -4
- package/doc/ai/zh-CN/language-support.md +1 -0
- package/doc/ai/zh-CN/troubleshooting.md +27 -2
- package/doc/gui/animation.md +39 -9
- package/doc/gui/build.md +13 -8
- package/doc/gui/dom.md +23 -5
- package/doc/gui/known-issues.md +31 -23
- package/doc/gui/layout.md +30 -7
- package/doc/gui/rendering.md +84 -26
- package/doc/gui/webgl.md +4 -0
- package/doc/gui-scripts.md +33 -17
- package/doc/gui.md +79 -15
- package/doc/implemented/async.md +1 -0
- package/doc/implemented/modules.md +9 -6
- package/doc/implemented/node/child-process.md +12 -4
- package/doc/implemented/runtime-core.md +1 -1
- package/doc/npm-package.md +23 -2
- package/doc/post/make-js-great-again.md +30 -0
- package/doc/requirements.md +31 -0
- package/doc/unimplemented/deviations.md +1 -0
- package/doc/zh-CN/gui/animation.md +33 -10
- package/doc/zh-CN/gui/build.md +9 -7
- package/doc/zh-CN/gui/dom.md +19 -4
- package/doc/zh-CN/gui/known-issues.md +21 -12
- package/doc/zh-CN/gui/layout.md +22 -5
- package/doc/zh-CN/gui/rendering.md +61 -20
- package/doc/zh-CN/gui/webgl.md +1 -0
- package/doc/zh-CN/gui-scripts.md +23 -11
- package/doc/zh-CN/gui.md +64 -16
- package/doc/zh-CN/implemented/async.md +1 -0
- package/doc/zh-CN/implemented/modules.md +8 -4
- package/doc/zh-CN/implemented/node/child-process.md +10 -3
- package/doc/zh-CN/implemented/runtime-core.md +1 -1
- package/doc/zh-CN/npm-package.md +18 -1
- package/doc/zh-CN/post/make-js-great-again.md +32 -0
- package/doc/zh-CN/requirements.md +25 -0
- package/doc/zh-CN/unimplemented/deviations.md +1 -0
- package/package.json +7 -7
- package/runtime/ext_gui/animation_values.cpp +425 -0
- package/runtime/ext_gui/animation_values.h +64 -0
- package/runtime/ext_gui/css.cpp +172 -21
- package/runtime/ext_gui/css.h +75 -4
- package/runtime/ext_gui/css_match.cpp +4 -0
- package/runtime/ext_gui/css_sheet.cpp +218 -2
- package/runtime/ext_gui/document.cpp +42 -192
- package/runtime/ext_gui/document.h +25 -12
- package/runtime/ext_gui/document_animation.cpp +428 -0
- package/runtime/ext_gui/effect_values.cpp +245 -21
- package/runtime/ext_gui/gradient_values.cpp +24 -0
- package/runtime/ext_gui/grid_values.cpp +23 -0
- package/runtime/ext_gui/gui_cursor.cpp +50 -0
- package/runtime/ext_gui/gui_events.cpp +16 -4
- package/runtime/ext_gui/gui_internal.h +3 -0
- package/runtime/ext_gui/image_api.h +3 -1
- package/runtime/ext_gui/image_feature.cpp +4 -2
- package/runtime/ext_gui/inline_svg.cpp +95 -8
- package/runtime/ext_gui/inline_svg.h +5 -1
- package/runtime/ext_gui/layout.cpp +3 -2
- package/runtime/ext_gui/layout.h +6 -0
- package/runtime/ext_gui/layout_flex.cpp +134 -29
- package/runtime/ext_gui/layout_flow.cpp +58 -7
- package/runtime/ext_gui/layout_flow_internal.h +39 -4
- package/runtime/ext_gui/layout_grid.cpp +31 -0
- package/runtime/ext_gui/layout_inline.cpp +26 -2
- package/runtime/ext_gui/layout_vertical.cpp +196 -0
- package/runtime/ext_gui/paint.cpp +67 -9
- package/runtime/ext_gui/paint.h +61 -8
- package/runtime/ext_gui/paint_backdrop.cpp +211 -0
- package/runtime/ext_gui/paint_background.cpp +175 -97
- package/runtime/ext_gui/paint_effects.cpp +12 -6
- package/runtime/ext_gui/paint_internal.h +27 -0
- package/runtime/ext_gui/paint_outline.cpp +44 -0
- package/runtime/ext_gui/paint_shadow.cpp +368 -0
- package/runtime/ext_gui/renderer.cpp +15 -7
- package/runtime/ext_gui/renderer.h +10 -1
- package/runtime/ext_gui/renderer_backdrop.cpp +374 -0
- package/runtime/ext_gui/renderer_bitmap.cpp +82 -0
- package/runtime/ext_gui/renderer_gradient.cpp +51 -17
- package/runtime/ext_gui/renderer_image.cpp +6 -1
- package/runtime/ext_gui/renderer_internal.h +21 -0
- package/runtime/ext_gui/renderer_layer.cpp +27 -1
- package/runtime/ext_gui/renderer_text.cpp +2 -1
- package/runtime/ext_gui/style.cpp +62 -8
- package/runtime/ext_gui/style.h +111 -4
- package/runtime/ext_gui/style_cascade.cpp +83 -0
- package/runtime/ext_gui/style_internal.h +13 -1
- package/runtime/ext_gui/style_length.cpp +92 -0
- package/runtime/ext_gui/style_print.cpp +83 -2
- package/runtime/ext_gui/style_svg.cpp +40 -0
- package/runtime/ext_gui/style_text.cpp +302 -0
- package/runtime/ext_gui/style_ui.cpp +150 -0
- package/runtime/ext_gui/style_values.cpp +76 -62
- package/runtime/ext_gui/style_values_internal.h +23 -0
- package/runtime/ext_gui/text.cpp +4 -2
- package/runtime/ext_gui/text.h +11 -4
- package/runtime/ext_gui/text_cache.cpp +11 -2
- package/runtime/ext_gui/text_font_db.cpp +427 -0
- package/runtime/ext_gui/text_font_paths.cpp +250 -0
- package/runtime/ext_gui/text_font_paths.h +39 -0
- package/runtime/ext_gui/text_font_sfnt.cpp +396 -0
- package/runtime/ext_gui/text_font_sfnt.h +44 -0
- package/runtime/ext_gui/text_fonts.cpp +348 -0
- package/runtime/ext_gui/text_fonts.h +78 -0
- package/runtime/ext_gui/text_fonts_internal.h +77 -0
- package/runtime/ext_gui/text_hb.cpp +63 -179
- package/runtime/ext_gui/text_stb.cpp +49 -193
- package/runtime/ext_gui/transform.cpp +107 -9
- package/runtime/ext_gui/transform.h +5 -0
- package/runtime/ext_gui/window.cpp +1 -1
- package/runtime/ext_node/child_process/child_process.c +149 -7
- package/runtime/rt.h +4 -0
- package/runtime/xt_async.c +4 -0
- package/runtime/xt_generator.c +2 -0
- package/runtime/xt_loop.c +8 -4
- package/runtime/xt_promise.c +103 -0
- package/scripts/build-gui.ts +17 -5
- package/scripts/build-media.ts +89 -10
- package/scripts/build-runtime.ts +7 -2
- package/scripts/fetch-tarball.ts +71 -0
- package/scripts/gui-build-cache.ts +28 -0
- package/scripts/gui-build-options.ts +26 -2
- package/scripts/package-release.ts +8 -0
- package/src/cli/hints.ts +19 -2
- package/src/cli/main.ts +11 -0
- package/src/driver/app-artifacts.ts +5 -3
- package/src/driver/compiler.ts +167 -56
- package/src/driver/icon.ts +3 -2
- package/src/driver/macos-sdk.ts +52 -0
- package/src/driver/options.ts +6 -0
- package/src/driver/platform-support.ts +69 -0
- package/src/driver/prebuilt.ts +61 -0
- package/src/driver/runtime-objects.ts +26 -5
- package/src/driver/toolchain-provider.ts +11 -0
- package/src/driver/toolchain.ts +26 -1
- package/src/driver/version.ts +1 -1
- package/src/driver/win-entry.ts +4 -3
- package/src/extensions/gui/features.ts +13 -9
- package/src/extensions/gui/html.ts +61 -31
- package/src/extensions/node/child_process/index.ts +4 -3
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detecting a prebuilt runtime archive that this machine's toolchain cannot
|
|
3
|
+
* link.
|
|
4
|
+
*
|
|
5
|
+
* The optional `@xbintsc/<os>-<arch>` package carries archives compiled on the
|
|
6
|
+
* release runner (`core.a`, `ext_node.a`, `gui.a`, `media.a`). Its Xcode
|
|
7
|
+
* Command Line Tools or Visual Studio C++ toolset can be **newer** than the
|
|
8
|
+
* one on the machine that runs the build: a linker can then reject the archive
|
|
9
|
+
* with unresolved symbols (`LNK2038`/`LNK2019`, `Undefined symbols`,
|
|
10
|
+
* `undefined reference`) or `was built for newer macOS version`.
|
|
11
|
+
*
|
|
12
|
+
* The driver answers that with one automatic retry that compiles the runtime
|
|
13
|
+
* from the sources shipped in the npm package. Its decision is based on the
|
|
14
|
+
* linker's own output rather than a version comparison, because an archive does
|
|
15
|
+
* not record the toolset that produced it portably: Mach-O objects carry
|
|
16
|
+
* `LC_BUILD_VERSION`, COFF objects do not carry an MSVC toolset version.
|
|
17
|
+
*
|
|
18
|
+
* `gui.a`/`media.a` are exempt: they bundle SDL3/FFmpeg/glslang, whose sources
|
|
19
|
+
* are not part of the npm package, so they cannot be rebuilt from it.
|
|
20
|
+
*/
|
|
21
|
+
import { dirname, resolve } from "node:path";
|
|
22
|
+
const ARCHIVE_SUFFIXES = [".a", ".lib"];
|
|
23
|
+
/** True when `candidate` is a static archive that sits in one of `dirs`. */
|
|
24
|
+
export function isPrebuiltArchivePath(candidate, dirs) {
|
|
25
|
+
if (!ARCHIVE_SUFFIXES.some((suffix) => candidate.endsWith(suffix)))
|
|
26
|
+
return false;
|
|
27
|
+
const parent = dirname(resolve(candidate));
|
|
28
|
+
return dirs.some((dir) => resolve(dir) === parent);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Linker messages that mean "these objects were produced by a different
|
|
32
|
+
* toolchain/SDK". Kept deliberately narrow: a missing file, a bad flag or a
|
|
33
|
+
* permission error must not trigger the (slow) source rebuild.
|
|
34
|
+
*/
|
|
35
|
+
const MISMATCH_PATTERNS = [
|
|
36
|
+
/LNK2038/i, // mismatch detected for 'RuntimeLibrary'/'_MSC_VER'
|
|
37
|
+
/LNK20(?:01|19)/i, // unresolved external symbol
|
|
38
|
+
/undefined symbols?/i, // ld64
|
|
39
|
+
/undefined reference/i, // GNU/LLD
|
|
40
|
+
/symbol\(s\) not found/i, // ld64 summary line
|
|
41
|
+
/was built for newer (?:macOS|iOS|tvOS|watchOS|visionOS)/i, // ld64 warning
|
|
42
|
+
/but linking in object file built for/i, // ld64 deployment-target error
|
|
43
|
+
/has an incompatible (?:architecture|platform)/i,
|
|
44
|
+
];
|
|
45
|
+
/** Whether a failed link's stderr looks like a toolchain/archive mismatch. */
|
|
46
|
+
export function looksLikePrebuiltLinkFailure(stderr) {
|
|
47
|
+
return MISMATCH_PATTERNS.some((pattern) => pattern.test(stderr));
|
|
48
|
+
}
|
|
49
|
+
/** First non-empty line of a command's stderr, for a one-line build notice. */
|
|
50
|
+
export function firstFailureLine(stderr) {
|
|
51
|
+
for (const line of stderr.split(/\r?\n/)) {
|
|
52
|
+
const trimmed = line.trim();
|
|
53
|
+
if (trimmed.length > 0)
|
|
54
|
+
return trimmed.length > 160 ? `${trimmed.slice(0, 157)}...` : trimmed;
|
|
55
|
+
}
|
|
56
|
+
return "";
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=prebuilt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prebuilt.js","sourceRoot":"","sources":["../../../src/driver/prebuilt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;AAEjD,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,IAAuB;IAC9E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAG;IACxB,UAAU,EAAE,oDAAoD;IAChE,iBAAiB,EAAE,6BAA6B;IAChD,qBAAqB,EAAE,OAAO;IAC9B,sBAAsB,EAAE,UAAU;IAClC,wBAAwB,EAAE,oBAAoB;IAC9C,0DAA0D,EAAE,eAAe;IAC3E,uCAAuC,EAAE,+BAA+B;IACxE,gDAAgD;CACxC,CAAC;AAEX,8EAA8E;AAC9E,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACzD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAChG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -17,6 +17,12 @@ export interface RuntimeObjects {
|
|
|
17
17
|
readonly featureObjects: readonly string[];
|
|
18
18
|
/** Pre-built C++/Rust objects and archives contributed by native extensions. */
|
|
19
19
|
readonly nativeObjects: readonly string[];
|
|
20
|
+
/**
|
|
21
|
+
* The prebuilt `core`/`ext_<name>` archives this link used. Empty when the
|
|
22
|
+
* runtime was compiled from source. The driver retries a failed link without
|
|
23
|
+
* them, so it has to know whether the first attempt used any.
|
|
24
|
+
*/
|
|
25
|
+
readonly prebuiltArchives: readonly string[];
|
|
20
26
|
}
|
|
21
27
|
export interface RuntimeObjectsOptions {
|
|
22
28
|
readonly runner: Runner;
|
|
@@ -26,11 +32,16 @@ export interface RuntimeObjectsOptions {
|
|
|
26
32
|
readonly registry: ExtensionRegistry;
|
|
27
33
|
readonly preferPrebuilt: boolean;
|
|
28
34
|
readonly env: Record<string, string>;
|
|
35
|
+
/** macOS SDK for `-isysroot`; part of the object cache key. */
|
|
36
|
+
readonly sdkRoot?: string;
|
|
29
37
|
readonly lto: boolean;
|
|
30
38
|
readonly pgo: PgoMode | undefined;
|
|
31
39
|
readonly pgoDir: string;
|
|
32
40
|
/** Optional link features selected for this program. */
|
|
33
41
|
readonly features?: readonly ResolvedLinkFeature[];
|
|
42
|
+
/** Override the folders searched for prebuilt archives (defaults to the
|
|
43
|
+
* runtime's `lib/<os>-<arch>` plus the installed platform package). */
|
|
44
|
+
readonly runtimeLibDirs?: readonly string[];
|
|
34
45
|
}
|
|
35
46
|
/**
|
|
36
47
|
* Compile the core runtime and every extension source, reusing cached object
|
|
@@ -9,7 +9,7 @@ import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
|
9
9
|
import { basename, join, resolve } from "node:path";
|
|
10
10
|
import { hashParts } from "./cache.js";
|
|
11
11
|
import { findRuntimeLibrary } from "./runtime-lib.js";
|
|
12
|
-
import { compileC, optimizationFlags, RUNTIME_CFLAGS } from "./toolchain.js";
|
|
12
|
+
import { compileC, optimizationFlags, RUNTIME_CFLAGS, sysrootFlags } from "./toolchain.js";
|
|
13
13
|
import { COMPILER_VERSION } from "./version.js";
|
|
14
14
|
/** Core runtime translation units (each compiled and cached independently). */
|
|
15
15
|
export const RUNTIME_SOURCES = [
|
|
@@ -50,6 +50,9 @@ export const RUNTIME_SOURCES = [
|
|
|
50
50
|
export function ensureRuntimeObjects(options) {
|
|
51
51
|
const { runner, clang, runtimeDir, cacheDir, registry, preferPrebuilt, env, lto, pgo, pgoDir } = options;
|
|
52
52
|
const optimization = optimizationFlags(lto, pgo, pgoDir);
|
|
53
|
+
/* The sysroot joins the extra flags (and therefore the cache key): objects
|
|
54
|
+
compiled against a different SDK are a different artifact. */
|
|
55
|
+
const compileFlags = [...optimization, ...sysrootFlags(options.sdkRoot)];
|
|
53
56
|
/* Runtime objects depend on the shared headers (rt.h/rt_internal.h/...) and
|
|
54
57
|
the `#include`d implementation fragments (`.inc`), so any change to them
|
|
55
58
|
must invalidate every cached object. Hash them all. */
|
|
@@ -71,7 +74,7 @@ export function ensureRuntimeObjects(options) {
|
|
|
71
74
|
"runtime",
|
|
72
75
|
COMPILER_VERSION,
|
|
73
76
|
RUNTIME_CFLAGS.join(" "),
|
|
74
|
-
|
|
77
|
+
compileFlags.join(" "),
|
|
75
78
|
tag,
|
|
76
79
|
headerStamp,
|
|
77
80
|
body,
|
|
@@ -80,23 +83,28 @@ export function ensureRuntimeObjects(options) {
|
|
|
80
83
|
]);
|
|
81
84
|
const objectPath = join(cacheDir, `${tag}-${key}.o`);
|
|
82
85
|
if (!existsSync(objectPath)) {
|
|
83
|
-
compileC(runner, clang, sourcePath, objectPath, runtimeDir, env,
|
|
86
|
+
compileC(runner, clang, sourcePath, objectPath, runtimeDir, env, compileFlags);
|
|
84
87
|
}
|
|
85
88
|
return objectPath;
|
|
86
89
|
};
|
|
87
|
-
const coreArchive = preferPrebuilt ? findRuntimeLibrary("core") : undefined;
|
|
90
|
+
const coreArchive = preferPrebuilt ? findRuntimeLibrary("core", options.runtimeLibDirs) : undefined;
|
|
88
91
|
const runtimeObjects = coreArchive
|
|
89
92
|
? [coreArchive]
|
|
90
93
|
: RUNTIME_SOURCES.map((source) => compileOne(join(runtimeDir, source), basename(source, ".c")));
|
|
94
|
+
/** Prebuilt archives this link uses; the driver retries without them. */
|
|
95
|
+
const prebuiltArchives = coreArchive ? [coreArchive] : [];
|
|
91
96
|
const extensionObjects = [];
|
|
92
97
|
const seen = new Set();
|
|
93
98
|
for (const extension of registry.all()) {
|
|
94
99
|
const sources = extension.runtimeSources ? extension.runtimeSources() : [];
|
|
95
100
|
if (sources.length === 0)
|
|
96
101
|
continue;
|
|
97
|
-
const archive = preferPrebuilt
|
|
102
|
+
const archive = preferPrebuilt
|
|
103
|
+
? findRuntimeLibrary(`ext_${extension.name}`, options.runtimeLibDirs)
|
|
104
|
+
: undefined;
|
|
98
105
|
if (archive) {
|
|
99
106
|
extensionObjects.push(archive);
|
|
107
|
+
prebuiltArchives.push(archive);
|
|
100
108
|
continue;
|
|
101
109
|
}
|
|
102
110
|
for (const sourcePath of sources) {
|
|
@@ -127,6 +135,7 @@ export function ensureRuntimeObjects(options) {
|
|
|
127
135
|
extensionObjects,
|
|
128
136
|
featureObjects: [...new Set(featureObjects)],
|
|
129
137
|
nativeObjects: [...new Set(registry.nativeObjects())],
|
|
138
|
+
prebuiltArchives,
|
|
130
139
|
};
|
|
131
140
|
}
|
|
132
141
|
//# sourceMappingURL=runtime-objects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-objects.js","sourceRoot":"","sources":["../../../src/driver/runtime-objects.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAA6B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-objects.js","sourceRoot":"","sources":["../../../src/driver/runtime-objects.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
* skipped (or rejected, when named explicitly) instead of producing objects
|
|
23
23
|
* the linker cannot mix.
|
|
24
24
|
*
|
|
25
|
+
* On macOS the resolved driver also carries the SDK as `sdkRoot`, which the
|
|
26
|
+
* compile and link steps pass as `-isysroot` (see `macos-sdk.ts`): an Apple
|
|
27
|
+
* clang invoked by absolute path does not infer the SDK by itself, and without
|
|
28
|
+
* one not even `<stdio.h>` — nor the linker's `libm` stub — is found.
|
|
29
|
+
*
|
|
25
30
|
* Extra linker arguments (for example `-fuse-ld=lld`) can be supplied through
|
|
26
31
|
* `xbintsc_LINKER_ARGS`.
|
|
27
32
|
*/
|
|
@@ -39,6 +44,9 @@ export interface ResolvedToolchain {
|
|
|
39
44
|
/** Extra environment for the toolchain subprocesses, merged over the current
|
|
40
45
|
* environment. */
|
|
41
46
|
readonly env: Record<string, string>;
|
|
47
|
+
/** macOS SDK to pass as `-isysroot`; lost off macOS or when `SDKROOT` is
|
|
48
|
+
* already set. See `macos-sdk.ts`. */
|
|
49
|
+
readonly sdkRoot?: string;
|
|
42
50
|
}
|
|
43
51
|
/** Resolve the toolchain that `build` should use. See the module docblock. */
|
|
44
52
|
export declare function resolveToolchain(runner?: Runner): ResolvedToolchain;
|
|
@@ -22,10 +22,16 @@
|
|
|
22
22
|
* skipped (or rejected, when named explicitly) instead of producing objects
|
|
23
23
|
* the linker cannot mix.
|
|
24
24
|
*
|
|
25
|
+
* On macOS the resolved driver also carries the SDK as `sdkRoot`, which the
|
|
26
|
+
* compile and link steps pass as `-isysroot` (see `macos-sdk.ts`): an Apple
|
|
27
|
+
* clang invoked by absolute path does not infer the SDK by itself, and without
|
|
28
|
+
* one not even `<stdio.h>` — nor the linker's `libm` stub — is found.
|
|
29
|
+
*
|
|
25
30
|
* Extra linker arguments (for example `-fuse-ld=lld`) can be supplied through
|
|
26
31
|
* `xbintsc_LINKER_ARGS`.
|
|
27
32
|
*/
|
|
28
33
|
import { locateClang, realRunner } from "./toolchain.js";
|
|
34
|
+
import { macosSdkRoot } from "./macos-sdk.js";
|
|
29
35
|
function linkerArgs(fallback) {
|
|
30
36
|
const raw = process.env.xbintsc_LINKER_ARGS;
|
|
31
37
|
if (raw)
|
|
@@ -35,12 +41,14 @@ function linkerArgs(fallback) {
|
|
|
35
41
|
/** Resolve the toolchain that `build` should use. See the module docblock. */
|
|
36
42
|
export function resolveToolchain(runner = realRunner) {
|
|
37
43
|
const location = locateClang(runner);
|
|
44
|
+
const sdkRoot = macosSdkRoot(runner);
|
|
38
45
|
return {
|
|
39
46
|
clang: location.command,
|
|
40
47
|
source: location.source,
|
|
41
48
|
...(location.version ? { version: location.version } : {}),
|
|
42
49
|
linkerArgs: linkerArgs([]),
|
|
43
50
|
env: {},
|
|
51
|
+
...(sdkRoot === undefined ? {} : { sdkRoot }),
|
|
44
52
|
};
|
|
45
53
|
}
|
|
46
54
|
//# sourceMappingURL=toolchain-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain-provider.js","sourceRoot":"","sources":["../../../src/driver/toolchain-provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"toolchain-provider.js","sourceRoot":"","sources":["../../../src/driver/toolchain-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkC,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqB9C,SAAS,UAAU,CAAC,QAA2B;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC5C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,SAAiB,UAAU;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;QAC1B,GAAG,EAAE,EAAE;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -90,12 +90,22 @@ export declare function findClang(runner?: Runner): string;
|
|
|
90
90
|
export type PgoMode = "generate" | "use";
|
|
91
91
|
/** clang flags for LTO and the selected PGO stage. */
|
|
92
92
|
export declare function optimizationFlags(lto: boolean | undefined, pgo: PgoMode | undefined, pgoDir: string | undefined): string[];
|
|
93
|
+
/**
|
|
94
|
+
* `-isysroot` for a resolved macOS SDK, or nothing off macOS.
|
|
95
|
+
*
|
|
96
|
+
* The sysroot travels on the command line and not as `SDKROOT` in the
|
|
97
|
+
* environment because the self-hosted compiler's `spawnSync` ignores
|
|
98
|
+
* `options.env`; flags survive that. See `macos-sdk.ts`.
|
|
99
|
+
*/
|
|
100
|
+
export declare function sysrootFlags(sdkRoot: string | undefined): string[];
|
|
93
101
|
export interface CompileIrOptions {
|
|
94
102
|
readonly clang: string;
|
|
95
103
|
readonly irPath: string;
|
|
96
104
|
readonly objectPath: string;
|
|
97
105
|
readonly optimize: string;
|
|
98
106
|
readonly env?: Record<string, string>;
|
|
107
|
+
/** macOS SDK for `-isysroot`; see {@link sysrootFlags}. */
|
|
108
|
+
readonly sdkRoot?: string;
|
|
99
109
|
/** Emit debug info (`-g`) and keep frame pointers for crash backtraces. */
|
|
100
110
|
readonly debug?: boolean;
|
|
101
111
|
/** Compile to LTO bitcode and let the linker optimize across units. */
|
|
@@ -113,11 +123,20 @@ export interface LinkOptions {
|
|
|
113
123
|
readonly linkerFlags: readonly string[];
|
|
114
124
|
readonly optimize: string;
|
|
115
125
|
readonly env?: Record<string, string>;
|
|
126
|
+
/** macOS SDK for `-isysroot`; the linker's stubs (`libm`, `libSystem`) come
|
|
127
|
+
* from it, so a link without one fails with `library 'm' not found`. */
|
|
128
|
+
readonly sdkRoot?: string;
|
|
116
129
|
readonly lto?: boolean;
|
|
117
130
|
readonly pgo?: PgoMode;
|
|
118
131
|
readonly pgoDir?: string;
|
|
119
132
|
}
|
|
120
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Link the program and return the command result. A successful link can still
|
|
135
|
+
* carry a warning (for example ld64's "object file was built for newer macOS
|
|
136
|
+
* version"); the driver inspects `stderr` to decide whether a prebuilt archive
|
|
137
|
+
* should be rebuilt from source.
|
|
138
|
+
*/
|
|
139
|
+
export declare function link(runner: Runner, options: LinkOptions): CommandResult;
|
|
121
140
|
/**
|
|
122
141
|
* Flags shared by every runtime/extension C compile. Exported so the object
|
|
123
142
|
* cache key can change when they do: the cache is keyed by source content, and
|
|
@@ -224,6 +224,16 @@ export function optimizationFlags(lto, pgo, pgoDir) {
|
|
|
224
224
|
flags.push(`-fprofile-use=${pgoDir ?? "pgo"}`);
|
|
225
225
|
return flags;
|
|
226
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* `-isysroot` for a resolved macOS SDK, or nothing off macOS.
|
|
229
|
+
*
|
|
230
|
+
* The sysroot travels on the command line and not as `SDKROOT` in the
|
|
231
|
+
* environment because the self-hosted compiler's `spawnSync` ignores
|
|
232
|
+
* `options.env`; flags survive that. See `macos-sdk.ts`.
|
|
233
|
+
*/
|
|
234
|
+
export function sysrootFlags(sdkRoot) {
|
|
235
|
+
return sdkRoot === undefined ? [] : ["-isysroot", sdkRoot];
|
|
236
|
+
}
|
|
227
237
|
/**
|
|
228
238
|
* One function/data item per section so the linker can drop everything a
|
|
229
239
|
* program never references. This is what `--gc-sections` / `-dead_strip` need;
|
|
@@ -239,6 +249,7 @@ export function compileIr(runner, options) {
|
|
|
239
249
|
...SECTION_FLAGS,
|
|
240
250
|
...debugFlags,
|
|
241
251
|
...profileFlags,
|
|
252
|
+
...sysrootFlags(options.sdkRoot),
|
|
242
253
|
"-c",
|
|
243
254
|
options.irPath,
|
|
244
255
|
"-o",
|
|
@@ -255,6 +266,12 @@ function deadStripFlag() {
|
|
|
255
266
|
return ["-Wl,-dead_strip"];
|
|
256
267
|
return ["-Wl,--gc-sections"];
|
|
257
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Link the program and return the command result. A successful link can still
|
|
271
|
+
* carry a warning (for example ld64's "object file was built for newer macOS
|
|
272
|
+
* version"); the driver inspects `stderr` to decide whether a prebuilt archive
|
|
273
|
+
* should be rebuilt from source.
|
|
274
|
+
*/
|
|
258
275
|
export function link(runner, options) {
|
|
259
276
|
const profileFlags = optimizationFlags(options.lto, options.pgo, options.pgoDir);
|
|
260
277
|
const args = [
|
|
@@ -264,6 +281,7 @@ export function link(runner, options) {
|
|
|
264
281
|
* understands both ELF/Mach-O and COFF; without it MSVC link.exe rejects
|
|
265
282
|
* the bitcode object on Windows. */
|
|
266
283
|
...(options.lto ? ["-fuse-ld=lld"] : []),
|
|
284
|
+
...sysrootFlags(options.sdkRoot),
|
|
267
285
|
...options.objectPaths,
|
|
268
286
|
"-o",
|
|
269
287
|
options.outputPath,
|
|
@@ -273,6 +291,7 @@ export function link(runner, options) {
|
|
|
273
291
|
const result = runner.run(options.clang, args, { env: options.env });
|
|
274
292
|
if (result.status !== 0)
|
|
275
293
|
throw new ToolchainError(`${options.clang} link`, result.status, result.stderr);
|
|
294
|
+
return result;
|
|
276
295
|
}
|
|
277
296
|
/**
|
|
278
297
|
* Flags shared by every runtime/extension C compile. Exported so the object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../../src/driver/toolchain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../../src/driver/toolchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* `main`/`master` only (see `.githooks/pre-commit`), so feature branches never
|
|
10
10
|
* change this line and merging two of them cannot conflict here.
|
|
11
11
|
*/
|
|
12
|
-
export const COMPILER_VERSION = "0.
|
|
12
|
+
export const COMPILER_VERSION = "0.6.8";
|
|
13
13
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/driver/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/driver/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC"}
|
|
@@ -18,4 +18,4 @@ export declare const WINDOWS_ENTRY_SOURCE = "/* Generated by xbintsc - Windows G
|
|
|
18
18
|
* Compile the entry shim into an object file (cached by source + platform +
|
|
19
19
|
* toolchain) and return its path.
|
|
20
20
|
*/
|
|
21
|
-
export declare function ensureWindowsEntryObject(runner: Runner, clang: string, cacheDir: string, env?: Record<string, string
|
|
21
|
+
export declare function ensureWindowsEntryObject(runner: Runner, clang: string, cacheDir: string, env?: Record<string, string>, sdkRoot?: string): string;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
15
15
|
import { join } from "node:path";
|
|
16
16
|
import { hashParts } from "./cache.js";
|
|
17
|
-
import { compileC } from "./toolchain.js";
|
|
17
|
+
import { compileC, sysrootFlags } from "./toolchain.js";
|
|
18
18
|
/** The bridge source. `main` is the entry point the runtime emits. */
|
|
19
19
|
export const WINDOWS_ENTRY_SOURCE = `/* Generated by xbintsc - Windows GUI subsystem entry point. Do not edit. */
|
|
20
20
|
#ifndef UNICODE
|
|
@@ -38,14 +38,14 @@ int WINAPI WinMain(HINSTANCE instance, HINSTANCE previous, LPSTR command_line, i
|
|
|
38
38
|
* Compile the entry shim into an object file (cached by source + platform +
|
|
39
39
|
* toolchain) and return its path.
|
|
40
40
|
*/
|
|
41
|
-
export function ensureWindowsEntryObject(runner, clang, cacheDir, env) {
|
|
42
|
-
const key = hashParts(["win-gui-entry", process.platform, clang, WINDOWS_ENTRY_SOURCE]);
|
|
41
|
+
export function ensureWindowsEntryObject(runner, clang, cacheDir, env, sdkRoot) {
|
|
42
|
+
const key = hashParts(["win-gui-entry", process.platform, clang, sdkRoot ?? "", WINDOWS_ENTRY_SOURCE]);
|
|
43
43
|
const sourcePath = join(cacheDir, `winentry-${key}.c`);
|
|
44
44
|
const objectPath = join(cacheDir, `winentry-${key}.o`);
|
|
45
45
|
if (!existsSync(objectPath)) {
|
|
46
46
|
mkdirSync(cacheDir, { recursive: true });
|
|
47
47
|
writeFileSync(sourcePath, WINDOWS_ENTRY_SOURCE);
|
|
48
|
-
compileC(runner, clang, sourcePath, objectPath, cacheDir, env);
|
|
48
|
+
compileC(runner, clang, sourcePath, objectPath, cacheDir, env, sysrootFlags(sdkRoot));
|
|
49
49
|
}
|
|
50
50
|
return objectPath;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"win-entry.js","sourceRoot":"","sources":["../../../src/driver/win-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"win-entry.js","sourceRoot":"","sources":["../../../src/driver/win-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAErE,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;CAiBnC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAa,EACb,QAAgB,EAChB,GAA4B,EAC5B,OAAgB;IAEhB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACvG,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -8,14 +8,15 @@
|
|
|
8
8
|
* The DOM media surface lives in `gui.a`; only decoding is optional, and an
|
|
9
9
|
* element without the backend still exists and fires `error`.
|
|
10
10
|
* - `gpu` — glslang (+ SPIRV-Cross on macOS), the GLSL→SPIR-V translator used
|
|
11
|
-
* by WebGL *and* by the `mix-blend-mode`
|
|
12
|
-
* own shaders are precompiled, so a DOM
|
|
11
|
+
* by WebGL *and* by the `mix-blend-mode` / `backdrop-filter` offscreen
|
|
12
|
+
* compositor. The engine's own shaders are precompiled, so a DOM page
|
|
13
|
+
* never needs it.
|
|
13
14
|
*
|
|
14
15
|
* Detection is static: the compiler sees imported `.html`/`.css` assets and all
|
|
15
16
|
* bundled modules, so it can recognise `<video>`/`<audio>`, `getContext("webgl")`
|
|
16
|
-
* and `mix-blend-mode`. When markup can be built at run time
|
|
17
|
-
* sets `dynamicMarkup`, which conservatively enables both
|
|
18
|
-
* know better can shrink the binary with `--no-feature`.
|
|
17
|
+
* and `mix-blend-mode`/`backdrop-filter`. When markup can be built at run time
|
|
18
|
+
* the usage collector sets `dynamicMarkup`, which conservatively enables both
|
|
19
|
+
* features; users who know better can shrink the binary with `--no-feature`.
|
|
19
20
|
*/
|
|
20
21
|
import type { LinkFeature, ProgramUsage } from "../link-feature.js";
|
|
21
22
|
/** True when the program may create or drive a media element. */
|
|
@@ -26,6 +27,8 @@ export declare function hasGpuUsage(usage: ProgramUsage): boolean;
|
|
|
26
27
|
export declare function hasWebglUsage(usage: ProgramUsage): boolean;
|
|
27
28
|
/** True when the program may draw a bitmap or SVG. */
|
|
28
29
|
export declare function hasImageUsage(usage: ProgramUsage): boolean;
|
|
29
|
-
/** True when the program may need full OpenType shaping
|
|
30
|
+
/** True when the program may need full OpenType shaping. Non-Latin text needs it
|
|
31
|
+
* for shaping, and an author `@font-face` often points at a CFF/OTF font that
|
|
32
|
+
* the default stb_truetype backend cannot outline. */
|
|
30
33
|
export declare function hasShapingUsage(usage: ProgramUsage): boolean;
|
|
31
34
|
export declare const guiLinkFeatures: readonly LinkFeature[];
|
|
@@ -8,14 +8,15 @@
|
|
|
8
8
|
* The DOM media surface lives in `gui.a`; only decoding is optional, and an
|
|
9
9
|
* element without the backend still exists and fires `error`.
|
|
10
10
|
* - `gpu` — glslang (+ SPIRV-Cross on macOS), the GLSL→SPIR-V translator used
|
|
11
|
-
* by WebGL *and* by the `mix-blend-mode`
|
|
12
|
-
* own shaders are precompiled, so a DOM
|
|
11
|
+
* by WebGL *and* by the `mix-blend-mode` / `backdrop-filter` offscreen
|
|
12
|
+
* compositor. The engine's own shaders are precompiled, so a DOM page
|
|
13
|
+
* never needs it.
|
|
13
14
|
*
|
|
14
15
|
* Detection is static: the compiler sees imported `.html`/`.css` assets and all
|
|
15
16
|
* bundled modules, so it can recognise `<video>`/`<audio>`, `getContext("webgl")`
|
|
16
|
-
* and `mix-blend-mode`. When markup can be built at run time
|
|
17
|
-
* sets `dynamicMarkup`, which conservatively enables both
|
|
18
|
-
* know better can shrink the binary with `--no-feature`.
|
|
17
|
+
* and `mix-blend-mode`/`backdrop-filter`. When markup can be built at run time
|
|
18
|
+
* the usage collector sets `dynamicMarkup`, which conservatively enables both
|
|
19
|
+
* features; users who know better can shrink the binary with `--no-feature`.
|
|
19
20
|
*/
|
|
20
21
|
import { join } from "node:path";
|
|
21
22
|
import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
|
|
@@ -25,7 +26,7 @@ const MEDIA_TAG = /<(?:video|audio)\b/i;
|
|
|
25
26
|
/** A literal tag name handed to `createElement("video")`. */
|
|
26
27
|
const MEDIA_TAG_NAME = /^(?:video|audio)$/i;
|
|
27
28
|
/** Anything that needs the GLSL translator. */
|
|
28
|
-
const GPU_TOKEN = /webgl|mix-blend-mode|mixBlendMode/i;
|
|
29
|
+
const GPU_TOKEN = /webgl|mix-blend-mode|mixBlendMode|backdrop-filter|backdropFilter/i;
|
|
29
30
|
/** True when the program may create or drive a media element. */
|
|
30
31
|
export function hasMediaUsage(usage) {
|
|
31
32
|
if (usage.dynamicMarkup)
|
|
@@ -40,7 +41,7 @@ export function hasMediaUsage(usage) {
|
|
|
40
41
|
export function hasGpuUsage(usage) {
|
|
41
42
|
if (usage.dynamicMarkup)
|
|
42
43
|
return true;
|
|
43
|
-
if (usage.identifiers.has("mixBlendMode"))
|
|
44
|
+
if (usage.identifiers.has("mixBlendMode") || usage.identifiers.has("backdropFilter"))
|
|
44
45
|
return true;
|
|
45
46
|
if (usage.getContext.some((kind) => kind === undefined || /webgl/i.test(kind)))
|
|
46
47
|
return true;
|
|
@@ -64,11 +65,15 @@ export function hasImageUsage(usage) {
|
|
|
64
65
|
}
|
|
65
66
|
return usage.strings.some((value) => /<img\b|<svg\b|background-image|url\(|\.svg\b|drawImage|createImageBitmap/i.test(value));
|
|
66
67
|
}
|
|
67
|
-
/** True when the program may need full OpenType shaping
|
|
68
|
+
/** True when the program may need full OpenType shaping. Non-Latin text needs it
|
|
69
|
+
* for shaping, and an author `@font-face` often points at a CFF/OTF font that
|
|
70
|
+
* the default stb_truetype backend cannot outline. */
|
|
68
71
|
export function hasShapingUsage(usage) {
|
|
69
72
|
if (usage.dynamicMarkup)
|
|
70
73
|
return true;
|
|
71
74
|
return usage.strings.some((value) => {
|
|
75
|
+
if (/@font-face\b/i.test(value))
|
|
76
|
+
return true;
|
|
72
77
|
for (const character of value) {
|
|
73
78
|
if ((character.codePointAt(0) ?? 0) > 0x7f)
|
|
74
79
|
return true;
|
|
@@ -110,7 +115,7 @@ export const guiLinkFeatures = [
|
|
|
110
115
|
},
|
|
111
116
|
{
|
|
112
117
|
name: "gpu",
|
|
113
|
-
description: "GLSL translation (WebGL
|
|
118
|
+
description: "GLSL translation (WebGL, mix-blend-mode and backdrop-filter) via glslang",
|
|
114
119
|
/**
|
|
115
120
|
* `gpu_bridge.c` is linked only when the feature is active. It calls into
|
|
116
121
|
* `gpu_feature.cpp` inside `gui.a`, which installs the shader-translation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/extensions/gui/features.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../../src/extensions/gui/features.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,16 @@
|
|
|
12
12
|
* This is how xbintsc supports `<script>` without a JavaScript engine: the body
|
|
13
13
|
* is ordinary TypeScript compiled by the existing front end, ahead of time.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
* `<script
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
15
|
+
* Both forms are compiled the same way: an inline
|
|
16
|
+
* `<script lang="ts">body</script>` body and an external `<script src="./app.ts">`
|
|
17
|
+
* file are parsed as a module, their top-level `import`/`export … from`
|
|
18
|
+
* statements are hoisted to the generated module (with relative specifiers
|
|
19
|
+
* rewritten so they resolve from the HTML file), and the remaining statements
|
|
20
|
+
* are wrapped in the script function. An inline body therefore resolves imports
|
|
21
|
+
* relative to the page that contains it, exactly like `<script type="module">`
|
|
22
|
+
* in a browser — including a `node:`/bare specifier, which links like any other
|
|
23
|
+
* module import. All scripts run in document order after parsing (there is no
|
|
24
|
+
* "eager" execution point), i.e. every script is effectively `defer`red.
|
|
22
25
|
*/
|
|
23
26
|
import type { AssetLoadResult } from "../registry.js";
|
|
24
27
|
/** Rewrite `<script>` bodies into registered AOT functions + an HTML string. */
|