# Copyright 2019 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

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

if (angle_has_build) {
  import("//build/config/dcheck_always_on.gni")
  import("//build/config/sanitizers/sanitizers.gni")
  import("//build/config/ui.gni")  # import the use_x11 variable
  import("//build_overrides/build.gni")
  import("//testing/test.gni")
  if (is_android) {
    import("//build/config/android/config.gni")
  }

  if (is_win) {
    import("//build/config/win/visual_studio_version.gni")
  }
} else {
  declare_args() {
    is_ubsan = false
    is_tsan = false
    is_asan = false
    build_with_chromium = false
    dcheck_always_on = false
    use_x11 = is_linux
    use_ozone = false
    use_fuzzing_engine = false
  }
}

if (build_with_chromium) {
  import("//ui/ozone/ozone.gni")
} else {
  declare_args() {
    ozone_platform_gbm = false
  }
}

# Subdirectory to place data files (e.g. layer JSON files).
angle_data_dir = "angledata"

declare_args() {
  if (current_cpu == "arm64" || current_cpu == "x64" ||
      current_cpu == "mips64el" || current_cpu == "s390x" ||
      current_cpu == "ppc64") {
    angle_64bit_current_cpu = true
  } else if (current_cpu == "arm" || current_cpu == "x86" ||
             current_cpu == "mipsel" || current_cpu == "s390" ||
             current_cpu == "ppc") {
    angle_64bit_current_cpu = false
  } else {
    assert(false, "Unknown current CPU: $current_cpu")
  }
}

declare_args() {
  if (!is_android) {
    ndk_api_level_at_least_26 = false
  } else {
    ndk_api_level_at_least_26 =
        (!angle_64bit_current_cpu && android32_ndk_api_level >= 26) ||
        (angle_64bit_current_cpu && android64_ndk_api_level >= 26)
  }
  angle_shared_libvulkan = false

  # There's no "is_winuwp" helper in BUILDCONFIG.gn, so we define one ourselves
  angle_is_winuwp = is_win && current_os == "winuwp"

  # Default to using "_angle" suffix on Android
  if (is_android) {
    angle_libs_suffix = "_angle"
  } else {
    angle_libs_suffix = ""
  }
}

declare_args() {
  angle_enable_d3d9 = is_win && !angle_is_winuwp
  angle_enable_d3d11 = is_win
  angle_enable_gl =
      (ozone_platform_gbm || !is_linux || (use_x11 && !is_chromeos)) &&
      !is_fuchsia && !angle_is_winuwp

  # ANGLE Vulkan backend on Android requires API level 26, i.e. Oreo, due to
  # Vulkan Validation Layers compatibility issues, see http://crrev/c/1405714.
  # Otherwise, API level 24 would have been enough.
  angle_enable_vulkan =
      angle_has_build &&
      ((is_win && !angle_is_winuwp) || (is_linux && use_x11 && !is_chromeos) ||
       (is_android && ndk_api_level_at_least_26) || is_fuchsia)
  angle_enable_null = true
  angle_enable_essl = true
  angle_enable_glsl = true
}

declare_args() {
  angle_enable_gl_null = angle_enable_gl
  angle_enable_hlsl = angle_enable_d3d9 || angle_enable_d3d11
  angle_enable_trace = false

  # Disable the layers in ubsan builds because of really slow builds.
  angle_enable_vulkan_validation_layers =
      angle_enable_vulkan && !is_ubsan && !is_tsan && !is_asan &&
      (is_debug || dcheck_always_on)

  # Disable overlay by default
  angle_enable_overlay = false
}

angle_common_configs = [
  angle_root + ":better_linux_stack_traces",
  angle_root + ":extra_warnings",
  angle_root + ":internal_config",
]

angle_remove_configs = []

if (angle_has_build) {
  angle_remove_configs += [ "//build/config/compiler:default_include_dirs" ]
}
angle_better_stack_traces =
    (is_debug || dcheck_always_on) && is_linux && !is_asan && !is_cfi

if (angle_has_build && is_clang) {
  angle_remove_configs += [ "//build/config/clang:find_bad_constructs" ]

  # Disabled to enable better stack traces.
  if (angle_better_stack_traces) {
    angle_remove_configs += [ "//build/config/gcc:symbol_visibility_hidden" ]
  }
}

set_defaults("angle_executable") {
  configs = angle_common_configs
  public_configs = []
  suppressed_configs = angle_remove_configs
}

set_defaults("angle_shared_library") {
  configs = angle_common_configs
  public_configs = []
  suppressed_configs = angle_remove_configs
}

set_defaults("angle_source_set") {
  configs = angle_common_configs
  public_configs = []
  suppressed_configs = angle_remove_configs
}

set_defaults("angle_static_library") {
  configs = angle_common_configs
  public_configs = []
  suppressed_configs = angle_remove_configs
}

set_defaults("angle_test") {
  configs = angle_common_configs
  public_configs = []
  public_deps = []
  sources = []
  data = []
  main = ""
  suppressed_configs = angle_remove_configs

  # TODO(jmadill): Migrate to standalone harness. http://anglebug.com/3162
  if (build_with_chromium) {
    suppressed_configs -= [ "//build/config/compiler:default_include_dirs" ]
  }
}

template("angle_executable") {
  executable(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "configs",
                             "suppressed_configs",
                             "visibility",
                           ])

    # Needed because visibility is global.
    forward_variables_from(invoker, [ "visibility" ])

    configs += invoker.configs
    configs -= invoker.suppressed_configs
  }
}

template("angle_shared_library") {
  shared_library(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "configs",
                             "suppressed_configs",
                             "visibility",
                           ])

    # Needed because visibility is global.
    forward_variables_from(invoker, [ "visibility" ])

    configs += invoker.configs
    configs -= invoker.suppressed_configs

    public_configs += [ angle_root + ":shared_library_public_config" ]

    if (is_android) {
      configs += [ angle_root + ":build_id_config" ]
      configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
    }
  }
}

template("angle_source_set") {
  source_set(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "configs",
                             "suppressed_configs",
                             "visibility",
                           ])

    # Needed because visibility is global.
    forward_variables_from(invoker, [ "visibility" ])

    configs += invoker.configs
    configs -= invoker.suppressed_configs
  }
}

template("angle_static_library") {
  static_library(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "configs",
                             "suppressed_configs",
                             "visibility",
                           ])

    # Needed because visibility is global.
    forward_variables_from(invoker, [ "visibility" ])

    configs += invoker.configs
    configs -= invoker.suppressed_configs
  }
}

template("angle_test") {
  _googletest_deps = [
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

  # TODO(jmadill): Migrate to standalone harness. http://anglebug.com/3162
  if (build_with_chromium) {
    _googletest_deps += [ "//base/test:test_support" ]
  }

  test(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "configs",
                             "suppressed_configs",
                             "visibility",
                           ])

    # Needed because visibility is global.
    forward_variables_from(invoker, [ "visibility" ])

    configs += invoker.configs
    configs -= invoker.suppressed_configs
    configs -= [ angle_root + ":extra_warnings" ]

    if (is_linux && !is_component_build) {
      # Set rpath to find shared libs in a non-component build.
      configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
    }

    if (is_android) {
      configs += [ angle_root + ":build_id_config" ]
      configs -= [ "//build/config/android:hide_all_but_jni" ]
    }

    deps += _googletest_deps + [
              "$angle_root:angle_common",
              "$angle_root:includes",
            ]

    if (build_with_chromium) {
      sources += [ "//gpu/${invoker.main}.cc" ]
    } else {
      sources += [ "${invoker.main}.cpp" ]
    }
  }
}
