# 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(utils/cli/BUILD.cmake)
include(utils/command/BUILD.cmake)
include(utils/containers/BUILD.cmake)
include(utils/debug/BUILD.cmake)
include(utils/diagnostic/BUILD.cmake)
include(utils/file/BUILD.cmake)
include(utils/generator/BUILD.cmake)
include(utils/ice/BUILD.cmake)
include(utils/id/BUILD.cmake)
include(utils/macros/BUILD.cmake)
include(utils/math/BUILD.cmake)
include(utils/memory/BUILD.cmake)
include(utils/reflection/BUILD.cmake)
include(utils/result/BUILD.cmake)
include(utils/rtti/BUILD.cmake)
include(utils/socket/BUILD.cmake)
include(utils/strconv/BUILD.cmake)
include(utils/symbol/BUILD.cmake)
include(utils/text/BUILD.cmake)
include(utils/traits/BUILD.cmake)
