Make simple build example runnable on macOS

Change-Id: Iee3c7bbcd6578f4fe21567981bad7e5f917d5088

make simple build example runnable on macOS

Change-Id: I89b50a87f939058a6fb4348cab06c90a93240065
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/8680
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Scott Graham <scottmg@chromium.org>
diff --git a/examples/simple_build/build/BUILD.gn b/examples/simple_build/build/BUILD.gn
index 8eae46a..cc3f948 100644
--- a/examples/simple_build/build/BUILD.gn
+++ b/examples/simple_build/build/BUILD.gn
@@ -12,8 +12,10 @@
 }
 
 config("executable_ldconfig") {
-  ldflags = [
-    "-Wl,-rpath=\$ORIGIN/",
-    "-Wl,-rpath-link=",
-  ]
+  if (!is_mac) {
+    ldflags = [
+      "-Wl,-rpath=\$ORIGIN/",
+      "-Wl,-rpath-link=",
+    ]
+  }
 }
diff --git a/examples/simple_build/build/BUILDCONFIG.gn b/examples/simple_build/build/BUILDCONFIG.gn
index e419fd9..619fa97 100644
--- a/examples/simple_build/build/BUILDCONFIG.gn
+++ b/examples/simple_build/build/BUILDCONFIG.gn
@@ -15,6 +15,9 @@
   current_os = target_os
 }
 
+is_linux = host_os == "linux" && current_os == "linux" && target_os == "linux"
+is_mac = host_os == "mac" && current_os == "mac" && target_os == "mac"
+
 # All binary targets will get this list of configs by default.
 _shared_binary_target_configs = [ "//build:compiler_defaults" ]
 
diff --git a/examples/simple_build/build/toolchain/BUILD.gn b/examples/simple_build/build/toolchain/BUILD.gn
index 98cc6ee..c04ee1e 100644
--- a/examples/simple_build/build/toolchain/BUILD.gn
+++ b/examples/simple_build/build/toolchain/BUILD.gn
@@ -22,10 +22,9 @@
   }
 
   tool("alink") {
-    rspfile = "{{output}}.rsp"
-    command = "rm -f {{output}} && ar rcs {{output}} @$rspfile"
+    command = "rm -f {{output}} && ar rcs {{output}} {{inputs}}"
     description = "AR {{target_output_name}}{{output_extension}}"
-    rspfile_content = "{{inputs}}"
+
     outputs =
         [ "{{target_out_dir}}/{{target_output_name}}{{output_extension}}" ]
     default_output_extension = ".a"
@@ -36,9 +35,15 @@
     soname = "{{target_output_name}}{{output_extension}}"  # e.g. "libfoo.so".
     sofile = "{{output_dir}}/$soname"
     rspfile = soname + ".rsp"
+    if (is_mac) {
+      os_specific_option = "-install_name @executable_path/$sofile"
+      rspfile_content = "{{inputs}} {{solibs}} {{libs}}"
+    } else {
+      os_specific_option = "-Wl,-soname=$soname"
+      rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}}"
+    }
 
-    command = "g++ -shared {{ldflags}} -o $sofile -Wl,-soname=$soname @$rspfile"
-    rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}}"
+    command = "g++ -shared {{ldflags}} -o $sofile $os_specific_option @$rspfile"
 
     description = "SOLINK $soname"
 
@@ -60,7 +65,11 @@
   tool("link") {
     outfile = "{{target_output_name}}{{output_extension}}"
     rspfile = "$outfile.rsp"
-    command = "g++ {{ldflags}} -o $outfile -Wl,--start-group @$rspfile {{solibs}} -Wl,--end-group {{libs}}"
+    if (is_mac) {
+      command = "g++ {{ldflags}} -o $outfile @$rspfile {{solibs}} {{libs}}"
+    } else {
+      command = "g++ {{ldflags}} -o $outfile -Wl,--start-group @$rspfile {{solibs}} -Wl,--end-group {{libs}}"
+    }
     description = "LINK $outfile"
     default_output_dir = "{{root_out_dir}}"
     rspfile_content = "{{inputs}}"