mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 12:24:24 +00:00
c1b08a0b97
Review URL: https://codereview.chromium.org/2449213003 .
312 lines
8.2 KiB
Text
312 lines
8.2 KiB
Text
# Copyright (c) 2014, 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() {
|
|
# Instead of using is_debug, we introduce a different flag for specifying a
|
|
# Debug build of Dart so that clients can still use a Release build of Dart
|
|
# while themselves doing a Debug build.
|
|
dart_debug = false
|
|
|
|
# Set the runtime mode. This affects how the runtime is built and what
|
|
# features it has. Valid values are:
|
|
# 'develop' (the default) - VM is built to run as a JIT with all development
|
|
# features enabled.
|
|
# 'profile' - The VM is built to run with AOT compiled code with only the
|
|
# CPU profiling features enabled.
|
|
# 'release' - The VM is built to run with AOT compiled code with no developer
|
|
# features enabled.
|
|
#
|
|
# These settings are only used for Flutter, at the moment. A standalone build
|
|
# of the Dart VM should leave this set to "develop", and should set
|
|
# 'is_debug', 'is_release', or 'is_product'.
|
|
dart_runtime_mode = "develop"
|
|
|
|
# Explicitly set the target architecture in case of precompilation. Leaving
|
|
# this unspecified results in automatic target architecture detection.
|
|
# Available options are: arm, arm64, mips, x64 and ia32
|
|
dart_target_arch = ""
|
|
|
|
dart_experimental_interpreter = false
|
|
}
|
|
|
|
config("dart_public_config") {
|
|
include_dirs = [ "." ]
|
|
}
|
|
|
|
# Adds PRODUCT define if Flutter has specified "release" for dart_runtime_mode
|
|
config("dart_maybe_product_config") {
|
|
defines = []
|
|
|
|
if (dart_runtime_mode != "develop" && dart_runtime_mode != "profile" &&
|
|
dart_runtime_mode != "release") {
|
|
print("Invalid |dart_runtime_mode|")
|
|
assert(false)
|
|
}
|
|
|
|
if (dart_runtime_mode == "release") {
|
|
if (dart_debug) {
|
|
print("Debug and release mode are mutually exclusive.")
|
|
}
|
|
assert(!dart_debug)
|
|
defines += [ "PRODUCT" ]
|
|
}
|
|
}
|
|
|
|
# Adds the DART_PRECOMPILED_RUNTIME define if Flutter has specified "profile" or
|
|
# "release" for dart_runtime_mode.
|
|
config("dart_maybe_precompiled_runtime_config") {
|
|
defines = []
|
|
|
|
if (dart_runtime_mode != "develop" && dart_runtime_mode != "profile" &&
|
|
dart_runtime_mode != "release") {
|
|
print("Invalid |dart_runtime_mode|")
|
|
assert(false)
|
|
}
|
|
|
|
if (dart_runtime_mode == "release") {
|
|
if (dart_debug) {
|
|
print("Debug and release mode are mutually exclusive.")
|
|
}
|
|
assert(!dart_debug)
|
|
|
|
if (!dart_experimental_interpreter) {
|
|
defines += [ "DART_PRECOMPILED_RUNTIME" ]
|
|
}
|
|
} else if (dart_runtime_mode == "profile") {
|
|
if (!dart_experimental_interpreter) {
|
|
defines += [ "DART_PRECOMPILED_RUNTIME" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
config("dart_precompiled_runtime_config") {
|
|
defines = []
|
|
defines += [ "DART_PRECOMPILED_RUNTIME" ]
|
|
}
|
|
|
|
# Controls DART_PRECOMPILER #define.
|
|
config("dart_precompiler_config") {
|
|
defines = []
|
|
defines += [ "DART_PRECOMPILER" ]
|
|
}
|
|
|
|
config("dart_no_snapshot_config") {
|
|
defines = []
|
|
defines += [ "DART_NO_SNAPSHOT" ]
|
|
}
|
|
|
|
config("dart_config") {
|
|
defines = []
|
|
|
|
if (dart_experimental_interpreter) {
|
|
dart_target_arch = "dbc"
|
|
}
|
|
|
|
if (dart_target_arch != "") {
|
|
if (dart_target_arch == "arm" || dart_target_arch == "simarm") {
|
|
defines += [ "TARGET_ARCH_ARM" ]
|
|
if (target_os == "mac" || target_os == "ios") {
|
|
defines += [ "TARGET_ABI_IOS" ]
|
|
} else {
|
|
defines += [ "TARGET_ABI_EABI" ]
|
|
}
|
|
} else if (dart_target_arch == "armv6" || dart_target_arch == "simarmv6") {
|
|
defines += [ "TARGET_ARCH_ARM" ]
|
|
defines += [ "TARGET_ARCH_ARM_6" ]
|
|
defines += [ "TARGET_ABI_EABI" ]
|
|
} else if (dart_target_arch == "armv5te" ||
|
|
dart_target_arch == "simarmv5te") {
|
|
defines += [ "TARGET_ARCH_ARM" ]
|
|
defines += [ "TARGET_ARCH_ARM_5TE" ]
|
|
defines += [ "TARGET_ABI_EABI" ]
|
|
} else if (dart_target_arch == "arm64" || dart_target_arch == "simarm64") {
|
|
defines += [ "TARGET_ARCH_ARM64" ]
|
|
} else if (dart_target_arch == "mips" || dart_target_arch == "simmips") {
|
|
defines += [ "TARGET_ARCH_MIPS" ]
|
|
} else if (dart_target_arch == "x64") {
|
|
defines += [ "TARGET_ARCH_X64" ]
|
|
} else if (dart_target_arch == "ia32") {
|
|
defines += [ "TARGET_ARCH_IA32" ]
|
|
} else if (dart_target_arch == "dbc" || dart_target_arch == "simdbc" ||
|
|
dart_target_arch == "simdbc64") {
|
|
defines += [ "TARGET_ARCH_DBC" ]
|
|
defines += [ "USING_SIMULATOR" ]
|
|
} else {
|
|
print("Invalid |dart_target_arch|")
|
|
assert(false)
|
|
}
|
|
}
|
|
|
|
if (dart_debug) {
|
|
defines += [ "DEBUG" ]
|
|
} else {
|
|
defines += [ "NDEBUG" ]
|
|
}
|
|
|
|
if (!is_win) {
|
|
cflags = [
|
|
"-Werror",
|
|
"-Wall",
|
|
"-Wextra", # Also known as -W.
|
|
"-Wno-unused-parameter",
|
|
"-Wnon-virtual-dtor",
|
|
"-Wvla",
|
|
"-Wno-conversion-null",
|
|
"-Woverloaded-virtual",
|
|
"-g3",
|
|
"-ggdb3",
|
|
"-fno-rtti",
|
|
"-fno-exceptions",
|
|
]
|
|
|
|
if (dart_debug) {
|
|
cflags += [ "-O1" ]
|
|
} else {
|
|
cflags += [ "-O3" ]
|
|
}
|
|
|
|
if (defined(is_asan) && is_asan) {
|
|
ldflags = [ "-fsanitize=address" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
template("libdart_library") {
|
|
extra_configs = []
|
|
if (defined(invoker.extra_configs)) {
|
|
extra_configs += invoker.extra_configs
|
|
}
|
|
extra_deps = []
|
|
if (defined(invoker.extra_deps)) {
|
|
extra_deps += invoker.extra_deps
|
|
}
|
|
static_library(target_name) {
|
|
configs += [
|
|
":dart_config",
|
|
":dart_maybe_product_config",
|
|
] + extra_configs
|
|
deps = [
|
|
"vm:libdart_platform",
|
|
"third_party/double-conversion/src:libdouble_conversion",
|
|
":generate_version_cc_file",
|
|
] + extra_deps
|
|
include_dirs = [ "." ]
|
|
public_configs = [ ":dart_public_config" ]
|
|
sources = [
|
|
"$target_gen_dir/version.cc",
|
|
"include/dart_api.h",
|
|
"include/dart_mirrors_api.h",
|
|
"include/dart_native_api.h",
|
|
"include/dart_tools_api.h",
|
|
"vm/dart_api_impl.cc",
|
|
"vm/debugger_api_impl.cc",
|
|
"vm/mirrors_api_impl.cc",
|
|
"vm/native_api_impl.cc",
|
|
"vm/version.h",
|
|
]
|
|
defines = [ "DART_SHARED_LIB" ]
|
|
}
|
|
}
|
|
|
|
libdart_library("libdart") {
|
|
extra_configs = [ ":dart_maybe_precompiled_runtime_config" ]
|
|
extra_deps = [
|
|
"vm:libdart_lib",
|
|
"vm:libdart_vm",
|
|
]
|
|
}
|
|
|
|
libdart_library("libdart_noopt") {
|
|
extra_configs = [
|
|
":dart_maybe_precompiled_runtime_config",
|
|
":dart_precompiler_config",
|
|
]
|
|
extra_deps = [
|
|
"vm:libdart_lib",
|
|
"vm:libdart_vm_noopt",
|
|
]
|
|
}
|
|
|
|
libdart_library("libdart_precompiled_runtime") {
|
|
extra_configs = [ ":dart_precompiled_runtime_config" ]
|
|
extra_deps = [
|
|
"vm:libdart_lib_precompiled_runtime",
|
|
"vm:libdart_vm_precompiled_runtime",
|
|
]
|
|
}
|
|
|
|
libdart_library("libdart_nosnapshot") {
|
|
extra_configs = [
|
|
":dart_no_snapshot_config",
|
|
":dart_maybe_precompiled_runtime_config",
|
|
]
|
|
extra_deps = [
|
|
"vm:libdart_lib_nosnapshot",
|
|
"vm:libdart_vm_nosnapshot",
|
|
]
|
|
}
|
|
|
|
libdart_library("libdart_nosnapshot_precompiled_runtime") {
|
|
extra_configs = [
|
|
":dart_no_snapshot_config",
|
|
":dart_precompiled_runtime_config",
|
|
]
|
|
extra_deps = [
|
|
"vm:libdart_lib_nosnapshot_precompiled_runtime",
|
|
"vm:libdart_vm_nosnapshot_precompiled_runtime",
|
|
]
|
|
}
|
|
|
|
libdart_library("libdart_nosnapshot_with_precompiler") {
|
|
extra_configs = [
|
|
":dart_no_snapshot_config",
|
|
":dart_precompiler_config",
|
|
]
|
|
extra_deps = [
|
|
"vm:libdart_lib_nosnapshot_with_precompiler",
|
|
"vm:libdart_vm_nosnapshot_with_precompiler",
|
|
]
|
|
}
|
|
|
|
action("generate_version_cc_file") {
|
|
deps = [
|
|
":libdart_dependency_helper",
|
|
]
|
|
inputs = [
|
|
"../tools/utils.py",
|
|
"../tools/print_version.py",
|
|
"../tools/VERSION",
|
|
"vm/version_in.cc",
|
|
]
|
|
output = "$target_gen_dir/version.cc"
|
|
outputs = [
|
|
output,
|
|
]
|
|
|
|
script = "../tools/make_version.py"
|
|
args = [
|
|
"--quiet",
|
|
"--output",
|
|
rebase_path(output, root_build_dir),
|
|
"--input",
|
|
rebase_path("vm/version_in.cc", root_build_dir),
|
|
]
|
|
}
|
|
|
|
executable("libdart_dependency_helper") {
|
|
configs += [
|
|
":dart_config",
|
|
":dart_maybe_product_config",
|
|
]
|
|
deps = [
|
|
"third_party/double-conversion/src:libdouble_conversion",
|
|
"vm:libdart_lib",
|
|
"vm:libdart_lib_nosnapshot",
|
|
"vm:libdart_vm",
|
|
"vm:libdart_vm_nosnapshot",
|
|
]
|
|
sources = [
|
|
"vm/libdart_dependency_helper.cc",
|
|
]
|
|
}
|