# 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.

# GEN_BUILD:DO_NOT_GENERATE - This is a hand-crafted file.

load(":flags.bzl", "declare_bool_flag", "declare_os_flag")

# Declares the 'tint_build_*' flags that control what parts of Tint get built
declare_bool_flag(name = "tint_build_glsl_writer",    default = False)
declare_bool_flag(name = "tint_build_glsl_validator", default = False)
declare_bool_flag(name = "tint_build_hlsl_writer",    default = True)
declare_bool_flag(name = "tint_build_ir",             default = True)
declare_bool_flag(name = "tint_build_msl_writer",     default = True)
declare_bool_flag(name = "tint_build_spv_reader",     default = True)
declare_bool_flag(name = "tint_build_spv_writer",     default = True)
declare_bool_flag(name = "tint_build_wgsl_reader",    default = True)
declare_bool_flag(name = "tint_build_wgsl_writer",    default = True)

# Declares the 'os' flag that control what OS-specific Tint code gets built
declare_os_flag()
