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

blink_core_output_dir = "$root_gen_dir/blink/core"

# This file is the GN version of core.gypi. We rebase most paths to be absolute
# so these lists can be used by BUILD files in different directories without
# worrying about the base directory.
_gypi = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("core.gypi"),
      "--replace=<(SHARED_INTERMEDIATE_DIR)=$root_gen_dir",
      "--replace=<(blink_core_output_dir)=$blink_core_output_dir"],
    "scope",
    [ "core.gypi" ])

# Files for which bindings (.cpp and .h files) will be generated.
core_idl_files = get_path_info(_gypi.core_idl_files, "abspath")

# 'partial interface', target (right side of) 'implements', and
# interfaces with static bindings (in bindings/core/v8/)
core_dependency_idl_files =
  get_path_info(_gypi.core_dependency_idl_files, "abspath")

# Interfaces that inherit from Event, including Event itself.
core_event_idl_files = get_path_info(_gypi.core_event_idl_files, "abspath")

webcore_files = get_path_info(_gypi.webcore_files, "abspath")
webcore_dom_files = get_path_info(_gypi.webcore_dom_files, "abspath")
webcore_html_files = get_path_info(_gypi.webcore_html_files, "abspath")
webcore_svg_files = get_path_info(_gypi.webcore_svg_files, "abspath")
webcore_testing_idl_files = get_path_info(_gypi.webcore_testing_idl_files, "abspath")
webcore_testing_dependency_idl_files =
  get_path_info(_gypi.webcore_testing_dependency_idl_files, "abspath")
generated_webcore_testing_idl_files =
  get_path_info(_gypi.generated_webcore_testing_idl_files, "abspath")
webcore_testing_files = get_path_info(_gypi.webcore_testing_files, "abspath")
core_unittest_files = get_path_info(_gypi.core_unittest_files, "abspath")
