# 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("software_rasterizer") {
  sources = [
    "software_rasterizer.cc",
    "software_rasterizer.h",
    "textured_mesh_renderer.cc",
    "textured_mesh_renderer.h",
  ]

  configs -= [ "//starboard/build/config:size" ]
  configs += [ "//starboard/build/config:speed" ]

  deps = [
    "//base",
    "//cobalt/math",
    "//cobalt/render_tree",
    "//cobalt/renderer:renderer_headers_only",
    "//cobalt/renderer/backend:renderer_backend",
    "//cobalt/renderer/backend/egl:egl_backend",
    "//cobalt/renderer/rasterizer/skia:software_rasterizer",
    "//cobalt/renderer/rasterizer/skia/skia",
    "//starboard:starboard_headers_only",
  ]
}

static_library("hardware_rasterizer") {
  sources = [
    "draw_callback.cc",
    "draw_callback.h",
    "draw_clear.cc",
    "draw_clear.h",
    "draw_object.cc",
    "draw_object.h",
    "draw_object_manager.cc",
    "draw_object_manager.h",
    "draw_poly_color.cc",
    "draw_poly_color.h",
    "draw_rect_border.cc",
    "draw_rect_border.h",
    "draw_rect_color_texture.cc",
    "draw_rect_color_texture.h",
    "draw_rect_linear_gradient.cc",
    "draw_rect_linear_gradient.h",
    "draw_rect_radial_gradient.cc",
    "draw_rect_radial_gradient.h",
    "draw_rect_shadow_blur.cc",
    "draw_rect_shadow_blur.h",
    "draw_rect_shadow_spread.cc",
    "draw_rect_shadow_spread.h",
    "draw_rect_texture.cc",
    "draw_rect_texture.h",
    "draw_rrect_color.cc",
    "draw_rrect_color.h",
    "draw_rrect_color_texture.cc",
    "draw_rrect_color_texture.h",
    "graphics_state.cc",
    "graphics_state.h",
    "hardware_rasterizer.cc",
    "hardware_rasterizer.h",
    "offscreen_target_manager.cc",
    "offscreen_target_manager.h",
    "rect_allocator.cc",
    "rect_allocator.h",
    "render_tree_node_visitor.cc",
    "render_tree_node_visitor.h",
    "shader_base.cc",
    "shader_base.h",
    "shader_program.cc",
    "shader_program.h",
    "shader_program_manager.cc",
    "shader_program_manager.h",
  ]

  configs -= [ "//starboard/build/config:size" ]
  configs += [ "//starboard/build/config:speed" ]

  deps = [
    ":software_rasterizer",
    "//base",
    "//cobalt/base",
    "//cobalt/math",
    "//cobalt/render_tree",
    "//cobalt/render_tree:animations",
    "//cobalt/renderer:renderer_headers_only",
    "//cobalt/renderer/backend:renderer_backend",
    "//cobalt/renderer/backend/egl:egl_backend",
    "//cobalt/renderer/rasterizer/common",
    "//cobalt/renderer/rasterizer/egl/shaders",
    "//cobalt/renderer/rasterizer/skia:hardware_rasterizer",
    "//cobalt/renderer/rasterizer/skia/skia",
    "//starboard:starboard_headers_only",
    "//starboard/common",
  ]
}
