|
Boost-Build : |
From: Mat Marcus (mat-lists_at_[hidden])
Date: 2005-08-05 20:02:55
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
- --On Saturday, August 06, 2005 3:01 AM +0300 Alo Sarv <alo.sarv_at_[hidden]>
wrote:
> Hi
>
> As I see from the list archive, this topic has been raised before, but
> only partially. The thread dated 27March 2005 (also on 27/12/2004)
> mentioned bundles in the sense of specific directory structure,
> so-called installation package. There is extensive documentation about
> these bundles here:
> http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBund
> les/index.html
>
> Frankly, I'm not sure if this falls in the scope of BB - afterall, BB
> doesn't generate tarballs or zip / exe installers either for other
> platforms, and this is no different. Is packaging a part of BB's job,
> or is it strictly oriented at building and installing software?
I don't want to a package structure for the purpose of installing--I want
to create a package so that my application will run at all.
>
> The second place, however, where this keyword is used, is plugins. The
> documentation is found here:
> http://developer.apple.com/technotes/tn2002/tn2071.html#Section6
> http://www.metapkg.org/wiki/12
>
> As one can see, Darwin handles "loadable libraries" differently from
> standard "shared libraries". You cannot dlopen/dlsym a normal .dylib
> (e.g. the one linked with -dynamiclib). Instead, you must link your
> plugins with -bundle flag. Such bundles have the standard extension of
> .bundle, and can be loaded on runtime (but cannot be linked against,
> to the best of my knowledge).
>
> Now, there are a number of problems with such bundles ("plugins" from
> here on, to avoid confusion) - namely, symbols resolution. For Mac OS
> 10.3 and later (MACOSX_DEPLOYMENT_TARGET environment variable must be
> set to 10.3 or higher), you can use "-bundle -undefined
> dynamic_lookup" combination. If you want your plugins to be usable on
> older versions, you must use either -bundle_loader <exefile>, or
> "-flat_namespace -undefined suppress" (not recommended).
>
> BBv1 seems to support -bundle flag, but that's about it. BBv2 should,
> IMHO, support at least "-bundle -undefined dynamic_lookup" flags.
> Which brings us to the question - how is the best way to implement it
> into BBv2?
>
> I have access to a Mac box, so if someone can give me some pointers on
> how to implement it into BBv2, I'd be happy to write, test, and submit
> a patch on it.
>
> Alo Sarv
Great! I've been working on a number of other improvements to BBv2 on the
darwin platform, mostly in the area of building "univeresal" artifacts that
will run on ppc or intel architectures. I've been trying to make time to
explain some of the needs of the darwin platform to people on this list,
but I haven't got to it yet. My latest hacks at it are at the tail of this
patchfile
<http://cvs.sourceforge.net/viewcvs.py/adobe-source/adobe-source/third_party/boost_tp/adobe/boost_1_32_0_patch_01.txt?rev=1.5&view=markup>.
Some of the messiness comes from the limitations of the 1.32.0 release of
bbv2. I expect to clean things up when we move forward. Comments welcome.
Some of the other areas that need imporvement:
* post link call to strip
* use -gfull + dead_strip instead of -g for debug symbols
* RTTI is broken unless application and all DLLs export typeinfo.
(counterintuitive visibility requirement). This is why boost::signals
maximum.cpp test won't work for DLL version of signals lib.
* support for building frameworks
* etc.
- Mat
-----BEGIN PGP SIGNATURE-----
Version: PGP Desktop 9.0.2 (Build 2424)
iQA/AwUBQvQMXBIZBaoznf65EQJxHACgn6TxBhvhpAdOzBTMIINJ9hWSClcAoLhe
BKFsba93QpBqB3+ILOJ8hwrl
=M4nI
-----END PGP SIGNATURE-----
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk