# Copyright (C) 2018-2019 The ANGLE Project Authors.
# Copyright (C) 2019 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")

# Fuchsia has non-upstream changes to the vulkan layers, so we don't want
# to build it from upstream sources.
assert(!is_fuchsia)

vulkan_undefine_configs = []
if (is_win) {
  vulkan_undefine_configs += [
    "//build/config/win:nominmax",
    "//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 = "build-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.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("vulkan_internal_config") {
  defines = [
    "VULKAN_NON_CMAKE_BUILD",
    "API_NAME=\"Vulkan\"",
  ]
  if (is_clang || !is_win) {
    cflags = [ "-Wno-unused-function" ]
  }
  if (is_linux) {
    defines += [
      "SYSCONFDIR=\"/etc\"",
      "FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
      "FALLBACK_DATA_DIRS=\"/usr/local/share:/usr/share\"",
    ]
  }
}

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

config("vulkan_layer_config") {
  include_dirs = [
    "layers",
    "layers/generated",
  ]
}

core_validation_sources = [
  # This file is manually included in the layer
  # "layers/generated/vk_safe_struct.cpp",
  "layers/buffer_validation.cpp",
  "layers/buffer_validation.h",
  "layers/core_validation.cpp",
  "layers/core_validation.h",
  "layers/convert_to_renderpass2.cpp",
  "layers/descriptor_sets.cpp",
  "layers/descriptor_sets.h",
  "layers/drawdispatch.cpp",
  "layers/gpu_validation.cpp",
  "layers/gpu_validation.h",
  "layers/shader_validation.cpp",
  "layers/shader_validation.h",
  "layers/xxhash.c",
  "layers/xxhash.h",
]

object_lifetimes_sources = [
  "layers/generated/object_tracker.cpp",
  "layers/generated/object_tracker.h",
  "layers/object_tracker_utils.cpp",
]

stateless_validation_sources = [
  "layers/generated/parameter_validation.cpp",
  "layers/generated/parameter_validation.h",
  "layers/parameter_validation_utils.cpp",
]

thread_safety_sources = [
  "layers/generated/thread_safety.cpp",
  "layers/generated/thread_safety.h",
]

unique_objects_sources = []

chassis_sources = [
  "layers/core_validation.h",
  "layers/generated/vk_safe_struct.h",
  "layers/generated/thread_safety.h",
  "layers/generated/chassis.cpp",
  "layers/generated/chassis.h",
  "layers/generated/layer_chassis_dispatch.cpp",
  "layers/generated/layer_chassis_dispatch.h",
  "$vulkan_headers_dir/include/vulkan/vk_layer.h",
  "$vulkan_headers_dir/include/vulkan/vulkan.h",
]

layers = [
  [
    "core_validation",
    core_validation_sources + chassis_sources + thread_safety_sources,
    [ ":vulkan_core_validation_glslang" ],
    [ "BUILD_CORE_VALIDATION" ],
  ],
  [
    "object_lifetimes",
    object_lifetimes_sources + chassis_sources + thread_safety_sources + core_validation_sources,
    [ ":vulkan_core_validation_glslang" ],
    [ "BUILD_OBJECT_TRACKER" ],
  ],
  [
    "stateless_validation",
    stateless_validation_sources + chassis_sources + core_validation_sources,
    [ ":vulkan_core_validation_glslang" ],
    [ "BUILD_PARAMETER_VALIDATION" ],
  ],
  [
    "thread_safety",
    thread_safety_sources + chassis_sources + core_validation_sources,
    [ ":vulkan_core_validation_glslang" ],
    [ "BUILD_THREAD_SAFETY" ],
  ],
  [
    "unique_objects",
    unique_objects_sources + chassis_sources + core_validation_sources,
    [ ":vulkan_core_validation_glslang" ],
    [ "LAYER_CHASSIS_CAN_WRAP_HANDLES" ],
  ],
  [
    "khronos_validation",
    core_validation_sources + object_lifetimes_sources +
        stateless_validation_sources + thread_safety_sources +
        unique_objects_sources + chassis_sources,
    [ ":vulkan_core_validation_glslang" ],
    [
      "BUILD_KHRONOS_VALIDATION",
      "BUILD_CORE_VALIDATION",
      "BUILD_OBJECT_TRACKER",
      "BUILD_THREAD_SAFETY",
      "BUILD_PARAMETER_VALIDATION",
      "LAYER_CHASSIS_CAN_WRAP_HANDLES",
    ],
  ],
]

if (!is_android) {
  action("vulkan_gen_json_files") {
    script = "build-gn/generate_vulkan_layers_json.py"
    public_deps = [
      ":vulkan_clean_old_validation_layer_objects",
    ]
    json_names = [
      "VkLayer_core_validation.json",
      "VkLayer_object_lifetimes.json",
      "VkLayer_stateless_validation.json",
      "VkLayer_standard_validation.json",
      "VkLayer_thread_safety.json",
      "VkLayer_unique_objects.json",
      "VkLayer_khronos_validation.json",
    ]
    sources = [
      "$vulkan_headers_dir/include/vulkan/vulkan_core.h",
      "$vulkan_headers_dir/include/vulkan/vk_layer.h",
    ]
    outputs = []
    foreach(json_name, json_names) {
      sources += [ "layers/json/$json_name.in" ]
      outputs += [ "$vulkan_data_dir/$json_name" ]
    }
    args = [
             rebase_path("layers/json", root_build_dir),
             rebase_path(vulkan_data_dir, root_build_dir),
           ] + rebase_path(sources, root_build_dir)

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

source_set("vulkan_layer_utils") {
  include_dirs = [
    "layers",
    "layers/generated",
  ]
  sources = [
    "layers/vk_format_utils.cpp",
    "layers/vk_format_utils.h",
    "layers/vk_layer_config.cpp",
    "layers/vk_layer_config.h",
    "layers/vk_layer_extension_utils.cpp",
    "layers/vk_layer_extension_utils.h",
    "layers/vk_layer_utils.cpp",
    "layers/vk_layer_utils.h",
    "$vulkan_headers_dir/include/vulkan/vk_layer.h",
    "$vulkan_headers_dir/include/vulkan/vulkan.h",
    "$vulkan_headers_dir/include/vulkan/vk_sdk_platform.h",
  ]
  public_configs = [
    "$vulkan_headers_dir:vulkan_headers_config",
    ":vulkan_internal_config",
  ]
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]
  public_deps = []
  configs -= vulkan_undefine_configs
}

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_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" ]
  }
}

foreach(layer_info, layers) {
  name = layer_info[0]
  shared_library("VkLayer_$name") {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs -= vulkan_undefine_configs
    public_configs = [ ":vulkan_layer_config" ]
    deps = [
      ":vulkan_layer_utils",
    ]
    if (layer_info[2] != "") {
      deps += layer_info[2]
    }
    sources = layer_info[1]
    if (is_win) {
      sources += [ "layers/VkLayer_$name.def" ]
    }
    if (is_linux || is_android) {
      ldflags = [ "-Wl,-Bsymbolic,--exclude-libs,ALL" ]
    }
    if (is_android) {
      libs = [
        "log",
        "nativewindow",
      ]
      configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
    }
    defines = layer_info[3]
  }
}

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