# Copyright (C) 2018-2021 The ANGLE Project Authors.
# Copyright (C) 2019-2024 LunarG, Inc.
#
# 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
#
#     https://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.

import("//build_overrides/vulkan_validation_layers.gni")

vulkan_undefine_configs = []
if (is_win) {
  vulkan_undefine_configs += [ "//build/config/win:unicode" ]
}

vulkan_gen_dir = "$target_gen_dir/$vulkan_gen_subdir"
raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir)

vulkan_data_dir = "$root_out_dir/$vulkan_data_subdir"
raw_vulkan_data_dir = rebase_path(vulkan_data_dir, root_build_dir)

raw_root_out_dir = rebase_path(root_out_dir, root_build_dir)

# This special action is needed to remove old VVL objects that are now renamed.
action("vulkan_clean_old_validation_layer_objects") {
  script = "scripts/gn/remove_files.py"

  # inputs is a (random) new file since the vvl roll, used to ensure the cleanup is done only once
  inputs = [ "layers/gpu_validation/gpu_validation.cpp" ]
  outputs = [ "$vulkan_gen_dir/old_vvl_files_are_removed" ]
  args = [
    "$raw_vulkan_gen_dir/old_vvl_files_are_removed",
    "$raw_root_out_dir/libVkLayer*",
    "$raw_root_out_dir/VkLayer*",
    "$raw_vulkan_data_dir/VkLayer*.json",
  ]
}

config("generated_layers_config") {
  if (is_clang) {
    cflags = [
      "-Wno-conversion",
      "-Wno-deprecated-copy",
      "-Wno-extra-semi",
      "-Wno-implicit-fallthrough",
      "-Wno-missing-field-initializers",
      "-Wno-newline-eof",
      "-Wno-sign-compare",
      "-Wno-unused-const-variable",
    ]
  }
}

config("vulkan_internal_config") {
  defines = [ "VK_ENABLE_BETA_EXTENSIONS" ]

  cflags = []
  if (is_clang || !is_win) {
    cflags += [ "-Wno-unused-function" ]
  }
  if (is_clang && is_mac) {
    cflags += [ "-Wno-unguarded-availability-new" ]
  }

  # Suppress warnings the vulkan code doesn't comply with.
  if (is_fuchsia) {
    configs = [ "//build/config:Wno-unused-but-set-variable" ]
  }
  if (is_clang) {
    cflags += [ "-Wno-extra-semi" ]
  }
}

# The validation layers
# ---------------------

config("vulkan_layer_config") {
  include_dirs = [
    "layers",
    "layers/external",
    "layers/vulkan",
  ]
  if (is_clang) {
    cflags = [ "-Wno-extra-semi" ]
  }
}

vvl_sources = [
  "$vulkan_headers_dir/include/vulkan/vk_layer.h",
  "$vulkan_headers_dir/include/vulkan/vulkan.h",
  "layers/best_practices/best_practices_error_enums.h",
  "layers/best_practices/best_practices_utils.cpp",
  "layers/best_practices/best_practices_validation.h",
  "layers/best_practices/bp_buffer.cpp",
  "layers/best_practices/bp_cmd_buffer.cpp",
  "layers/best_practices/bp_cmd_buffer_nv.cpp",
  "layers/best_practices/bp_copy_blit_resolve.cpp",
  "layers/best_practices/bp_descriptor.cpp",
  "layers/best_practices/bp_device_memory.cpp",
  "layers/best_practices/bp_drawdispatch.cpp",
  "layers/best_practices/bp_framebuffer.cpp",
  "layers/best_practices/bp_image.cpp",
  "layers/best_practices/bp_instance_device.cpp",
  "layers/best_practices/bp_pipeline.cpp",
  "layers/best_practices/bp_ray_tracing.cpp",
  "layers/best_practices/bp_render_pass.cpp",
  "layers/best_practices/bp_state.h",
  "layers/best_practices/bp_synchronization.cpp",
  "layers/best_practices/bp_video.cpp",
  "layers/best_practices/bp_wsi.cpp",
  "layers/containers/qfo_transfer.h",
  "layers/containers/range_vector.h",
  "layers/containers/subresource_adapter.cpp",
  "layers/containers/subresource_adapter.h",
  "layers/core_checks/cc_android.cpp",
  "layers/core_checks/cc_buffer.cpp",
  "layers/core_checks/cc_buffer_address.h",
  "layers/core_checks/cc_cmd_buffer.cpp",
  "layers/core_checks/cc_cmd_buffer_dynamic.cpp",
  "layers/core_checks/cc_copy_blit_resolve.cpp",
  "layers/core_checks/cc_descriptor.cpp",
  "layers/core_checks/cc_device.cpp",
  "layers/core_checks/cc_device_memory.cpp",
  "layers/core_checks/cc_drawdispatch.cpp",
  "layers/core_checks/cc_external_object.cpp",
  "layers/core_checks/cc_image.cpp",
  "layers/core_checks/cc_image_layout.cpp",
  "layers/core_checks/cc_pipeline.cpp",
  "layers/core_checks/cc_pipeline_compute.cpp",
  "layers/core_checks/cc_pipeline_graphics.cpp",
  "layers/core_checks/cc_pipeline_ray_tracing.cpp",
  "layers/core_checks/cc_query.cpp",
  "layers/core_checks/cc_queue.cpp",
  "layers/core_checks/cc_ray_tracing.cpp",
  "layers/core_checks/cc_render_pass.cpp",
  "layers/core_checks/cc_shader_interface.cpp",
  "layers/core_checks/cc_shader_object.cpp",
  "layers/core_checks/cc_spirv.cpp",
  "layers/core_checks/cc_synchronization.cpp",
  "layers/core_checks/cc_video.cpp",
  "layers/core_checks/cc_wsi.cpp",
  "layers/core_checks/cc_ycbcr.cpp",
  "layers/core_checks/core_validation.h",
  "layers/drawdispatch/descriptor_validator.cpp",
  "layers/drawdispatch/descriptor_validator.h",
  "layers/drawdispatch/drawdispatch_vuids.cpp",
  "layers/drawdispatch/drawdispatch_vuids.h",
  "layers/external/vma/vk_mem_alloc.h",
  "layers/external/vma/vma.cpp",
  "layers/external/vma/vma.h",
  "layers/gpu_shaders/gpu_error_constants.h",
  "layers/gpu_shaders/gpu_shaders_constants.h",
  "layers/gpu_validation/debug_printf.cpp",
  "layers/gpu_validation/debug_printf.h",
  "layers/gpu_validation/gpu_descriptor_set.cpp",
  "layers/gpu_validation/gpu_descriptor_set.h",
  "layers/gpu_validation/gpu_error_message.cpp",
  "layers/gpu_validation/gpu_error_message.h",
  "layers/gpu_validation/gpu_image_layout.cpp",
  "layers/gpu_validation/gpu_settings.h",
  "layers/gpu_validation/gpu_state_tracker.cpp",
  "layers/gpu_validation/gpu_state_tracker.h",
  "layers/gpu_validation/gpu_subclasses.cpp",
  "layers/gpu_validation/gpu_subclasses.h",
  "layers/gpu_validation/gpu_record.cpp",
  "layers/gpu_validation/gpu_resources.h",
  "layers/gpu_validation/gpu_settings.h",
  "layers/gpu_validation/gpu_setup.cpp",
  "layers/gpu_validation/gpu_validation.cpp",
  "layers/gpu_validation/gpu_validation.h",
  "layers/gpu_validation/gpu_vuids.cpp",
  "layers/gpu_validation/gpu_vuids.h",
  "layers/gpu_validation/spirv/function_basic_block.cpp",
  "layers/gpu_validation/spirv/function_basic_block.h",
  "layers/gpu_validation/spirv/instruction.cpp",
  "layers/gpu_validation/spirv/instruction.h",
  "layers/gpu_validation/spirv/link.h",
  "layers/gpu_validation/spirv/module.cpp",
  "layers/gpu_validation/spirv/module.h",
  "layers/gpu_validation/spirv/pass.cpp",
  "layers/gpu_validation/spirv/pass.h",
  "layers/gpu_validation/spirv/type_manager.cpp",
  "layers/gpu_validation/spirv/type_manager.h",
  "layers/gpu_validation/spirv/bindless_descriptor_pass.h",
  "layers/gpu_validation/spirv/bindless_descriptor_pass.cpp",
  "layers/gpu_validation/spirv/buffer_device_address_pass.h",
  "layers/gpu_validation/spirv/buffer_device_address_pass.cpp",
  "layers/gpu_validation/spirv/ray_query_pass.h",
  "layers/gpu_validation/spirv/ray_query_pass.cpp",
  "layers/layer_chassis_dispatch_manual.cpp",
  "layers/layer_options.cpp",
  "layers/layer_options.h",
  "layers/object_tracker/object_lifetime_validation.h",
  "layers/object_tracker/object_tracker_utils.cpp",
  "layers/state_tracker/buffer_state.cpp",
  "layers/state_tracker/buffer_state.h",
  "layers/state_tracker/chassis_modification_state.h",
  "layers/state_tracker/cmd_buffer_state.cpp",
  "layers/state_tracker/cmd_buffer_state.h",
  "layers/state_tracker/descriptor_sets.cpp",
  "layers/state_tracker/descriptor_sets.h",
  "layers/state_tracker/device_memory_state.cpp",
  "layers/state_tracker/device_memory_state.h",
  "layers/state_tracker/device_state.h",
  "layers/state_tracker/fence_state.cpp",
  "layers/state_tracker/fence_state.h",
  "layers/state_tracker/image_layout_map.cpp",
  "layers/state_tracker/image_layout_map.h",
  "layers/state_tracker/image_state.cpp",
  "layers/state_tracker/image_state.h",
  "layers/state_tracker/pipeline_layout_state.cpp",
  "layers/state_tracker/pipeline_layout_state.h",
  "layers/state_tracker/pipeline_state.cpp",
  "layers/state_tracker/pipeline_state.h",
  "layers/state_tracker/pipeline_sub_state.cpp",
  "layers/state_tracker/pipeline_sub_state.h",
  "layers/state_tracker/query_state.h",
  "layers/state_tracker/queue_state.cpp",
  "layers/state_tracker/queue_state.h",
  "layers/state_tracker/ray_tracing_state.h",
  "layers/state_tracker/render_pass_state.cpp",
  "layers/state_tracker/render_pass_state.h",
  "layers/state_tracker/sampler_state.h",
  "layers/state_tracker/semaphore_state.cpp",
  "layers/state_tracker/semaphore_state.h",
  "layers/state_tracker/shader_instruction.cpp",
  "layers/state_tracker/shader_instruction.h",
  "layers/state_tracker/shader_module.cpp",
  "layers/state_tracker/shader_module.h",
  "layers/state_tracker/shader_object_state.cpp",
  "layers/state_tracker/shader_object_state.h",
  "layers/state_tracker/state_object.cpp",
  "layers/state_tracker/state_object.h",
  "layers/state_tracker/state_tracker.cpp",
  "layers/state_tracker/state_tracker.h",
  "layers/state_tracker/vertex_index_buffer_state.h",
  "layers/state_tracker/video_session_state.cpp",
  "layers/state_tracker/video_session_state.h",
  "layers/stateless/sl_buffer.cpp",
  "layers/stateless/sl_cmd_buffer.cpp",
  "layers/stateless/sl_cmd_buffer_dynamic.cpp",
  "layers/stateless/sl_descriptor.cpp",
  "layers/stateless/sl_device_memory.cpp",
  "layers/stateless/sl_external_object.cpp",
  "layers/stateless/sl_framebuffer.cpp",
  "layers/stateless/sl_image.cpp",
  "layers/stateless/sl_instance_device.cpp",
  "layers/stateless/sl_pipeline.cpp",
  "layers/stateless/sl_ray_tracing.cpp",
  "layers/stateless/sl_render_pass.cpp",
  "layers/stateless/sl_shader_object.cpp",
  "layers/stateless/sl_synchronization.cpp",
  "layers/stateless/sl_utils.cpp",
  "layers/stateless/sl_wsi.cpp",
  "layers/stateless/stateless_validation.h",
  "layers/sync/sync_access_context.cpp",
  "layers/sync/sync_access_context.h",
  "layers/sync/sync_access_state.cpp",
  "layers/sync/sync_access_state.h",
  "layers/sync/sync_commandbuffer.cpp",
  "layers/sync/sync_commandbuffer.h",
  "layers/sync/sync_common.cpp",
  "layers/sync/sync_common.h",
  "layers/sync/sync_image.h",
  "layers/sync/sync_op.cpp",
  "layers/sync/sync_op.h",
  "layers/sync/sync_renderpass.cpp",
  "layers/sync/sync_renderpass.h",
  "layers/sync/sync_submit.cpp",
  "layers/sync/sync_submit.h",
  "layers/sync/sync_utils.cpp",
  "layers/sync/sync_utils.h",
  "layers/sync/sync_validation.cpp",
  "layers/sync/sync_validation.h",
  "layers/sync/sync_vuid_maps.cpp",
  "layers/sync/sync_vuid_maps.h",
  "layers/thread_tracker/thread_safety_validation.cpp",
  "layers/thread_tracker/thread_safety_validation.h",
  "layers/utils/android_ndk_types.h",
  "layers/utils/convert_utils.cpp",
  "layers/utils/convert_utils.h",
  "layers/utils/shader_utils.cpp",
  "layers/utils/shader_utils.h",
  "layers/utils/image_layout_utils.cpp",
  "layers/utils/image_layout_utils.h",
  "layers/vulkan/generated/best_practices.cpp",
  "layers/vulkan/generated/best_practices.h",
  "layers/vulkan/generated/chassis.cpp",
  "layers/vulkan/generated/chassis.h",
  "layers/vulkan/generated/chassis_dispatch_helper.h",
  "layers/vulkan/generated/command_validation.cpp",
  "layers/vulkan/generated/dynamic_state_helper.cpp",
  "layers/vulkan/generated/dynamic_state_helper.h",
  "layers/vulkan/generated/enum_flag_bits.h",
  "layers/vulkan/generated/gpu_as_inspection_comp.h",
  "layers/vulkan/generated/gpu_inst_shader_hash.h",
  "layers/vulkan/generated/gpu_pre_dispatch_comp.h",
  "layers/vulkan/generated/gpu_pre_draw_vert.h",
  "layers/vulkan/generated/gpu_pre_trace_rays_rgen.h",
  "layers/vulkan/generated/gpu_pre_copy_buffer_to_image_comp.h",
  "layers/vulkan/generated/inst_bindless_descriptor_comp.h",
  "layers/vulkan/generated/inst_buffer_device_address_comp.h",
  "layers/vulkan/generated/inst_ray_query_comp.h",
  "layers/vulkan/generated/layer_chassis_dispatch.cpp",
  "layers/vulkan/generated/layer_chassis_dispatch.h",
  "layers/vulkan/generated/object_tracker.cpp",
  "layers/vulkan/generated/object_tracker.h",
  "layers/vulkan/generated/spirv_grammar_helper.cpp",
  "layers/vulkan/generated/spirv_grammar_helper.h",
  "layers/vulkan/generated/spirv_tools_commit_id.h",
  "layers/vulkan/generated/spirv_validation_helper.cpp",
  "layers/vulkan/generated/state_tracker_helper.cpp",
  "layers/vulkan/generated/state_tracker_helper.h",
  "layers/vulkan/generated/stateless_validation_helper.cpp",
  "layers/vulkan/generated/stateless_validation_helper.h",
  "layers/vulkan/generated/sync_validation_types.cpp",
  "layers/vulkan/generated/sync_validation_types.h",
  "layers/vulkan/generated/thread_safety.cpp",
  "layers/vulkan/generated/thread_safety_commands.h",
  "layers/vulkan/generated/thread_safety_counter_bodies.h",
  "layers/vulkan/generated/thread_safety_counter_definitions.h",
  "layers/vulkan/generated/thread_safety_counter_instances.h",
  "layers/vulkan/generated/valid_enum_values.cpp",
  "layers/vulkan/generated/valid_enum_values.h",
  "layers/vulkan/generated/valid_flag_values.cpp",
  "layers/vulkan/generated/vk_api_version.h",
  "layers/vulkan/generated/vk_dispatch_table_helper.cpp",
  "layers/vulkan/generated/vk_dispatch_table_helper.h",
  "layers/vulkan/generated/vk_extension_helper.h",
  "layers/vulkan/generated/vk_extension_helper.cpp",
  "layers/vulkan/generated/vk_safe_struct_core.cpp",
  "layers/vulkan/generated/vk_safe_struct_ext.cpp",
  "layers/vulkan/generated/vk_safe_struct_khr.cpp",
  "layers/vulkan/generated/vk_safe_struct_utils.cpp",
  "layers/vulkan/generated/vk_safe_struct_vendor.cpp",
]

layers = [ [
      "khronos_validation",
      vvl_sources,
      [ ":vulkan_core_validation_glslang" ],
      [],
    ] ]

if (!is_android) {
  action("vulkan_gen_json_files") {
    script = "scripts/gn/generate_vulkan_layers_json.py"

    deps = [ "$vulkan_headers_dir:vulkan_headers" ]
    if (!is_fuchsia) {
      # Make sure that the cleanup of old layer JSON files happens before the new ones are generated.
      deps += [ ":vulkan_clean_old_validation_layer_objects" ]
    }

    sources = [ "layers/VkLayer_khronos_validation.json.in" ]
    outputs = [ "$vulkan_data_dir/VkLayer_khronos_validation.json" ]

    if (is_linux) {
      _platform = "Linux"
    } else if (is_win) {
      _platform = "Windows"
    } else if (is_mac) {
      _platform = "Darwin"
    } else if (is_fuchsia) {
      _platform = "Fuchsia"
    } else {
      _platform = "Other"
    }

    args = [
             "--platform",
             _platform,
             rebase_path("layers/", root_build_dir),
             rebase_path(vulkan_data_dir, root_build_dir),
           ] + rebase_path(sources, root_build_dir)
    if (is_fuchsia) {
      args += [ "--no-path-prefix" ]
    }

    # The layer JSON files are part of the necessary data deps.
    data = outputs
  }
}

config("vulkan_memory_allocator_config") {
  if (is_clang) {
    cflags_cc = [ "-Wno-nullability-completeness" ]
  }
}

source_set("vulkan_layer_utils") {
  include_dirs = [
    "layers",
    "layers/external",
    "layers/vulkan",
  ]
  sources = [
    "$vulkan_headers_dir/include/vulkan/vk_layer.h",
    "$vulkan_headers_dir/include/vulkan/vulkan.h",
    "layers/containers/custom_containers.h",
    "layers/containers/sparse_containers.h",
    "layers/error_message/error_location.cpp",
    "layers/error_message/error_location.h",
    "layers/error_message/error_strings.h",
    "layers/error_message/logging.cpp",
    "layers/error_message/logging.h",
    "layers/error_message/record_object.h",
    "layers/external/xxhash.h",
    "layers/utils/android_ndk_types.h",
    "layers/utils/cast_utils.h",
    "layers/utils/hash_util.cpp",
    "layers/utils/hash_util.h",
    "layers/utils/hash_vk_types.h",
    "layers/utils/ray_tracing_utils.cpp",
    "layers/utils/ray_tracing_utils.h",
    "layers/utils/vk_layer_extension_utils.cpp",
    "layers/utils/vk_layer_extension_utils.h",
    "layers/utils/vk_layer_utils.cpp",
    "layers/utils/vk_layer_utils.h",
    "layers/vk_layer_config.cpp",
    "layers/vk_layer_config.h",
    "layers/vulkan/generated/error_location_helper.cpp",
    "layers/vulkan/generated/error_location_helper.h",
    "layers/vulkan/generated/layer_chassis_dispatch.h",
    "layers/vulkan/generated/feature_requirements_helper.cpp",
    "layers/vulkan/generated/feature_requirements_helper.h",
    "layers/vulkan/generated/pnext_chain_extraction.cpp",
    "layers/vulkan/generated/pnext_chain_extraction.h",
    "layers/vulkan/generated/vk_api_version.h",
    "layers/vulkan/generated/vk_extension_helper.h",
    "layers/vulkan/generated/vk_layer_dispatch_table.h",
    "layers/vulkan/generated/vk_object_types.h",
    "layers/vulkan/generated/vk_object_types.cpp",
    "layers/vulkan/generated/vk_safe_struct.h",
    "layers/vulkan/generated/vk_validation_error_messages.h",
  ]
  public_configs = [
    ":vulkan_internal_config",
    ":vulkan_memory_allocator_config",
  ]
  public_deps = [
    "$vulkan_headers_dir:vulkan_headers",
    "$vulkan_utility_libraries_dir:vulkan_layer_settings",
  ]

  configs -= vulkan_undefine_configs
  if (!is_fuchsia) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
}

config("vulkan_core_validation_config") {
  include_dirs = [ "$vvl_glslang_dir" ]
}

source_set("vulkan_core_validation_glslang") {
  public_deps = [
    "${vvl_spirv_tools_dir}:spvtools",
    "${vvl_spirv_tools_dir}:spvtools_link",
    "${vvl_spirv_tools_dir}:spvtools_opt",
    "${vvl_spirv_tools_dir}:spvtools_val",
  ]
  public_configs = [
    "$vulkan_headers_dir:vulkan_headers_config",
    ":vulkan_core_validation_config",
  ]
}

config("vulkan_stateless_validation_config") {
  if (is_clang) {
    cflags_cc = [ "-Wno-unused-const-variable" ]
  }
}

if (is_fuchsia) {
  library_type = "loadable_module"
} else {
  library_type = "shared_library"
}

foreach(layer_info, layers) {
  name = layer_info[0]
  target(library_type, "VkLayer_$name") {
    defines = []
    ldflags = []
    if (is_fuchsia) {
      configs -= [ "//build/config:thread_safety_annotations" ]
      ldflags += [ "-static-libstdc++" ]
      configs += [ "//build/config:rtti" ]
    } else {
      configs -= [ "//build/config/compiler:chromium_code" ]
      configs += [ "//build/config/compiler:no_chromium_code" ]
      configs -= [ "//build/config/compiler:no_rtti" ]
      configs += [ "//build/config/compiler:rtti" ]
    }
    configs -= vulkan_undefine_configs
    configs += [ ":generated_layers_config" ]
    public_configs = [ ":vulkan_layer_config" ]
    deps = [
      ":vulkan_layer_utils",
      "$vulkan_utility_libraries_dir:vulkan_layer_settings",
    ]
    if (!is_fuchsia) {
      deps += [
        # Make sure the cleanup of old layers happen before the new ones are compiled.
        ":vulkan_clean_old_validation_layer_objects",
      ]
    }
    if (layer_info[2] != "") {
      deps += layer_info[2]
    }
    sources = layer_info[1]
    if (is_win) {
      defines += [ "NOMINMAX" ]
      sources += [ "layers/VkLayer_$name.def" ]
    }
    if (defined(ozone_platform_x11) && ozone_platform_x11) {
      defines += [ "VK_USE_PLATFORM_XLIB_KHR" ]
    }
    if (is_android) {
      libs = [
        "log",
        "nativewindow",
      ]
      configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
    }
    defines += layer_info[3]
  }
}

group("vulkan_validation_layers") {
  public_deps = []
  data_deps = []
  foreach(layer_info, layers) {
    name = layer_info[0]
    if (is_fuchsia) {
      public_deps += [ ":VkLayer_$name" ]
    } else {
      data_deps += [ ":VkLayer_$name" ]
    }
  }
}
