Opened 13 years ago

Closed 8 years ago

#3669 closed Patches (wontfix)

UINTMAX_C not defined by boost/cstdint.hpp

Reported by: mloskot <mateusz@…> Owned by: John Maddock
Milestone: Boost 1.42.0 Component: config
Version: Boost Development Trunk Severity: Problem
Keywords: Cc:

Description

In file [source:trunk/libs/thread/src/pthread/once.cpp@43799#L16 libs/thread/src/pthread/once.cpp:16] standard macro UINTMAX_C is used, but stdint.h header is not included.

This causes compilation error when building using Comeau with GCC on Linux 32-bit (Ubuntu 9.04):

mloskot@vb-ubuntu904:~/dev/boost/_svn/trunk/libs/thread/build$ colorbb --v2 link=static
...patience...
...found 519 targets...
...updating 2 targets...
como-linux.compile.c++ ../../../bin.v2/libs/thread/build/como-linux/debug/link-static/threading-multi/pthread/once.o
Comeau C/C++ 4.3.10.1 (May  7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
Copyright 1988-2008 Comeau Computing.  All rights reserved.
MODE:non-strict warnings C++ noC++0x_extensions

"../../../libs/thread/src/pthread/once.cpp", line 16: error: identifier
          "UINTMAX_C" is undefined
          BOOST_THREAD_DECL boost::uintmax_t once_global_epoch=UINTMAX_C(~0);
                                                               ^

1 error detected in the compilation of "../../../libs/thread/src/pthread/once.cpp".

    como -tused -c --long_long  -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -D_GNU_SOURCE -D_REENTRANT --no_inlining -O0 -g --exceptions -I"../../.."   -o "../../../bin.v2/libs/thread/build/como-linux/debug/link-static/threading-multi/pthread/once.o" "../../../libs/thread/src/pthread/once.cpp" 2>&1

...failed como-linux.compile.c++ ../../../bin.v2/libs/thread/build/como-linux/debug/link-static/threading-multi/pthread/once.o...
...skipped <p../../../bin.v2/libs/thread/build/como-linux/debug/link-static/threading-multi>libboost_thread.a for lack of <p../../../bin.v2/libs/thread/build/como-linux/debug/link-static/threading-multi>pthread/once.o...
...failed updating 1 target...
...skipped 1 target...

By the way, you may notice that I call como compiler with two extra macros defined:

-D_GNU_SOURCE -D_REENTRANT

They are required to enable C99 and POSIX features for como toolset. I added them to build/Jamfile.v2. However, I'm not including this changes in the patch, because I'm still testing it to confirm it's the right solution. I posted detailed explanation to ml as First results using Comeau C/C++ compiler thread.

Attachments (1)

boost-thread-stdint_h-header.patch (458 bytes ) - added by mloskot <mateusz@…> 13 years ago.
Patch that adds missing stdint.h header

Download all attachments as: .zip

Change History (4)

by mloskot <mateusz@…>, 13 years ago

Patch that adds missing stdint.h header

comment:1 by Anthony Williams, 12 years ago

Component: threadinteger
Owner: changed from Anthony Williams to Daryle Walker
Summary: Missing stdint.h header from pthread/once.cppUINTMAX_C not defined by boost/cstdint.hpp

libs/thread/src/pthread/once.cpp relies on boost/cstdint.hpp providing UINTMAX_C for initializing a variable of type boost::uintmax_t. Apparently this is not provided for Comeau+gcc on Ubuntu.

comment:2 by viboes, 8 years ago

Component: integerconfig
Owner: changed from Daryle Walker to John Maddock

comment:3 by John Maddock, 8 years ago

Resolution: wontfix
Status: newclosed

The macro is defined only when BOOST__STDC_CONSTANT_MACROS_DEFINED is set prior to the #include - exactly as documented.

Note: See TracTickets for help on using tickets.