|
Boost : |
From: Daryle Walker (darylew_at_[hidden])
Date: 2008-08-24 14:46:33
I started out making a group Boost project for Xcode, so I can
compile Boost.Test and S11N just once and include them in my other
projects. Then I wondered how far can I take this.
1. I tried including all the sources in the libs/ directory.
2. It seems that there is source code in the detail, function-types,
and smart_ptr that we don't really need, so I've now excluded it.
(The function-types one needed the Wave _tool_ to be created, so I
really hope it's not needed.)
3. Just like Linux has various package installers (apt-get, etc.),
so does Mac OS X. I originally had Fink, but switched to MacPorts.
Dowloaded packages include: bzip2, docbook, doxygen, expat, fop,
ghostscript, graphviz, icu, libxml1, openmpi, subversion, texlive,
and zlib.
4. I generally have one static library file for each Boost library.
For libraries that need another, I made the corresponding targets
dependencies, but I didn't link the results together.
5. The test library gets three static libraries. They all include a
"main" or something like it, so I'll probably make a custom fourth
library for a grand Boost library file.
6. The graph library has extra support for Expat, which I included
from MacPorts. Should I leave that out for a publicly distributed
grand Boost library file, since I can't guarantee a general user
having it?
7. The iostreams library has extra support for bzip2 and zlib, which
I originally included from MacPorts. I realized that my system (Mac
OS X 10.4, PowerPC) includes copies of those libraries and headers,
so I switched to those. This means that I can safely include them in
a grand Boost library, right?
8. I left out the long-double versions of the math functions because
they're disabled on my system. Should I try (conditionally?)
including them on Intel-builds since I think they're supported
there? How do I do that?
9. I have the MPI library built because I have OpenMPI through
MacPorts. Should I leave that out of a grand Boost library?
10. For the Python library, I tried connecting to the OS's
Python.framework.
11. Because of [9] and [10], I made the MPI-Python library too. I
guess its status for a grand Boost library depends on the answer for
[9].
12. Does anyone have any idea how to create a Python extension? I
did a very quick read of the docs and couldn't get it. So I just
made a shared library for the MPI extension for Python and included
the applicable static libraries and framework. (It seems you are
supposed to use a special Python script, and _never_ manually.)
Since I made a final product, I had to link in my static libraries
for MPI, Python, MPI-Python, and S11N, then link the OpenMPI
libraries from MacPorts, then the system's Python framework, then a
surprise need for some Open libraries also from MacPorts.
13. For the regex library, I defined having ICU, and included it from
MacPorts. Should I leave out ICU support in a grand Boost library?
Actually, I think the system has buried copies of Expat and ICU, but
I don't know how to reach them, or if it's even possible.
Maybe I should try making a framework of all of Boost, modulo the
answers on what I should include above. Should I somehow include
object-code for the parts of the Test library that bring a "main"?
Or do I have to tell the user to get the framework, then download
regular Boost to build what's needed for Testing (or MPI, MPI/Python,
Graph/Expat, or Regex/ICU)?
I think I would have to make a "boost/boost.hpp" overall header to be
the focal point of the framework, which may be a good idea to create
anyway. How would I test it? Hmm, would anyone here like to take a
challenge to create a program that uses ALL of Boost, so every symbol
gets exercised?
-- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk