debugfull & clang/ccache

Milian Wolff mail at milianw.de
Tue Jul 23 18:54:17 UTC 2013


On Tuesday 23 July 2013 18:54:47 Alexander Neundorf wrote:
> On Tuesday 23 July 2013, Milian Wolff wrote:
> > On Monday 22 July 2013 22:28:08 Alexander Neundorf wrote:
> > > Hi Millian,
> > > 
> > > On Tuesday 16 July 2013, Milian Wolff wrote:
> > > > On Tuesday 16 July 2013 11:30:22 Andreas Pakulat wrote:
> > > > > Hi,
> > > > > 
> > > > > On Mon, Jul 15, 2013 at 10:52 AM, Milian Wolff <mail at milianw.de>
> 
> wrote:
> > > > > > Hey guys,
> > > > > > 
> > > > > > the handling of CMAKE_BUILD_TYPE=debugfull in
> > > > > > FindKDE4Internal.cmake is
> > > > > > guarded by `if (CMAKE_COMPILER_IS_GNUCXX)` so it won't work if you
> > > > > > use clang.
> > > > > > It gets worse if you use ccache as well, i.e. via
> > > > > 
> > > > > Hmm, interesting, I just noticed that Debian seems to have dropped
> > > > > support for Debugfull completely, only 1 reference in the file and
> > > > > that is in a comment.
> > > > > 
> > > > > I'd say an "OR CMAKE_CXX_COMPILER_ID MATCHES 'clang'" should be
> > > > > sufficient, the cmake manual hints towards the compiler id being set
> > > > > to 'clang' (in a more or less unrelated part, but the other
> > > > > mentioned id's match whats in that variable on the corresponding
> > > > > compilers). So the line should be
> > > > > 
> > > > > if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES
> > > > > 'clang'
> > > > > )
> > > > 
> > > > OK, but the FindKDE4Internal contains more such checks and everywhere
> > > > I
> > > > wonder whether clang shouldn't do the same... I.e. more pedantic
> > > > linker
> > > > flags, determining include dirs, fPIE, visibility, etc. pp. - I
> > > > actually wonder why I can compile stuff with clang at all ;-)
> > > > 
> > > > So, anyways. Should I write a patch with what you hint at as an
> > > > initial
> > > > step towards better clang support? Or do we need to think more about
> > > > that?
> > > 
> > > There is/was nothing about clang in these files because nobody who used
> > > felt the need to fix it.
> > > So thanks for your effort. :-)
> > > 
> > > While at it, could you please also have a look at extra-cmake-modules (
> > > https://projects.kde.org/projects/kdesupport/extra-cmake-modules/reposit
> > > o
> > > ry ), in kde-modules/KDECompilerSettings.cmake there are the compiler
> > > settings for KF5. They have been moved there from
> > > FindKDE4Internal.cmake, so that whoever wants, can or cannot use the
> > > compiler settings from KDE.
> > > 
> > > ...IS_GNU_CXX is not used anymore there, but instead always the
> > > COMPILER_ID, i.e. it is now compared against "GNU".
> > 
> > Yeah, I think at least loc 155 needs to include Clang. The block starting
> > at loc 239 needs to also support Clang, whereas the code above with the
> > version check should stay gcc specific.
> > 
> > Anyhow, I don't have a KF5 setup available, so I can't test this properly
> > -
> > so no patch from me for now :(
> 
> Oh, that's easy.
> Get cmake 2.8.11.
> git clone extra-cmake-modules, build it and install it.
> Add the install dir to CMAKE_PREFIX_PATH if necessary.
> 
> And write a small hello world:
> 
> cmake_minimum_required(VERSION 2.8.11)
> 
> find_package(ECM NO_MODULE REQUIRED)
> 
> include(${ECM_KDE_MODULE_DIR}/KDECompilerSettings)
> 
> add_executable(hello main.cpp)
> 
> This should give you just the KDE-recommended compiler flags.
> 
> It would be cool if you could give this a try, and let me know if it works
> or whether there are issues.

Yay for modularity!

https://git.reviewboard.kde.org/r/111661/

Cheers
-- 
Milian Wolff
mail at milianw.de
http://milianw.de


More information about the Kde-buildsystem mailing list