# 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("math") {
  sources = [
    "box_f.cc",
    "box_f.h",
    "clamp.h",
    "cubic_bezier.cc",
    "cubic_bezier.h",
    "insets.cc",
    "insets.h",
    "insets_base.h",
    "insets_f.cc",
    "insets_f.h",
    "linear_interpolator.h",
    "matrix3_f.cc",
    "matrix3_f.h",
    "matrix_interpolation.cc",
    "matrix_interpolation.h",
    "point.cc",
    "point.h",
    "point3_f.cc",
    "point3_f.h",
    "point_base.h",
    "point_conversions.cc",
    "point_conversions.h",
    "point_f.cc",
    "point_f.h",
    "quad_f.cc",
    "quad_f.h",
    "rational.h",
    "rect.cc",
    "rect.h",
    "rect_base.h",
    "rect_base_impl.h",
    "rect_conversions.cc",
    "rect_conversions.h",
    "rect_f.cc",
    "rect_f.h",
    "safe_integer_conversions.h",
    "size.cc",
    "size.h",
    "size_base.h",
    "size_conversions.cc",
    "size_conversions.h",
    "size_f.cc",
    "size_f.h",
    "transform_2d.cc",
    "transform_2d.h",
    "vector2d.cc",
    "vector2d.h",
    "vector2d_conversions.cc",
    "vector2d_conversions.h",
    "vector2d_f.cc",
    "vector2d_f.h",
    "vector3d_f.cc",
    "vector3d_f.h",
  ]
  deps = [
    "//base",
    "//starboard:starboard_headers_only",
  ]
}

target(gtest_target_type, "math_test") {
  testonly = true
  sources = [
    "box_unittest.cc",
    "cubic_bezier_unittest.cc",
    "insets_unittest.cc",
    "linear_interpolator_unittest.cc",
    "matrix3_unittest.cc",
    "matrix_interpolation_unittest.cc",
    "point3_unittest.cc",
    "point_unittest.cc",
    "quad_unittest.cc",
    "rect_unittest.cc",
    "safe_integer_conversions_unittest.cc",
    "size_unittest.cc",
    "transform_2d_test.cc",
    "vector2d_unittest.cc",
    "vector3d_unittest.cc",
  ]
  deps = [
    ":math",
    "//base",
    "//cobalt/base",
    "//cobalt/test:run_all_unittests",
    "//testing/gtest",
  ]
}
