OSDN Git Service

gn build: Make a couple of improvements to the unix toolchain.
authorPeter Collingbourne <peter@pcc.me.uk>
Tue, 15 Jan 2019 08:14:38 +0000 (08:14 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Tue, 15 Jan 2019 08:14:38 +0000 (08:14 +0000)
Add an asm tool (will be required for building sanitizer_common on
x64) and set a soname for DSOs so that anything that links against
them gets the correct DT_NEEDED.

Differential Revision: https://reviews.llvm.org/D56705

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351167 91177308-0d34-0410-b5e6-96231b3b80d8

utils/gn/build/toolchain/BUILD.gn

index 61c0418..7a2e584 100644 (file)
@@ -39,6 +39,16 @@ template("unix_toolchain") {
       ]
     }
 
+    tool("asm") {
+      depfile = "{{output}}.d"
+      command = "$cc -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{asmflags}} $target_cflags"
+      depsformat = "gcc"
+      description = "ASM {{output}}"
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
+    }
+
     tool("alink") {
       if (current_os == "mac") {
         command = "libtool -static -no_warning_for_no_symbols {{arflags}} -o {{output}} {{inputs}}"
@@ -62,7 +72,7 @@ template("unix_toolchain") {
         command = "$ld -shared {{ldflags}} -o $outfile {{libs}} {{inputs}} $target_ldflags"
         default_output_extension = ".dylib"
       } else {
-        command = "$ld -shared {{ldflags}} -Wl,-z,defs -o $outfile {{libs}} {{inputs}} $target_ldflags"
+        command = "$ld -shared {{ldflags}} -Wl,-z,defs -Wl,-soname,{{target_output_name}}{{output_extension}} -o $outfile {{libs}} {{inputs}} $target_ldflags"
         default_output_extension = ".so"
       }
       description = "SOLINK $outfile"
@@ -80,7 +90,7 @@ template("unix_toolchain") {
         command = "$ld -shared {{ldflags}} -Wl,-flat_namespace -Wl,-undefined,suppress -o $outfile {{libs}} {{inputs}} $target_ldflags"
         default_output_extension = ".dylib"
       } else {
-        command = "$ld -shared {{ldflags}} -o $outfile {{libs}} {{inputs}} $target_ldflags"
+        command = "$ld -shared {{ldflags}} -Wl,-soname,{{target_output_name}}{{output_extension}} -o $outfile {{libs}} {{inputs}} $target_ldflags"
         default_output_extension = ".so"
       }
       description = "SOLINK $outfile"