[CMake] cmake 2.8.1 compile problems on Solaris?

Attila Nagy nagy.attila at yahoo.com
Thu Jun 3 11:44:24 EDT 2010


Hi,

it would be easy with a conditional define, something like

// If we're on Solaris...
# if defined(sun) || defined(__sun)
// ...and we use Studio C compiler
# if defined __SUNPRO_C
# define BSD_COMP
# endif
// Solaris
# endif
// Studio C compiler

(or of course <sys/ioccom.h> can be included, but _I_ think the former is more elegant)

But would there a way that BSD_COMP can be defined in some CMakeLists.txt or similar file?
I mean that way the source itself shouldn't be touched. I don't know cmake that well.

Thanks,
Attila

--- On Thu, 6/3/10, Michael Wild <themiwi at gmail.com> wrote:

> From: Michael Wild <themiwi at gmail.com>
> Subject: Re: [CMake] cmake 2.8.1 compile problems on Solaris?
> To: "Attila Nagy" <nagy.attila at yahoo.com>
> Cc: cmake at cmake.org
> Date: Thursday, June 3, 2010, 4:13 PM
> I don't have solaris around, so I
> can't check myself, but I suspect that CMake should be
> defining BSD_COMP when compiling libarchive or even better,
> libarchive should be fixed to include <sys/ioccom.h>
> on solaris.
> 
> Michael
> 
> 
> On 3. Jun, 2010, at 15:28 , Attila Nagy wrote:
> 
> > Aha, thanks for the correction!
> > 
> > (I forgot to mention that I tried sys/ioctl.h too
> without the conditional defines. But I'm not a programmer,
> so I wasn't sure about that header file.)
> > 
> > So the main thing is that I can't find neither _IOR
> nor _IOW in sys/ioctl.h
> > (I grepped through /usr/include).
> > 
> > But I have found two ways to overcome this, and
> compile without a warning:
> > 
> > 1.) either 
> > #define BSD_COMP
> > 
> > 2.) or
> > #include <sys/ioccom.h>
> > 
> > in 
> >
> CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c
> > 
> > because _IOR and _IOW is defined in this file on
> Solaris.
> > 
> > I got the idea from a 1995 post (http://www.mail-archive.com/info-afs@transarc.com/msg05289.html)
> - this still seems to be valid.
> > 
> > Or am I still missing something?
> > If this is _not_ the case :), could this be corrected
> in the sources?
> > 
> > Thank you very much,
> > Attila
> > 
> > --- On Thu, 6/3/10, Michael Wild <themiwi at gmail.com>
> wrote:
> > 
> >> From: Michael Wild <themiwi at gmail.com>
> >> Subject: Re: [CMake] cmake 2.8.1 compile problems
> on Solaris?
> >> To: "Attila Nagy" <nagy.attila at yahoo.com>
> >> Cc: cmake at cmake.org
> >> Date: Thursday, June 3, 2010, 2:08 PM
> >> 
> >> On 3. Jun, 2010, at 13:32 , Attila Nagy wrote:
> >> 
> >>> Hi all,
> >>> 
> >>> is this known, or is this just me doing
> something
> >> wrong?
> >>> I cloned the cmake git repository, then
> changed to
> >> v2.8.1.
> >>> After a succesfull bootsrap, when I try to
> compile
> >> Cmake, I get the bellow error (please find it at
> the end of
> >> the mail.)
> >>> I'm doing it on Solaris snv_125 (SXCE), Studio
> 12.1.
> >>> The details:
> >>> 
> >>> # cc -V
> >>> cc: Sun C 5.10 SunOS_i386 Patch 142363-04
> 2010/02/24
> >>> usage: cc [ options] files.  Use 'cc
> -flags' for
> >> details
> >>> # CC -V
> >>> CC: Sun C++ 5.10 SunOS_i386 128229-06
> 2010/02/10
> >>> Usage: CC [ options ] files.  Use 'CC
> -flags' for
> >> details
> >>> # uname -a
> >>> SunOS orlprint 5.11 snv_125 i86pc i386 i86pc
> >>> 
> >>> Could please somebody take a look at it, or
> does
> >> someone have a suggestion I could try?
> >>> If I explicitly include sys/types.h, I get the
> same
> >> error.
> >>> 
> >>> Thank you,
> >>> Attila
> >>> 
> >>> 
> >>> [ 34%] Building C object
> >>
> Utilities/cmlibarchive/libarchive/CMakeFiles/cmlibarchive.dir/archive_write_disk.c.o
> >>> [ 34%] Building C object
> >>
> Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_num.o
> >>> [ 34%] Building C object
> >>
> Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_regex.o
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2237: warning: implicit function declaration:
> _IOR
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2237: syntax error before or at: long
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2239: warning: implicit function declaration:
> _IOW
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2239: syntax error before or at: long
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2242: undefined label: fail
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2245: syntax error before or at: if
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2245: syntax error before or at: (
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2245: warning: undefined or missing type for:
> long
> >>> 
> >>
> "/ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c",
> >> line 2245: cannot recover from previous errors
> >>> cc: acomp failed for
> >>
> /ufsbckp/head-64-slicer/superbuild/Slicer3-lib/CMake/Utilities/cmlibarchive/libarchive/archive_write_disk.c
> >>> gmake[2]: ***
> >>
> [Utilities/cmlibarchive/libarchive/CMakeFiles/cmlibarchive.dir/archive_write_disk.c.o]
> >> Error 1
> >> 
> >> 
> >> All of those errors have nothing to do with CMake,
> and it's
> >> not sys/types.h you're missing, it's sys/ioctl.h
> (it's
> >> complaining about missing declarations for _IOR
> and _IOW).
> >> 
> >> Michael
> > 
> 
> 


      


More information about the CMake mailing list