# 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. # TODO(zra): These build arguments should likely be moved to a gni file that is # included in BUILD.gn files that care about the values of the flags. For now, # since the GN build only happens as part of a Mojo build there is no need for # the indirection. 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 # 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 = "" } config("dart_public_config") { include_dirs = [ ".", ] } config("dart_config") { defines = [] if (dart_target_arch != "") { if (dart_target_arch == "arm") { defines += [ "TARGET_ARCH_ARM" ] } else if (dart_target_arch == "arm64") { defines += [ "TARGET_ARCH_ARM64" ] } else if (dart_target_arch == "mips") { 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 { print("Invalid |dart_target_arch|") assert(false) } } if (dart_debug) { defines += ["DEBUG"] } else { defines += ["NDEBUG"] } if (is_ios || is_mac) { defines += ["DART_PRECOMPILER"] } 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 (is_asan) { ldflags = [ "-Wl,-u_sanitizer_options_link_helper", "-fsanitize=address", ] } } config("dart_config_no_precompiler") { defines = [] if (dart_target_arch != "") { if (dart_target_arch == "arm") { defines += [ "TARGET_ARCH_ARM" ] } else if (dart_target_arch == "arm64") { defines += [ "TARGET_ARCH_ARM64" ] } else if (dart_target_arch == "mips") { 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 { print("Invalid |dart_target_arch|") assert(false) } } if (dart_debug) { defines += ["DEBUG"] } else { defines += ["NDEBUG"] } 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 (is_asan) { ldflags = [ "-Wl,-u_sanitizer_options_link_helper", "-fsanitize=address", ] } } static_library("libdart") { configs += [":dart_config"] deps = [ "vm:libdart_lib", "vm:libdart_vm", "third_party/double-conversion/src:libdouble_conversion", ":generate_version_cc_file", ] include_dirs = [ ".", ] public_configs = [":dart_public_config"] sources = [ "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", "$target_gen_dir/version.cc", ] } static_library("libdart_precompiled_runtime") { configs += [":dart_config_no_precompiler"] deps = [ "vm:libdart_lib_precompiled_runtime", "vm:libdart_vm_precompiled_runtime", "third_party/double-conversion/src:libdouble_conversion", ":generate_version_cc_file", ] include_dirs = [ ".", ] public_configs = [":dart_public_config"] sources = [ "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", "$target_gen_dir/version.cc", ] defines = [ "DART_PRECOMPILED_RUNTIME", ] } 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), "--ignore_svn_revision", ] } executable("libdart_dependency_helper") { configs += [":dart_config"] deps = [ "vm:libdart_lib_nosnapshot", "vm:libdart_lib", "vm:libdart_vm", "vm:libdart_platform", "third_party/double-conversion/src:libdouble_conversion", ] sources = [ "vm/libdart_dependency_helper.cc", ] }