# 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 == "mipsel" || target_cpu == "arm") { ndk_api = 16 } else { ndk_api = 21 } sanitize = "" ar = "ar" cc = "cc" cxx = "c++" msvc = 2015 clang_win = "" } declare_args() { is_debug = !is_official_build if (msvc == 2015) { windk = "C:/Program Files (x86)/Microsoft Visual Studio 14.0" } else { windk = "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional" } } 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 == "mips64el") { ndk_target = "mips64el-linux-android" ndk_platform = "android-${ndk_api}/arch-mips64" ndk_stdlib = "mips64" ndk_gccdir = ndk_target ndk_gdbserver = "prebuilt/android-mips64/gdbserver/gdbserver" } else if (target_cpu == "mipsel") { ndk_target = "mipsel-linux-android" ndk_platform = "android-${ndk_api}/arch-mips" ndk_stdlib = "mips" ndk_gccdir = ndk_target ndk_gdbserver = "prebuilt/android-mips/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" } } # 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", "//gn:warnings", "//gn:warnings_except_public_headers", ] if (!is_debug) { default_configs += [ "//gn:release" ] } if (!is_official_build) { default_configs += [ "//gn:debug_symbols" ] } default_configs += [ "//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" }