# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

static_library("debug") {
  has_pedantic_warnings = true
  sources = [
    "backend/agent_base.cc",
    "backend/agent_base.h",
    "backend/command_map.h",
    "backend/css_agent.cc",
    "backend/css_agent.h",
    "backend/debug_backend.cc",
    "backend/debug_backend.h",
    "backend/debug_dispatcher.cc",
    "backend/debug_dispatcher.h",
    "backend/debug_module.cc",
    "backend/debug_module.h",
    "backend/debug_script_runner.cc",
    "backend/debug_script_runner.h",
    "backend/debugger_hooks_impl.cc",
    "backend/debugger_hooks_impl.h",
    "backend/dom_agent.cc",
    "backend/dom_agent.h",
    "backend/log_agent.cc",
    "backend/log_agent.h",
    "backend/overlay_agent.cc",
    "backend/overlay_agent.h",
    "backend/page_agent.cc",
    "backend/page_agent.h",
    "backend/render_layer.cc",
    "backend/render_layer.h",
    "backend/render_overlay.cc",
    "backend/render_overlay.h",
    "backend/script_debugger_agent.cc",
    "backend/script_debugger_agent.h",
    "backend/tracing_agent.cc",
    "backend/tracing_agent.h",
    "command.h",
    "console/debug_hub.cc",
    "console/debug_hub.h",
    "console/debugger_event_target.cc",
    "console/debugger_event_target.h",
    "debug_client.cc",
    "debug_client.h",
    "json_object.cc",
    "json_object.h",
    "remote/debug_web_server.cc",
    "remote/debug_web_server.h",
  ]
  deps = [
    ":console_command_manager",
    "//cobalt/base",
    "//cobalt/browser:generated_types",
    "//cobalt/cssom",
    "//cobalt/debug/backend/content:copy_backend_web_files",
    "//cobalt/debug/console/content:copy_console_web_files",
    "//cobalt/debug/remote/content:copy_remote_web_files",
    "//cobalt/dom",
    "//cobalt/layout",
    "//cobalt/math",
    "//cobalt/render_tree",
    "//cobalt/script",
    "//cobalt/speech",
    "//cobalt/web",
    "//net",
    "//net:http_server",
    "//starboard",
    "//third_party/devtools:devtools_frontend_resources",
  ]
}

# Anything that implements a console command can depend on this without
# depending on the whole debug module.
static_library("console_command_manager") {
  # Everything is conditional so implementers of commands can depend on
  # this unconditionally.
  if (!is_gold) {
    sources = [
      "console/command_manager.cc",
      "console/command_manager.h",
    ]
    deps = [ "//cobalt/base" ]
  }
}
