Hi Geoff,
I've obtained todays trunk snapshot to see how things work with sunCC. It
is much better now, however, there are four things to consider:
1. This has nothing in common with Solaris nor SunCC, but today looking at
playerconfig.h I noticed that all things that are defined looks like:
#define HAVE_FOO 1
except one: HAVE_XDR, which looks:
#define HAVE_XDR
(no '1' at the end) why this one should differ?
2. recently applied upcbarcode fix causes new error:
[ 34%] Building CXX object
server/libplayerdrivers/CMakeFiles/playerdrivers.dir/__/drivers/blobfinder/upcbarcode/upcbarcode.o
"/home/guest/psg22/src/player-20090217/server/drivers/blobfinder/upcbarcode/upcbarcode.cc",
line 255: Error: In this declaration "symbols" is of an incomplete type
"int[][2]".
"/home/guest/psg22/src/player-20090217/server/drivers/blobfinder/upcbarcode/upcbarcode.cc",
line 257: Error: The operand "*symbols" cannot be assigned to.
2 Error(s) detected.
*** Error code 2
My proposal was and still is to fix it like this:
--- upcbarcode.cc.old Tu feb 17 12:37:15 2009
+++ upcbarcode.cc Tu feb 17 13:29:04 2009
@@ -252,7 +252,7 @@
width = this->stored_data.width;
height = this->stored_data.height;
- int symbols[][2];
+ int (* symbols)[2];
if ((symbols = new int[height][2]) == NULL)
{
The "int (* symbols)[2];" declaration was taken from some old C++ book and
seem to be still valid.
3. HAVE_IEEEFP_H definition is set properly (at least on Solaris with
SunStudio), however the way it is used in
server/drivers/localization/amcl/pf/pf_vector.c looks strange for me:
#elif defined (sun) && defined (HAVE_IEEEFP_H)
#include <ieeefp.h>
#endif
Are you sure that this header comes with Solaris only? I don't know every
OS in the world, but first answer from google says it is present at least
in Symbian:
http://www.symbian.com/developer/techlib/v70sdocs/doc%5Fsource/reference/cpp/libc/ieeefp%5Fh
(and the finite() function used in pf_vector.c is defined there).
I guess, "#if defined (HAVE_IEEEFP_H)" would be enough, since whenever the
<ieeefp.h> is present, it should be included here.
(I'm curious, why are we using "#if defined (HAVE_FOO)"? Is good old
"#ifdef" not enough?).
4. Still C++ client library cannot be compiled due to an error (however,
currently I'm not making any kind of use of it, so I can live without it):
Scanning dependencies of target playerc++
[ 18%] Building CXX object
client_libs/libplayerc++/CMakeFiles/playerc++.dir/playerc++.o
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: Unexpected type name "player_pose2d_t" encountered.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: ")" expected instead of "{".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: Unexpected ")" -- Check for matching parenthesis.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1841: Error: Operand expected instead of ";".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Unexpected type name "player_pose2d_t" encountered.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: ")" expected instead of "{".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: "}" expected instead of ",".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Unexpected ")" -- Check for matching parenthesis.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 1846: Error: Operand expected instead of ";".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: Unexpected type name "player_pose3d_t" encountered.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: ")" expected instead of "{".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: Unexpected ")" -- Check for matching parenthesis.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2009: Error: Operand expected instead of ";".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2016: Error: Unexpected type name "player_pose3d_t" encountered.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2016: Error: ")" expected instead of "{".
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2016: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2016: Error: Use ";" to terminate statements.
"/home/guest/psg22/src/player-20090217/client_libs/libplayerc++/playerc++.h",
line 2016: Error: "}" expected instead of ",".
Compilation aborted, too many Error messages.
*** Error code 1
Paul
On Tue, 17 Feb 2009, gbiggs wrote:
> Paul Osmialowski wrote:
>> 2. server/drivers/mixed/p2os/robot_params.h, this structure has char *
>> fields initialised with troublemaking string literals, so the pointer type
>> should be const char *. Previously the same issue was corrected by someone
>> else in erratics robot_params.h, so why can't it be done the same with
>> p2os?
>
> This file is generated. The files that actually need to be fixed are the
> tcl files in server/codetools/saphconv/.
>
>> 3. server/drivers/mixed/rflex/rflex.cc the joy_control static
>> property of RFLEX class cannot be declared extern. I guess only SunCC
>> complains about it, so cmake should disable this driver if detected
>> compiler is SunCC. To be honest, I can't find where this variable is
>> instanced if it is extern here!
>> or.... let's do it like that:
>>
>> #ifdef __SUNPRO_CC
>> int RFLEX::joy_control;
>> #else
>> extern int RFLEX::joy_control;
>> #endif
>
> Looking at what the code does with this variable, I don't think taking
> away the extern will leave the driver in a fully-functional state. I've
> disabled it for solaris instead.
>
>
> Geoff
>
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> Playerstage-developers mailing list
> Playerstage-developers@...
> https://lists.sourceforge.net/lists/listinfo/playerstage-developers
>
|