# Copyright 2023 The Dawn & Tint Authors
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
#    list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
#    contributors may be used to endorse or promote products derived from
#    this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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

include(lang/core/ir/transform/BUILD.cmake)

################################################################################
# Target:    tint_lang_core_ir
# Kind:      lib
################################################################################
tint_add_target(tint_lang_core_ir lib
  lang/core/ir/access.cc
  lang/core/ir/access.h
  lang/core/ir/binary.cc
  lang/core/ir/binary.h
  lang/core/ir/bitcast.cc
  lang/core/ir/bitcast.h
  lang/core/ir/block.cc
  lang/core/ir/block.h
  lang/core/ir/block_param.cc
  lang/core/ir/block_param.h
  lang/core/ir/break_if.cc
  lang/core/ir/break_if.h
  lang/core/ir/builder.cc
  lang/core/ir/builder.h
  lang/core/ir/builtin_call.cc
  lang/core/ir/builtin_call.h
  lang/core/ir/call.cc
  lang/core/ir/call.h
  lang/core/ir/clone_context.cc
  lang/core/ir/clone_context.h
  lang/core/ir/constant.cc
  lang/core/ir/constant.h
  lang/core/ir/construct.cc
  lang/core/ir/construct.h
  lang/core/ir/continue.cc
  lang/core/ir/continue.h
  lang/core/ir/control_instruction.cc
  lang/core/ir/control_instruction.h
  lang/core/ir/convert.cc
  lang/core/ir/convert.h
  lang/core/ir/core_builtin_call.cc
  lang/core/ir/core_builtin_call.h
  lang/core/ir/disassembler.cc
  lang/core/ir/disassembler.h
  lang/core/ir/discard.cc
  lang/core/ir/discard.h
  lang/core/ir/exit.cc
  lang/core/ir/exit.h
  lang/core/ir/exit_if.cc
  lang/core/ir/exit_if.h
  lang/core/ir/exit_loop.cc
  lang/core/ir/exit_loop.h
  lang/core/ir/exit_switch.cc
  lang/core/ir/exit_switch.h
  lang/core/ir/function.cc
  lang/core/ir/function.h
  lang/core/ir/function_param.cc
  lang/core/ir/function_param.h
  lang/core/ir/if.cc
  lang/core/ir/if.h
  lang/core/ir/instruction.cc
  lang/core/ir/instruction.h
  lang/core/ir/instruction_result.cc
  lang/core/ir/instruction_result.h
  lang/core/ir/let.cc
  lang/core/ir/let.h
  lang/core/ir/load.cc
  lang/core/ir/load.h
  lang/core/ir/load_vector_element.cc
  lang/core/ir/load_vector_element.h
  lang/core/ir/location.h
  lang/core/ir/loop.cc
  lang/core/ir/loop.h
  lang/core/ir/module.cc
  lang/core/ir/module.h
  lang/core/ir/multi_in_block.cc
  lang/core/ir/multi_in_block.h
  lang/core/ir/next_iteration.cc
  lang/core/ir/next_iteration.h
  lang/core/ir/operand_instruction.cc
  lang/core/ir/operand_instruction.h
  lang/core/ir/return.cc
  lang/core/ir/return.h
  lang/core/ir/store.cc
  lang/core/ir/store.h
  lang/core/ir/store_vector_element.cc
  lang/core/ir/store_vector_element.h
  lang/core/ir/switch.cc
  lang/core/ir/switch.h
  lang/core/ir/swizzle.cc
  lang/core/ir/swizzle.h
  lang/core/ir/terminate_invocation.cc
  lang/core/ir/terminate_invocation.h
  lang/core/ir/terminator.cc
  lang/core/ir/terminator.h
  lang/core/ir/traverse.h
  lang/core/ir/unary.cc
  lang/core/ir/unary.h
  lang/core/ir/unreachable.cc
  lang/core/ir/unreachable.h
  lang/core/ir/user_call.cc
  lang/core/ir/user_call.h
  lang/core/ir/validator.cc
  lang/core/ir/validator.h
  lang/core/ir/value.cc
  lang/core/ir/value.h
  lang/core/ir/var.cc
  lang/core/ir/var.h
)

tint_target_add_dependencies(tint_lang_core_ir lib
  tint_api_common
  tint_lang_core
  tint_lang_core_constant
  tint_lang_core_intrinsic
  tint_lang_core_type
  tint_utils_containers
  tint_utils_diagnostic
  tint_utils_ice
  tint_utils_id
  tint_utils_macros
  tint_utils_math
  tint_utils_memory
  tint_utils_reflection
  tint_utils_result
  tint_utils_rtti
  tint_utils_symbol
  tint_utils_text
  tint_utils_traits
)

################################################################################
# Target:    tint_lang_core_ir_test
# Kind:      test
################################################################################
tint_add_target(tint_lang_core_ir_test test
  lang/core/ir/access_test.cc
  lang/core/ir/binary_test.cc
  lang/core/ir/bitcast_test.cc
  lang/core/ir/block_param_test.cc
  lang/core/ir/block_test.cc
  lang/core/ir/break_if_test.cc
  lang/core/ir/constant_test.cc
  lang/core/ir/construct_test.cc
  lang/core/ir/continue_test.cc
  lang/core/ir/convert_test.cc
  lang/core/ir/core_builtin_call_test.cc
  lang/core/ir/discard_test.cc
  lang/core/ir/exit_if_test.cc
  lang/core/ir/exit_loop_test.cc
  lang/core/ir/exit_switch_test.cc
  lang/core/ir/function_param_test.cc
  lang/core/ir/function_test.cc
  lang/core/ir/if_test.cc
  lang/core/ir/instruction_result_test.cc
  lang/core/ir/instruction_test.cc
  lang/core/ir/ir_helper_test.h
  lang/core/ir/let_test.cc
  lang/core/ir/load_test.cc
  lang/core/ir/load_vector_element_test.cc
  lang/core/ir/loop_test.cc
  lang/core/ir/module_test.cc
  lang/core/ir/multi_in_block_test.cc
  lang/core/ir/next_iteration_test.cc
  lang/core/ir/operand_instruction_test.cc
  lang/core/ir/return_test.cc
  lang/core/ir/store_test.cc
  lang/core/ir/store_vector_element_test.cc
  lang/core/ir/switch_test.cc
  lang/core/ir/swizzle_test.cc
  lang/core/ir/terminate_invocation_test.cc
  lang/core/ir/traverse_test.cc
  lang/core/ir/unary_test.cc
  lang/core/ir/unreachable_test.cc
  lang/core/ir/user_call_test.cc
  lang/core/ir/validator_test.cc
  lang/core/ir/value_test.cc
  lang/core/ir/var_test.cc
)

tint_target_add_dependencies(tint_lang_core_ir_test test
  tint_api_common
  tint_lang_core
  tint_lang_core_constant
  tint_lang_core_intrinsic
  tint_lang_core_ir
  tint_lang_core_type
  tint_utils_containers
  tint_utils_diagnostic
  tint_utils_ice
  tint_utils_id
  tint_utils_macros
  tint_utils_math
  tint_utils_memory
  tint_utils_reflection
  tint_utils_result
  tint_utils_rtti
  tint_utils_symbol
  tint_utils_text
  tint_utils_traits
)

tint_target_add_external_dependencies(tint_lang_core_ir_test test
  "gtest"
)
