Volunteer request: CMake-based build system for Boost

A small group of volunteers has been working on a new build system for Boost based on CMake, a cross-platform, open-source build system. We have reached the point where our core build system has become relatively stable, and we are requesting volunteers to help us improve the build system further by improving the documentation, implementing new features, porting the system to other platforms, etc. We are most interested in volunteers who are: * Willing to learn the CMake build system and the Boost-specific macros we have built for CMake * Interested in the technical challenges of building, testing, and deploying Boost * Able to test on a variety of platforms and compilers * Willing to write as much documentation as code (or more!) * Unwilling to participate in build-system flame wars Anyone interested in joining this effort should read about CMake and our CMake-based build system for Boost (links below), then join the Boost-CMake mailing list (also below). To get a sense of the kind of deployment options we would like CMake to provide in the future, please download the CMake-generated binary installer for Windows, linked below, and direct comments to the Boost-CMake mailing list. Please note that we are not proposing to replace the existing bjam- based build system in Boost. The CMake-based build system will be developed alongside the existing build system. We will not speculate regarding any future Boost policy decisions regarding build systems. Useful links: CMake: http://www.cmake.org Boost-CMake documentation: http://svn.boost.org/trac/boost/wiki/CMake Boost-CMake mailing list: http://lists.boost.org/mailman/listinfo.cgi/boost-cmake Binary installer for Windows: http://www.osl.iu.edu/~dgregor/boost-1.35.1-vc8.exe - Doug

Hi! Doug Gregor schrieb:
Please note that we are not proposing to replace the existing bjam- based build system in Boost. The CMake-based build system will be developed alongside the existing build system. We will not speculate regarding any future Boost policy decisions regarding build systems.
Does that mean a C++ implementation of bjam is still wanted as stated here http://svn.boost.org/trac/boost/roadmap ? Frank

Frank Birbacher wrote:
Does that mean a C++ implementation of bjam is still wanted as stated here http://svn.boost.org/trac/boost/roadmap ?
Yes. Not that the date is indicative of an actual delivery date though ;-) -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org (msn) - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim,yahoo,skype,efnet,gmail

Frank Birbacher wrote:
Hi!
Doug Gregor schrieb:
Please note that we are not proposing to replace the existing bjam- based build system in Boost. The CMake-based build system will be developed alongside the existing build system. We will not speculate regarding any future Boost policy decisions regarding build systems.
Does that mean a C++ implementation of bjam is still wanted as stated here http://svn.boost.org/trac/boost/roadmap ?
I think so, although Python port of Boost.Build makes many of shortcomings of the current bjam no longer important. And of course, volunteers with that project are also welcome, see: http://zigzag.cs.msu.su/boost.build/wiki/PythonPort - Volodya

Doug Gregor wrote at [boost]:
We are most interested in volunteers who are: * Willing to learn the CMake build system and the Boost-specific macros we have built for CMake * Interested in the technical challenges of building, testing, and deploying Boost * Able to test on a variety of platforms and compilers * Willing to write as much documentation as code (or more!) * Unwilling to participate in build-system flame wars
Yes, I'm willing to be a volunteer. I must admit I'm still a beginner on CMake. A few of my collegues at LKEB certainly know more about CMake than I do. But I'm pretty sure they can help me out, when needed... :-) Kind regards, -- Niels Dekker http://www.xs4all.nl/~nd/dekkerware Scientific programmer at LKEB, Leiden University Medical Center

Hello Doug, there are some links that do not work: http://www.osl.iu.edu/~dgregor/boost-1.35.1-vc8.exe Not Found The requested URL /~dgregor/boost-1.35.1-vc8.exe was not found on this server. In Boost-CMake documentation: http://svn.boost.org/trac/boost/wiki/CMake there are a lot of references to http://svn.boost.org/svn/boost/sandbox-branches/boost-cmake/boost_1_34_0/ but address do not exists Not Found The requested URL /svn/boost/sandbox-branches/boost-cmake/boost_1_34_0/tools/build/CMake/FindICU.cmake was not found on this server. Instead I have found this http://svn.boost.org/svn/boost/branches/CMake/Boost_1_35_0/ Best regards Vicente Juan Botet Escriba ----- Original Message ----- From: "Doug Gregor" <dgregor@osl.iu.edu> To: "Boost mailing list" <boost@lists.boost.org> Sent: Friday, May 23, 2008 9:48 PM Subject: [boost] Volunteer request: CMake-based build system for Boost
A small group of volunteers has been working on a new build system for Boost based on CMake, a cross-platform, open-source build system. We have reached the point where our core build system has become relatively stable, and we are requesting volunteers to help us improve the build system further by improving the documentation, implementing new features, porting the system to other platforms, etc. We are most interested in volunteers who are:
* Willing to learn the CMake build system and the Boost-specific macros we have built for CMake * Interested in the technical challenges of building, testing, and deploying Boost * Able to test on a variety of platforms and compilers * Willing to write as much documentation as code (or more!) * Unwilling to participate in build-system flame wars
Anyone interested in joining this effort should read about CMake and our CMake-based build system for Boost (links below), then join the Boost-CMake mailing list (also below). To get a sense of the kind of deployment options we would like CMake to provide in the future, please download the CMake-generated binary installer for Windows, linked below, and direct comments to the Boost-CMake mailing list.
Please note that we are not proposing to replace the existing bjam- based build system in Boost. The CMake-based build system will be developed alongside the existing build system. We will not speculate regarding any future Boost policy decisions regarding build systems.
Useful links: CMake: http://www.cmake.org Boost-CMake documentation: http://svn.boost.org/trac/boost/wiki/CMake Boost-CMake mailing list: http://lists.boost.org/mailman/listinfo.cgi/boost-cmake Binary installer for Windows: http://www.osl.iu.edu/~dgregor/boost-1.35.1-vc8.exe
- Doug _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

vicente.botet wrote:
Hello Doug,
there are some links that do not work: http://www.osl.iu.edu/~dgregor/boost-1.35.1-vc8.exe Not Found The requested URL /~dgregor/boost-1.35.1-vc8.exe was not found on this server.
That's http://www.osl.iu.edu/~dgregor/Boost-1.35.0-vc8.exe
In Boost-CMake documentation: http://svn.boost.org/trac/boost/wiki/CMake there are a lot of references to http://svn.boost.org/svn/boost/sandbox-branches/boost-cmake/boost_1_34_0/
but address do not exists Not Found The requested URL /svn/boost/sandbox-branches/boost-cmake/boost_1_34_0/tools/build/CMake/FindICU.cmake was not found on this server.
Thanks Vincente. I'll have a look.
Instead I have found this
That's the correct one. Cheers, -t

On May 24, 2008, at 7:58 AM, troy d. straszheim wrote:
Instead I have found this
That's the correct one.
Or, for the bleeding edge, http://svn.boost.org/svn/boost/branches/CMake/release/ - Doug

Hi Doug, Thanks for all the work on this. On 05/23/08 14:48, Doug Gregor wrote: [snip]
Anyone interested in joining this effort should read about CMake and our CMake-based build system for Boost (links below), then join the Boost-CMake mailing list (also below). To get a sense of the kind of deployment options we would like CMake to provide in the future, please download the CMake-generated binary installer for Windows, linked below, and direct comments to the Boost-CMake mailing list. [snip] Useful links: CMake: http://www.cmake.org Boost-CMake documentation: http://svn.boost.org/trac/boost/wiki/CMake Boost-CMake mailing list: http://lists.boost.org/mailman/listinfo.cgi/boost-cmake [snip]
I got to the page: http://svn.boost.org/trac/boost/wiki/CMakeBuildFeatures from a link on: http://svn.boost.org/trac/boost/wiki/CMake with name: * Tune the CMake build configuration (verbosity, tests, variants)? However, nothing on CMakeBuildFeatures mentions how to specify which compiler *variant* to use. Also, http://svn.boost.org/trac/boost/wiki/CMakeBuildConfiguration mentions ccmake without any link explaining where to get it. Also on CMakeBuildConfiguration there's: On unix, run ccmake <path-to-source> or ccmake <path-to-build> but no explanation of why there's two ways to do what, at this point in the docs, appears to be the same thing. Only later, at the phrase: The same information is stored in a file CMakeCache.txt located in the build directory. This is what ccmake reads if it is started pointing to a build directory. is the reason for the 2nd cmake command obvious; however, it would be clearer to say run: ccmake <path-to-source> the first time, and then you can run: ccmake <path-to-build> -regards, Larry

Hi Larry, On Sat, 2008-05-24 at 08:36 -0500, Larry Evans wrote:
I got to the page: http://svn.boost.org/trac/boost/wiki/CMakeBuildFeatures from a link on: http://svn.boost.org/trac/boost/wiki/CMake with name: * Tune the CMake build configuration (verbosity, tests, variants)? However, nothing on CMakeBuildFeatures mentions how to specify which compiler *variant* to use.
Compiler variant? Do you mean specifying a specific compiler or changing the compilation options?
Also, http://svn.boost.org/trac/boost/wiki/CMakeBuildConfiguration mentions ccmake without any link explaining where to get it.
Good, thanks. We should revise this introduction to point users at "cmake-gui", which is the graphical configuration utility available on most Unix variants. "ccmake" is still there, of course, but the Qt cmake-gui is nicer. (This is now ticket 1945 in the Trac)
Also on CMakeBuildConfiguration there's:
On unix, run
ccmake <path-to-source>
or
ccmake <path-to-build>
but no explanation of why there's two ways to do what, at this point in the docs, appears to be the same thing. Only later, at the phrase:
The same information is stored in a file CMakeCache.txt located in the build directory. This is what ccmake reads if it is started pointing to a build directory.
is the reason for the 2nd cmake command obvious; however, it would be clearer to say run:
ccmake <path-to-source>
the first time, and then you can run:
ccmake <path-to-build>
Good point, thanks! I've done some editing to the wiki page, but of course anyone is free to go and try to clarify this documentation further. - Doug

Douglas Gregor wrote:
Hi Larry,
On Sat, 2008-05-24 at 08:36 -0500, Larry Evans wrote:
I got to the page: http://svn.boost.org/trac/boost/wiki/CMakeBuildFeatures from a link on: http://svn.boost.org/trac/boost/wiki/CMake with name: * Tune the CMake build configuration (verbosity, tests, variants)? However, nothing on CMakeBuildFeatures mentions how to specify which compiler *variant* to use.
Compiler variant? Do you mean specifying a specific compiler or changing the compilation options?
Page updated to make 'how to set the compiler' more prominent... -t

On 05/24/08 09:50, Douglas Gregor wrote: [snip]
Good, thanks. We should revise this introduction to point users at "cmake-gui", which is the graphical configuration utility available on most Unix variants. A cmake-gui RPM is at:
http://rpmfind.net/linux/rpm2html/search.php?query=cmake-gui [snip]

On 05/24/08 21:03, Larry Evans wrote:
On 05/24/08 09:50, Douglas Gregor wrote: [snip]
Good, thanks. We should revise this introduction to point users at "cmake-gui", which is the graphical configuration utility available on most Unix variants. A cmake-gui RPM is at:
http://rpmfind.net/linux/rpm2html/search.php?query=cmake-gui
[snip]
Since I'm on a debian system, I converted the rpm to deb with aliend and installed it; however, when I tried to use it, the window kept disappearing whenever I pressed the 'Configure' button.

On 05/25/08 10:09, Larry Evans wrote:
On 05/24/08 21:03, Larry Evans wrote:
On 05/24/08 09:50, Douglas Gregor wrote: [snip]
Good, thanks. We should revise this introduction to point users at "cmake-gui", which is the graphical configuration utility available on most Unix variants. A cmake-gui RPM is at:
http://rpmfind.net/linux/rpm2html/search.php?query=cmake-gui
[snip]
Since I'm on a debian system, I converted the rpm to deb with aliend and installed it; however, when I tried to use it, the window kept disappearing whenever I pressed the 'Configure' button.
So, I resorted to ccmake. In buid directory, did: ccmake ../src and only option was: CMAKE_BACKWARDS_COMPATIBILITY 3.4 do, did configure and got error message: CMake Error: This project requires version 2.6.0 of CMake. You are running version 2.4.7. So, downloaded and installed cmake-2.6.0 from: http://www.cmake.org/files/v2.6/cmake-2.6.0.tar.gz did which to make sure I was getting right one and it was the one in /usr/local/bin instead of the one in /usr/bin. Then tried ccmake again, but got same error about version 2.4.7 instead of 2.6.0. What should I do?

Am Sonntag 25 Mai 2008 19:34:50 schrieb Larry Evans:
On 05/25/08 10:09, Larry Evans wrote: So, I resorted to ccmake. In buid directory, did:
ccmake ../src
and only option was:
CMAKE_BACKWARDS_COMPATIBILITY 3.4
Somehow you messed up you build-tree configuration. Just delete the build dir, create it again, change into it and run ccmake ../src -- Maik

On 05/25/08 13:15, Maik Beckmann wrote:
Am Sonntag 25 Mai 2008 19:34:50 schrieb Larry Evans:
On 05/25/08 10:09, Larry Evans wrote: So, I resorted to ccmake. In buid directory, did:
ccmake ../src
and only option was:
CMAKE_BACKWARDS_COMPATIBILITY 3.4
Somehow you messed up you build-tree configuration. Just delete the build dir, create it again, change into it and run ccmake ../src
-- Maik Thanks. That prompted me to look further and I realized I should have done:
ccmake ../../src instead. Now it's working.

On 05/25/08 15:45, Larry Evans wrote:
On 05/25/08 13:15, Maik Beckmann wrote: [snip] Thanks. That prompted me to look further and I realized I should have done:
ccmake ../../src
instead. Now it's working.
The page: http://svn.boost.org/trac/boost/wiki/CMakeBuildConfiguration says the following under the bolded CMakeCache.txt title: <--- cut here --- The same information is stored in a file CMakeCache.txt located in the build directory. For this reason, after you've done the initial configuration of a build directory you can invoke ccmake like this: ccmake <path-to-build> or have the makefiles do it for you: make edit_cache The CMakeLists.txt file is hand-editable, though this is usually not as convenient as the cmake-supplied configuration tools mentioned above. An excerpt of this file: // // Enable/Disable color output during build. // CMAKE_COLOR_MAKEFILE:BOOL=ON // // Use versioned library names, e.g., boost_filesystem-gcc41-1_34 // BUILD_VERSIONED:BOOL=ON
--- cut here ---
The CMakeCache.txt title indicates the filename is CMakeCache.txt(which is only in the build directory); yet, the text mentions CMakesLists.txt (which is only in the source directory). Since the string ':BOOL' only occurs in the CMakeCache.txt, I assume the phrase: CMakeLists.txt file is hand-editable on the above page should be: CMakeCache.txt file is hand-editable However, even in CMakeCache.txt there was no BUILD_VERSIONED:BOOL. OTOH, apparently the flag is ON because when I ran make, the library names in the build directory included: libboost_date_time-gcc41-1_35_1.so.1.35.1 ^^^^^ and I did specify g++-4.1. So, is the BUILD_VERSIONED flag no longer valid or is there some other way to set it? -regards, Larry

Am Montag 26 Mai 2008 15:52:55 schrieb Larry Evans:
On 05/25/08 15:45, Larry Evans wrote:
On 05/25/08 13:15, Maik Beckmann wrote:
[snip]
Thanks. That prompted me to look further and I realized I should
have done:
ccmake ../../src
instead. Now it's working.
The page:
http://svn.boost.org/trac/boost/wiki/CMakeBuildConfiguration
says the following under the bolded CMakeCache.txt title:
<--- cut here --- The same information is stored in a file CMakeCache.txt located in the build directory. For this reason, after you've done the initial configuration of a build directory you can invoke ccmake like this:
ccmake <path-to-build>
or have the makefiles do it for you:
make edit_cache
The CMakeLists.txt file is hand-editable, though this is usually not as convenient as the cmake-supplied configuration tools mentioned above. An excerpt of this file:
// // Enable/Disable color output during build. // CMAKE_COLOR_MAKEFILE:BOOL=ON
// // Use versioned library names, e.g., boost_filesystem-gcc41-1_34 // BUILD_VERSIONED:BOOL=ON
--- cut here ---
The CMakeCache.txt title indicates the filename is CMakeCache.txt(which is only in the build directory); yet, the text mentions CMakesLists.txt (which is only in the source directory). Since the string ':BOOL' only occurs in the CMakeCache.txt, I assume the phrase:
CMakeLists.txt file is hand-editable
on the above page should be:
CMakeCache.txt file is hand-editable
right!
However, even in CMakeCache.txt there was no BUILD_VERSIONED:BOOL. OTOH, apparently the flag is ON because when I ran make, the library names in the build directory included:
libboost_date_time-gcc41-1_35_1.so.1.35.1 ^^^^^
and I did specify g++-4.1.
So, is the BUILD_VERSIONED flag no longer valid or is there some other way to set it?
-regards, Larry
Please forward your message to the boost-cmake ML. Thanks, -- Maik

Good news! Switching to CMake was discussed in soci mailing list, and i made preliminary version of cmake-based build system for it -- With best wishes, Alex Ott, MBA http://alexott.blogspot.com/ http://xtalk.msk.su/~ott/ http://alexott-ru.blogspot.com/
participants (11)
-
Alex Ott
-
Doug Gregor
-
Douglas Gregor
-
Frank Birbacher
-
Larry Evans
-
Maik Beckmann
-
Niels Dekker - mail address until 2008-12-31
-
Rene Rivera
-
troy d. straszheim
-
vicente.botet
-
Vladimir Prus