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> |