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 <[email protected]> wrote: > From: Michael Wild <[email protected]> > Subject: Re: [CMake] cmake 2.8.1 compile problems on Solaris? > To: "Attila Nagy" <[email protected]> > Cc: [email protected] > 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/[email protected]/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 <[email protected]> > wrote: > > > >> From: Michael Wild <[email protected]> > >> Subject: Re: [CMake] cmake 2.8.1 compile problems > on Solaris? > >> To: "Attila Nagy" <[email protected]> > >> Cc: [email protected] > >> 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 > > > > _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
