PrevUpHomeNext

Does Boost.Python work with Mac OS X?

It is known to work under 10.2.8 and 10.3 using Apple's gcc 3.3 compiler:

gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1493)

Under 10.2.8 get the August 2003 gcc update (free at http://connect.apple.com). Under 10.3 get the Xcode Tools v1.0 (also free).

Python 2.3 is required. The Python that ships with 10.3 is fine. Under 10.2.8 use these commands to install Python as a framework:

./configure --enable-framework
make
make frameworkinstall

The last command requires root privileges because the target directory is /Library/Frameworks/Python.framework/Versions/2.3. However, the installation does not interfere with the Python version that ships with 10.2.8.

It is also crucial to increase the stacksize before starting compilations, e.g.:

limit stacksize 8192k

If the stacksize is too small the build might crash with internal compiler errors.

Sometimes Apple's compiler exhibits a bug by printing an error like the following while compiling a boost::python::class_<your_type> template instantiation:

.../inheritance.hpp:44: error: cannot
  dynamic_cast `p' (of type `struct cctbx::boost_python::<unnamed>::add_pair*
  ') to type `void*' (source type is not polymorphic)

We do not know a general workaround, but if the definition of your_type can be modified the following was found to work in all cases encountered so far:

struct your_type
{
  // before defining any member data
#if defined(__MACH__) &amp;&amp; defined(__APPLE_CC__) &amp;&amp; __APPLE_CC__ == 1493
  bool dummy_;
#endif
  // now your member data, e.g.
  double x;
  int j;
  // etc.
};

PrevUpHomeNext