Well, the whole point of smartlink is to handle the idiosyncrasies of dynamic linking on various platforms (unlike libtool it has no ambitions beyond that). So if Darwin needs some special handling of rpath which doesn't match any of the already implemented variants, the right thing to do is to create a new value for $pike_cv_run_path_method, add a case for Darwin in configure.in which sets it, and then add the actual handling of that method to smartlink. Smartlink acts as a clutter-sink, so don't worry too much about it. :-)