229 lines
5.9 KiB
Plaintext
229 lines
5.9 KiB
Plaintext
# 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("//build/config/c++/c++.gni")
|
|
import("//build/config/compiler/compiler.gni")
|
|
import("//build/config/mips.gni")
|
|
import("//build/config/sysroot.gni")
|
|
import("src/Reactor/reactor.gni")
|
|
|
|
config("swiftshader_config") {
|
|
defines = []
|
|
|
|
if (is_win) {
|
|
cflags = [
|
|
"/GS", # Detects some buffer overruns
|
|
"/Zc:wchar_t",
|
|
"/EHs-c-", # Disable C++ exceptions
|
|
"/nologo",
|
|
"/Gd", # Default calling convention
|
|
# Disable MSVC warnings about std::aligned_storage being broken before VS 2017 15.8
|
|
"/D_ENABLE_EXTENDED_ALIGNED_STORAGE",
|
|
]
|
|
|
|
if (!use_custom_libcxx) {
|
|
# Disable EH usage in STL headers.
|
|
# libc++ uses a predefined macro to control whether to use exceptions, so
|
|
# defining this macro is unnecessary. Defining _HAS_EXCEPTIONS to 0 also
|
|
# breaks libc++ because it depends on MSVC headers that only provide
|
|
# certain declarations if _HAS_EXCEPTIONS is 1.
|
|
defines += [
|
|
"_HAS_EXCEPTIONS=0",
|
|
]
|
|
}
|
|
|
|
defines += [
|
|
"_CRT_SECURE_NO_DEPRECATE",
|
|
"NOMINMAX",
|
|
"_WINDLL",
|
|
"NO_SANITIZE_FUNCTION=",
|
|
]
|
|
|
|
if (!is_debug) {
|
|
defines += [ "ANGLE_DISABLE_TRACE" ]
|
|
}
|
|
|
|
# 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 = [
|
|
"-fno-exceptions",
|
|
"-fno-operator-names",
|
|
]
|
|
cflags_cc = [ "-std=c++17" ]
|
|
# On macOS for the ARM architecture, some C++17 features require version 10.14,
|
|
# while Chrome must support 10.11 (El Capitan). However, the first 'Apple Silicon'
|
|
# devices launched with macOS 11.0 (Big Sur).
|
|
# TODO(b/174843857): Remove once Chrome demands macOS 10.14.
|
|
if (is_mac && current_cpu == "arm64") {
|
|
cflags += [
|
|
"-isysroot",
|
|
rebase_path(sysroot, root_build_dir),
|
|
"-mmacosx-version-min=10.14.0",
|
|
]
|
|
}
|
|
|
|
defines += [
|
|
"__STDC_CONSTANT_MACROS",
|
|
"__STDC_LIMIT_MACROS",
|
|
"NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))",
|
|
]
|
|
|
|
if (is_debug) {
|
|
cflags += [
|
|
"-g",
|
|
"-g3",
|
|
]
|
|
} else { # Release
|
|
# All Release builds use function/data sections to make the shared libraries smaller
|
|
cflags += [
|
|
"-ffunction-sections",
|
|
"-fdata-sections",
|
|
"-fomit-frame-pointer",
|
|
"-Os",
|
|
]
|
|
|
|
defines += [
|
|
"ANGLE_DISABLE_TRACE",
|
|
"NDEBUG",
|
|
]
|
|
}
|
|
|
|
if (current_cpu == "x64") { # 64 bit version
|
|
cflags += [
|
|
"-m64",
|
|
"-fPIC",
|
|
"-march=x86-64",
|
|
"-mtune=generic",
|
|
]
|
|
} else if (current_cpu == "x86") { # 32 bit version
|
|
cflags += [
|
|
"-m32",
|
|
"-msse2",
|
|
"-mfpmath=sse",
|
|
"-march=pentium4",
|
|
"-mtune=generic",
|
|
]
|
|
} else if (target_cpu == "mipsel" && current_cpu == target_cpu) {
|
|
cflags += [
|
|
"-EL",
|
|
"-fPIC",
|
|
"-mhard-float",
|
|
"-mfp32",
|
|
"-mxgot",
|
|
]
|
|
if (mips_arch_variant == "r1") {
|
|
cflags += [
|
|
"-march=mips32",
|
|
]
|
|
} else {
|
|
cflags += [
|
|
"-march=mips32r2",
|
|
]
|
|
}
|
|
} else if (target_cpu == "mips64el" && current_cpu == target_cpu) {
|
|
cflags += [
|
|
"-EL",
|
|
"-arch=mips64r2",
|
|
"-mabi=64",
|
|
"-fPIC",
|
|
"-mxgot",
|
|
]
|
|
}
|
|
|
|
if (is_linux || is_chromeos) {
|
|
ldflags = [ "-Wl,--gc-sections" ]
|
|
|
|
if (current_cpu == "mipsel") {
|
|
ldflags += [
|
|
"-Wl,--hash-style=sysv",
|
|
]
|
|
if (mips_arch_variant == "r1") {
|
|
ldflags += [
|
|
"-mips32",
|
|
]
|
|
} else {
|
|
ldflags += [
|
|
"-mips32r2",
|
|
]
|
|
}
|
|
} else if (current_cpu == "mips64el") {
|
|
ldflags += [
|
|
"-Wl,--hash-style=sysv",
|
|
"-mips64r2",
|
|
]
|
|
} else {
|
|
ldflags += [ "-Wl,--hash-style=both" ]
|
|
}
|
|
|
|
# A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
|
|
if (use_gold && (current_cpu == "x86" || current_cpu == "mipsel")) {
|
|
ldflags += [ "-Wl,--icf=none" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
source_set("vertex_routine_fuzzer") {
|
|
sources = [
|
|
"tests/fuzzers/VertexRoutineFuzzer.cpp"
|
|
]
|
|
if (is_win) {
|
|
cflags = [
|
|
"/wd4201", # nameless struct/union
|
|
"/wd4065", # switch statement contains 'default' but no 'case' labels
|
|
"/wd5030", # attribute is not recognized
|
|
]
|
|
}
|
|
include_dirs = [
|
|
"src/",
|
|
]
|
|
deps = [
|
|
"src/OpenGL/libGLESv2:swiftshader_libGLESv2_static",
|
|
]
|
|
}
|
|
|
|
group("swiftshader") {
|
|
data_deps = [
|
|
"src/OpenGL/libGLESv2:swiftshader_libGLESv2",
|
|
"src/OpenGL/libEGL:swiftshader_libEGL",
|
|
]
|
|
}
|
|
|
|
if (build_with_chromium) {
|
|
group("swiftshader_tests") {
|
|
testonly = true
|
|
|
|
data_deps = [
|
|
"tests/GLESUnitTests:swiftshader_unittests",
|
|
"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" ]
|
|
}
|
|
}
|
|
}
|