skia2/gn/BUILDCONFIG.gn
Brian Osman a098265198 Fix PATH when running MSVC for ARM64 target
The ARM64 MSVC toolchain only includes some of the executables. Other
functionality is in DLLs that are located in the host (x64) toolchain
directory. Hopefully MS fixes this at some point.

Bug: skia:8569
Change-Id: I1a96c63c9bdcf656eb2d84b81636d54304766c20
Reviewed-on: https://skia-review.googlesource.com/c/175821
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-12-07 21:06:25 +00:00

270 lines
7.0 KiB
Plaintext

# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
is_skia_standalone = true
# It's best to keep the names and defaults of is_foo flags consistent with Chrome.
declare_args() {
is_official_build = false
is_component_build = false
ndk = ""
# It's nice to keep ndk_api set to what Clank targets, but probably no big deal if we can't.
if (target_cpu == "x86" || target_cpu == "arm") {
ndk_api = 16
} else {
ndk_api = 21
}
sanitize = ""
ar = "ar"
cc = "cc"
cxx = "c++"
win_sdk = "C:/Program Files (x86)/Windows Kits/10"
win_sdk_version = ""
win_vc = ""
win_toolchain_version = ""
clang_win = ""
skia_vulkan_sdk = getenv("VULKAN_SDK")
skia_moltenvk_path = ""
}
declare_args() {
is_debug = !is_official_build
}
assert(!(is_debug && is_official_build))
if (target_cpu == "wasm") {
target_os = "wasm"
}
# Platform detection
if (target_os == "") {
target_os = host_os
if (ndk != "") {
target_os = "android"
}
}
if (current_os == "") {
current_os = target_os
}
is_android = current_os == "android"
is_fuchsia = current_os == "fuchsia"
is_ios = current_os == "ios" || current_os == "tvos"
is_tvos = current_os == "tvos"
is_linux = current_os == "linux"
is_mac = current_os == "mac"
is_win = current_os == "win"
if (target_cpu == "") {
target_cpu = host_cpu
if (is_android || is_ios) {
target_cpu = "arm64"
}
}
if (target_cpu == "x86_64") {
target_cpu = "x64"
}
if (current_cpu == "") {
current_cpu = target_cpu
}
is_clang = is_android || is_ios || is_mac ||
(cc == "clang" && cxx == "clang++") || clang_win != ""
if (!is_clang && !is_win) {
is_clang = exec_script("gn/is_clang.py",
[
cc,
cxx,
],
"value")
}
if (is_android) {
ndk_host = ""
ndk_target = ""
ndk_platform = ""
ndk_stdlib = ""
ndk_gccdir = ""
ndk_gdbserver = ""
if (host_os == "linux") {
ndk_host = "linux-x86_64"
} else if (host_os == "mac") {
ndk_host = "darwin-x86_64"
} else if (host_os == "win") {
ndk_host = "windows-x86_64"
}
if (target_cpu == "arm64") {
ndk_target = "aarch64-linux-android"
ndk_platform = "android-${ndk_api}/arch-arm64"
ndk_stdlib = "arm64-v8a"
ndk_gccdir = ndk_target
ndk_gdbserver = "prebuilt/android-arm64/gdbserver/gdbserver"
} else if (target_cpu == "arm") {
ndk_target = "arm-linux-androideabi"
ndk_platform = "android-${ndk_api}/arch-arm"
ndk_stdlib = "armeabi-v7a"
ndk_gccdir = ndk_target
ndk_gdbserver = "prebuilt/android-arm/gdbserver/gdbserver"
} else if (target_cpu == "x64") {
ndk_target = "x86_64-linux-android"
ndk_platform = "android-${ndk_api}/arch-x86_64"
ndk_stdlib = "x86_64"
ndk_gccdir = ndk_stdlib
ndk_gdbserver = "prebuilt/android-x86_64/gdbserver/gdbserver"
} else if (target_cpu == "x86") {
ndk_target = "i686-linux-android"
ndk_platform = "android-${ndk_api}/arch-x86"
ndk_stdlib = "x86"
ndk_gccdir = ndk_stdlib
ndk_gdbserver = "prebuilt/android-x86/gdbserver/gdbserver"
}
}
msvc = ""
if (target_os == "win") {
# By default we look for 2017 (Pro & Community), then 2015. If MSVC is installed in a
# non-default location, you can set win_vc to inform us where it is.
vc_2017_pro_default =
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC"
vc_2017_com_default =
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC"
vc_2017_bt_default =
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC"
vc_2015_default = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC"
if (win_vc == "") {
if ("True" == exec_script("//gn/checkdir.py",
[ "$vc_2017_pro_default" ],
"trim string")) {
win_vc = vc_2017_pro_default
msvc = 2017
} else if ("True" == exec_script("//gn/checkdir.py",
[ "$vc_2017_com_default" ],
"trim string")) {
win_vc = vc_2017_com_default
msvc = 2017
} else if ("True" == exec_script("//gn/checkdir.py",
[ "$vc_2017_bt_default" ],
"trim string")) {
win_vc = vc_2017_bt_default
msvc = 2017
} else if ("True" == exec_script("//gn/checkdir.py",
[ "$vc_2015_default" ],
"trim string")) {
win_vc = vc_2015_default
msvc = 2015
}
}
assert(win_vc != "") # Could not find VC installation. Set win_vc to your VC directory.
if (msvc == "") {
if ("True" ==
exec_script("//gn/checkdir.py", [ "$win_vc/Tools" ], "trim string")) {
msvc = 2017
} else {
msvc = 2015
}
}
}
if (target_os == "win") {
if (msvc == 2017 && win_toolchain_version == "") {
win_toolchain_version = exec_script("//gn/highest_version_dir.py",
[
"$win_vc/Tools/MSVC",
"[0-9]{2}\.[0-9]{2}\.[0-9]{5}",
],
"trim string")
}
if (win_sdk_version == "") {
win_sdk_version = exec_script("//gn/highest_version_dir.py",
[
"$win_sdk/Include",
"[0-9]{2}\.[0-9]\.[0-9]{5}\.[0-9]",
],
"trim string")
}
}
# A component is either a static or a shared library.
template("component") {
_component_mode = "static_library"
if (is_component_build) {
_component_mode = "shared_library"
}
target(_component_mode, target_name) {
forward_variables_from(invoker, "*")
}
}
# Default configs
default_configs = [
"//gn:default",
"//gn:no_exceptions",
"//gn:no_rtti",
]
if (!is_debug) {
default_configs += [
"//gn:optimize",
"//gn:NDEBUG",
]
}
if (!is_official_build) {
default_configs += [
"//gn:debug_symbols",
"//gn:warnings",
]
}
default_configs += [
"//gn:warnings_except_public_headers",
"//gn:extra_flags",
]
set_defaults("executable") {
configs = [ "//gn:executable" ] + default_configs
}
set_defaults("source_set") {
configs = default_configs
}
set_defaults("static_library") {
configs = default_configs
}
set_defaults("shared_library") {
configs = default_configs
}
set_defaults("component") {
configs = default_configs
if (!is_component_build) {
complete_static_lib = true
}
}
if (is_win) {
# Windows tool chain
set_default_toolchain("//gn/toolchain:msvc")
default_toolchain_name = "msvc"
host_toolchain = "msvc"
} else {
# GCC-like toolchains, including Clang.
set_default_toolchain("//gn/toolchain:gcc_like")
default_toolchain_name = "gcc_like"
host_toolchain = "gcc_like_host"
}