mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 00:45:16 +00:00
Reland: [GN] Adds dart_host_sdk_toolchain argument
Setting this build argument to something other than host_toolchain will cause the build target create_host_sdk to be exposed. That target will build the Dart SDK with the toolchain specified by dart_host_sdk_toolchain. Relanding to fix bad toolchain conditions in dart_os_config and dart_arch_config. TO-549 Change-Id: I276f47d9071233acb98f6029a4666da0cee33d7d Reviewed-on: https://dart-review.googlesource.com/18361 Commit-Queue: Zach Anderson <zra@google.com> Reviewed-by: Zach Anderson <zra@google.com>
This commit is contained in:
parent
c0df9d42c6
commit
a99cdabd00
10
BUILD.gn
10
BUILD.gn
|
@ -2,6 +2,8 @@
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
import("build/dart_host_sdk_toolchain.gni")
|
||||||
|
|
||||||
# This target will be built if no target is specified when invoking ninja.
|
# This target will be built if no target is specified when invoking ninja.
|
||||||
group("default") {
|
group("default") {
|
||||||
if (is_fuchsia || is_fuchsia_host) {
|
if (is_fuchsia || is_fuchsia_host) {
|
||||||
|
@ -72,6 +74,14 @@ group("create_sdk") {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dart_host_sdk_toolchain != host_toolchain) {
|
||||||
|
group("create_host_sdk") {
|
||||||
|
deps = [
|
||||||
|
"sdk:create_sdk($dart_host_sdk_toolchain)",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
group("dart2js") {
|
group("dart2js") {
|
||||||
deps = [
|
deps = [
|
||||||
"utils/compiler:dart2js",
|
"utils/compiler:dart2js",
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
# saves unnecessarily compiling your tool for the target platform. But if you
|
# saves unnecessarily compiling your tool for the target platform. But if you
|
||||||
# need a target build of your tool as well, just leave off the if statement.
|
# need a target build of your tool as well, just leave off the if statement.
|
||||||
|
|
||||||
|
import("dart_host_sdk_toolchain.gni")
|
||||||
|
|
||||||
if (host_os == "win") {
|
if (host_os == "win") {
|
||||||
_host_executable_suffix = ".exe"
|
_host_executable_suffix = ".exe"
|
||||||
} else {
|
} else {
|
||||||
|
@ -97,7 +99,7 @@ template("compiled_action") {
|
||||||
outputs = invoker.outputs
|
outputs = invoker.outputs
|
||||||
|
|
||||||
# Constuct the host toolchain version of the tool.
|
# Constuct the host toolchain version of the tool.
|
||||||
host_tool = invoker.tool + "($host_toolchain)"
|
host_tool = invoker.tool + "($dart_host_toolchain)"
|
||||||
|
|
||||||
# Get the path to the executable. Currently, this assumes that the tool
|
# Get the path to the executable. Currently, this assumes that the tool
|
||||||
# does not specify output_name so that the target name is the name to use.
|
# does not specify output_name so that the target name is the name to use.
|
||||||
|
@ -150,7 +152,7 @@ template("compiled_action_foreach") {
|
||||||
outputs = invoker.outputs
|
outputs = invoker.outputs
|
||||||
|
|
||||||
# Constuct the host toolchain version of the tool.
|
# Constuct the host toolchain version of the tool.
|
||||||
host_tool = invoker.tool + "($host_toolchain)"
|
host_tool = invoker.tool + "($dart_host_toolchain)"
|
||||||
|
|
||||||
# Get the path to the executable. Currently, this assumes that the tool
|
# Get the path to the executable. Currently, this assumes that the tool
|
||||||
# does not specify output_name so that the target name is the name to use.
|
# does not specify output_name so that the target name is the name to use.
|
||||||
|
|
18
build/dart_host_sdk_toolchain.gni
Normal file
18
build/dart_host_sdk_toolchain.gni
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
||||||
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
declare_args() {
|
||||||
|
# In a cross-build, this should be set to the toolchain to use to build a Dart
|
||||||
|
# SDK to run on the host that targets the host. This is distinct from
|
||||||
|
# 'host_toolchain', which in a cross-build builds artifacts to run on the host
|
||||||
|
# that target the target architecture.
|
||||||
|
dart_host_sdk_toolchain = host_toolchain
|
||||||
|
}
|
||||||
|
|
||||||
|
# dart_host_toolchain should be used in the Dart tree instead of host_toolchain.
|
||||||
|
# It will ensure that we are selecting the correct host toolchain.
|
||||||
|
dart_host_toolchain = host_toolchain
|
||||||
|
if (current_toolchain == dart_host_sdk_toolchain) {
|
||||||
|
dart_host_toolchain = dart_host_sdk_toolchain
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
import("../build/dart_host_sdk_toolchain.gni")
|
||||||
import("runtime_args.gni")
|
import("runtime_args.gni")
|
||||||
|
|
||||||
config("dart_public_config") {
|
config("dart_public_config") {
|
||||||
|
@ -55,48 +56,60 @@ config("dart_no_snapshot_config") {
|
||||||
config("dart_os_config") {
|
config("dart_os_config") {
|
||||||
defines = []
|
defines = []
|
||||||
|
|
||||||
if (target_os == "android") {
|
# If dart_host_toolchain is the current toolchain, and it is different from
|
||||||
defines += [ "TARGET_OS_ANDROID" ]
|
# host_toolchain, then we are building the SDK for the host, and should not
|
||||||
} else if (target_os == "fuchsia") {
|
# hardcode these defines.
|
||||||
defines += [ "TARGET_OS_FUCHSIA" ]
|
if (current_toolchain != dart_host_toolchain ||
|
||||||
} else if (target_os == "ios") {
|
host_toolchain == dart_host_toolchain) {
|
||||||
defines += [ "TARGET_OS_MACOS" ]
|
if (target_os == "android") {
|
||||||
defines += [ "TARGET_OS_MACOS_IOS" ]
|
defines += [ "TARGET_OS_ANDROID" ]
|
||||||
} else if (target_os == "linux") {
|
} else if (target_os == "fuchsia") {
|
||||||
defines += [ "TARGET_OS_LINUX" ]
|
defines += [ "TARGET_OS_FUCHSIA" ]
|
||||||
} else if (target_os == "mac") {
|
} else if (target_os == "ios") {
|
||||||
defines += [ "TARGET_OS_MACOS" ]
|
defines += [ "TARGET_OS_MACOS" ]
|
||||||
} else if (target_os == "win") {
|
defines += [ "TARGET_OS_MACOS_IOS" ]
|
||||||
defines += [ "TARGET_OS_WINDOWS" ]
|
} else if (target_os == "linux") {
|
||||||
} else {
|
defines += [ "TARGET_OS_LINUX" ]
|
||||||
print("Unknown target_os: $target_os")
|
} else if (target_os == "mac") {
|
||||||
assert(false)
|
defines += [ "TARGET_OS_MACOS" ]
|
||||||
|
} else if (target_os == "win") {
|
||||||
|
defines += [ "TARGET_OS_WINDOWS" ]
|
||||||
|
} else {
|
||||||
|
print("Unknown target_os: $target_os")
|
||||||
|
assert(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
config("dart_arch_config") {
|
config("dart_arch_config") {
|
||||||
defines = []
|
defines = []
|
||||||
|
|
||||||
if (dart_target_arch == "arm") {
|
# If dart_host_toolchain is the current toolchain, and it is different from
|
||||||
defines += [ "TARGET_ARCH_ARM" ]
|
# host_toolchain, then we are building the SDK for the host, and should not
|
||||||
} else if (dart_target_arch == "armv6") {
|
# hardcode these defines.
|
||||||
defines += [ "TARGET_ARCH_ARM" ]
|
if (current_toolchain != dart_host_toolchain ||
|
||||||
defines += [ "TARGET_ARCH_ARM_6" ]
|
host_toolchain == dart_host_toolchain) {
|
||||||
} else if (dart_target_arch == "armv5te") {
|
if (dart_target_arch == "arm") {
|
||||||
defines += [ "TARGET_ARCH_ARM" ]
|
defines += [ "TARGET_ARCH_ARM" ]
|
||||||
defines += [ "TARGET_ARCH_ARM_5TE" ]
|
} else if (dart_target_arch == "armv6") {
|
||||||
} else if (dart_target_arch == "arm64") {
|
defines += [ "TARGET_ARCH_ARM" ]
|
||||||
defines += [ "TARGET_ARCH_ARM64" ]
|
defines += [ "TARGET_ARCH_ARM_6" ]
|
||||||
} else if (dart_target_arch == "x64") {
|
} else if (dart_target_arch == "armv5te") {
|
||||||
defines += [ "TARGET_ARCH_X64" ]
|
defines += [ "TARGET_ARCH_ARM" ]
|
||||||
} else if (dart_target_arch == "ia32" || dart_target_arch == "x86") {
|
defines += [ "TARGET_ARCH_ARM_5TE" ]
|
||||||
defines += [ "TARGET_ARCH_IA32" ]
|
} else if (dart_target_arch == "arm64") {
|
||||||
} else if (dart_target_arch == "dbc") {
|
defines += [ "TARGET_ARCH_ARM64" ]
|
||||||
defines += [ "TARGET_ARCH_DBC" ]
|
} else if (dart_target_arch == "x64") {
|
||||||
defines += [ "USING_SIMULATOR" ]
|
defines += [ "TARGET_ARCH_X64" ]
|
||||||
} else {
|
} else if (dart_target_arch == "ia32" || dart_target_arch == "x86") {
|
||||||
print("Invalid dart_target_arch: $dart_target_arch")
|
defines += [ "TARGET_ARCH_IA32" ]
|
||||||
assert(false)
|
} else if (dart_target_arch == "dbc") {
|
||||||
|
defines += [ "TARGET_ARCH_DBC" ]
|
||||||
|
defines += [ "USING_SIMULATOR" ]
|
||||||
|
} else {
|
||||||
|
print("Invalid dart_target_arch: $dart_target_arch")
|
||||||
|
assert(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,10 +192,10 @@ template("libdart_library") {
|
||||||
}
|
}
|
||||||
static_library(target_name) {
|
static_library(target_name) {
|
||||||
configs += [
|
configs += [
|
||||||
":dart_arch_config",
|
":dart_arch_config",
|
||||||
":dart_config",
|
":dart_config",
|
||||||
":dart_os_config",
|
":dart_os_config",
|
||||||
] + extra_configs
|
] + extra_configs
|
||||||
if (is_fuchsia) {
|
if (is_fuchsia) {
|
||||||
configs -= [ "//build/config:symbol_visibility_hidden" ]
|
configs -= [ "//build/config:symbol_visibility_hidden" ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# Use of this source code is governed by a BSD-style license that can be
|
# Use of this source code is governed by a BSD-style license that can be
|
||||||
# found in the LICENSE file.
|
# found in the LICENSE file.
|
||||||
|
|
||||||
|
import("../../build/dart_host_sdk_toolchain.gni")
|
||||||
import("../../build/executable_suffix.gni")
|
import("../../build/executable_suffix.gni")
|
||||||
import("../../build/prebuilt_dart_sdk.gni")
|
import("../../build/prebuilt_dart_sdk.gni")
|
||||||
import("observatory_sources.gni")
|
import("observatory_sources.gni")
|
||||||
|
@ -10,10 +11,10 @@ import("observatory_sources.gni")
|
||||||
pub_build_deps = []
|
pub_build_deps = []
|
||||||
pub_build_args = []
|
pub_build_args = []
|
||||||
if (!prebuilt_dart_exe_works) {
|
if (!prebuilt_dart_exe_works) {
|
||||||
pub_build_deps += [ "../bin:dart_bootstrap($host_toolchain)" ]
|
pub_build_deps += [ "../bin:dart_bootstrap($dart_host_toolchain)" ]
|
||||||
|
|
||||||
dart_out_dir =
|
dart_out_dir = get_label_info("../bin:dart_bootstrap($dart_host_toolchain)",
|
||||||
get_label_info("../bin:dart_bootstrap($host_toolchain)", "root_out_dir")
|
"root_out_dir")
|
||||||
dart_bootstrap = rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
|
dart_bootstrap = rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
|
||||||
|
|
||||||
pub_build_args = [
|
pub_build_args = [
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
import("../build/dart_host_sdk_toolchain.gni")
|
||||||
import("../build/prebuilt_dart_sdk.gni")
|
import("../build/prebuilt_dart_sdk.gni")
|
||||||
|
|
||||||
_dart_root = get_path_info("..", "abspath")
|
_dart_root = get_path_info("..", "abspath")
|
||||||
|
@ -35,9 +36,9 @@ template("compile_platform") {
|
||||||
depfile = outputs[0] + ".d"
|
depfile = outputs[0] + ".d"
|
||||||
|
|
||||||
if (!prebuilt_dart_exe_works) {
|
if (!prebuilt_dart_exe_works) {
|
||||||
deps += [ "$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)" ]
|
deps += [ "$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)" ]
|
||||||
dart_out_dir = get_label_info(
|
dart_out_dir = get_label_info(
|
||||||
"$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)",
|
"$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)",
|
||||||
"root_out_dir")
|
"root_out_dir")
|
||||||
args += [
|
args += [
|
||||||
"--dart-executable",
|
"--dart-executable",
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
import("../../build/compiled_action.gni")
|
import("../../build/compiled_action.gni")
|
||||||
|
import("../../build/dart_host_sdk_toolchain.gni")
|
||||||
import("../../build/prebuilt_dart_sdk.gni")
|
import("../../build/prebuilt_dart_sdk.gni")
|
||||||
import("../../utils/compile_platform.gni")
|
import("../../utils/compile_platform.gni")
|
||||||
import("../../utils/generate_patch_sdk.gni")
|
import("../../utils/generate_patch_sdk.gni")
|
||||||
|
@ -84,7 +85,7 @@ generate_patched_sdk("patched_dart2js_sdk") {
|
||||||
deps = [
|
deps = [
|
||||||
# TODO(ahe): This is needed by ../../tools/patch_sdk.dart to compute
|
# TODO(ahe): This is needed by ../../tools/patch_sdk.dart to compute
|
||||||
# dependencies.
|
# dependencies.
|
||||||
"../../runtime/vm:kernel_platform_files($host_toolchain)",
|
"../../runtime/vm:kernel_platform_files($dart_host_toolchain)",
|
||||||
]
|
]
|
||||||
input_patches_dir = "../../sdk/lib/_internal/js_runtime/lib"
|
input_patches_dir = "../../sdk/lib/_internal/js_runtime/lib"
|
||||||
patched_sdk_dir = "patched_dart2js_sdk"
|
patched_sdk_dir = "patched_dart2js_sdk"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
import("../build/dart_host_sdk_toolchain.gni")
|
||||||
import("../build/prebuilt_dart_sdk.gni")
|
import("../build/prebuilt_dart_sdk.gni")
|
||||||
|
|
||||||
_dart_root = get_path_info("..", "abspath")
|
_dart_root = get_path_info("..", "abspath")
|
||||||
|
@ -28,7 +29,7 @@ template("generate_patched_sdk") {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!prebuilt_dart_exe_works) {
|
if (!prebuilt_dart_exe_works) {
|
||||||
deps += [ "$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)" ]
|
deps += [ "$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
script = "$_dart_root/tools/patch_sdk.py"
|
script = "$_dart_root/tools/patch_sdk.py"
|
||||||
|
@ -55,7 +56,7 @@ template("generate_patched_sdk") {
|
||||||
args = [ "--quiet" ]
|
args = [ "--quiet" ]
|
||||||
if (!prebuilt_dart_exe_works) {
|
if (!prebuilt_dart_exe_works) {
|
||||||
dart_out_dir = get_label_info(
|
dart_out_dir = get_label_info(
|
||||||
"$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)",
|
"$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)",
|
||||||
"root_out_dir")
|
"root_out_dir")
|
||||||
dart_bootstrap =
|
dart_bootstrap =
|
||||||
rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
|
rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
|
||||||
|
|
|
@ -2,12 +2,13 @@
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
# for details. All rights reserved. Use of this source code is governed by a
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
import("../../build/dart_host_sdk_toolchain.gni")
|
||||||
import("../application_snapshot.gni")
|
import("../application_snapshot.gni")
|
||||||
|
|
||||||
application_snapshot("kernel-service") {
|
application_snapshot("kernel-service") {
|
||||||
dfe_script = "kernel-service.dart"
|
dfe_script = "kernel-service.dart"
|
||||||
deps = [
|
deps = [
|
||||||
"../../runtime/vm:kernel_platform_files($host_toolchain)",
|
"../../runtime/vm:kernel_platform_files($dart_host_toolchain)",
|
||||||
]
|
]
|
||||||
main_dart = dfe_script
|
main_dart = dfe_script
|
||||||
training_args = [
|
training_args = [
|
||||||
|
|
Loading…
Reference in a new issue