OSDN Git Service

Fix non-component unittests on Mac OS.
authorNicolas Capens <capn@google.com>
Thu, 22 Jun 2017 04:31:47 +0000 (00:31 -0400)
committerNicolas Capens <capn@google.com>
Thu, 22 Jun 2017 04:41:00 +0000 (04:41 +0000)
Component builds automatically set the rpath to include dependent libraries,
but with a non-component build these are assumed to be linked statically so the
rpath of where to find the libraries to collect install_name info from is
missing. Thus we set the rpath explicitly.

Related articles and documentation:
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html
http://log.zyxar.com/blog/2012/03/10/install-name-on-os-x
https://wincent.com/wiki/@executable_path,_@load_path_and_@rpath

Bug swiftshader:68

Change-Id: I0cfe0d26fccf80ff7911846ef013d47daaeb09fd
Reviewed-on: https://swiftshader-review.googlesource.com/10228
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
tests/unittests/BUILD.gn

index 135ca8c..d5a106e 100644 (file)
@@ -42,8 +42,10 @@ test("swiftshader_unittests") {
       "/DELAYLOAD:libGLESv2.dll",
     ]
   } else if (is_mac) {
-    # On Mac OS the rpath is part of the dylib and a full file path instead of
-    # a directory, which is added to the executable at link time.
+    ldflags = [
+      "-rpath",
+      "@executable_path/swiftshader/",
+    ]
   } else {
     ldflags = [ "-Wl,-rpath=\$ORIGIN/swiftshader" ]
   }