2016-07-21 19:25:45 +00:00
|
|
|
# Copyright 2016 Google Inc.
|
|
|
|
#
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
declare_args() {
|
2017-03-28 19:45:41 +00:00
|
|
|
extra_asmflags = []
|
2016-10-04 21:09:13 +00:00
|
|
|
extra_cflags = []
|
|
|
|
extra_cflags_c = []
|
|
|
|
extra_cflags_cc = []
|
|
|
|
extra_ldflags = []
|
2016-08-26 20:43:19 +00:00
|
|
|
|
2016-12-09 00:00:40 +00:00
|
|
|
malloc = ""
|
2016-07-21 19:25:45 +00:00
|
|
|
}
|
2016-10-24 20:49:15 +00:00
|
|
|
|
2016-11-03 18:06:31 +00:00
|
|
|
if (is_ios) {
|
2017-03-14 20:22:32 +00:00
|
|
|
if (is_tvos) {
|
|
|
|
sdk = "appletvos"
|
|
|
|
if (target_cpu == "x86" || target_cpu == "x64") {
|
|
|
|
sdk = "appletvsimulator"
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
sdk = "iphoneos"
|
|
|
|
if (target_cpu == "x86" || target_cpu == "x64") {
|
|
|
|
sdk = "iphonesimulator"
|
|
|
|
}
|
2017-03-13 16:25:33 +00:00
|
|
|
}
|
|
|
|
ios_sysroot = exec_script("find_ios_sysroot.py", [ sdk ], "trim string")
|
2016-11-03 18:06:31 +00:00
|
|
|
}
|
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
config("default") {
|
|
|
|
asmflags = []
|
|
|
|
cflags = []
|
|
|
|
cflags_c = []
|
|
|
|
cflags_cc = []
|
|
|
|
defines = []
|
|
|
|
ldflags = []
|
2016-12-09 00:00:40 +00:00
|
|
|
libs = []
|
2016-09-16 21:44:18 +00:00
|
|
|
|
|
|
|
if (is_win) {
|
|
|
|
cflags += [
|
|
|
|
"/FS", # Preserve previous PDB behavior.
|
2016-09-16 20:29:57 +00:00
|
|
|
"/bigobj", # Some of our files are bigger than the regular limits.
|
2016-10-13 03:58:06 +00:00
|
|
|
"/WX", # Treat warnings as errors.
|
2017-01-03 22:09:59 +00:00
|
|
|
"/utf-8", # Set Source and Executable character sets to UTF-8.
|
2016-09-16 20:29:57 +00:00
|
|
|
]
|
2017-07-31 20:35:17 +00:00
|
|
|
if (is_clang) {
|
|
|
|
cflags += [ "-fms-compatibility-version=19" ] # 2015
|
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
defines += [
|
2016-10-13 03:58:06 +00:00
|
|
|
"_CRT_SECURE_NO_WARNINGS", # Disables warnings about sscanf().
|
|
|
|
"_HAS_EXCEPTIONS=0", # Disables exceptions in MSVC STL.
|
2016-09-16 21:44:18 +00:00
|
|
|
"WIN32_LEAN_AND_MEAN",
|
|
|
|
"NOMINMAX",
|
2016-09-16 20:29:57 +00:00
|
|
|
]
|
2017-07-31 19:46:47 +00:00
|
|
|
|
|
|
|
_include_dirs = [
|
2017-03-20 20:53:05 +00:00
|
|
|
#2017
|
|
|
|
"$windk/VC/Tools/MSVC/14.10.25017/include",
|
|
|
|
|
|
|
|
#2015
|
2016-10-12 19:52:44 +00:00
|
|
|
"$windk/VC/include",
|
2016-10-12 20:25:27 +00:00
|
|
|
|
2016-10-12 19:52:44 +00:00
|
|
|
# For local builds.
|
2017-03-20 20:53:05 +00:00
|
|
|
# 2017
|
|
|
|
"$windk/../../../Windows Kits/10/Include/10.0.14393.0/shared",
|
|
|
|
"$windk/../../../Windows Kits/10/Include/10.0.14393.0/ucrt",
|
|
|
|
"$windk/../../../Windows Kits/10/Include/10.0.14393.0/um",
|
|
|
|
"$windk/../../../Windows Kits/10/Include/10.0.14393.0/winrt",
|
|
|
|
|
|
|
|
# 2015
|
2016-10-11 20:26:57 +00:00
|
|
|
"$windk/../Windows Kits/8.1/Include/shared",
|
2017-03-20 20:53:05 +00:00
|
|
|
"$windk/../Windows Kits/10/Include/10.0.10150.0/ucrt",
|
2016-10-11 21:08:53 +00:00
|
|
|
"$windk/../Windows Kits/8.1/Include/um",
|
2017-01-10 18:31:33 +00:00
|
|
|
"$windk/../Windows Kits/8.1/Include/winrt",
|
2016-10-12 20:25:27 +00:00
|
|
|
|
2016-10-12 19:52:44 +00:00
|
|
|
# For builds using win_toolchain asset.
|
2017-01-10 15:38:23 +00:00
|
|
|
"$windk/win_sdk/Include/10.0.14393.0/shared",
|
|
|
|
"$windk/win_sdk/Include/10.0.14393.0/ucrt",
|
|
|
|
"$windk/win_sdk/Include/10.0.14393.0/um",
|
2017-01-10 18:31:33 +00:00
|
|
|
"$windk/win_sdk/Include/10.0.14393.0/winrt",
|
2016-10-11 20:26:57 +00:00
|
|
|
]
|
2017-07-31 19:46:47 +00:00
|
|
|
if (is_clang) {
|
|
|
|
foreach(dir, _include_dirs) {
|
|
|
|
cflags += [
|
|
|
|
"-imsvc",
|
|
|
|
dir,
|
|
|
|
]
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
include_dirs = _include_dirs
|
|
|
|
}
|
|
|
|
|
2016-10-11 21:08:53 +00:00
|
|
|
lib_dirs = [
|
2016-10-12 19:52:44 +00:00
|
|
|
# For local builds.
|
2017-03-20 20:53:05 +00:00
|
|
|
# 2017
|
|
|
|
"$windk/../../../Windows Kits/10/Lib/10.0.14393.0/ucrt/$target_cpu",
|
|
|
|
"$windk/../../../Windows Kits/10/Lib/10.0.14393.0/um/$target_cpu",
|
|
|
|
|
|
|
|
#2015
|
2016-10-13 02:42:55 +00:00
|
|
|
"$windk/../Windows Kits/10/Lib/10.0.10150.0/ucrt/$target_cpu",
|
|
|
|
"$windk/../Windows Kits/8.1/Lib/winv6.3/um/$target_cpu",
|
2016-10-12 20:25:27 +00:00
|
|
|
|
2016-10-12 19:52:44 +00:00
|
|
|
# For builds using win_toolchain asset.
|
2017-01-10 15:38:23 +00:00
|
|
|
"$windk/win_sdk/Lib/10.0.14393.0/ucrt/$target_cpu",
|
|
|
|
"$windk/win_sdk/Lib/10.0.14393.0/um/$target_cpu",
|
2016-10-11 21:08:53 +00:00
|
|
|
]
|
2017-03-20 20:53:05 +00:00
|
|
|
|
|
|
|
#2017
|
|
|
|
lib_dirs += [ "$windk/VC/Tools/MSVC/14.10.25017/lib/$target_cpu" ]
|
|
|
|
|
|
|
|
#2015
|
2016-10-13 02:42:55 +00:00
|
|
|
if (target_cpu == "x86") {
|
|
|
|
lib_dirs += [ "$windk/VC/lib" ]
|
|
|
|
} else {
|
|
|
|
lib_dirs += [ "$windk/VC/lib/amd64" ]
|
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
} else {
|
|
|
|
cflags += [
|
2016-09-16 20:29:57 +00:00
|
|
|
"-fstrict-aliasing",
|
|
|
|
"-fPIC",
|
|
|
|
"-Werror",
|
2016-08-25 21:50:44 +00:00
|
|
|
]
|
2017-04-07 03:04:42 +00:00
|
|
|
cflags_cc += [ "-std=c++11" ]
|
2017-03-27 00:11:48 +00:00
|
|
|
|
|
|
|
# The main idea is to slim the exported API, but these flags also improve link time on Mac.
|
|
|
|
# These would make stack traces worse on Linux, so we don't just set them willy-nilly.
|
2017-03-28 18:16:22 +00:00
|
|
|
if (is_component_build || is_ios || is_mac) {
|
2017-03-27 00:11:48 +00:00
|
|
|
cflags += [ "-fvisibility=hidden" ]
|
|
|
|
cflags_cc += [ "-fvisibility-inlines-hidden" ]
|
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (current_cpu == "arm") {
|
|
|
|
cflags += [
|
|
|
|
"-march=armv7-a",
|
|
|
|
"-mfpu=neon",
|
|
|
|
"-mthumb",
|
|
|
|
]
|
|
|
|
} else if (current_cpu == "mipsel") {
|
2017-06-27 15:55:05 +00:00
|
|
|
cflags += [ "-march=mips32r2" ]
|
|
|
|
} else if (current_cpu == "mips64el") {
|
|
|
|
asmflags += [ "-integrated-as" ]
|
|
|
|
cflags += [ "-integrated-as" ]
|
2016-10-12 23:36:09 +00:00
|
|
|
} else if (current_cpu == "x86" && !is_win) {
|
2016-09-16 21:44:18 +00:00
|
|
|
asmflags += [ "-m32" ]
|
|
|
|
cflags += [
|
|
|
|
"-m32",
|
|
|
|
"-msse2",
|
|
|
|
"-mfpmath=sse",
|
|
|
|
]
|
|
|
|
ldflags += [ "-m32" ]
|
|
|
|
}
|
|
|
|
|
2016-12-09 00:00:40 +00:00
|
|
|
if (malloc != "" && !is_win) {
|
|
|
|
cflags += [
|
|
|
|
"-fno-builtin-malloc",
|
|
|
|
"-fno-builtin-calloc",
|
|
|
|
"-fno-builtin-realloc",
|
|
|
|
"-fno-builtin-free",
|
|
|
|
]
|
|
|
|
libs += [ malloc ]
|
|
|
|
}
|
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
if (is_android) {
|
2017-06-27 15:55:05 +00:00
|
|
|
asmflags += [ "--target=$ndk_target" ]
|
2016-09-16 21:44:18 +00:00
|
|
|
cflags += [
|
2017-06-27 15:55:05 +00:00
|
|
|
"--sysroot=$ndk/sysroot",
|
|
|
|
"-isystem$ndk/sysroot/usr/include/$ndk_target",
|
|
|
|
"-D__ANDROID_API__=$ndk_api",
|
2016-09-16 21:44:18 +00:00
|
|
|
"--target=$ndk_target",
|
|
|
|
]
|
|
|
|
cflags_cc += [
|
|
|
|
"-isystem$ndk/sources/android/support/include",
|
2016-12-14 18:17:53 +00:00
|
|
|
"-isystem$ndk/sources/cxx-stl/gnu-libstdc++/4.9/include",
|
|
|
|
"-isystem$ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/$ndk_stdlib/include",
|
2016-09-16 21:44:18 +00:00
|
|
|
]
|
|
|
|
ldflags += [
|
|
|
|
"--sysroot=$ndk/platforms/$ndk_platform",
|
|
|
|
"--target=$ndk_target",
|
|
|
|
"-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin",
|
|
|
|
]
|
|
|
|
lib_dirs = [
|
2016-12-14 18:17:53 +00:00
|
|
|
"$ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/$ndk_stdlib",
|
2016-09-16 21:44:18 +00:00
|
|
|
"$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/lib/gcc/$ndk_target/4.9.x",
|
|
|
|
]
|
|
|
|
|
Update to Android NDK r13.
The libc++ include paths have changed very slightly. I've left GN compatible with both older r12 NDKs and the new r13 to smooth the transition.
The libc++ in r13 depends on long-double math.h functions (cosl, atanl, etc.) only available in Android API v21 (Lollipop) and up. That's what the 64-bit bots were already on, so we just pull the 32-bit bots up to the same target. Conveniently, the oldest bots we have (N7 and N10) are on Lollipop.
The r13 MIPS64 sysroots are a little weird... /usr/include and /usr/lib64 but no /usr/lib. That'd be fine---we only want 64-bit builds---but Clang searches for /usr/lib64 via its path to /usr/lib, and without at least an empty /usr/lib, it can't find /usr/lib64. So you'll see a special mips64el section in the GN config where we do this all manually (other platforms pick this all up correctly from --sysroot). I've chosen to do this rather than fix it up in the asset create.py scripts so that we stay compatible with vanilla NDKs, which is convenient for developers.
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Mac-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Release-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_Vulkan-Trybot,Build-Ubuntu-Clang-arm64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Release-GN_Android-Trybot
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3180
Change-Id: I6f3b5d9411ded0ee49c1099490f41fa86a8736f8
Reviewed-on: https://skia-review.googlesource.com/3180
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 15:21:36 +00:00
|
|
|
if (current_cpu == "mips64el") {
|
2017-06-27 15:55:05 +00:00
|
|
|
# The r15b NDK deployed on our bots fails to find /usr/lib64 in the
|
|
|
|
# MIPS64 sysroots, so we must point Clang at /usr/lib64 manually.
|
Update to Android NDK r13.
The libc++ include paths have changed very slightly. I've left GN compatible with both older r12 NDKs and the new r13 to smooth the transition.
The libc++ in r13 depends on long-double math.h functions (cosl, atanl, etc.) only available in Android API v21 (Lollipop) and up. That's what the 64-bit bots were already on, so we just pull the 32-bit bots up to the same target. Conveniently, the oldest bots we have (N7 and N10) are on Lollipop.
The r13 MIPS64 sysroots are a little weird... /usr/include and /usr/lib64 but no /usr/lib. That'd be fine---we only want 64-bit builds---but Clang searches for /usr/lib64 via its path to /usr/lib, and without at least an empty /usr/lib, it can't find /usr/lib64. So you'll see a special mips64el section in the GN config where we do this all manually (other platforms pick this all up correctly from --sysroot). I've chosen to do this rather than fix it up in the asset create.py scripts so that we stay compatible with vanilla NDKs, which is convenient for developers.
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Mac-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Release-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_Vulkan-Trybot,Build-Ubuntu-Clang-arm64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Release-GN_Android-Trybot
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3180
Change-Id: I6f3b5d9411ded0ee49c1099490f41fa86a8736f8
Reviewed-on: https://skia-review.googlesource.com/3180
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 15:21:36 +00:00
|
|
|
lib_dirs += [ "$ndk/platforms/$ndk_platform/usr/lib64" ]
|
2016-12-08 15:29:27 +00:00
|
|
|
ldflags += [ "-B$ndk/platforms/$ndk_platform/usr/lib64" ]
|
Update to Android NDK r13.
The libc++ include paths have changed very slightly. I've left GN compatible with both older r12 NDKs and the new r13 to smooth the transition.
The libc++ in r13 depends on long-double math.h functions (cosl, atanl, etc.) only available in Android API v21 (Lollipop) and up. That's what the 64-bit bots were already on, so we just pull the 32-bit bots up to the same target. Conveniently, the oldest bots we have (N7 and N10) are on Lollipop.
The r13 MIPS64 sysroots are a little weird... /usr/include and /usr/lib64 but no /usr/lib. That'd be fine---we only want 64-bit builds---but Clang searches for /usr/lib64 via its path to /usr/lib, and without at least an empty /usr/lib, it can't find /usr/lib64. So you'll see a special mips64el section in the GN config where we do this all manually (other platforms pick this all up correctly from --sysroot). I've chosen to do this rather than fix it up in the asset create.py scripts so that we stay compatible with vanilla NDKs, which is convenient for developers.
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Mac-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Release-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_Vulkan-Trybot,Build-Ubuntu-Clang-arm64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Release-GN_Android-Trybot
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3180
Change-Id: I6f3b5d9411ded0ee49c1099490f41fa86a8736f8
Reviewed-on: https://skia-review.googlesource.com/3180
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 15:21:36 +00:00
|
|
|
}
|
|
|
|
|
2016-12-14 18:17:53 +00:00
|
|
|
libs += [ "gnustl_static" ]
|
2016-09-16 21:44:18 +00:00
|
|
|
}
|
|
|
|
|
2016-11-03 18:06:31 +00:00
|
|
|
if (is_ios) {
|
2017-01-23 16:58:53 +00:00
|
|
|
_target = target_cpu
|
|
|
|
if (target_cpu == "arm") {
|
|
|
|
_target = "armv7"
|
2017-03-13 16:25:33 +00:00
|
|
|
} else if (target_cpu == "x86") {
|
|
|
|
_target = "i386"
|
|
|
|
} else if (target_cpu == "x64") {
|
|
|
|
_target = "x86_64"
|
2017-01-23 16:58:53 +00:00
|
|
|
}
|
2017-02-17 20:36:01 +00:00
|
|
|
asmflags += [
|
|
|
|
"-isysroot",
|
|
|
|
ios_sysroot,
|
|
|
|
"-arch",
|
|
|
|
_target,
|
|
|
|
]
|
2016-11-03 18:06:31 +00:00
|
|
|
cflags += [
|
2016-11-07 20:38:48 +00:00
|
|
|
"-isysroot",
|
|
|
|
ios_sysroot,
|
|
|
|
"-arch",
|
2017-01-23 16:58:53 +00:00
|
|
|
_target,
|
2016-11-03 18:06:31 +00:00
|
|
|
]
|
|
|
|
cflags_cc += [ "-stdlib=libc++" ]
|
|
|
|
ldflags += [
|
2016-11-07 20:38:48 +00:00
|
|
|
"-isysroot",
|
|
|
|
ios_sysroot,
|
|
|
|
"-arch",
|
2017-01-23 16:58:53 +00:00
|
|
|
_target,
|
2016-11-03 18:06:31 +00:00
|
|
|
"-stdlib=libc++",
|
|
|
|
]
|
2016-12-09 00:00:40 +00:00
|
|
|
libs += [ "objc" ]
|
2016-11-03 18:06:31 +00:00
|
|
|
}
|
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
if (is_linux) {
|
2016-12-09 00:00:40 +00:00
|
|
|
libs += [ "pthread" ]
|
2016-09-16 21:44:18 +00:00
|
|
|
}
|
2016-08-25 21:50:44 +00:00
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
if (sanitize != "") {
|
|
|
|
# You can either pass the sanitizers directly, e.g. "address,undefined",
|
|
|
|
# or pass one of the couple common aliases used by the bots.
|
|
|
|
sanitizers = sanitize
|
|
|
|
if (sanitize == "ASAN") {
|
|
|
|
sanitizers = "address,bool,function,integer-divide-by-zero,nonnull-attribute,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,vla-bound,vptr"
|
|
|
|
} else if (sanitize == "TSAN") {
|
|
|
|
sanitizers = "thread"
|
|
|
|
} else if (sanitize == "MSAN") {
|
|
|
|
sanitizers = "memory"
|
2016-09-08 15:39:34 +00:00
|
|
|
}
|
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
cflags += [
|
|
|
|
"-fsanitize=$sanitizers",
|
|
|
|
"-fno-sanitize-recover=$sanitizers",
|
|
|
|
"-fsanitize-blacklist=" + rebase_path("../tools/xsan.blacklist"),
|
|
|
|
]
|
|
|
|
ldflags += [ "-fsanitize=$sanitizers" ]
|
|
|
|
if (sanitizers == "memory") {
|
|
|
|
cflags += [ "-fsanitize-memory-track-origins" ]
|
|
|
|
cflags_cc += [ "-stdlib=libc++" ]
|
|
|
|
ldflags += [ "-stdlib=libc++" ]
|
2016-09-16 20:29:57 +00:00
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-10-26 15:41:47 +00:00
|
|
|
config("no_exceptions") {
|
2017-08-16 13:20:20 +00:00
|
|
|
# Exceptions are disabled by default on Windows. (Use /EHsc to enable them.)
|
2016-10-26 15:41:47 +00:00
|
|
|
if (!is_win) {
|
|
|
|
cflags_cc = [ "-fno-exceptions" ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-10-13 03:58:06 +00:00
|
|
|
config("warnings") {
|
|
|
|
cflags = []
|
|
|
|
cflags_cc = []
|
2016-10-20 14:17:47 +00:00
|
|
|
cflags_objc = []
|
2017-07-12 20:21:09 +00:00
|
|
|
cflags_objcc = []
|
2016-10-13 03:58:06 +00:00
|
|
|
if (is_win) {
|
|
|
|
cflags += [
|
|
|
|
"/W3", # Turn on lots of warnings.
|
|
|
|
|
|
|
|
# Disable a bunch of warnings:
|
|
|
|
"/wd4244", # conversion from 'float' to 'int', possible loss of data
|
|
|
|
"/wd4267", # conversion from 'size_t' to 'int', possible loss of data
|
|
|
|
"/wd4800", # forcing value to bool 'true' or 'false' (performance warning)
|
|
|
|
|
|
|
|
# Probably only triggers when /EHsc is enabled.
|
|
|
|
"/wd4291", # no matching operator delete found;
|
|
|
|
# memory will not be freed if initialization throws an exception
|
|
|
|
]
|
|
|
|
} else {
|
|
|
|
cflags += [
|
|
|
|
"-Wall",
|
|
|
|
"-Wextra",
|
|
|
|
"-Winit-self",
|
|
|
|
"-Wpointer-arith",
|
|
|
|
"-Wsign-compare",
|
|
|
|
"-Wvla",
|
|
|
|
|
|
|
|
"-Wno-deprecated-declarations",
|
2016-12-13 17:46:05 +00:00
|
|
|
"-Wno-maybe-uninitialized",
|
2016-10-13 03:58:06 +00:00
|
|
|
]
|
|
|
|
cflags_cc += [ "-Wnon-virtual-dtor" ]
|
|
|
|
|
|
|
|
if (is_clang) {
|
|
|
|
cflags += [
|
|
|
|
"-Weverything",
|
|
|
|
"-Wno-unknown-warning-option", # Let older Clangs ignore newer Clangs' warnings.
|
|
|
|
]
|
|
|
|
|
2017-01-23 16:58:53 +00:00
|
|
|
if ((target_cpu == "x86" && is_android) ||
|
|
|
|
(target_cpu == "arm" && is_ios)) {
|
|
|
|
# Clang seems to think new/malloc will only be 4-byte aligned on x86 Android and 32-bit iOS.
|
2016-10-13 03:58:06 +00:00
|
|
|
# We're pretty sure it's actually 8-byte alignment.
|
|
|
|
cflags += [ "-Wno-over-aligned" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
cflags += [
|
|
|
|
"-Wno-cast-align",
|
|
|
|
"-Wno-conditional-uninitialized",
|
|
|
|
"-Wno-conversion",
|
|
|
|
"-Wno-disabled-macro-expansion",
|
|
|
|
"-Wno-documentation",
|
|
|
|
"-Wno-documentation-unknown-command",
|
|
|
|
"-Wno-double-promotion",
|
|
|
|
"-Wno-exit-time-destructors", # TODO: OK outside libskia
|
|
|
|
"-Wno-float-conversion",
|
|
|
|
"-Wno-float-equal",
|
|
|
|
"-Wno-format-nonliteral",
|
|
|
|
"-Wno-global-constructors", # TODO: OK outside libskia
|
|
|
|
"-Wno-gnu-zero-variadic-macro-arguments",
|
|
|
|
"-Wno-missing-prototypes",
|
|
|
|
"-Wno-missing-variable-declarations",
|
|
|
|
"-Wno-pedantic",
|
|
|
|
"-Wno-reserved-id-macro",
|
|
|
|
"-Wno-shadow",
|
|
|
|
"-Wno-shift-sign-overflow",
|
|
|
|
"-Wno-sign-conversion",
|
2017-01-04 22:13:44 +00:00
|
|
|
"-Wno-signed-enum-bitfield",
|
2016-10-13 03:58:06 +00:00
|
|
|
"-Wno-switch-enum",
|
|
|
|
"-Wno-undef",
|
|
|
|
"-Wno-unreachable-code",
|
|
|
|
"-Wno-unreachable-code-break",
|
|
|
|
"-Wno-unreachable-code-return",
|
|
|
|
"-Wno-unused-macros",
|
|
|
|
"-Wno-unused-member-function",
|
|
|
|
]
|
|
|
|
cflags_cc += [
|
|
|
|
"-Wno-abstract-vbase-init",
|
|
|
|
"-Wno-weak-vtables",
|
|
|
|
]
|
|
|
|
|
|
|
|
# We are unlikely to want to fix these.
|
|
|
|
cflags += [
|
|
|
|
"-Wno-covered-switch-default",
|
|
|
|
"-Wno-deprecated",
|
|
|
|
"-Wno-implicit-fallthrough",
|
|
|
|
"-Wno-missing-noreturn",
|
|
|
|
"-Wno-old-style-cast",
|
|
|
|
"-Wno-padded",
|
|
|
|
]
|
|
|
|
cflags_cc += [
|
|
|
|
"-Wno-c++98-compat",
|
|
|
|
"-Wno-c++98-compat-pedantic",
|
|
|
|
"-Wno-undefined-func-template",
|
|
|
|
]
|
2016-10-20 14:17:47 +00:00
|
|
|
cflags_objc += [
|
|
|
|
"-Wno-direct-ivar-access",
|
|
|
|
"-Wno-objc-interface-ivars",
|
|
|
|
]
|
2017-07-12 20:21:09 +00:00
|
|
|
cflags_objcc += [
|
|
|
|
"-Wno-direct-ivar-access",
|
|
|
|
"-Wno-objcc-interface-ivars",
|
|
|
|
]
|
2016-10-13 03:58:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-11-16 17:13:44 +00:00
|
|
|
config("warnings_except_public_headers") {
|
|
|
|
if (!is_win) {
|
|
|
|
cflags = [ "-Wno-unused-parameter" ]
|
|
|
|
}
|
|
|
|
}
|
2016-10-13 03:58:06 +00:00
|
|
|
|
2016-10-04 21:09:13 +00:00
|
|
|
config("extra_flags") {
|
2017-03-28 19:45:41 +00:00
|
|
|
asmflags = extra_asmflags
|
2016-10-04 21:09:13 +00:00
|
|
|
cflags = extra_cflags
|
|
|
|
cflags_c = extra_cflags_c
|
|
|
|
cflags_cc = extra_cflags_cc
|
|
|
|
ldflags = extra_ldflags
|
|
|
|
}
|
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
config("debug_symbols") {
|
|
|
|
# It's annoying to wait for full debug symbols to push over
|
|
|
|
# to Android devices. -gline-tables-only is a lot slimmer.
|
|
|
|
if (is_android) {
|
2017-08-30 14:23:01 +00:00
|
|
|
cflags = [
|
|
|
|
"-gline-tables-only",
|
|
|
|
"-funwind-tables", # Helps make in-process backtraces fuller.
|
|
|
|
]
|
2016-10-12 20:25:27 +00:00
|
|
|
} else if (is_win) {
|
|
|
|
cflags = [ "/Zi" ]
|
2016-10-13 17:19:25 +00:00
|
|
|
ldflags = [ "/DEBUG" ]
|
2016-10-12 20:25:27 +00:00
|
|
|
} else {
|
2016-09-16 21:44:18 +00:00
|
|
|
cflags = [ "-g" ]
|
|
|
|
}
|
|
|
|
}
|
2016-09-16 20:29:57 +00:00
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
config("no_rtti") {
|
|
|
|
if (sanitize != "ASAN") { # -fsanitize=vptr requires RTTI
|
2016-10-12 20:25:27 +00:00
|
|
|
if (is_win) {
|
|
|
|
cflags_cc = [ "/GR-" ]
|
|
|
|
} else {
|
2016-09-16 21:44:18 +00:00
|
|
|
cflags_cc = [ "-fno-rtti" ]
|
2016-09-08 15:39:34 +00:00
|
|
|
}
|
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
}
|
2016-07-21 19:25:45 +00:00
|
|
|
|
2016-09-16 21:44:18 +00:00
|
|
|
config("release") {
|
2016-10-12 20:25:27 +00:00
|
|
|
if (is_win) {
|
2016-10-20 17:34:18 +00:00
|
|
|
cflags = [
|
|
|
|
"/O2",
|
|
|
|
"/Zc:inline",
|
2016-10-20 19:45:02 +00:00
|
|
|
"/GS-",
|
2016-10-20 17:34:18 +00:00
|
|
|
]
|
2016-10-20 17:52:38 +00:00
|
|
|
ldflags = [
|
|
|
|
"/OPT:ICF",
|
|
|
|
"/OPT:REF",
|
|
|
|
]
|
2016-10-12 20:25:27 +00:00
|
|
|
} else {
|
2016-10-20 02:24:10 +00:00
|
|
|
cflags = [
|
|
|
|
"-O3",
|
2017-02-10 12:59:39 +00:00
|
|
|
"-fdata-sections",
|
|
|
|
"-ffunction-sections",
|
2016-10-20 02:24:10 +00:00
|
|
|
]
|
2017-02-10 12:59:39 +00:00
|
|
|
if (is_mac || is_ios) {
|
|
|
|
ldflags = [ "-dead_strip" ]
|
|
|
|
} else {
|
|
|
|
ldflags = [ "-Wl,--gc-sections" ]
|
|
|
|
}
|
2016-09-16 20:29:57 +00:00
|
|
|
}
|
2016-09-16 21:44:18 +00:00
|
|
|
defines = [ "NDEBUG" ]
|
2016-07-21 19:25:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
config("executable") {
|
2016-12-06 15:46:02 +00:00
|
|
|
if (is_android) {
|
2017-08-30 14:23:01 +00:00
|
|
|
ldflags = [
|
|
|
|
"-pie",
|
|
|
|
"-rdynamic",
|
|
|
|
]
|
2016-12-06 15:46:02 +00:00
|
|
|
} else if (is_mac) {
|
2016-07-21 19:25:45 +00:00
|
|
|
ldflags = [ "-Wl,-rpath,@loader_path/." ]
|
|
|
|
} else if (is_linux) {
|
2016-09-15 17:44:15 +00:00
|
|
|
ldflags = [
|
|
|
|
"-rdynamic",
|
|
|
|
"-Wl,-rpath,\$ORIGIN",
|
|
|
|
]
|
2016-11-06 16:54:19 +00:00
|
|
|
} else if (is_win) {
|
|
|
|
ldflags = [
|
|
|
|
"/SUBSYSTEM:CONSOLE", # Quiet "no subsystem specified; CONSOLE assumed".
|
|
|
|
"/INCREMENTAL:NO", # Quiet warnings about failing to incrementally link by never trying to.
|
|
|
|
]
|
2016-07-21 19:25:45 +00:00
|
|
|
}
|
|
|
|
}
|