recent KDE buildsystem changes that affect OSX?

Benjamin Reed rangerrick at gmail.com
Mon Apr 14 23:45:02 CEST 2008


On Mon, Apr 14, 2008 at 5:08 PM, Brad King <brad.king at kitware.com> wrote:

>  I guess no one has been using CMake from CVS on the mac.  This has been
>  broken since Aug 22 2007:
>
>  http://www.cmake.org/cgi-bin/viewcvs.cgi/Source/cmInstallCommand.cxx?root=CMake&r1=1.26&r2=1.27

Nope, when trying to build packages for The Real World I try to stick
to production stuff.  ;)

>  > Adding "BUNDLE DESTINATION lib" fixes it; but I would say that if
>  > BUNDLE DESTINATION is not set, cmake should fall back to whatever
>  > LIBRARY DESTINATION is set to.
>
>  CMake 2.4 uses the RUNTIME DESTINATION for bundles and the LIBRARY
>  DESTINATION for frameworks.  Therefore these should be the fallbacks.

I'm getting even more confused then...  "RUNTIME" means executables in
this context, doesn't it?  Then maybe I was wrong in my assessment of
what "BUNDLE" means in the install command in the first place... does
it mean loadable modules (.bundle) or does it mean app-bundles?

Hrm, OK, I just checked "cmake --help-command install" and this 5th
time I've read it I think I understand it differently  :)

      The TARGETS form specifies rules for installing targets from a
       project.  There are five kinds of target files that may be installed:
       archive, library, runtime, framework, and bundle.  Executables are
       treated as runtime targets, except that those marked with the
       MACOSX_BUNDLE property are treated as bundle targets on OS X.  Static

When I was first reading the documentation, I was grepping for
"BUNDLE" and the only thing I hit was the TARGETS signature, and then
this line about "MACOSX_BUNDLE" which didn't seem directly applicable.
 Perhaps when things from the signature are mentioned, they should be
referred to as you would specify them, to make it more obvious it's
referring to the same thing?  It's confusing because:

- .bundle files (dlopened .so files) are called "bundles" by Mach-O
(bundles can be loaded, but not linked against at compile time)
- Foo.app directories are called "bundles" ("app bundles" to be
specific) because they are bundles of related resources
- Foo.framework directories are also called "bundles" because they are
bundles of related resources

"bundle" is such an overloaded term in OSX that without explicit
context it's hard to know what you're referring to specifically.  It
would be clearer in the documentation if it was more like this:

      The TARGETS form specifies rules for installing targets from a
       project.  There are five kinds of target files that may be installed:
       ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK, and BUNDLE.  Executables are
       treated as RUNTIME targets, except that those marked with the
       MACOSX_BUNDLE property are treated as BUNDLE targets on OS X.  Static

In hindsight, I can't imagine the bin/ directory was ever the default
place to put .bundle (dlopened .so) files, so "BUNDLE" in install must
mean .app bundles, and if you capitalize the way they're specified in
the TARGETS bit, it's a lot more obvious that that's the case...

-- 
Benjamin Reed a.k.a. Ranger Rick
Fink, KDE, and Mac OS X development
http://www.racoonfink.com/


More information about the Kde-buildsystem mailing list