Build system for KDE4

tnagyemail-ml at yahoo.fr tnagyemail-ml at yahoo.fr
Mon Jun 13 20:16:55 BST 2005


While we are at it, what about writing .pc files in
kde4 or using another scheme (xml files) to help
storing/retrieving the package configuration ?

This could be better than the libtool files spread all
around (.la).


Thomas

> Hi all, 
> 
> On Monday 13 June 2005 06:25, Chris Lee wrote:
> ...
> > This is clearly a problem and since KDE4 is an
> aggressive new
> > major release, we should solve it in the KDE4
> timeframe. We don't
> > want to have to wait until KDE5 for a build system
> that doesn't
> > suck, do we?
> >
> > Without further ado, the notes from the
> discussion.
> 
> Ok, here my take on cmake. I'm no expert in linking
> issues, so I can't comment 
> on everything.
> Until now I managed to compile and link complete
> kdevelop using cmake. 
> Currently I'm improving the kdevelop/cmake/am2cmake
> (ruby) script, which 
> reads all Makefile.am's starting from the current
> directory and generates 
> CMakeLists.txt from them. It already works quite
> well and I am already quite 
> far with compiling kdebase with the autogenerated
> cmake files. am2cmake 
> currently isn't able to find out to which libs a
> target in Makefile.am links, 
> so this has to be adjusted manually in the
> CMakeLists.txt
> 
> > Must support:
> >  - generating binaries (duh)
> yes
> 
> >  - generating shared libs (on all ELF platforms +
> MacOS X; Windows?)
> yes
> 
> >  - icon installation
> needs a custom macro (not yet written)
> 
> >  - uic, moc, KConfigXT, etc
> yes
> 
> >  - GCC visibility
> what does this mean for the buildtool ?
> 
> >  - automatic dependency resolution
> I'm not sure I understand exactly what you mean. If
> I say application foo 
> links to library libbar.so, cmake detects that
> libbar.so has to be compiled 
> before foo.
> 
> >  - manual hints for dependency resolution
> Not sure. Can you explain more ? It is possible to
> manually add dependencies 
> of files.
> 
> >  - flex/bison
> needs a custom macro similar to the ones for uic,
> moc, kconfig_compiler etc.
> 
> >  - non-recursive (flat) builds
> The cvs version features non-recursive builds since
> some weeks
> 
> >  - --enable-final
> with a custom macro, probably
> 
> >  - builddir != srcdir
> yes
> 
> >  - simple to the point of being learnable within 5
> minutes
> I can't warrant the 5 minutes, but IMHO it's easy to
> learn. Central 
> documentation on www.cmake.org
> 
> >  - kdeinit support (?)
> yes
> 
> >  - multiple build targets (libfoo, libbar, libbaz)
> in one file
> yes
> 
> >  - --compile-slots, like in unsermake
> what's this ?
> 
> >  - pkg-config support
> If you want to use pkg-config with cmake, you are
> free to do so. But it can 
> also be done without pkg-config.
> 
> >  - support rpath sanely
> cmake supports rpath. I don't know what exactly you
> mean with "sanely".
> 
> >  - ability to link & run uninstalled binaries
> Not sure. At least it adds the rpath. As I said, I'm
> no linking expert.
> 
> >  - easily integrated into KDevelop
> Well, does it count that cmake can generate kdevelop
> project files ?
> 
> >  - 'admin' needs to be shipped in KDE instead of
> in src of each app
> >    (if we keep the 'admin' dir, that is)
> 
> possible
> 
> > Would be nice, but not necessary:
> >  - having a standard and distributed build system
> and test suite
> 
> CMake supports a test system: 
> http://www.cmake.org/Wiki/CMake_Testing_With_CTest
> I haven't used it yet, so I can't say more about it.
> 
> 
> >  - ability to build from svn:/trunk/KDE
> Don't know.
> 
> > support for something like "make install
> DESTDIR=/tmp/kde-buildroot" to
> >  keep packagers happy
> 
> I.e. changing the install path after compilation ?
> You can change the 
> CMAKE_INSTALL_PREFIX and then it will be installed
> there.
> 
> > crosscompiling (At least if we care about Opie and
> the likes reusing KDE
> >  base libs -- would be nice IMO)
> 
> It is possible to use cmake for cross-compiling. I
> do this every day but in a 
> quite special setting
> (http://www.neundorf.net/cmake/). I also did some 
> cross-compiling for Linux with cmake. But I can't
> tell how easy it would be 
> to apply this to a KDE build system.
> 
> > Users should be able to select stuff like
> --with-pam/--without-pam easily 
> > (without editing Makefiles or the likes), and
> where possible this stuff 
> > should be autodetected while keeping it
> overridable..
> 
> cmake features a GUI for adjusting variables (one
> version for curses, one for 
> MFC, one for wxWidgets)
> 
> Additional features of cmake:
> -no other tools (no shell, no perl, no m4, no
> python, no automake, no libtool, 
> no autoconf, no autoheader, no aclocal,...)
> -creates various types of build-files: Makefiles,
> XCode project files, MSVC 
> project files, if you want you can add a scons-file
> generator ;-)
> 
> Currently there are two problems with cmake
> remaining.
> 1) currently it can't handle multiple targets with
> the same name in one 
> project tree. In cmake the name for a library target
> is just the actual name, 
> without the pre/suffix. So libkdevelop.so is
> "kdevelop", and the application 
> "kdevelop" is also "kdevelop". There's a good chance
> that cmake 2.2 (the next 
> released version) will offer a fix for this.
> 2) libtool convenience libraries
> They are not really supported by cmake. I don't know
> if they are actually 
> required for anything. There are the following
> solutions/workarounds:
> -add support for conv. libs to cmake
> -write some clever macro which works good enough for
> us
> -an extension to cmake which allows to retrieve the
> object files contained in 
> a static library and link to them
> 
> 
> If you want to have a look at some cmake macros,
> look at 
> kdevelop/cmake/KDE.cmake and
> kdevelop/cmake/KDEMacros.cmake. For some simple 
> configure checks look at
> kdevelop/ConfigureChecks.cmake . For some example 
> cmake files look at the various CMakeLists.txt under
> kdevelop/. 
> If they look too complicated it would be of course
> possible 
=== message truncated ===


/* Thomas Nagy */


	

	
		
___________________________________________________________________________ 
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger 
Téléchargez cette version sur http://fr.messenger.yahoo.com




More information about the kde-core-devel mailing list