| Index: build/toolchain/mac/BUILD.gn
 | 
| diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn
 | 
| index 009c701de31e524d3b3c76b420e03572b780ab3d..3f6ffc2400bd0dfb6f8e427a5c8e25aa00d0ecf9 100644
 | 
| --- a/build/toolchain/mac/BUILD.gn
 | 
| +++ b/build/toolchain/mac/BUILD.gn
 | 
| @@ -118,9 +118,9 @@ template("mac_toolchain") {
 | 
|        rspfile = dylib + ".rsp"
 | 
|  
 | 
|        # These variables are not built into GN but are helpers that implement
 | 
| -      # (1) linking to produce a .so, (2) extracting the symbols from that file
 | 
| -      # to a temporary file, (3) if the temporary file has differences from the
 | 
| -      # existing .TOC file, overwrite it, otherwise, don't change it.
 | 
| +      # (1) linking to produce a .dylib, (2) extracting the symbols from that
 | 
| +      # file to a temporary file, (3) if the temporary file has differences from
 | 
| +      # the existing .TOC file, overwrite it, otherwise, don't change it.
 | 
|        #
 | 
|        # As a special case, if the library reexports symbols from other dynamic
 | 
|        # libraries, we always update the .TOC and skip the temporary file and
 | 
| @@ -167,6 +167,33 @@ template("mac_toolchain") {
 | 
|        depend_output = tocname
 | 
|      }
 | 
|  
 | 
| +    tool("solink_module") {
 | 
| +      sofile = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"  # eg "./libfoo.so"
 | 
| +      rspfile = sofile + ".rsp"
 | 
| +
 | 
| +      link_command = "$ld -bundle {{ldflags}} -o $sofile -Wl,-filelist,$rspfile"
 | 
| +      if (is_component_build) {
 | 
| +        link_command += " -Wl,-install_name,@rpath/{{target_output_name}}{{output_extension}}"
 | 
| +      }
 | 
| +      link_command += " {{solibs}} {{libs}}"
 | 
| +      command = link_command
 | 
| +
 | 
| +      rspfile_content = "{{inputs_newline}}"
 | 
| +
 | 
| +      description = "SOLINK_MODULE {{output}}"
 | 
| +
 | 
| +      # Use this for {{output_extension}} expansions unless a target manually
 | 
| +      # overrides it (in which case {{output_extension}} will be what the target
 | 
| +      # specifies).
 | 
| +      default_output_extension = ".so"
 | 
| +
 | 
| +      output_prefix = "lib"
 | 
| +
 | 
| +      outputs = [
 | 
| +        sofile,
 | 
| +      ]
 | 
| +    }
 | 
| +
 | 
|      tool("link") {
 | 
|        outfile = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
 | 
|        rspfile = "$outfile.rsp"
 | 
| 
 |