During source installation of boost-libs (link to cvs repo), I get the following at the very end of long output of bmake (make that's used in the package manager pkgsrc that I use) and build seems to fail:
...skipped <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>libboost_wave.a for lack of <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>instantiate_cpp_exprgrammar.o...
...skipped <pstage/lib>libboost_wave.a for lack of <pbin.v2/libs/wave/build/gcc-4.4.2/release/link-static/threading-multi>libboost_wave.a...
...failed updating 181 targets...
...skipped 280 targets...
*** Error code 1
Stop.
bmake: stopped in /usr/pkgsrc/devel/boost-libs
*** Error code 1
I noticed, out of thousands of output lines (full output), some lines of error repeatedly appear. I just except some (they don't occur back to back like the following):
g++: unrecognized option '-pthread'
./boost/cstdint.hpp:74: error: 'intleast8_t' in namespace '::' does not name a type
./boost/cstdint.hpp:76: error: 'uintleast8_t' in namespace '::' does not name a type
./boost/chrono/detail/inlined/posix/chrono.hpp:23: error: '::clock_gettime' has not been declared
./boost/chrono/detail/inlined/posix/chrono.hpp:36: error: '::clock_gettime' has not been declared
./boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:31: error: '::sysconf' has not been declared
./boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp:31: error: '_SC_CLK_TCK' was not declared in this scope
/usr/qnx650/host/qnx6/x86/usr/bin/ntox86-ld: cannot find -lrt
./boost/smart_ptr/detail/yield_k.hpp:123: error: 'nanosleep' was not declared in this scope
./boost/thread/pthread/timespec.hpp:84: error: '::clock_gettime' has not been declared
./boost/thread/pthread/mutex.hpp:275: error: 'boost::chrono::steady_clock' has not been declared
libs/filesystem/src/operations.cpp: In function 'bool<unnamed>::remove_directory(const boost::filesystem::path&)':
libs/filesystem/src/operations.cpp:345: error: '::rmdir' has not been declared
libs/filesystem/src/operations.cpp:348: error: '::unlink' has not been declared
libs/filesystem/src/operations.cpp:427: error: no matching function for call to 'stat::stat(const char*, stat*)'
libs/filesystem/src/operations.cpp:1003: error: '::symlink' has not been declared
```
Other boost-related packages (namely boost-headers, boost-jam, boost-docs, boost-build) are already built and installed. boost-python fails but I think it's not depended.
Using QNX 6.5.0 SDP SP1
Thank you.
Update) Responding to @Igor R's comment. Out of many stdint.h found like this:
# find /usr -iname 'stdint.h'
/usr/share/pkgsrc/archivers/gtar-base/work/tar-1.26/gnu/stdint.h
/usr/qnx650/target/qnx6/usr/include/c++/4.4.2/tr1/stdint.h
/usr/qnx650/target/qnx6/usr/include/stdint.h
/usr/include/c++/4.4.2/tr1/stdint.h
/usr/include/stdint.h
it seems to me intleast8_t is defined in /usr/include/stdint.h:
# more /usr/include/stdint.h
:
#if defined(__EXT_QNX)
/*
* These types are deprecated and applications should use the
* int_/uint_ types defined below.
*/
typedef _Intleast8t intleast8_t;
typedef _Uintleast8t uintleast8_t;
Boost assumes that QNX defines non-standard type names:
#ifdef __QNX__
// QNX (Dinkumware stdlib) defines these as non-standard names.
// Reflect to the standard names.
typedef ::intleast8_t int_least8_t;
typedef ::intfast8_t int_fast8_t;
But according to what you see in /usr/include/stdint.h, QNX already deprecated these types, and now they are defined only if __EXT_QNX is defined. So, the following ad-hoc patch to boost/cstdint.hpp could help:
9 9 # endif
10 10
11 - #ifdef __QNX__
11 + #if defined(__QNX__) && defined(__EXT_QNX)
12 12
13 13 // QNX (Dinkumware stdlib) defines these as non-standard names.
The better way, however, would be to understand since what QNX version the standard types are available, and to define more robust condition.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With