allow overriding {target,host}_link = ... in GN

This lets it be something other than cxx,
e.g. to compile with Goma but to link with the NDK locally,

    declare_args() {
      home = getenv("HOME")
      use_goma = true
      _target = "aarch64-linux-android21"
    }
    ndk = "$home/ndk"

    extra_asmflags = []
    extra_cflags = []
    extra_ldflags = []

    if (use_goma) {
      cc = "$home/chromium/src/third_party/llvm-build/Release+Asserts/bin/clang"
      cxx = "$home/chromium/src/third_party/llvm-build/Release+Asserts/bin/clang++"
      cc_wrapper = "$home/depot_tools/.cipd_bin/gomacc"

      target_cc = cc
      target_cxx = cxx
      target_link = "$ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=$_target"

      extra_asmflags += [ "--target=$_target" ]
      extra_cflags += [ "--target=$_target" ]
    } else {
      cc_wrapper = "ccache"
    }

    is_debug = true
    if (is_debug) {
      extra_cflags += [ "-Os" ]
    }

Change-Id: I17b9c3f72bc308e40c1565536d04d0673efd4ef1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/332616
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This commit is contained in:
Mike Klein 2020-11-05 11:10:57 -06:00 committed by Skia Commit-Bot
parent 107e862eb6
commit 0266c8a4e6

View File

@ -47,6 +47,11 @@ declare_args() {
link_pool_depth = -1
}
declare_args() {
host_link = host_cxx
target_link = target_cxx
}
# For 'shell' see https://ninja-build.org/manual.html#ref_rule_command
if (host_os == "win") {
shell = "cmd.exe /c "
@ -234,6 +239,7 @@ template("gcc_like_toolchain") {
ar = invoker.ar
cc = invoker.cc
cxx = invoker.cxx
link = invoker.link
lib_switch = "-l"
lib_dir_switch = "-L"
@ -330,7 +336,7 @@ template("gcc_like_toolchain") {
_end_group = ""
}
command = "$cxx -shared {{ldflags}} $_start_group @$rspfile {{frameworks}} {{solibs}} $_end_group {{libs}} $rpath -o {{output}}"
command = "$link -shared {{ldflags}} $_start_group @$rspfile {{frameworks}} {{solibs}} $_end_group {{libs}} $rpath -o {{output}}"
outputs = [ "{{root_out_dir}}/$soname" ]
output_prefix = "lib"
default_output_extension = ".so"
@ -357,7 +363,7 @@ template("gcc_like_toolchain") {
_start_group = ""
_end_group = ""
}
command = "$cxx {{ldflags}} $_start_group @$rspfile {{frameworks}} {{solibs}} $_end_group {{libs}} -o $exe_name"
command = "$link {{ldflags}} $_start_group @$rspfile {{frameworks}} {{solibs}} $_end_group {{libs}} -o $exe_name"
outputs = [ "$exe_name" ]
description = "link {{output}}"
@ -402,6 +408,7 @@ gcc_like_toolchain("gcc_like") {
ar = target_ar
cc = target_cc
cxx = target_cxx
link = target_link
}
gcc_like_toolchain("gcc_like_host") {
@ -410,4 +417,5 @@ gcc_like_toolchain("gcc_like_host") {
ar = host_ar
cc = host_cc
cxx = host_cxx
link = host_link
}