# Copyright 2023 The Tint Authors.
#
# 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.

################################################################################
# File generated by tools/src/cmd/gen
# using the template:
#   tools/src/cmd/gen/build/BUILD.cmake.tmpl
#
# Do not modify this file directly
################################################################################

include(lang/core/constant/BUILD.cmake)
include(lang/core/intrinsic/BUILD.cmake)
include(lang/core/ir/BUILD.cmake)
include(lang/core/type/BUILD.cmake)

################################################################################
# CMake target: 'tint_lang_core'
################################################################################
tint_add_target("lang/core"
  lang/core/access.cc
  lang/core/access.h
  lang/core/address_space.cc
  lang/core/address_space.h
  lang/core/attribute.cc
  lang/core/attribute.h
  lang/core/binary_op.cc
  lang/core/binary_op.h
  lang/core/builtin.cc
  lang/core/builtin.h
  lang/core/builtin_value.cc
  lang/core/builtin_value.h
  lang/core/diagnostic_rule.cc
  lang/core/diagnostic_rule.h
  lang/core/diagnostic_severity.cc
  lang/core/diagnostic_severity.h
  lang/core/evaluation_stage.h
  lang/core/extension.cc
  lang/core/extension.h
  lang/core/fluent_types.h
  lang/core/function.cc
  lang/core/function.h
  lang/core/interpolation.h
  lang/core/interpolation_sampling.cc
  lang/core/interpolation_sampling.h
  lang/core/interpolation_type.cc
  lang/core/interpolation_type.h
  lang/core/number.cc
  lang/core/number.h
  lang/core/parameter_usage.cc
  lang/core/parameter_usage.h
  lang/core/texel_format.cc
  lang/core/texel_format.h
  lang/core/unary_op.cc
  lang/core/unary_op.h
)

tint_target_add_dependencies("lang/core"
  "utils/containers"
  "utils/diagnostic"
  "utils/ice"
  "utils/macros"
  "utils/math"
  "utils/memory"
  "utils/result"
  "utils/rtti"
  "utils/text"
  "utils/traits"
)

################################################################################
# CMake target: 'tint_lang_core_test'
################################################################################
tint_add_target("lang/core:test"
  lang/core/access_test.cc
  lang/core/address_space_test.cc
  lang/core/attribute_test.cc
  lang/core/builtin_test.cc
  lang/core/builtin_value_test.cc
  lang/core/diagnostic_rule_test.cc
  lang/core/diagnostic_severity_test.cc
  lang/core/extension_test.cc
  lang/core/interpolation_sampling_test.cc
  lang/core/interpolation_type_test.cc
  lang/core/number_test.cc
  lang/core/texel_format_test.cc
)

tint_target_add_dependencies("lang/core:test"
  "api/common"
  "lang/core"
  "lang/core/constant"
  "lang/core/type"
  "lang/wgsl/ast"
  "lang/wgsl/program"
  "lang/wgsl/sem"
  "utils/containers"
  "utils/diagnostic"
  "utils/ice"
  "utils/id"
  "utils/macros"
  "utils/math"
  "utils/memory"
  "utils/reflection"
  "utils/result"
  "utils/rtti"
  "utils/symbol"
  "utils/text"
  "utils/traits"
)

tint_target_add_external_dependencies("lang/core:test"
  "gtest"
)

################################################################################
# CMake target: 'tint_lang_core_bench'
################################################################################
tint_add_target("lang/core:bench"
  lang/core/access_bench.cc
  lang/core/address_space_bench.cc
  lang/core/attribute_bench.cc
  lang/core/builtin_bench.cc
  lang/core/builtin_value_bench.cc
  lang/core/diagnostic_rule_bench.cc
  lang/core/diagnostic_severity_bench.cc
  lang/core/extension_bench.cc
  lang/core/interpolation_sampling_bench.cc
  lang/core/interpolation_type_bench.cc
  lang/core/texel_format_bench.cc
)

tint_target_add_dependencies("lang/core:bench"
  "lang/core"
  "utils/containers"
  "utils/diagnostic"
  "utils/ice"
  "utils/macros"
  "utils/math"
  "utils/memory"
  "utils/rtti"
  "utils/text"
  "utils/traits"
)
