
At 13:00 2007-03-20, David Deakins wrote:
Vladimir Prus wrote:
Victor, can you remove bin.v2/libs/iostream directory so that we have a clean run?
got that part done....
Victor, after you've cleared out bin.v2/libs/iostream and before you start the new test run, can you also locate the libbz2.DEF file in the bzip2 library sources and comment out the line with the LIBRARY directive like this:
looking for the file now
; LIBRARY LIBBZ2
David, you mentioned that manual work is required to tweak DEF file for bz2, is there no way around that? If so, would you be able to post a doc patch, or would rather like somebody else do it?
I spent a little while trying to come up with an alternative to having to modify the libbz2.DEF file but I wasn't successful at doing it. The other path to fix this issue would be to make sure that the iostreams jamfile creates the bzip2 DLL with a name of libbz2.DLL (which is the standard name for it) rather than a name like boost_bzip2-vc80-mt-gd-1_34.DLL. I could get the first part of the name to change to libbz2 instead of boost_bzip2, but I wasn't able to figure out how to turn off the compiler-related decorations at the end. After reflecting on it further, I wasn't sure if turning off those tags was the right thing to do (if I actually knew how to do it) since that would mean all builds of boost_iostreams (potentially with different compilers and compiler options) would try to link to the same libbz2 file. That may not be a big deal in this case, but I wasn't sure, so I stuck with the somewhat ugly option of just changing the bzip2 DEF file. Perhaps someone with better Boost.Build knowledge and insight into the iostreams/bzip2 inner workings might be able to make the other path work. In case we stay with modifying the DEF file, I attached a patch for the iostreams/doc/installation.html file describing the modification.
Thanks, -Dave
Index: installation.html =================================================================== RCS file: /cvsroot/boost/boost/libs/iostreams/doc/installation.html,v retrieving revision 1.8.2.1 diff -u -r1.8.2.1 installation.html --- installation.html 7 Jan 2007 22:40:33 -0000 1.8.2.1 +++ installation.html 20 Mar 2007 18:37:03 -0000 @@ -81,6 +81,15 @@ <P> On most UNIX systems, it should not be necessary to set any of these variables, since the zlib and libbz2 headers and binaries are already installed in locations where they will be found automatically. On Windows, the zlib and bzip2 filters are disabled by default; to enable support for these filters, you will need to set variables indicating the location of the source files, if building from the source, or the location of the headers and binaries, if using pre-built binaries. </P> +<P> + NOTE: When building the bzip2 library from the source as a DLL on Windows, a small change needs to be made in the bzip2 source files. As of version 1.0.4 of bzip2, a libbz2.DEF file is used to indicate the exported functions for Windows builds. This file also contains a line with a LIBRARY directive indicating the standard library name of LIBBZ2. Since the Boost.Build jamfiles prefer to build the bzip2 library with a boost_bzip2 name, there is a conflict with this LIBRARY directive. To allow the boost_iostreams DLL to successfully find the bzip2 DLL with its boost_bzip2 name, the LIBRARY directive line in libbz2.DEF should be commented out by placing a semicolon at the beginning of the line as follows: +</P> +<P> + ; LIBRARY LIBBZ2 +</P> +<P> + With this change to the DEF file, Boost.Build should be able to successfully generate a DLL version of the bzip2 library from its sources. +</P>
<TABLE STYLE="margin-bottom:1em" BORDER="1" CELLPADDING="6" CELLSPACING="1"> <TR>
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Victor A. Wagner Jr. http://rudbek.com The five most dangerous words in the English language: "There oughta be a law"