[cmake-developers] [CMake] BundleUtilities and @rpath
Clinton Stimpson
clinton at elemtech.com
Sat Jun 1 01:34:48 EDT 2013
Jc,
I see some good things in this topic.
A few questions I have:
GP_RPATH_DIR is set to ${bundle}/Contents. What about other platforms such as
Linux? And what about Windows where the executable directory could be
considered an rpath directory along with a few other directories that the
Windows loader looks at.
And what if there are multiple rpath directories? I had a case where a plugin
had 2 rpath directories for dependencies, as some dependencies could be local,
and some in a common directory.
Even on Windows, the executable could be in the common directory, and the
plugin and some of its dependencies in another. The loader on Windows has
builtin paths for finding dependencies that include the executable directory
and the plugin directory. The same layout can be done on Mac and Linux with
rpaths.
So, I don't see how the topic fully captures rpath behavior, or is it meant to
be specific to simpler use cases? However, I will admit that BundleUtilities
was already specific to simpler use cases when it was just @executable_path and
@loader_path.
Perhaps related, is a topic of mine in stage/rpath-on-mac. It gives rpath
support in the build/install tree much like one gets on other Unix platforms.
With that, you can compile code on Mac such that it already has @rpath and
there is less or zero fixup necessary at install time. The hope is that CMake
will adopt this as the default behavior on Mac. The only potential fixup
necessary is external libraries that are not system libraries, but only if
they don't use @rpath.
For my 3rd party libraries, I could decide to run install_name_tool to change
them to use @rpath before compiling my code.
Or a script could do the same at install time. For one app, I had written
some basic scripts to use instead of BundleUtilties. This freed me from the
complexity required to also support @executable_path and @loader_path, but it
wasn't matured enough to validate the completeness of the package/bundle.
Have you seen this thread?
http://public.kitware.com/pipermail/cmake-developers/2011-November/002572.html
So, a question I have for you is how do you think stage/rpath-on-mac could
affect your topic?
Clint
On Thursday, May 16, 2013 07:57:01 PM Jean-Christophe Fillion-Robin wrote:
> Hi Clinton,
>
> This is to create bundle that use @rpath. Particularly useful when you want
> to support plugin.
>
> Let me know what you think, I just updated my the toy project.
> Other list of changes have been pushed into CMake stage:
> http://cmake.org/gitweb?p=stage/cmake.git;a=shortlog;h=refs/heads/tweak-bund
> leutilities-for-rpath
>
> Thanks
> Jc
>
> On Thu, May 2, 2013 at 11:51 AM, Clinton Stimpson
<clinton at elemtech.com>wrote:
> > On Wednesday, April 24, 2013 06:45:11 PM Jean-Christophe Fillion-Robin
> >
> > wrote:
> > > Hi Folks,
> > >
> > > I have been working on improving BundleUtilities and GetPrerequisites
> > > module so that it can be used to easily fixup a MacOSX bundle using
> >
> > @rpath.
> >
> > > The set of changes I would like to propose is here:
> > https://github.com/jcfr/CMakeBundleUtilitiesExample/compare/f7a594ffba72b8
> > cb>
> > > 83df9a166d7887bedc49f38b...75fa538
> > >
> > > To try out the change, you could build the small project I created for
> >
> > that
> >
> > > purpose: https://github.com/jcfr/CMakeBundleUtilitiesExample#readme
> > >
> > > Let me know what you think.
> > >
> > > Thanks
> > > Jc
> >
> > Is it to help make the same @executable_path based bundles but support
> > copying
> > in libraries and frameworks that used @rpath and change them over to be
> > @executable_path based?
> >
> > Or is this to help create bundles that result in the use of @rpath?
> >
> > --
> > Clinton Stimpson
> > Elemental Technologies, Inc
> > Computational Simulation Software, LLC
> > www.csimsoft.com
> > --
> >
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the CMake FAQ at:
> > http://www.cmake.org/Wiki/CMake_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.cmake.org/mailman/listinfo/cmake
--
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com
More information about the cmake-developers
mailing list