blob: 83affe0c68462f882870a95a7df4e2f12c18879a [file] [log] [blame]
# Copyright 2016 The SwiftShader Authors. All Rights Reserved.
#
# 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
#
# http://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("src/Reactor/reactor.gni")
config("swiftshader_config") {
cflags = []
defines = []
asmflags = []
if (is_clang) {
cflags += [ "-Wno-shadow" ]
}
if (is_debug) {
if (swiftshader_startup_dialog) {
defines += [ "DEBUGGER_WAIT_DIALOG" ]
}
} else {
defines += [ "ANGLE_DISABLE_TRACE" ]
}
if (!is_win || is_clang) {
defines +=
[ "NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))" ]
} else {
defines += [ "NO_SANITIZE_FUNCTION=" ]
}
if (is_win) {
# Disable MSVC warnings about std::aligned_storage being broken before
# VS 2017 15.8
defines += [ "_ENABLE_EXTENDED_ALIGNED_STORAGE" ]
# Diable some MSVC warnings.
if (!is_clang) {
cflags += [
"/wd4065", # switch statement contains 'default' but no 'case' labels
"/wd4309", # Truncation of constant value. See PixelRoutine.cpp casts
# of signed shorts.
]
}
cflags_cc = [ "/std:c++17" ]
} else {
cflags_cc = [ "-std=c++17" ]
cflags_objcc = [ "-std=c++17" ]
if (!is_debug) {
cflags += [ "-Os" ]
}
}
if (build_with_chromium) {
if (is_clang) {
if (current_cpu == "arm64") {
import("//build/config/arm.gni")
if (arm_control_flow_integrity == "standard") {
cflags += [ "-mbranch-protection=standard" ]
asmflags += [ "-mbranch-protection=standard" ]
} else if (arm_control_flow_integrity == "pac") {
cflags += [ "-mbranch-protection=pac-ret" ]
asmflags += [ "-mbranch-protection=pac-ret" ]
} else {
assert(arm_control_flow_integrity == "none",
"Invalid branch protection option!")
}
}
}
}
}
group("swiftshader") {
data_deps = [
"src/Vulkan:icd_file",
"src/Vulkan:swiftshader_libvulkan",
]
}
if (build_with_chromium) {
group("swiftshader_tests") {
testonly = true
data_deps = [ "tests/SystemUnitTests:swiftshader_system_unittests" ]
if (supports_llvm) {
data_deps +=
[ "tests/ReactorUnitTests:swiftshader_reactor_llvm_unittests" ]
}
if (supports_subzero) {
data_deps +=
[ "tests/ReactorUnitTests:swiftshader_reactor_subzero_unittests" ]
}
}
}