# 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.

import("runtime_args.gni")

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

  # The optimization level to use for debug builds.
  dart_debug_optimization_level = "2"
}

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 (target_os == "android") {
    defines += [ "TARGET_OS_ANDROID" ]
  } else if (target_os == "fuchsia") {
    defines += [ "TARGET_OS_FUCHSIA" ]
  } else if (target_os == "ios") {
    defines += [ "TARGET_OS_MACOS" ]
    defines += [ "TARGET_OS_MACOS_IOS" ]
  } else if (target_os == "linux") {
    defines += [ "TARGET_OS_LINUX" ]
  } else if (target_os == "mac") {
    defines += [ "TARGET_OS_MACOS" ]
  } else if (target_os == "win") {
    defines += [ "TARGET_OS_WINDOWS" ]
  } else {
    print("Unknown target_os: $target_os")
    assert(false)
  }

  if (dart_target_arch != "") {
    if (dart_target_arch == "arm" || dart_target_arch == "simarm") {
      defines += [ "TARGET_ARCH_ARM" ]
    } else if (dart_target_arch == "armv6" || dart_target_arch == "simarmv6") {
      defines += [ "TARGET_ARCH_ARM" ]
      defines += [ "TARGET_ARCH_ARM_6" ]
    } else if (dart_target_arch == "armv5te" ||
               dart_target_arch == "simarmv5te") {
      defines += [ "TARGET_ARCH_ARM" ]
      defines += [ "TARGET_ARCH_ARM_5TE" ]
    } 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" ||
               dart_target_arch == "armsimdbc" ||
               dart_target_arch == "armsimdbc64") {
      defines += [ "TARGET_ARCH_DBC" ]
      defines += [ "USING_SIMULATOR" ]
    } else {
      print("Invalid dart_target_arch: $dart_target_arch")
      assert(false)
    }
  }

  if (dart_debug) {
    defines += [ "DEBUG" ]
  } else {
    defines += [ "NDEBUG" ]
  }

  include_dirs = []
  if (dart_use_tcmalloc) {
    defines += [ "DART_USE_TCMALLOC" ]
    include_dirs += [ "../third_party/tcmalloc/gperftools/src" ]
  }

  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 += [ "-O${dart_debug_optimization_level}" ]
    } else {
      cflags += [ "-O3" ]
    }

    ldflags = []
    if (defined(is_asan) && is_asan) {
      ldflags += [ "-fsanitize=address" ]
    }
    if (defined(is_msan) && is_msan) {
      ldflags += [ "-fsanitize=memory" ]
    }
    if (defined(is_tsan) && is_tsan) {
      ldflags += [ "-fsanitize=thread" ]
    }
  }
}

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_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_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",
  ]
}

libdart_library("libdart_with_precompiler") {
  extra_configs = [ ":dart_precompiler_config" ]
  extra_deps = [
    "vm:libdart_lib_with_precompiler",
    "vm:libdart_vm_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",
  ]
}
