blob: 1ba4132d2063fa542438fb5ada3856e570e14ab7 [file] [log] [blame]
# 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/config/dcheck_always_on.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni") # import the use_x11 variable
import("//build_overrides/angle.gni")
import("//build_overrides/build.gni")
import("//testing/test.gni")
if (is_android) {
import("//build/config/android/config.gni")
}
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
# 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_enable_d3d11 = is_win
angle_enable_gl = (ozone_platform_gbm || !is_linux ||
(use_x11 && !is_chromeos)) && !is_fuchsia
# 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 = is_win || (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)
if (angle_enable_vulkan) {
# Enable Vulkan GPU trace event capability
angle_enable_vulkan_gpu_trace_events = false
# Enable custom (cpu-side) secondary command buffers
angle_enable_custom_vulkan_cmd_buffers = true
}
# Disable overlay by default
angle_enable_overlay = false
}
if (is_win) {
import("//build/config/win/visual_studio_version.gni")
}
angle_common_configs = [
angle_root + ":better_linux_stack_traces",
angle_root + ":extra_warnings",
angle_root + ":internal_config",
]
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 (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 = []
suppressed_configs = angle_remove_configs
}
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") {
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" ]
}
}
}