Remove duplicated AST and SEM headers in BUILD.gn

This CL updates the BUILD.gn script to have a dedicated AST headers
target. This can then be depended on by the AST, SEM and program target.

Change-Id: I0fd3a9eb3bffbf5b7d76eee3d44109ee5c5df431
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/119903
Auto-Submit: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 8ea182a..f0ca1dd 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -128,8 +128,9 @@
     "val/val.h",
   ]
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
     ":tint_utils_io",
   ]
 }
@@ -235,90 +236,16 @@
   deps = [ ":libtint_text_src" ]
 }
 
-libtint_source_set("libtint_syntax_tree_src") {
+libtint_source_set("libtint_clone_context_hdrs") {
+  sources = [ "clone_context.h" ]
+  deps = [ ":libtint_base_src" ]
+}
+
+libtint_source_set("libtint_program_src") {
   sources = [
-    "ast/accessor_expression.h",
-    "ast/alias.h",
-    "ast/assignment_statement.h",
-    "ast/attribute.h",
-    "ast/binary_expression.h",
-    "ast/binding_attribute.h",
-    "ast/bitcast_expression.h",
-    "ast/block_statement.h",
-    "ast/bool_literal_expression.h",
-    "ast/break_if_statement.h",
-    "ast/break_statement.h",
-    "ast/builtin_attribute.h",
-    "ast/builtin_value.h",
-    "ast/call_expression.h",
-    "ast/call_statement.h",
-    "ast/case_selector.h",
-    "ast/case_statement.h",
-    "ast/compound_assignment_statement.h",
-    "ast/const.h",
-    "ast/const_assert.h",
-    "ast/continue_statement.h",
-    "ast/diagnostic_attribute.h",
-    "ast/diagnostic_control.h",
-    "ast/diagnostic_directive.h",
-    "ast/disable_validation_attribute.h",
-    "ast/discard_statement.h",
-    "ast/enable.h",
-    "ast/expression.h",
-    "ast/extension.h",
-    "ast/float_literal_expression.h",
-    "ast/for_loop_statement.h",
-    "ast/function.h",
-    "ast/group_attribute.h",
-    "ast/id_attribute.h",
-    "ast/identifier.h",
-    "ast/identifier_expression.h",
-    "ast/if_statement.h",
-    "ast/increment_decrement_statement.h",
-    "ast/index_accessor_expression.h",
-    "ast/int_literal_expression.h",
-    "ast/internal_attribute.h",
-    "ast/interpolate_attribute.h",
-    "ast/invariant_attribute.h",
-    "ast/let.h",
-    "ast/literal_expression.h",
-    "ast/location_attribute.h",
-    "ast/loop_statement.h",
-    "ast/member_accessor_expression.h",
-    "ast/module.h",
-    "ast/node.h",
-    "ast/node_id.h",
-    "ast/override.h",
-    "ast/parameter.h",
-    "ast/phony_expression.h",
-    "ast/pipeline_stage.h",
-    "ast/return_statement.h",
-    "ast/stage_attribute.h",
-    "ast/statement.h",
-    "ast/stride_attribute.h",
-    "ast/struct.h",
-    "ast/struct_member.h",
-    "ast/struct_member_align_attribute.h",
-    "ast/struct_member_offset_attribute.h",
-    "ast/struct_member_size_attribute.h",
-    "ast/switch_statement.h",
-    "ast/templated_identifier.h",
-    "ast/traverse_expressions.h",
-    "ast/type.h",
-    "ast/type_decl.h",
-    "ast/unary_op.h",
-    "ast/unary_op_expression.h",
-    "ast/var.h",
-    "ast/variable.h",
-    "ast/variable_decl_statement.h",
-    "ast/while_statement.h",
-    "ast/workgroup_attribute.h",
     "clone_context.cc",
-    "clone_context.h",
     "program.cc",
-    "program.h",
     "program_builder.cc",
-    "program_builder.h",
     "resolver/const_eval.cc",
     "resolver/const_eval.h",
     "resolver/dependency_graph.cc",
@@ -329,55 +256,29 @@
     "resolver/intrinsic_table.h",
     "resolver/intrinsic_table.inl",
     "resolver/resolver.cc",
-    "resolver/resolver.h",
     "resolver/sem_helper.cc",
     "resolver/sem_helper.h",
     "resolver/uniformity.cc",
     "resolver/uniformity.h",
     "resolver/validator.cc",
     "resolver/validator.h",
-    "sem/array_count.h",
-    "sem/behavior.h",
-    "sem/binding_point.h",
-    "sem/block_statement.h",
-    "sem/break_if_statement.h",
-    "sem/builtin.h",
-    "sem/builtin_enum_expression.h",
-    "sem/builtin_type.h",
-    "sem/call.h",
-    "sem/call_target.h",
-    "sem/evaluation_stage.h",
-    "sem/expression.h",
-    "sem/for_loop_statement.h",
-    "sem/function.h",
-    "sem/function_expression.h",
-    "sem/if_statement.h",
-    "sem/index_accessor_expression.h",
-    "sem/info.h",
-    "sem/load.h",
-    "sem/loop_statement.h",
-    "sem/materialize.h",
-    "sem/member_accessor_expression.h",
-    "sem/module.h",
-    "sem/node.h",
-    "sem/parameter_usage.h",
-    "sem/pipeline_stage_set.h",
-    "sem/sampler_texture_pair.h",
-    "sem/statement.h",
-    "sem/struct.h",
-    "sem/switch_statement.h",
-    "sem/type_conversion.h",
-    "sem/type_expression.h",
-    "sem/type_initializer.h",
-    "sem/type_mappings.h",
-    "sem/value_expression.h",
-    "sem/variable.h",
-    "sem/while_statement.h",
+  ]
+  public = [
+    "program.h",
+    "program_builder.h",
+    "resolver/resolver.h",
+  ]
+  friend = [
+    ":tint_unittests_resolver_src",  # For resolver test access
   ]
 
+  public_deps = [ ":libtint_clone_context_hdrs" ]
+
   deps = [
+    ":libtint_ast_hdrs",
     ":libtint_base_src",
     ":libtint_constant_src",
+    ":libtint_sem_src",
     ":libtint_text_src",
     ":libtint_type_src",
   ]
@@ -388,7 +289,7 @@
     "demangler.cc",
     "demangler.h",
   ]
-  deps = [ ":libtint_syntax_tree_src" ]
+  deps = [ ":libtint_program_src" ]
 }
 
 libtint_source_set("libtint_initializer_src") {
@@ -407,8 +308,10 @@
     "inspector/scalar.h",
   ]
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
+    ":libtint_sem_src",
     ":libtint_type_src",
   ]
 }
@@ -526,169 +429,182 @@
     "transform/zero_init_workgroup_memory.h",
   ]
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
+    ":libtint_sem_src",
     ":libtint_text_src",
     ":libtint_type_src",
   ]
 }
 
+libtint_source_set("libtint_ast_hdrs") {
+  sources = [
+    "ast/accessor_expression.h",
+    "ast/alias.h",
+    "ast/assignment_statement.h",
+    "ast/attribute.h",
+    "ast/binary_expression.h",
+    "ast/binding_attribute.h",
+    "ast/bitcast_expression.h",
+    "ast/block_statement.h",
+    "ast/bool_literal_expression.h",
+    "ast/break_if_statement.h",
+    "ast/break_statement.h",
+    "ast/builtin_attribute.h",
+    "ast/builtin_value.h",
+    "ast/call_expression.h",
+    "ast/call_statement.h",
+    "ast/case_selector.h",
+    "ast/case_statement.h",
+    "ast/compound_assignment_statement.h",
+    "ast/const.h",
+    "ast/const_assert.h",
+    "ast/continue_statement.h",
+    "ast/diagnostic_attribute.h",
+    "ast/diagnostic_control.h",
+    "ast/diagnostic_directive.h",
+    "ast/disable_validation_attribute.h",
+    "ast/discard_statement.h",
+    "ast/enable.h",
+    "ast/expression.h",
+    "ast/extension.h",
+    "ast/float_literal_expression.h",
+    "ast/for_loop_statement.h",
+    "ast/function.h",
+    "ast/group_attribute.h",
+    "ast/id_attribute.h",
+    "ast/identifier.h",
+    "ast/identifier_expression.h",
+    "ast/if_statement.h",
+    "ast/increment_decrement_statement.h",
+    "ast/index_accessor_expression.h",
+    "ast/int_literal_expression.h",
+    "ast/internal_attribute.h",
+    "ast/interpolate_attribute.h",
+    "ast/invariant_attribute.h",
+    "ast/let.h",
+    "ast/literal_expression.h",
+    "ast/location_attribute.h",
+    "ast/loop_statement.h",
+    "ast/member_accessor_expression.h",
+    "ast/module.h",
+    "ast/node.h",
+    "ast/node_id.h",
+    "ast/override.h",
+    "ast/parameter.h",
+    "ast/phony_expression.h",
+    "ast/pipeline_stage.h",
+    "ast/return_statement.h",
+    "ast/stage_attribute.h",
+    "ast/statement.h",
+    "ast/stride_attribute.h",
+    "ast/struct.h",
+    "ast/struct_member.h",
+    "ast/struct_member_align_attribute.h",
+    "ast/struct_member_offset_attribute.h",
+    "ast/struct_member_size_attribute.h",
+    "ast/switch_statement.h",
+    "ast/templated_identifier.h",
+    "ast/traverse_expressions.h",
+    "ast/type.h",
+    "ast/type_decl.h",
+    "ast/unary_op.h",
+    "ast/unary_op_expression.h",
+    "ast/var.h",
+    "ast/variable.h",
+    "ast/variable_decl_statement.h",
+    "ast/while_statement.h",
+    "ast/workgroup_attribute.h",
+  ]
+  deps = [
+    ":libtint_base_src",
+    ":libtint_clone_context_hdrs",
+    ":libtint_type_src",
+  ]
+}
+
 libtint_source_set("libtint_ast_src") {
   sources = [
     "ast/accessor_expression.cc",
-    "ast/accessor_expression.h",
     "ast/alias.cc",
-    "ast/alias.h",
     "ast/assignment_statement.cc",
-    "ast/assignment_statement.h",
     "ast/attribute.cc",
-    "ast/attribute.h",
     "ast/binary_expression.cc",
-    "ast/binary_expression.h",
     "ast/binding_attribute.cc",
-    "ast/binding_attribute.h",
     "ast/bitcast_expression.cc",
-    "ast/bitcast_expression.h",
     "ast/block_statement.cc",
-    "ast/block_statement.h",
     "ast/bool_literal_expression.cc",
-    "ast/bool_literal_expression.h",
     "ast/break_if_statement.cc",
-    "ast/break_if_statement.h",
     "ast/break_statement.cc",
-    "ast/break_statement.h",
     "ast/builtin_attribute.cc",
-    "ast/builtin_attribute.h",
     "ast/builtin_value.cc",
-    "ast/builtin_value.h",
     "ast/call_expression.cc",
-    "ast/call_expression.h",
     "ast/call_statement.cc",
-    "ast/call_statement.h",
     "ast/case_selector.cc",
-    "ast/case_selector.h",
     "ast/case_statement.cc",
-    "ast/case_statement.h",
     "ast/compound_assignment_statement.cc",
-    "ast/compound_assignment_statement.h",
     "ast/const.cc",
-    "ast/const.h",
     "ast/const_assert.cc",
-    "ast/const_assert.h",
     "ast/continue_statement.cc",
-    "ast/continue_statement.h",
     "ast/diagnostic_attribute.cc",
-    "ast/diagnostic_attribute.h",
     "ast/diagnostic_control.cc",
-    "ast/diagnostic_control.h",
     "ast/diagnostic_directive.cc",
-    "ast/diagnostic_directive.h",
     "ast/disable_validation_attribute.cc",
-    "ast/disable_validation_attribute.h",
     "ast/discard_statement.cc",
-    "ast/discard_statement.h",
     "ast/enable.cc",
-    "ast/enable.h",
     "ast/expression.cc",
-    "ast/expression.h",
     "ast/extension.cc",
-    "ast/extension.h",
     "ast/float_literal_expression.cc",
-    "ast/float_literal_expression.h",
     "ast/for_loop_statement.cc",
-    "ast/for_loop_statement.h",
     "ast/function.cc",
-    "ast/function.h",
     "ast/group_attribute.cc",
-    "ast/group_attribute.h",
     "ast/id_attribute.cc",
-    "ast/id_attribute.h",
     "ast/identifier.cc",
-    "ast/identifier.h",
     "ast/identifier_expression.cc",
-    "ast/identifier_expression.h",
     "ast/if_statement.cc",
-    "ast/if_statement.h",
     "ast/increment_decrement_statement.cc",
-    "ast/increment_decrement_statement.h",
     "ast/index_accessor_expression.cc",
-    "ast/index_accessor_expression.h",
     "ast/int_literal_expression.cc",
-    "ast/int_literal_expression.h",
     "ast/internal_attribute.cc",
-    "ast/internal_attribute.h",
     "ast/interpolate_attribute.cc",
-    "ast/interpolate_attribute.h",
     "ast/invariant_attribute.cc",
-    "ast/invariant_attribute.h",
     "ast/let.cc",
-    "ast/let.h",
     "ast/literal_expression.cc",
-    "ast/literal_expression.h",
     "ast/location_attribute.cc",
-    "ast/location_attribute.h",
     "ast/loop_statement.cc",
-    "ast/loop_statement.h",
     "ast/member_accessor_expression.cc",
-    "ast/member_accessor_expression.h",
     "ast/module.cc",
-    "ast/module.h",
     "ast/node.cc",
-    "ast/node.h",
-    "ast/node_id.h",
     "ast/override.cc",
-    "ast/override.h",
     "ast/parameter.cc",
-    "ast/parameter.h",
     "ast/phony_expression.cc",
-    "ast/phony_expression.h",
     "ast/pipeline_stage.cc",
-    "ast/pipeline_stage.h",
     "ast/return_statement.cc",
-    "ast/return_statement.h",
     "ast/stage_attribute.cc",
-    "ast/stage_attribute.h",
     "ast/statement.cc",
-    "ast/statement.h",
     "ast/stride_attribute.cc",
-    "ast/stride_attribute.h",
     "ast/struct.cc",
-    "ast/struct.h",
     "ast/struct_member.cc",
-    "ast/struct_member.h",
     "ast/struct_member_align_attribute.cc",
-    "ast/struct_member_align_attribute.h",
     "ast/struct_member_offset_attribute.cc",
-    "ast/struct_member_offset_attribute.h",
     "ast/struct_member_size_attribute.cc",
-    "ast/struct_member_size_attribute.h",
     "ast/switch_statement.cc",
-    "ast/switch_statement.h",
     "ast/templated_identifier.cc",
-    "ast/templated_identifier.h",
-    "ast/traverse_expressions.h",
     "ast/type.cc",
-    "ast/type.h",
     "ast/type_decl.cc",
-    "ast/type_decl.h",
     "ast/unary_op.cc",
-    "ast/unary_op.h",
     "ast/unary_op_expression.cc",
-    "ast/unary_op_expression.h",
     "ast/var.cc",
-    "ast/var.h",
     "ast/variable.cc",
-    "ast/variable.h",
     "ast/variable_decl_statement.cc",
-    "ast/variable_decl_statement.h",
     "ast/while_statement.cc",
-    "ast/while_statement.h",
     "ast/workgroup_attribute.cc",
-    "ast/workgroup_attribute.h",
   ]
+  public_deps = [ ":libtint_ast_hdrs" ]
   deps = [
     ":libtint_base_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
     ":libtint_type_src",
   ]
 }
@@ -767,9 +683,9 @@
   ]
 
   deps = [
+    ":libtint_ast_hdrs",
     ":libtint_base_src",
     ":libtint_constant_src",
-    ":libtint_syntax_tree_src",
     ":libtint_type_src",
   ]
 }
@@ -879,7 +795,7 @@
   ]
 
   public_deps = [
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
     ":libtint_transform_src",
   ]
 }
@@ -908,9 +824,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
+    ":libtint_program_src",
     ":libtint_reader_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_sem_src",
     ":libtint_type_src",
     "${tint_spirv_tools_dir}/:spvtools_opt",
   ]
@@ -941,9 +859,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
     ":libtint_inspector_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
+    ":libtint_sem_src",
     ":libtint_transform_src",
     ":libtint_type_src",
   ]
@@ -969,10 +889,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
     ":libtint_constant_src",
+    ":libtint_program_src",
     ":libtint_sem_src",
-    ":libtint_syntax_tree_src",
     ":libtint_transform_src",
     ":libtint_type_src",
     ":libtint_writer_src",
@@ -995,7 +916,9 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
+    ":libtint_program_src",
     ":libtint_reader_src",
     ":libtint_text_src",
     ":libtint_type_src",
@@ -1011,8 +934,10 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
-    ":libtint_syntax_tree_src",
+    ":libtint_program_src",
+    ":libtint_sem_src",
     ":libtint_type_src",
     ":libtint_writer_src",
   ]
@@ -1027,10 +952,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
     ":libtint_constant_src",
+    ":libtint_program_src",
     ":libtint_sem_src",
-    ":libtint_syntax_tree_src",
     ":libtint_transform_src",
     ":libtint_type_src",
     ":libtint_writer_src",
@@ -1046,10 +972,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
     ":libtint_constant_src",
+    ":libtint_program_src",
     ":libtint_sem_src",
-    ":libtint_syntax_tree_src",
     ":libtint_transform_src",
     ":libtint_type_src",
     ":libtint_writer_src",
@@ -1065,10 +992,11 @@
   ]
 
   deps = [
+    ":libtint_ast_src",
     ":libtint_base_src",
     ":libtint_constant_src",
+    ":libtint_program_src",
     ":libtint_sem_src",
-    ":libtint_syntax_tree_src",
     ":libtint_transform_src",
     ":libtint_type_src",
     ":libtint_writer_src",
@@ -1083,8 +1011,8 @@
     ":libtint_demangler_src",
     ":libtint_initializer_src",
     ":libtint_inspector_src",
+    ":libtint_program_src",
     ":libtint_sem_src",
-    ":libtint_syntax_tree_src",
     ":libtint_text_src",
     ":libtint_transform_src",
     ":libtint_type_src",
@@ -1267,7 +1195,6 @@
     deps = [
       ":libtint_ast_src",
       ":libtint_base_src",
-      ":libtint_syntax_tree_src",
     ]
   }