From d481619a114b583512991003766b870cb34ccf4a Mon Sep 17 00:00:00 2001 From: Niranjan Yardi Date: Tue, 12 Dec 2023 17:57:10 -0800 Subject: [PATCH] Modify gcc , cobalt toolchains (#2072) 1) Ingest shlib extension from the toolchain variables : fixes error b/246412559#comment79 2) Windows based modular builds can't link with the shared library directly - link command is modified accordingly. b/246412559 Change-Id: I87e2dc56ed4bbf60e296199d02aacfa34d4f1d72 --- build/toolchain/gcc_toolchain.gni | 11 ++++++++++- starboard/build/toolchain/cobalt_toolchains.gni | 6 ++++-- starboard/linux/x64x11/clang/3.9/toolchain/BUILD.gn | 4 +--- starboard/linux/x64x11/gcc/6.3/toolchain/BUILD.gn | 4 +--- starboard/linux/x64x11/toolchain/BUILD.gn | 4 +--- starboard/raspi/2/skia/toolchain/BUILD.gn | 4 +--- starboard/raspi/2/toolchain/BUILD.gn | 4 +--- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni index ceb1ff94f517..72153f943245 100644 --- a/build/toolchain/gcc_toolchain.gni +++ b/build/toolchain/gcc_toolchain.gni @@ -12,6 +12,10 @@ import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") import("//build/toolchain/toolchain.gni") +if (use_cobalt_customizations) { + import("//starboard/build/config/os_definitions.gni") +} + if (is_nacl) { # To keep NaCl variables out of builds that don't include NaCl, all # variables defined in nacl/config.gni referenced here should be protected by @@ -610,7 +614,12 @@ template("gcc_toolchain") { if (using_old_compiler) { link_command = "$ld {{ldflags}}${extra_ldflags} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag {{libs}} $tail_lib_dependencies" } else { - link_command = "$ld {{ldflags}}${extra_ldflags} {{libs}} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag$tail_lib_dependencies" + # Windows based platform modular builds dont link directly with the shared library. + if (is_host_win && sb_is_modular) { + link_command = "$ld {{ldflags}}${extra_ldflags} {{libs}} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" $end_group_flag$tail_lib_dependencies" + } else { + link_command = "$ld {{ldflags}}${extra_ldflags} {{libs}} -o \"$unstripped_outfile\" $start_group_flag @\"$rspfile\" {{solibs}} $end_group_flag$tail_lib_dependencies" + } } # Generate a map file to be used for binary size analysis. diff --git a/starboard/build/toolchain/cobalt_toolchains.gni b/starboard/build/toolchain/cobalt_toolchains.gni index 4277164968b8..bfe0b5ff18b2 100644 --- a/starboard/build/toolchain/cobalt_toolchains.gni +++ b/starboard/build/toolchain/cobalt_toolchains.gni @@ -17,13 +17,15 @@ import("//build/toolchain/gcc_toolchain.gni") template("cobalt_clang_toolchain") { gcc_toolchain(target_name) { - forward_variables_from(invoker.variables, + forward_variables_from(invoker, [ "native_linker_path", "executable_extension", "tail_lib_dependencies", - "shlib_extension", ]) + if (defined(invoker.shlib_extension)) { + shlib_extension = invoker.shlib_extension + } assert(defined(native_linker_path), "native_linker_path has to be defined by the platform") if (!is_host_win) { diff --git a/starboard/linux/x64x11/clang/3.9/toolchain/BUILD.gn b/starboard/linux/x64x11/clang/3.9/toolchain/BUILD.gn index ca5acff4f6ec..85b4cd48590e 100644 --- a/starboard/linux/x64x11/clang/3.9/toolchain/BUILD.gn +++ b/starboard/linux/x64x11/clang/3.9/toolchain/BUILD.gn @@ -20,9 +20,7 @@ import("//starboard/shared/toolchain/overridable_gcc_toolchain.gni") _target_llvm_3_9_bin_dir = "/usr/lib/llvm-3.9/bin" cobalt_clang_toolchain("cobalt") { - variables = { - native_linker_path = "${_target_llvm_3_9_bin_dir}/clang++" - } + native_linker_path = "${_target_llvm_3_9_bin_dir}/clang++" } overridable_gcc_toolchain("starboard") { diff --git a/starboard/linux/x64x11/gcc/6.3/toolchain/BUILD.gn b/starboard/linux/x64x11/gcc/6.3/toolchain/BUILD.gn index 9db86a9c6a04..b4211950f620 100644 --- a/starboard/linux/x64x11/gcc/6.3/toolchain/BUILD.gn +++ b/starboard/linux/x64x11/gcc/6.3/toolchain/BUILD.gn @@ -20,9 +20,7 @@ import("//starboard/shared/toolchain/overridable_gcc_toolchain.gni") _default_gcc_6_3_bin_dir = "/usr/bin" cobalt_clang_toolchain("cobalt") { - variables = { - native_linker_path = "${_default_gcc_6_3_bin_dir}/clang++" - } + native_linker_path = "${_default_gcc_6_3_bin_dir}/clang++" } overridable_gcc_toolchain("starboard") { diff --git a/starboard/linux/x64x11/toolchain/BUILD.gn b/starboard/linux/x64x11/toolchain/BUILD.gn index 79b79916ef8b..9d6fd32a14a3 100644 --- a/starboard/linux/x64x11/toolchain/BUILD.gn +++ b/starboard/linux/x64x11/toolchain/BUILD.gn @@ -21,9 +21,7 @@ overridable_clang_toolchain("starboard") { } cobalt_clang_toolchain("cobalt") { - variables = { - native_linker_path = "$clang_base_path/bin/clang++" - } + native_linker_path = "$clang_base_path/bin/clang++" } overridable_clang_toolchain("target") { diff --git a/starboard/raspi/2/skia/toolchain/BUILD.gn b/starboard/raspi/2/skia/toolchain/BUILD.gn index 8524670452e2..83c079871255 100644 --- a/starboard/raspi/2/skia/toolchain/BUILD.gn +++ b/starboard/raspi/2/skia/toolchain/BUILD.gn @@ -32,9 +32,7 @@ gcc_toolchain("target") { } cobalt_clang_toolchain("cobalt") { - variables = { - native_linker_path = gcc_toolchain_cxx - } + native_linker_path = gcc_toolchain_cxx } gcc_toolchain("starboard") { diff --git a/starboard/raspi/2/toolchain/BUILD.gn b/starboard/raspi/2/toolchain/BUILD.gn index 2c49b20d29a7..2347494a2609 100644 --- a/starboard/raspi/2/toolchain/BUILD.gn +++ b/starboard/raspi/2/toolchain/BUILD.gn @@ -17,9 +17,7 @@ import("//starboard/build/toolchain/cobalt_toolchains.gni") import("//starboard/raspi/shared/toolchain/raspi_shared_toolchain.gni") cobalt_clang_toolchain("cobalt") { - variables = { - native_linker_path = gcc_toolchain_cxx - } + native_linker_path = gcc_toolchain_cxx } gcc_toolchain("starboard") {