Boost IRIX build problems
Hello, I'm trying to build boost on our SGI Onyx4 and am running into some problems. I've tried looking up some documentation for configuring the build-system a bit better, but couldn't find much. I don't have the time to dig into it and find it out myself, especially since building boost isn't my ultimate goal for this exercise, so I'm hoping you can help me out here I'm getting (a lot of occurances of) three errors throughout the build: 1) the indicated type is incomplete std::basic_istream<charT> m_is; // stream for parsing numbers. Not sure about this one. Missing include somewhere or maybe SGIs STL is f00bar 2) The indicated enumeration value is out of "int" range. enum npos_type { npos = (size_type)-1 }; I assume it's the same problem as with IBMCPP. Don't know if MIPSpro can have 64-bits enums. 3) Threading is disabled: _SGI_MP_SOURCE is undefined If somebody could help me out with these, I'd be very grateful. My environment is IRIX 6.5.27 with MIPSpro 7.41, bjam 3.1.11 and I'm trying boost 1.33.0. I've modified the tools/build/v1/mipspro-tool.jam to use -64 and -mips4 as default. Probably not the way to do it, but I couldn't find the "proper" way within decent time Kind regards, Jeroen -- Jeroen Akershoek SARA - High Performance Computing & Visualization dep. tel: +31 20 5923000 fax: +31 20 6683167 Draco dormiens nunquam titillandus
On Wed, 23 Nov 2005 16:18:26 +0100, Jeroen Akershoek wrote
Hello,
I'm trying to build boost on our SGI Onyx4 and am running into some problems. I've tried looking up some documentation for configuring the build-system a bit better, but couldn't find much. I don't have the time to dig into it and find it out myself, especially since building boost isn't my ultimate goal for this exercise,
So maybe you can first say which libraries you intend to use? Many of the libraries are header-only, so for those you don't need to even take this step -- just include the headers in your source and go. That would just circumvent the whole issue. Second, if you only needed on built library (say boost.filesystem) you could just build that one and ignore the rest. You can do this by changing directory to BOOST_TOP/libs/<libname>/build and running bjam. Or you can run bjam --without-<library>
so I'm hoping you can help me out here
I'm getting (a lot of occurances of) three errors throughout the build:
Without more context I think it will be hard for us to help you track the errors down -- for example, which file is being compiled, etc...
...snip build failure details...
If somebody could help me out with these, I'd be very grateful.
My environment is IRIX 6.5.27 with MIPSpro 7.41, bjam 3.1.11 and I'm trying boost 1.33.0. I've modified the tools/build/v1/mipspro-tool.jam to use -64 and -mips4 as default. Probably not the way to do it, but I couldn't find the "proper" way within decent time
There's some docs on the build system at: http://www.boost.org/tools/build/v1/build_system.htm I'm afraid someone else will have to give you detailed advice on the build system however... Jeff
Jeff Garland wrote:
On Wed, 23 Nov 2005 16:18:26 +0100, Jeroen Akershoek wrote
So maybe you can first say which libraries you intend to use? Many of the libraries are header-only, so for those you don't need to even take this step -- just include the headers in your source and go. That would just circumvent the whole issue. Second, if you only needed on built library (say boost.filesystem) you could just build that one and ignore the rest. You can do this by changing directory to BOOST_TOP/libs/<libname>/build and running bjam. Or you can run bjam --without-<library>
I have no idea actually. I'm trying to build the VRjuggler suite and it specifies "requirements: boost" :) No specifications in the documentation either (as far as I could find). And since I'm not very keen on browsing through all the source at the moment I'll just build as much as possible
Without more context I think it will be hard for us to help you track the errors down -- for example, which file is being compiled, etc...
Yup, sorry, my bad :) First error: The indicated type is incomplete. std::basic_istream<charT> m_is; // stream for parsing numbers. boost/regex/v4/cpp_regex_traits.hpp, Line = 440 Included <istream> somewhere in the top... Second error: The indicated enumeration value is out of "int" range. enum npos_type { npos = (size_type)-1 }; boost/test/utils/basic_cstring/basic_cstring.hpp, line 60 I just used the IBM workaround for now, but maybe the enum is there for a reason? Third error: #error directive: "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE" in boost/config/requires_threads.hpp, Line = 51 Matter of finding out where to set it. I'll go through some docs again I guess.
Ok. I'll take a look at that then and see what I can figure out Thanks Jeroen -- Jeroen Akershoek SARA - High Performance Computing & Visualisation dep. tel: +31 20 5923000 fax: +31 20 6683167 Draco dormiens nunquam titillandus
Third error: #error directive: "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE" in boost/config/requires_threads.hpp, Line = 51
Matter of finding out where to set it. I'll go through some docs again I guess. add <threading>multi to the bjam infocation line under the BUILD
Jeroen Akershoek wrote: option. Kevin -- | Kevin Wheatley, Cinesite (Europe) Ltd | Nobody thinks this | | Senior Technology | My employer for certain | | And Network Systems Architect | Not even myself |
Jeroen Akershoek wrote:
1) the indicated type is incomplete std::basic_istream<charT> m_is; // stream for parsing numbers. Not sure about this one. Missing include somewhere or maybe SGIs STL is f00bar
Compiling which file?
2) The indicated enumeration value is out of "int" range. enum npos_type { npos = (size_type)-1 }; I assume it's the same problem as with IBMCPP. Don't know if MIPSpro can have 64-bits enums.
From SGIs *C* manual pages: <quote> The integer type chosen to represent the values of an enumeration type (3.5.2.2).
The int type is always used. Note: long or long long enumerations are not supported. </quote> So I assume despite an enum not being an integral type the same applies to enum in C++ I couldn't see an option to change in fact it is going to ba an ABI thing, so not changeable. #include <iostream> #include <cstddef> int main(int argc, char** argv) { int intType; long longType; enum enumType { bar = -1 }; size_t size_tType; std::cout << "sizeof(int) = " << sizeof(intType) << std::endl; std::cout << "sizeof(long) = " << sizeof(longType) << std::endl; std::cout << "sizeof(size_t) = " << sizeof(size_tType) << std::endl; std::cout << "sizeof(enum) = " << sizeof(enumType) << std::endl; return 0; } CC -o enum enum.cpp -n32 -mips4 sizeof(int) = 4 sizeof(long) = 4 sizeof(size_t) = 4 sizeof(enum) = 4 CC -o enum enum.cpp -64 -mips4 sizeof(int) = 4 sizeof(long) = 8 sizeof(size_t) = 8 sizeof(enum) = 4 I'm not sure if this holds across other 64 bit platforms/ABIs. I think the Itanium ABI allows a bitfield specifier so you can control the size indiectly as it is still placed into the smallest integral type that the width of the bitfield allows. The ARM ABI would also follow a 'smallest integral type that holds the values' so could be signed/unsigned etc. All of which suggest that the line in question is incorrect to assume the underlying type and the cast is bad... in some way.
3) Threading is disabled: _SGI_MP_SOURCE is undefined
it should be. The jam file does both that define and a link with pthreads whn compiling <threading>multi I've not tried a 64 bit build but the jam files indicate support for such things... <address-model>32 for N32 and <address-model>64 is for 64 bit <architecture>mips3 and <architecture>mips4 for selection of architecture these could be passed to the bjam line thus: bjam "-sBUILD=<address-model>64 <architecture>mips4" -sTOOLS=mipspro Kevin -- | Kevin Wheatley, Cinesite (Europe) Ltd | Nobody thinks this | | Senior Technology | My employer for certain | | And Network Systems Architect | Not even myself |
1) the indicated type is incomplete std::basic_istream<charT> m_is; // stream for parsing numbers. Not sure about this one. Missing include somewhere or maybe SGIs STL is f00bar
Looks like someone needs to include <istream> in their source maybe? Where does this occur?
2) The indicated enumeration value is out of "int" range. enum npos_type { npos = (size_type)-1 }; I assume it's the same problem as with IBMCPP. Don't know if MIPSpro can have 64-bits enums.
3) Threading is disabled: _SGI_MP_SOURCE is undefined
If somebody could help me out with these, I'd be very grateful.
I think threading support will be turned on whenever _POSIX_THREADS is defined in unistd.h, is that the case? And if not why not? Not sure if this helps, John.
participants (4)
-
Jeff Garland
-
Jeroen Akershoek
-
John Maddock
-
Kevin Wheatley