Frameworks/Epics/CMake: Difference between revisions
(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 | 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. | {{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}} | ||
{{ | {{FeatureDone|Merge our export-header stuff into cmake. Done with CMake 2.8.6|Stephen Kelly}} | ||
{{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}} | |||
{{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}} | |||
{{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}} | |||
{{FeatureDone|Figure out how to deal with the install dirs in general: | |||
{{ | |||
{{ | |||
{{ | |||
multiarch into account| | |||
{{ | |||
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}} | ||
{{ | {{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 | |} | ||
| | |||
{{ | === 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 | ||
|Stephen Kelly}} | |||
{{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
- 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
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:
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}}}> |