# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# All paths in this file should be absolute so it can be imported into
# different contexts.

# core/v8/custom/custom.gypi ---------------------------------------------------

# These paths are relative to v8/custom.
_core_v8_custom_gypi = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("core/v8/custom/custom.gypi") ],
    "scope",
    [ "core/v8/custom/custom.gypi" ])

bindings_core_v8_custom_dir = get_path_info("core/v8/custom", "abspath")
bindings_core_v8_custom_files = get_path_info(
    rebase_path(_core_v8_custom_gypi.bindings_core_v8_custom_files, ".",
                bindings_core_v8_custom_dir),
    "abspath")

# core/v8/v8.gypi --------------------------------------------------------------

# These paths are relative to v8.
_core_v8_gypi = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("core/v8/v8.gypi") ],
    "scope",
    [ "core/v8/v8.gypi" ])

bindings_core_v8_dir = get_path_info("core/v8", "abspath")

# v8.gypi references includes a reference to the custom_files list. Manually
# expand that.
_rel_bindings_core_v8_files = _core_v8_gypi.bindings_core_v8_files
_rel_bindings_core_v8_files -= [ "<@(bindings_core_v8_custom_files)" ]
bindings_core_v8_files = get_path_info(
    rebase_path(_rel_bindings_core_v8_files, ".", "core/v8"),
    "abspath")
bindings_core_v8_files += bindings_core_v8_custom_files

# bindings.gypi ----------------------------------------------------------------

bindings_dir = get_path_info(".", "abspath")
blink_output_dir = "$root_gen_dir/blink"
bindings_output_dir = "$root_gen_dir/blink/bindings"

bindings_unittest_files = get_path_info(
    rebase_path(_core_v8_gypi.bindings_core_v8_unittest_files, ".", bindings_core_v8_dir),
    "abspath")
