Frameworks/Epics/CMake: Difference between revisions

From KDE Community Wiki
 
(37 intermediate revisions by 5 users not shown)
Line 2: Line 2:


== Forewords ==
== Forewords ==
Roughly this epic is about CMake upstream contributions we need done, and the tooling around that to allow our developers to build the whole lot with a single command '''and''' to produce different granularity of tarballs for our downstreams.
Roughly this epic is about CMake upstream contributions we need done, getting stuff into the extra-cmake-modules (e-c-m) project and the tooling around that to allow our developers to build the whole lot.


== Definition of Done ==
== Definition of Done ==


* for stuff which is upstreamed into cmake: merged into the master branch
* every source incompatible change must be noted here: http://techbase.kde.org/Development/ECM_SourceIncompatChanges
* kde-frameworks-devel has been warned about CMake API changes introduced by the feature
* kde-frameworks-devel has been warned about CMake API changes introduced by the feature


== Backlog ==
== Backlog ==


=== January Iteration ===


{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
Line 17: Line 20:
!  width=120 | Contact
!  width=120 | Contact
|-
|-
{{FeatureDone|Upstream automoc into cmake. Done since 2.8.6.|Alex}}
{{FeatureDone|Upstream automoc into cmake. Done since 2.8.6.|Alex Neundorf}}
{{FeatureDone|Extend FeatureSummary.cmake to make MacroLogFeature.cmake unnecessary. Done since 2.8.6.|Alex}}
{{FeatureDone|Extend FeatureSummary.cmake to make MacroLogFeature.cmake unnecessary. Done since 2.8.6.|Alex Neundorf}}
{{FeatureDone|Merge MacroOptionalFindPackage.cmake in CMake. find_apckage() has been extended with 2.8.6 so that this is not necessary anymore.|Alex}}
{{FeatureDone|Merge MacroOptionalFindPackage.cmake in CMake. find_package() has been extended with 2.8.6 so that this is not necessary anymore.|Alex Neundorf}}
{{FeatureDone|Create project extra-cmake-modules for distributing additional Find-modules|Alex}}
{{FeatureDone|Create project extra-cmake-modules for distributing additional Find-modules|Alex Neundorf}}
{{FeatureDone|Sync our Find-modules from kdelibs/cmake/modules/ with the ones in CMake. Done with CMake 2.8.7|Alex}}
{{FeatureDone|Sync our Find-modules from kdelibs/cmake/modules/ with the ones in CMake. Done with CMake 2.8.7|Alex Neundorf}}
{{FeatureTodo|superbuilds|??}}
{{FeatureDone|Merge our export-header stuff into cmake. Done with CMake 2.8.6|Stephen Kelly}}
{{FeatureTodo|Developers are also affected by the splits. Makes building more tedious. Figure out what to do about this|??}}
{{FeatureDone|Design and implement mechanism to make extra-cmake-modules flexible usable, also for non-KDE-projects. This is now done via the macro ecm_use_find_modules(). |Alex Neundorf}}
{{FeatureTodo|Review the Find-modules in kdelibs (over 100), and find out which ones are
{{FeatureDone|Come to a decision how to deal with pkg-config under Windows (and OSX ?). Input needed, especially from Windows and OSX developers. We'll trust pkg-config output also on Windows, see http://thread.gmane.org/gmane.comp.programming.tools.cmake.user/39446 |Alex Neundorf}}
currently needed in the frameworks branch. Here is an overview over the
{{FeatureDone|Figure out how to define the default library install dir, taking Debian multiarch into account. See GNUInstallDirs.cmake in cmake master, which will become 2.8.8. |Alex Neundorf}}
current state:
{{FeatureDone|Figure out how to deal with the install dirs in general:
http://community.kde.org/KDE_Core/Platform_11/Buildsystem/FindFilesSurvey|??}}
{{FeatureTodo|develop a future-proof mechanism for providing modules additional to cmake
in extra-cmake-modules, i.e. so that using projects can decide which
additional stuff they want to use, use some things maybe only for some
versions of cmake, etc.|??}}
{{FeatureTodo|come to a decision how to deal with pkg-config under Windows (and OSX ?)|??}}
{{FeatureTodo|figure out how to define the default library install dir, taking Debian  
multiarch into account|??}}
{{FeatureTodo|
Figure out how to deal with the install dirs in general:
* use GNUInstallDirs.cmake coming with cmake ?
* use GNUInstallDirs.cmake coming with cmake ?
* keep the support for "if I install to the same prefix as kdelibs (...what  
* keep the support for "if I install to the same prefix as kdelibs (...what  
is kdelibs then ?), I want the same set of install dir", |??}}
is kdelibs then ?), I want the same set of install dir", see "KDE-buildsystem-basics package ?" thread on kde-frameworks-devel  |Alex Neundorf}}
{{FeatureTodo|improve the example in kdeexamples/buildsystem/HowToInstallALibrary/, so it  
{{FeatureDone|Figure out what to do with all the macros and settings currently in FindKDE4Internal.cmake and KDE4Macros.cmake, see see "KDE-buildsystem-basics package ?" thread on kde-frameworks-devel |Alex Neundorf, Stephen Kelly}}
can serve as reference
|}
|??}}
 
{{FeatureTodo|somebody has to do the actual porting. Back in the KDE3->KDE4 days Laurent  
=== February & March Iteration ===
Montel did most of this work. Here is a (hopefully) complete list of changes:  
 
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Description
!  width=120 | Contact
|-
{{FeatureDone|Merge HandleImportedTargetsInCMakeRequiredLibraries.cmake into CMake |Alex Neundorf}}
|-
{{FeatureDone|Make creating Config.cmake easier, by implementing some helper macros or files, and improve the example in kdeexamples/buildsystem/HowToInstallALibrary/, so it can serve as reference. Will be in CMake 2.8.8
|Alex Neundorf, Yuri Kudryashov}}
|-
{{FeatureDone|
Make CMake target properties WIN32 and MACOSX_BUNDLE initializable from cmake variables (needs patch in cmake) .Will be in CMake 2.8.8|Stephen Kelly}}
|-
{{FeatureDone|
Modify behaviour of CMAKE_SKIP_RPATH so that RPATH is only skipped for the build tree (needs patch in cmake) .Will be in CMake 2.8.8|Stephen Kelly}}
|}
 
=== April (and later) Iteration ===
 
{| class="sortable" border="1" cellpadding="5" cellspacing="0" style="border: gray solid 1px; border-collapse: collapse; text-align: left; width:100%;"
|- style="background: #ececec; white-space:nowrap;"
! Status
! Description
!  width=120 | Contact
|-
{{FeatureDone|
It would be nice if we could get Windows and OSX developers more actively
involved with KF5. (Patrick is back, found a new volunteer for Mac OS X: Kévin Kin-Foo)|Kevin Ottens}}
|-
{{FeatureInProgress|
Move KDE settings from FindKDE4Internal.cmake to e-c-m, in a separate subdirectory. Prefix will be KF5 .|Alex Neundorf}}
|-
{{FeatureInProgress|
Merge or make unnecessary a whole bunch of macros from kdelibs/cmake/modules/. Mostly done. Details see [[KDE_Core/Platform_11/Buildsystem/FindFilesSurvey]] |Alex Neundorf, Stephen Kelly}}
|-
{{FeatureDone|Make superbuilds robust and usable. This will make building all the small git repositories easier. See https://projects.kde.org/projects/kde/superbuild |Alex Neundorf, then Aurélien Gateau}}
{{FeatureInProgress |somebody has to do the actual porting. Back in the KDE3->KDE4 days Laurent Montel did most of this work. Here is a (hopefully) complete list of changes:  
http://techbase.kde.org/Development/ECM_SourceIncompatChanges
http://techbase.kde.org/Development/ECM_SourceIncompatChanges
|??}}
|Andrea Scarpino}}
{{FeatureTodo|
{{FeatureInProgress|Modularize the macros from KDE4Macros.cmake
It would be nice if we could get Windows and OSX developers more actively
|Stephen Kelly}}
involved with KF5.|Kevin Ottens}}
{{FeatureTodo|Review the Find-modules in kdelibs (over 100) on demand whenever a library has been completely modularized, and find out which ones are
currently needed in the frameworks branch. Here is an overview over the
current state:
http://community.kde.org/KDE_Core/Platform_11/Buildsystem/FindFilesSurvey|Alex Neundorf}}
{{FeatureTodo|Write a CMake for KDE Frameworks developers guideline|?}}
|}
|}

Latest revision as of 13:12, 30 December 2013

CMake Required Features and Migration Epic

Forewords

Roughly this epic is about CMake upstream contributions we need done, getting stuff into the extra-cmake-modules (e-c-m) project and the tooling around that to allow our developers to build the whole lot.

Definition of Done

Backlog

January Iteration

Status Description Contact
DONE Upstream automoc into cmake. Done since 2.8.6. Alex Neundorf
DONE Extend FeatureSummary.cmake to make MacroLogFeature.cmake unnecessary. Done since 2.8.6. Alex Neundorf
DONE Merge MacroOptionalFindPackage.cmake in CMake. find_package() has been extended with 2.8.6 so that this is not necessary anymore. Alex Neundorf
DONE Create project extra-cmake-modules for distributing additional Find-modules Alex Neundorf
DONE Sync our Find-modules from kdelibs/cmake/modules/ with the ones in CMake. Done with CMake 2.8.7 Alex Neundorf
DONE Merge our export-header stuff into cmake. Done with CMake 2.8.6 Stephen Kelly
DONE Design and implement mechanism to make extra-cmake-modules flexible usable, also for non-KDE-projects. This is now done via the macro ecm_use_find_modules(). Alex Neundorf
DONE Come to a decision how to deal with pkg-config under Windows (and OSX ?). Input needed, especially from Windows and OSX developers. We'll trust pkg-config output also on Windows, see http://thread.gmane.org/gmane.comp.programming.tools.cmake.user/39446 Alex Neundorf
DONE Figure out how to define the default library install dir, taking Debian multiarch into account. See GNUInstallDirs.cmake in cmake master, which will become 2.8.8. Alex Neundorf
DONE Figure out how to deal with the install dirs in general:
  • use GNUInstallDirs.cmake coming with cmake ?
  • keep the support for "if I install to the same prefix as kdelibs (...what

is kdelibs then ?), I want the same set of install dir", see "KDE-buildsystem-basics package ?" thread on kde-frameworks-devel

Alex Neundorf
DONE Figure out what to do with all the macros and settings currently in FindKDE4Internal.cmake and KDE4Macros.cmake, see see "KDE-buildsystem-basics package ?" thread on kde-frameworks-devel Alex Neundorf, Stephen Kelly

February & March Iteration

Status Description Contact
DONE Merge HandleImportedTargetsInCMakeRequiredLibraries.cmake into CMake Alex Neundorf
DONE Make creating Config.cmake easier, by implementing some helper macros or files, and improve the example in kdeexamples/buildsystem/HowToInstallALibrary/, so it can serve as reference. Will be in CMake 2.8.8 Alex Neundorf, Yuri Kudryashov
DONE

Make CMake target properties WIN32 and MACOSX_BUNDLE initializable from cmake variables (needs patch in cmake) .Will be in CMake 2.8.8

Stephen Kelly
DONE

Modify behaviour of CMAKE_SKIP_RPATH so that RPATH is only skipped for the build tree (needs patch in cmake) .Will be in CMake 2.8.8

Stephen Kelly

April (and later) Iteration

Status Description Contact
DONE

It would be nice if we could get Windows and OSX developers more actively involved with KF5. (Patrick is back, found a new volunteer for Mac OS X: Kévin Kin-Foo)

Kevin Ottens
IN PROGRESS

Move KDE settings from FindKDE4Internal.cmake to e-c-m, in a separate subdirectory. Prefix will be KF5 .

Alex Neundorf
IN PROGRESS

Merge or make unnecessary a whole bunch of macros from kdelibs/cmake/modules/. Mostly done. Details see KDE_Core/Platform_11/Buildsystem/FindFilesSurvey

Alex Neundorf, Stephen Kelly
DONE Make superbuilds robust and usable. This will make building all the small git repositories easier. See https://projects.kde.org/projects/kde/superbuild Alex Neundorf, then Aurélien Gateau
IN PROGRESS somebody has to do the actual porting. Back in the KDE3->KDE4 days Laurent Montel did most of this work. Here is a (hopefully) complete list of changes:

http://techbase.kde.org/Development/ECM_SourceIncompatChanges

Andrea Scarpino
IN PROGRESS Modularize the macros from KDE4Macros.cmake Stephen Kelly
TO DO Review the Find-modules in kdelibs (over 100) on demand whenever a library has been completely modularized, and find out which ones are

currently needed in the frameworks branch. Here is an overview over the current state: http://community.kde.org/KDE_Core/Platform_11/Buildsystem/FindFilesSurvey

Alex Neundorf <{{{3}}}>
TO DO Write a CMake for KDE Frameworks developers guideline ? <{{{3}}}>