Index

Version 9 (Jeff Koftinoff, 07/14/2009 09:28 pm)

1 1
h1. jdksboost
2 1
3 8 Jeff Koftinoff
This is J.D. Koftinoff Software, Ltd's modifications of the indispensable, freshly released boost version 1.39.0 c++ library from http://www.boost.org/
4 1
5 3 Jeff Koftinoff
This version only changes minimal source code from the boost trunk.  The objective of the changes to boost is purely to re-arrange the source files so that a simpler build system can be used.  
6 1
7 6 Jeff Koftinoff
Boost is very easy to use if you only need libraries that are *header only* - But for any non-trivial libraries like boost.thread or boost.asio, you must build library files.  
8 3 Jeff Koftinoff
9 3 Jeff Koftinoff
Each boost sublibrary must be made into it's own archive because of file naming conflicts between cpp files in each library.
10 1
11 6 Jeff Koftinoff
The current standard for building the library files for boost involves a build tool called *bjam* which is powerful but not easily integrated into the other build environments that I needed.
12 6 Jeff Koftinoff
13 1
I decided that for some tools, like Microsoft Visual Studio and iphone and Mac OS X leopard, I really needed all of boost to be compiled by the same IDE project management tool so that I could make sure that all the various compile and linker options were applied correctly between the libraries and my main project.  The boost libraries typically wanted to generated DLL's or .so files for dynamic linking even though these libraries are quite small and just fine to include as a static library.  I also wanted to be able to easily have full access to the IDE based debugging tools of my main applications which may require compiler options that are not so straightforward to put into *bjam*
14 8 Jeff Koftinoff
15 8 Jeff Koftinoff
h2. Getting Started
16 6 Jeff Koftinoff
17 1
You can always get the latest version via svn via the command line:
18 1
19 1
  svn co http://opensource.jdkoftinoff.com/jdksboost/svn/trunk jdksboost
20 9 Jeff Koftinoff
  cd jdksboost
21 9 Jeff Koftinoff
  ls scripts
22 9 Jeff Koftinoff
  ./scripts/configure-linux-release.sh
23 9 Jeff Koftinoff
  make 
24 1
25 9 Jeff Koftinoff
26 6 Jeff Koftinoff
In the svn repository is a bash script, *create_jdksboost.sh*, which is what generated the original jdksboost release directly from an original untouched boost release.
27 1
28 1
The original, untouched version of boost is available as a branch:
29 1
30 3 Jeff Koftinoff
  svn co http://opensource.jdkoftinoff.com/jdksboost/svn/branches/boost_1_39_0
31 1
32 5 Jeff Koftinoff
The project utilizes my MagicMake system ( see http://opensource.jdkoftinoff.com/project/wiki/magicmake/Index ) to compile the project on posix/unix/macosx/linux based systems with g++. 
33 3 Jeff Koftinoff
34 4 Jeff Koftinoff
The purpose of this is not 'just another build system' but a convention based project layout which makes it easy to compile from the command line and easy to create a project file for any IDE. Basically, in the 'src' directory are *.cpp* files to be compiled and in the **include** directory are *.hpp* files for the include path.  Because some boost libraries have special considerations like win32 specific or posix specific or python specific, these *.cpp* files are placed in subdirectories in the *src* directory.
35 3 Jeff Koftinoff
36 3 Jeff Koftinoff
For instance if you wanted to compile all the normal boost libraries and the posix platform specific libraries as well, you could get by with just a single command line like:
37 3 Jeff Koftinoff
38 3 Jeff Koftinoff
  g++ -I include src/*.cpp src/posix/*.cpp
39 3 Jeff Koftinoff
40 3 Jeff Koftinoff
41 3 Jeff Koftinoff
There are also project files for Visual Studio 2005, Visual Studio 2008, Mac OS X Leopard four-way universal, Apple iPhone, and a .pro file for TrollTech's QMake/QtCreator.
42 3 Jeff Koftinoff
43 7 Jeff Koftinoff
All build systems and project files build a static library. On posix systems, the library is called *libjdksboost.a* and on windows it is *jdksboost.lib*.
44 9 Jeff Koftinoff
45 9 Jeff Koftinoff
.h2 Changes from boost v1.39.0
46 1
47 3 Jeff Koftinoff
Other minor changes were added to boost:
48 3 Jeff Koftinoff
49 4 Jeff Koftinoff
 * All documentation, examples, and tests have been removed. 
50 3 Jeff Koftinoff
 * Patches from the boost trunk (1.39.0) up to and including the bugfixes in revision 54914 are integrated.
51 3 Jeff Koftinoff
 * TinyJSON from http://blog.beef.de/2008/01/04/tinyjson/ was integrated
52 3 Jeff Koftinoff
 * Win32 platforms default to _WIN32_WINNT aka WINVER set to 0x501 which means windows XP minimum target.
53 1
 * All boost libraries are statically linked.
54 3 Jeff Koftinoff
 * long doubles are not properly supported on PPC targets, so all math functions suffixed by 'l' are disabled by default unless JDKSBOOST_HAS_LONG_DOUBLE is defined.
55 1
 * Apple iPhone targets are supported with an XCode 3.1.3 static library target.
56 3 Jeff Koftinoff
 * Endian and long double changes to boost to allow compilation for iPhone hardware as well as the iPhone simulator target.
57 3 Jeff Koftinoff
58 6 Jeff Koftinoff
All of this code and my minor changes are released under the *boost software license*, for more information on the license see:
59 1
60 1
 * http://www.boost.org/users/license.html
61 6 Jeff Koftinoff
62 6 Jeff Koftinoff
For a list of all the changesets I applied to boost, see:
63 6 Jeff Koftinoff
64 6 Jeff Koftinoff
 * http://opensource.jdkoftinoff.com/project/repositories/revisions/jdksboost
65 1
66 1
For more information, contact Jeff Koftinoff <jeffk@jdkoftinoff.com>