[Kde-nonlinux] Compilation of arts on HPUX - namespace problems?
Ravikiran Rajagopal
kde-nonlinux@kde.org
Wed, 10 Apr 2002 17:59:17 -0400
Hello,
I am trying to compile KDE on HPUX 11.00. I am using the latest patched aCC
compiler. The following is a list of problems that I have managed to solve so
far. At the end is a problem that is beyond my knowledge of C++.
1. Use the -AA switch to enable STL support.
2. Problem with socklen_t: this problem was described in detail at
http://lists.kde.org/?l=kde-nonlinux&m=101532403407135&w=2
The solution is to define _XOPEN_SOURCE_EXTENDED. However, a cleaner solution
is that wherever sys/socket.h is included, it must be included like this:
#ifdef (__HPUX_SOURCE) && ifndef (_XOPEN_SOURCE_EXTENDED)
#define _XOPEN_SOURCE_EXTENDED
#endif
#include <sys/socket.h>
#ifdef (__HPUX_SOURCE) && ifdef (_XOPEN_SOURCE_EXTENDED)
#undef _XOPEN_SOURCE_EXTENDED
#endif
Without this, configure will always fail. The check for socklen_t in
aclocal.m4(?) needs to be updated too.
3. aCC complains that mcop/datapacket.h is not ISO C++ compliant. This can be
fixed by using this->capacity and this->contents in various places. I can
send the modified file to those interested.
4. On compiling mcop/common.h, the following error (and similar ones wherever
ObjectReference is used) kill the compilation:
Error 359: "common.h", line 84 # The expression on the left side of the '->'
(arrow member access operator) must be a pointer to completed class object
type; the type of the left side is 'Arts::ObjectReference *' and 'class
ObjectReference' has not been defined yet.
ObjectReference reference(buffer);
^^^^^^^^^
Error 283: "common.h", line 84 # Illegal operand type in call expression.
ObjectReference reference(buffer);
^^^^^^^^^
According to my understanding, a class needs to be declared (not defined)
before it is referenced elsewhere. So the error message does not seem to make
sense to me.
Please help,
Ravi
PS: I am cc-ing this to kde-devel in case the C++ wizards there have an
answer.