build error in kdegraphics

Alexander Neundorf neundorf at kde.org
Tue Jun 1 22:30:41 CEST 2010


On Monday 31 May 2010, Pavel Heimlich, a.k.a. hajma wrote:
> 2010/5/30 Alexander Neundorf <neundorf at kde.org>:
> > On Wednesday 26 May 2010, Pavel Heimlich, a.k.a. hajma wrote:
> >> Hi Alex,
> >>
> >> 2010/5/26 Alexander Neundorf <neundorf at kde.org>:
> >> > On Wednesday 26 May 2010, Pavel Heimlich, a.k.a. hajma wrote:
> >> >> Hi Alex,
> >> >>
> >> >> 2010/5/5 Alexander Neundorf <neundorf at kde.org>:
> >> >> > I never used OpenMP, so I don't know.
> >> >> > For the time being I wouldn't oppose a patch to get kdegraphics
> >> >> > compiling.
> >> >>
> >> >> Attached is the patch that makes kdegraphics compile here.
> >> >> The part for libs/libkdcraw/test/CMakeLists.txt would need some
> >> >> IF-ing, I am not sure how to best handle it.
> >> >
> >> > Attached is an updated version of the patch.
> >> > Can you please verify that it works for you ?
> >>
> >> works fine
> >> http://my.cdash.org/buildSummary.php?buildid=69868
> >>
> >> > The -xopenmp flag depends on the compiler, not on the operating
> >> > system, right ?
> >>
> >> correct
> >>
> >> > One thing I noticed when looking at the cmake output on my.cdash.org
> >> > is that it says
> >> > -- The C compiler identification is SunPro
> >> > -- The CXX compiler identification is Unknown
> >> >
> >> > The problem here is the "Unknown" for the CXX compiler.
> >> > If you look in share/cmake-2.6/Modules/CMakeCXXCompilerId.cpp.in, you
> >> > will see:
> >> >
> >> > #elif defined(__SUNPRO_CC)
> >> > # define COMPILER_ID "SunPro"
> >> >
> >> > This should be defined for the SunStudio compiler (also according to
> >> > http://docs.sun.com/app/docs/doc/820-7599/6nirkt75m?l=en&a=view#bkaoe
> >> > ).
> >>
> >> it is defined.
> >> However I think in this case the
> >> share/cmake-2.6/Modules/CMakeDetermineCXXCompiler.cmake
> >> comes into play, which does not know anything about Sun Studio (at
> >> least in 2.6.4)
> >
> > Sure ?
> > Attached is the file from the clean cmake 2.6.4 binary package for Linux,
> > which contains the code for SunPro.
> > Does it look different on your installation ?
>
> this file does look the same here. Adding
> -----
> std::cout << PLATFORM_ID;
> std::cout << COMPILER_ID;
> -----
> proved that PLATFORM_ID is assigned 'SunOS', and COMPILER_ID is
> assigned 'SunPro'.

There is a CMAKE_C_COMPILER_ID and a CMAKE_CXX_COMPILER_ID.
The one for CXX seems to be unknown in your case, since cmake says so.

> But I don't think it's being used in the kdegraphics context:
> 1. Grepping for the two variables does not yield anything useful in
> kdegraphics sources.

Yes, but as you can see in my modified patch, I think CMAKE_CXX_COMPILER_ID 
should be used for setting the openmp flag, instead of basing it on the 
operating system.

> 2. in CMakeCXXCompilerId.cpp.in, unknown compiler is labelled with
> empty string, while the cmake output
> ---------
> pkgbuild: -- The C compiler identification is SunPro
> pkgbuild: -- The CXX compiler identification is unknown
> ---------
>  refers to 'unknown':
> ---------
> #else /* unknown compiler */
> # define COMPILER_ID ""
> ---------
>
> Actually the above identification messages come from
> share/cmake-2.6/Modules/CMakeDetermineCompilerId.cmake:
> ---------
>   # Display the final identification result.
>   IF(CMAKE_${lang}_COMPILER_ID)
>     MESSAGE(STATUS "The ${lang} compiler identification is "
>       "${CMAKE_${lang}_COMPILER_ID}")
>   ELSE(CMAKE_${lang}_COMPILER_ID)
>     MESSAGE(STATUS "The ${lang} compiler identification is unknown")
>   ENDIF(CMAKE_${lang}_COMPILER_ID)
> ---------

Yes, and they get this result from compiling CMakeCXXCompilerId.cpp.in.
Can you put something like
#warning "Here I am"
in places where it makes sense in CMakeCXXCompilerId.cpp.in and then run cmake 
again in clean build trees (small hello-world like projects should be good 
enough for that).

Alex


More information about the Kde-buildsystem mailing list