KDE Core/Platform 11/Buildsystem/FindFilesSurvey
Rationale
One of the "coding" tasks consisted of actually going through our Find*.cmake files in kdelibs and its siblings and check what could be removed, upstreamed or merged in the future.
The following tables look not only at the Find files, but also at some helper CMake files which may also cease to exist or move together with their Find counterparts.
kdelibs, kdepimlibs, kde-baseapps, kde-runtime and kde-workspace were analysed.
Check*.cmake files
File Name | Exists in CMake | Plan | Comments | Style | Status | Who |
CheckCXXSourceCompiles.cmake | Yes | Upstream to ECM, merge in changes from CMake | Our version supports linking against imported targets, upstream CMake doesn't. Search mailing list for CMake developers' rationale, maybe upstream. Began to diverge; CMake has FAIL_REGEX support, our version handles imported targets (Alex said CMake developers did not accept this feature upstream, need to search the mailing list archives). | Ok | Decided | ? |
CheckCXXSourceRuns.cmake | Yes | See above. | See above | Ok | Decided | ? |
CheckCXXSymbolExists.cmake | No | Upstream to CMake (or ECM) | Either check if we still support glibc 2.9, perhaps try upstreaming. Almost equivalent to CMake's CheckSymbolExists.cmake, just creates .cxx files instead of .c ones. | Ok | Decided | ? |
CheckPointerMember.cmake | No | Upstream to CMake (or ECM) | Only used by krdc. Calls check_cxx_source_compiles on a struct with a given member. | Ok | Need feedback. | ? |
CheckPrototypeExists.cmake | No | Upstream to CMake (or ECM) | 1d0e1a0 says this was going to be upstreamed. Try again? | Ok | Need feedback | ? |
CheckStructMember.cmake | No | Remove | CMake has CheckStructHasMember.cmake | - | Decided | - |
Generic Macros
File Name | Exists in CMake | Plan | Comments | Style | Status | Who |
MacroAddCompileFlags.cmake | No | Remove | A trivial macro, used only in few places (kdm mainly I think). | - | Need feedback | - |
MacroAddLinkFlags.cmake | No | Remove | A trivial macro, used only in few places (kdm mainly I think). | - | Need feedback | - |
MacroAdditionalCleanFiles.cmake | No | Remove | Use set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES file1 ... ) instead | - | Decided | - |
MacroAppendIf.cmake | No | Remove | Not used anywhere. (Raphael) Really ? (Alex) | Ok | Need feedback | ? |
MacroBoolTo01.cmake | No | Upstream to ECM | Ok | Need feedback | ? | |
MacroEnsureOutOfSourceBuild.cmake | No | Upstream to CMake (or ECM) | Many people request something like this on the cmake list. | Ok | Need feedback | ? |
MacroEnsureVersion.cmake | No | Upstream? to ECM ? Or Remove ? | It doesn't do much more than if(... VERSION_GREATER ...) . This was not available yet in 2007 when the macro was written. | Ok | Need feedback | ? |
MacroKAuth.cmake | No | Remove. | Already deprecated. | - | Decided | - |
MacroLibrary.cmake | No | Upstream to ECM | The idea of this file is that it simply includes all macro files so as user you have to include only this one file and get all macro from ECM. | Ok | Need feedback. | ? |
MacroLogFeature.cmake | No | Remove and extend CMake's FeatureSummary as necessary. | Investigate CMake's FeatureSummary, what needs to be added so that MacroLogFeature becomes unnecessary. This requires some real work. | Ok | Need feedback | ? |
MacroOptionalAddSubdirectory.cmake | No | Upstream to ECM | Will not be accepted into CMake | Ok | Decided | ? |
MacroOptionalDependPackage.cmake | No | Remove | Broken, expects a FindFoo.cmake possibly provided by the application itself. | - | Decided | - |
MacroOptionalFindPackage.cmake | No | Remove | in CMake 2.8.6 each find_package() call can be disabled via CMAKE_DISABLE_FIND_PACKAGE_PackageName. | - | Decided | - |
MacroPushRequiredVars.cmake | No | Upstream to CMake (or ECM) | Useful when testing for stuff using check_function_exists() etc. | Ok | Decided | Alex |
MacroWriteBasicCMakeVersionFile.cmake and BasicFindPackageVersion.cmake.in | No | Upstream to CMake (or ECM) | Useful for every package which installs a FooConfig.cmake file | Ok | Decided | Alex |
Find*.cmake
In this table, "upstreaming" a module can mean sending it to either CMake itself or the external modules collection.
kdelibs
File Name | Exists in CMake | Comments | Style | Reviewed | |
FindACL.cmake | No | ||||
FindAGG.cmake | No | ||||
FindAlsa.cmake and config-alsa.h.cmake | No | Upstream without config.h? | |||
FindAkode.cmake | No | Remove. | |||
FindAutomoc4.cmake | No | Depends on the future of automoc. | |||
FindAvahi.cmake | No | Upstream? | |||
FindBerkeleyDB.cmake | No | Upstream? | |||
FindBlitz.cmake | No | Remove, already deprecated. | |||
FindBlueZ.cmake | No | Upstream? | |||
FindBoost.cmake | Yes | Remove. Already deprecated. | |||
FindCarbon.cmake | No | ? | |||
FindDBusMenuQt.cmake | No | Remove in favour of DBMQ providing a Config.cmake file? | |||
FindDNSSD.cmake | No | Merge with FindAvahi.cmake and upstream? | |||
FindDocBookXML.cmake | No | Upstream? | |||
FindDocBookXSL.cmake | No | Upstream? | |||
FindENCHANT.cmake | No | Upstream? | |||
FindEigen.cmake | No | Remove, already deprecated. | |||
FindEigen2.cmake | No | Remove in favour of Eigen providing a Config.cmake file? | |||
FindFAM.cmake | No | Upstream? | |||
FindFFmpeg.cmake | No | Upstream? | |||
FindFlac.cmake | No | Upstream? | |||
FindFlex.cmake | No | Upstream? | |||
FindFontconfig.cmake | No | Upstream? | |||
FindFreetype.cmake | Yes | Merge or remove. | |||
FindGIF.cmake | Yes | Probably remove. | |||
FindGLIB2.cmake | No | Upstream? | |||
FindGMP.cmake | No | Upstream? | |||
FindGObject.cmake | No | Upstream? | |||
FindGSSAPI.cmake | No | Upstream? | |||
FindGStreamer.cmake | No | Upstream? | |||
FindGettext.cmake | Yes | Merge or provide our macros separately. We have some macros used in release tarballs. | |||
FindGphoto2.cmake | No | Upstream? | |||
FindHUNSPELL.cmake | No | Upstream? | |||
FindHUpnp.cmake | No | Upstream? | |||
FindIOKit.cmake | No | Upstream? | |||
FindKDEWorkspace.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKDEWIN32.cmake, FindKDEWIN_Packager.cmake and FindKDEWin.cmake | No | ? | |||
FindKDevPlatform.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKNepomuk.cmake | No | Already deprecated? | |||
FindKdcraw.cmake | No | Upstream? | |||
FindKdeMultimedia.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKdepim.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKdepimLibs.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKexiv2.cmake | No | Upstream? | |||
FindKipi.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKopete.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKorundum.cmake | No | Remove in favour of a Config.cmake file. | |||
FindKonto.cmake | No | Already deprecated? | |||
FindLCMS.cmake | No | Upstream? | |||
FindLibArt.cmake | No | Upstream? | |||
FindLibAttica.cmake | No | Remove in favour of a Config.cmake file. | |||
FindLibKonq.cmake | No | Remove in favour of a Config.cmake file. | |||
FindLibLZMA.cmake | No | Upstream? | |||
FindLibXml2.cmake | Yes | Remove. Upstream is pretty much identical, LIBXSLT_XSLTPROC_EXECUTABLE is not used. | |||
FindLibXslt.cmake | Yes | Remove. Upstream is pretty much identical. | |||
FindLibintl.cmake | No | Upstream? | |||
FindLibraryWithDebug.cmake | No | Upstream to CMake? | |||
FindLinuxWirelesstools.cmake | No | Upstream? | |||
FindMsgfmt.cmake | No | Upstream? | |||
FindMusicBrainz.cmake | No | Upstream? | |||
FindMySQL.cmake | No | Upstream? | |||
FindNepomuk.cmake | No | Remove in favour of a Config.cmake file. | |||
FindNetworkManager.cmake | No | Upstream? | |||
FindOggVorbis.cmake | No | Upstream? | |||
FindOpenEXR.cmake | No | Upstream? | |||
FindOpenSSL.cmake | Yes | Remove. Upstream is pretty much identical, should even solve some reported build issues. | |||
FindPCRE.cmake | No | Upstream? | |||
FindPackageHandleStandardArgs.cmake | Yes | Remove once we depend on 2.8.6 | Ok | Yes | |
FindPhonon.cmake | No | Remove in favour of a Config.cmake file. | |||
FindPkgConfig.cmake | Yes | Upstream to cmake. Upstream is pretty much identical, but I think we have the additional QUIET keyword. | |||
FindPlasma.cmake | No | Remove in favour of a Config.cmake file. | |||
FindPolkitQt-1.cmake | No | Remove in favour of a Config.cmake file. | |||
FindPolkitQt.cmake | No | Remove in favour of a Config.cmake file. | |||
FindPopplerQt4.cmake | No | Ask tsdgeos to provide a Config.cmake | |||
FindPostgreSQL.cmake | Yes | Probably remove. Upstream looks more complete. | |||
FindPulseAudio.cmake | No | Upstream to cmake ? | |||
FindPyKDE4.cmake and FindPyKDE4.py | No | ? | |||
FindPyQt4.cmake and FindPyQt.py | No | ? | |||
FindPythonLibrary.cmake | Yes: FindPythonInterp.cmake and FindPythonLibs.cmake | Try to merge with CMake. | |||
FindQCA2.cmake | No | Remove in favour of a Config.cmake file? | |||
FindQImageBlitz.cmake | No | Remove in favour of a Config.cmake file? | |||
FindQt4.cmake, Qt4Macros.cmake and Qt4ConfigDependentSettings.cmake | Yes | Sync with CMake 2.8.6, then maybe remove our copy. We may need to keep a copy because we often need newest Qt but don't want to depend on newest CMake all the time | Ok | Yes | |
FindRUBY.cmake | Yes (FindRuby.cmake) | Remove our copy, or at least get rid of the duplication between FindRuby.cmake and FindRUBY.cmake, which is a mess currently | |||
FindSamba.cmake | No | Upstream to cmake ? | |||
FindSane.cmake | No | Upstream to cmake ? | |||
FindSasl2.cmake | No | Upstream to cmake ? | |||
FindSharedDesktopOntologies.cmake | No | Remove in favour of a Config.cmake file. | |||
FindSharedMimeInfo.cmake | No | Upstream to ecm | |||
FindSoprano.cmake | No | Remove in favour of a Config.cmake file. | |||
FindSqlite.cmake | No | Upstream to cmake ? | |||
FindStrigi.cmake | No | Remove in favour of a Config.cmake file? Strigi is messy. | |||
FindTaglib.cmake | No | Remove in favour of a Config.cmake file. | |||
FindUDev.cmake | No | Upstream to cmake ? | |||
FindUSB.cmake | No | Rename and upstream? | |||
FindWcecompat.cmake | No | What is this ? | |||
FindX11.cmake | Yes | Remove. It has some small difference to the one in cmake AFAIK. | |||
FindXKB.cmake | No | Upstream to cmake | |||
FindXine.cmake | No | Upstream to cmake ? | |||
FindXMMS.cmake | No | Remove as XMMS is dead? |
kde-baseapps
File Name | Exists in CMake | Plan | Comments | Status |
FindLibTidy.cmake | No | Upstream? |
kde-runtime
File Name | Exists in CMake | Plan | Comments | Status |
FindCLucene.cmake | No | Upstream? | ||
FindLibSSH.cmake | No | Upstream? | ||
FindQNtrack.cmake | No | Upstream? | ||
FindSLP.cmake | No | Upstream? |
kde-workspace
File Name | Exists in CMake | Plan | Comments |
FindCkConnector.cmake | No | Upstream? | |
FindDBus.cmake | No | Upstream one of the many different copies in the KDE tree. | |
FindGooglegadgets.cmake | No | Does this still exist? If not, remove. | |
FindLibXKlavier.cmake | No | Upstream? | |
FindPAM.cmake | No | Upstream? | |
FindPCIUTILS.cmake | No | Upstream? | |
FindQalculate.cmake | No | Upstream? | |
FindRAW1394.cmake | No | Upstream? | |
FindSensors.cmake | No | Rename and upstream? | |
FindOpenGLES.cmake | No | Upstream? | |
FindKephal.cmake | No | Remove in favour of a Config.cmake file. | |
Findlibgps.cmake | No | Rename and upstream? |
kdepimlibs
File Name | Exists in CMake | Plan | Comments |
FindAkonadi.cmake | No | Should not be needed if Akonadi starts using Config.cmake files. | |
FindGpgme.cmake | No | Upstream? | |
FindLdap.cmake | No | Upstream? | |
FindLibical.cmake | No | Upstream? | |
FindQgpgme.cmake | No | Remove in favour of a Config.cmake file. |
Framework-specific
In general, they contain KDE-specific code which should not be upstreamed.
File Name | Plan | Comments |
KDE4Defaults.cmake and FindKDE4Internal.cmake | ||
KDE4Macros.cmake | - | |
NepomukAddOntologyClasses.cmake | Merge into NepomukMacros.cmake? | Need to contact trueg about that. |
NepomukMacros.cmake | ||
PythonCompile.py and PythonMacros.cmake | Upstream? | |
SIPMacros.cmake | Upstream? | |
Win32Macros.cmake | No idea. |
Other files in kdelibs
File Name | Plan | Comments |
check_installed_exports_file.cmake | Remove? | Alex writes in kdelibs/CMakeLists.txt that the target installation code was going to change. |
kde4_cmake_uninstall.cmake.in | ? | |
kde4_exec_via_sh.cmake | ? | |
kde4automoc.files.in | Remove once automoc is upstream. | |
kde4exportsheader.h.in | Remove if this feature is upstreamed. | |
kde4init_dummy.cpp.in and kde4init_win32lib_dummy.cpp.in | ? | |
kde4uic.cmake | Remove if possible. |