Add static variants of Dart engine library and update samples

Fixes https://github.com/dart-lang/sdk/issues/60799

Change-Id: I16a8dd2c854ed6915f14e1b71547879f50f2de0e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/432920
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Ivan Inozemtsev <iinozemtsev@google.com>
This commit is contained in:
Ivan Inozemtsev
2025-06-06 04:00:45 -07:00
committed by Commit Queue
parent fae7752e9e
commit 15c58a889f
13 changed files with 240 additions and 13 deletions
+34
View File
@@ -107,3 +107,37 @@ shared_library("dart_engine_aot_shared") {
]
}
}
static_library("dart_engine_jit_static") {
deps = [ ":engine_jit_set" ]
complete_static_lib = true
if (is_win) {
libs = [
"ole32.lib",
"iphlpapi.lib",
"psapi.lib",
"ws2_32.lib",
"Rpcrt4.lib",
"shlwapi.lib",
"winmm.lib",
]
}
}
static_library("dart_engine_aot_static") {
deps = [ ":engine_aot_set" ]
complete_static_lib = true
if (is_win) {
libs = [
"ole32.lib",
"iphlpapi.lib",
"psapi.lib",
"ws2_32.lib",
"Rpcrt4.lib",
"shlwapi.lib",
"winmm.lib",
]
}
}
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
+83 -3
View File
@@ -16,28 +16,42 @@ group("all") {
group("aot") {
deps = [
":run_main_aot",
":run_main_aot_static",
":run_timer_aot",
":run_timer_aot_static",
":run_timer_async_aot",
":run_timer_async_aot_static",
":run_two_programs_aot",
":run_two_programs_aot_static",
]
# FFI can't execute on the VM's simulator
if (dart_target_arch == host_cpu) {
deps += [ ":run_futures_aot" ]
deps += [
":run_futures_aot",
":run_futures_aot_static",
]
}
}
group("kernel") {
deps = [
":run_main_kernel",
":run_main_kernel_static",
":run_timer_async_kernel",
":run_timer_async_kernel_static",
":run_timer_kernel",
":run_timer_kernel_static",
":run_two_programs_kernel",
":run_two_programs_kernel_static",
]
# FFI can't execute on the VM's simulator
if (dart_target_arch == host_cpu) {
deps += [ ":run_futures_kernel" ]
deps += [
":run_futures_kernel",
":run_futures_kernel_static",
]
}
}
@@ -45,6 +59,7 @@ _all_configs = [
{
suffix = "_kernel"
dart_shared_lib = "../../runtime/engine:dart_engine_jit_shared"
dart_static_lib = "../../runtime/engine:dart_engine_jit_static"
dart_snapshot_kind = "kernel"
gen_kernel_args = [ "--link-platform" ]
snapshot_target = "application_snapshot"
@@ -53,6 +68,7 @@ _all_configs = [
{
suffix = "_aot"
dart_shared_lib = "../../runtime/engine:dart_engine_aot_shared"
dart_static_lib = "../../runtime/engine:dart_engine_aot_static"
snapshot_target = "aot_snapshot"
# AOT snapshots as shared libraries on Windows are not
@@ -105,6 +121,37 @@ template("sample") {
}
deps += extra_deps
}
executable("${target_name}${conf.suffix}_static") {
forward_variables_from(invoker,
"*",
[
"extra_deps",
"configurable_deps",
])
if (!defined(include_dirs)) {
include_dirs = []
}
include_dirs += [
".",
"../../runtime",
"../../runtime/engine",
]
# Otherwise build with --no-clang (jit) or MSAN (aot) fails.
if (is_linux) {
if (!defined(ldflags)) {
ldflags = []
}
ldflags += [ "-Wl,--allow-shlib-undefined" ]
}
deps = [ conf.dart_static_lib ]
foreach(dep, configurable_deps) {
deps += [ "${dep}${conf.suffix}_static" ]
}
deps += extra_deps
}
}
}
@@ -118,7 +165,8 @@ template("snapshots") {
extra_deps += invoker.extra_deps
}
foreach(conf, _all_configs) {
target(conf.snapshot_target, "${target_name}${conf.suffix}") {
snapshot_target_name = "${target_name}${conf.suffix}"
target(conf.snapshot_target, snapshot_target_name) {
forward_variables_from(invoker,
"*",
[
@@ -143,6 +191,9 @@ template("snapshots") {
}
deps += extra_deps
}
group("${snapshot_target_name}_static") {
deps = [ ":${snapshot_target_name}" ]
}
}
}
@@ -197,6 +248,35 @@ template("shims") {
}
deps += extra_deps
}
static_library("${target_name}${conf.suffix}_static") {
forward_variables_from(invoker,
"*",
[
"name",
"extra_deps",
"configurable_deps",
])
if (!defined(include_dirs)) {
include_dirs = []
}
include_dirs += [
".",
"../../runtime",
"../../runtime/engine",
]
sources = [
"$name.cc",
"$name.h",
]
public = [ "$name.h" ]
deps = [ conf.dart_static_lib ]
foreach(dep, configurable_deps) {
deps += [ "$dep${conf.suffix}" ]
}
deps += extra_deps
}
}
}
+23 -10
View File
@@ -2,6 +2,17 @@ import 'dart:io';
import 'package:expect/expect.dart';
void checkSamples(
String binaryBasename,
List<String> args, {
bool skipIfNotBuilt = false,
}) {
// Shared library variant.
checkSample(binaryBasename, args, skipIfNotBuilt: skipIfNotBuilt);
// Static variant.
checkSample('${binaryBasename}_static', args, skipIfNotBuilt: skipIfNotBuilt);
}
void checkSample(
String binary,
List<String> args, {
@@ -35,35 +46,37 @@ void main() {
final executable = File(Platform.executable).absolute.path;
final out = executable.substring(0, executable.lastIndexOf('dart') - 1);
checkSample('$out/run_main_kernel', ['$out/gen/hello_kernel.dart.snapshot']);
checkSample('$out/run_two_programs_kernel', [
checkSamples('$out/run_main_kernel', ['$out/gen/hello_kernel.dart.snapshot']);
checkSamples('$out/run_two_programs_kernel', [
'$out/gen/program1_kernel.dart.snapshot',
'$out/gen/program2_kernel.dart.snapshot',
]);
checkSample('$out/run_timer_kernel', ['$out/gen/timer_kernel.dart.snapshot']);
checkSample('$out/run_timer_async_kernel', [
checkSamples('$out/run_timer_kernel', [
'$out/gen/timer_kernel.dart.snapshot',
]);
checkSamples('$out/run_timer_async_kernel', [
'$out/gen/timer_kernel.dart.snapshot',
]);
// FFI samples aren't built on some platforms.
checkSample('$out/run_futures_kernel', [
checkSamples('$out/run_futures_kernel', [
'$out/gen/futures_kernel.dart.snapshot',
], skipIfNotBuilt: true);
// AOT Samples aren't built on some platforms.
checkSample('$out/run_main_aot', [
checkSamples('$out/run_main_aot', [
'$out/hello_aot.snapshot',
], skipIfNotBuilt: true);
checkSample('$out/run_two_programs_aot', [
checkSamples('$out/run_two_programs_aot', [
'$out/program1_aot.snapshot',
'$out/program2_aot.snapshot',
], skipIfNotBuilt: true);
checkSample('$out/run_timer_aot', [
checkSamples('$out/run_timer_aot', [
'$out/timer_aot.snapshot',
], skipIfNotBuilt: true);
checkSample('$out/run_timer_async_aot', [
checkSamples('$out/run_timer_async_aot', [
'$out/timer_aot.snapshot',
], skipIfNotBuilt: true);
checkSample('$out/run_futures_aot', [
checkSamples('$out/run_futures_aot', [
'$out/futures_aot.snapshot',
], skipIfNotBuilt: true);
}