help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ICU 3.2 - build failure of ustream.cpp on IRIX with gcc 3.3 questions


From: waspswarm
Subject: ICU 3.2 - build failure of ustream.cpp on IRIX with gcc 3.3 questions
Date: 18 Nov 2004 10:41:30 -0800
User-agent: G2/0.2

Hello,

I have been trying to build the icu (International Components for
Unicode - http://www-124.ibm.com/icu/index.html) on my IRIX 6.5.23m
system. As you may or may not know, it is a component of OpenOffice
and initially I was seeing the build failure described below with the
version OpenOffice uses (icu 2.6 or 2.8) when trying to build OOo with
gcc3. I then went to IBM's website and pulled more current source (for
icu 3.2) but still see the same problem.

I have been doing some more digging and would like to solicit feedback
on the best way to proceed.

In order to avoid extra confusion I should mention that on this system
/usr/local/bin is a symbolic link to /usr/freeware/bin.

First, here is the tail of the build log,
...
/usr/local/bin/gcc -D_REENTRANT -D_PTHREADS -I../common -I../common
-I../i18n -D_REENTRANT  -DU_IO_IMPLEMENTATION -g -O2  -c  -shared -o
sprintf.o sprintf.c
/usr/local/bin/gcc -D_REENTRANT -D_PTHREADS -I../common -I../common
-I../i18n -D_REENTRANT  -DU_IO_IMPLEMENTATION -g -O2  -c  -shared -o
sscanf.o sscanf.c
/usr/local/bin/g++ -D_REENTRANT -D_PTHREADS -I../common -I../common
-I../i18n -D_REENTRANT  -DU_IO_IMPLEMENTATION -g -O2  -c  -shared -o
ustream.o ustream.cpp
In file included from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include
/c++/bits/ios_base.h:45,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include
/c++/ios:49,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include
/c++/ostream:45,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include
/c++/iostream:45,
from unicode/ustream.h:28,
from ustream.cpp:18:
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/
bits/atomicity.h: In
function `_Atomic_word __exchange_and_add(_Atomic_word*, int)':
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/
bits/atomicity.h:40: error: `
test_then_add' undeclared (first use this function)
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/
bits/atomicity.h:40: error: (Each undeclared identifier is reported
only once for each function it appears in.)
gmake[1]: *** [ustream.o] Error 1
gmake[1]: Leaving directory `/usr/people/scott/src/icu/source/io'
gmake: *** [all-recursive] Error 2
$

I did some investigation and the file,
/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/ios_base.h
does have a #include <bits/atomicity.h> at line 45.

The file,
/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/atomicity.h

has a #include <mutex.h> at line 33.

Curiously enough though, I couldn't find a mutex.h in the gcc-lib
subdirectories. The only one is /usr/include/mutex.h.

I also noticed that icu provides their own mutex.h in source/common/
(this file ustream.cpp is in source/io). I wondered if the preprocessor
was including this header instead of the /usr/include/mutex.h? I
additionally tried forcing the include path to have /usr/include
first,

$ g++ -D_REENTRANT -D_PTHREADS -I/usr/include -I../common -I../common
-I../i18n -DU_IO_IMPLEMENTATION -g -O2 -c -shared -o ustream.o
ustream.cpp

but this fails with the same undeclared identifier error
(test_then_add). I then of course read the manual page for gcc and saw
(I know I should have read the manual first),

-I dir
Add the directory dir to the list of directories to be
searched for
header files.  Directories named by -I are searched before
the
standard system include directories.  If the directory d r
is a
standard system include directory, the option is ignored to
ensure
that the default search order for system directories and the
spe-
cial treatment of system headers are not defeated .

So since /usr/include is likely the standard system include directory
I see it is skipped if I pass it in with -I.

As an additional test I decided to rename the ICU source/common/mutex.h
and sure enough this ustream.cpp compiles fine (with or without
-I/usr/include
in the g++ command line). Hmm.

Do you think this a bug with the atomicity.h for IRIX (which
ultimately is included from ios_base.h)? If it would be helpful I can
send a copy of this? Should the gcc package on IRIX have provided a
symbolic link to /usr/include/mutex.h in one of their directories? Do
you think it's a bug that icu has it's own mutex.h?

After reading the manual page more I wondered if there should have a
-I- (after all their local includes) in the g++ command line to split
the include path? I tried this and it resulted in other failures
(although not this particular one).

Finally, I ran the compile command with -v and -H and pasted the result
below.
Does the output indicate that includes with either "" or <> are
searched through the paths listed below?


Any suggestions or ideas greatly appreciated.

cheers,
scott rankin

Reading specs from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/specs
Configured with: ../configure --prefix=/usr/freeware
--enable-version-specific-runtime-libs --disable-shared
--enable-threads --enable-haifa --enable-libgcj --disable-c-mbchar
Thread model: single
gcc version 3.3
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/cc1plus -quiet -v
-I../common -I../common -I../i18n -iprefix
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/ -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -H -D_REENTRANT -D_PTHREADS
-D_REENTRANT -DU_IO_IMPLEMENTATION ustream.cpp -D__GNUG__=3 -quiet
-dumpbase ustream.cpp -auxbase-strip ustream.o -g -O2 -version -o
/var/tmp//cc5ravTb.s
GNU C++ version 3.3 (mips-sgi-irix6.5)
compiled by GNU C version 3.3.
GGC heuristics: --param ggc-min-expand=98 --param
ggc-min-heapsize=128612
ignoring nonexistent directory
"/usr/local/bin/../mips-sgi-irix6.5/include"
ignoring nonexistent directory "/usr/freeware/mips-sgi-irix6.5/include"
ignoring duplicate directory "../common"
ignoring duplicate directory
"/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++"
ignoring duplicate directory
"/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5"
ignoring duplicate directory
"/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/backward"
ignoring duplicate directory
"/usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.3/include"
#include "..." search starts here:
#include <...> search starts here:
../common
../i18n
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++

/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5

/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/backward
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include
/usr/local/include
/usr/freeware/include
/usr/include
End of search list.
. ../common/unicode/utypes.h
.. ../common/unicode/umachine.h
... ../common/unicode/platform.h
....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/sys/types.h
..... /usr/include/standards.h
..... /usr/include/sgidefs.h
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/internal/sgimacros.h
..... /usr/include/sys/pthread.h
..... /usr/include/sys/bsd_types.h
...... /usr/include/sys/select.h
....... /usr/include/string.h
........ /usr/include/internal/string_core.h
.... /usr/include/inttypes.h
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/stdarg.h
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/stdio.h
...... /usr/include/internal/stdio_core.h
....... /usr/include/getopt.h
... /usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/stddef.h
... ../common/unicode/urename.h
.. ../common/unicode/utf.h
... ../common/unicode/utypes.h
... ../common/unicode/utf8.h
... ../common/unicode/utf16.h
... ../common/unicode/utf_old.h
.. ../common/unicode/uversion.h
.. ../common/unicode/uconfig.h
. ../common/unicode/uobject.h
. ../common/unicode/uchar.h
. ../common/unicode/ucnv.h
.. ../common/unicode/ucnv_err.h
.. ../common/unicode/uenum.h
. unicode/ustream.h
.. ../common/unicode/unistr.h
... ../common/unicode/rep.h
..
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/iostream
...
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/c++config.h
....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/os_defines.h
...
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/ostream
.... /usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/ios
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/iosfwd
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/c++locale.h
.......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/clocale
........ /usr/include/locale.h
......... /usr/include/internal/locale_core.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/cctype
....... /usr/include/ctype.h
........ /usr/include/internal/ctype_core.h
......... /usr/include/internal/locale_attr_core.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/stringfwd.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/fpos.h
.......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/c++io.h
........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/cstdio
.........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/cstddef
..........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/stddef.h
........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/gthr.h
.........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/gthr-single.h
.......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/cwchar
........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/ctime
......... /usr/include/time.h
.......... /usr/include/internal/time_core.h
........... /usr/include/sys/ptimers.h
............ /usr/include/sys/timespec.h
........ /usr/include/wchar.h
......... /usr/include/locale_attr.h
......... /usr/include/wctype.h
.......... /usr/include/wchar.h
.......... /usr/include/internal/wctype_core.h
.........
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/internal/wchar_core.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/functexcept.h
.......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/exception_defines.h
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/exception
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/char_traits.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/cstring
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/localefwd.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/functexcept.h
.......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/exception_defines.h
.....
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/ios_base.h
......
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/atomicity.h
....... ../common/mutex.h
........ ../common/umutex.h
......... ../common/unicode/uclean.h
In file included from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/bits/ios_base.h:45,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/ios:49,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/ostream:45,
from
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/iostream:45,
from unicode/ustream.h:28,
from ustream.cpp:20:
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/atomicity.h:
In
function `_Atomic_word __exchange_and_add(_Atomic_word*, int)':
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/atomicity.h:40:
error: `
test_then_add' undeclared (first use this function)
/usr/local/bin/../lib/gcc-lib/mips-sgi-irix6.5/3.3/include/c++/mips-sgi-irix6.5/bits/atomicity.h:40:
error: (Each
undeclared identifier is reported only once for each function it
appears 
   in.)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]