Showing preview only (1,095K chars total). The displayed content is truncated. Use the JSON API for full output.
Repository: KDE/extra-cmake-modules
Branch: master
Commit: 8f201cffe9db
Files: 560
Total size: 967.9 KB
Directory structure:
gitextract_vm9rnzxq/
├── .gitignore
├── .gitlab-ci.yml
├── .kde-ci.yml
├── CMakeLists.txt
├── COPYING-CMAKE-SCRIPTS
├── ECMConfig.cmake.in
├── LICENSES/
│ ├── BSD-2-Clause.txt
│ ├── BSD-3-Clause.txt
│ ├── CC0-1.0.txt
│ └── MIT.txt
├── README.md
├── README.rst
├── cmake/
│ └── FindSphinx.cmake
├── docs/
│ ├── CMakeLists.txt
│ ├── find-module/
│ │ ├── Find7Zip.rst
│ │ ├── Find7z.rst
│ │ ├── FindCanberra.rst
│ │ ├── FindEGL.rst
│ │ ├── FindFFmpeg.rst
│ │ ├── FindGLIB2.rst
│ │ ├── FindGperf.rst
│ │ ├── FindGradle.rst
│ │ ├── FindIcoTool.rst
│ │ ├── FindInotify.rst
│ │ ├── FindIsoCodes.rst
│ │ ├── FindKF5.rst
│ │ ├── FindLibExiv2.rst
│ │ ├── FindLibGit2.rst
│ │ ├── FindLibMount.rst
│ │ ├── FindLibcap.rst
│ │ ├── FindOpenEXR.rst
│ │ ├── FindPhoneNumber.rst
│ │ ├── FindPoppler.rst
│ │ ├── FindPulseAudio.rst
│ │ ├── FindQtWaylandScanner.rst
│ │ ├── FindSasl2.rst
│ │ ├── FindSeccomp.rst
│ │ ├── FindSharedMimeInfo.rst
│ │ ├── FindTaglib.rst
│ │ ├── FindUDev.rst
│ │ ├── FindWayland.rst
│ │ ├── FindWaylandProtocols.rst
│ │ ├── FindWaylandScanner.rst
│ │ ├── FindX11_XCB.rst
│ │ ├── FindXCB.rst
│ │ ├── Findepoxy.rst
│ │ └── Findgzip.rst
│ ├── index.rst
│ ├── kde-module/
│ │ ├── KDECMakeSettings.rst
│ │ ├── KDEClangFormat.rst
│ │ ├── KDECompilerSettings.rst
│ │ ├── KDEFrameworkCompilerSettings.rst
│ │ ├── KDEGitCommitHooks.rst
│ │ ├── KDEInstallDirs.rst
│ │ ├── KDEInstallDirs5.rst
│ │ ├── KDEInstallDirs6.rst
│ │ ├── KDEMetaInfoPlatformCheck.rst
│ │ └── KDEPackageAppTemplates.rst
│ ├── manual/
│ │ ├── ecm-developer.7.rst
│ │ ├── ecm-find-modules.7.rst
│ │ ├── ecm-kde-modules.7.rst
│ │ ├── ecm-modules.7.rst
│ │ ├── ecm-toolchains.7.rst
│ │ └── ecm.7.rst
│ ├── module/
│ │ ├── CheckAtomic.rst
│ │ ├── ECMAddAndroidApk.rst
│ │ ├── ECMAddAppIcon.rst
│ │ ├── ECMAddQch.rst
│ │ ├── ECMAddQtDesignerPlugin.rst
│ │ ├── ECMAddTests.rst
│ │ ├── ECMCheckOutboundLicense.rst
│ │ ├── ECMConfiguredInstall.rst
│ │ ├── ECMCoverageOption.rst
│ │ ├── ECMCreateQmFromPoFiles.rst
│ │ ├── ECMDeprecationSettings.rst
│ │ ├── ECMEnableSanitizers.rst
│ │ ├── ECMFeatureSummary.rst
│ │ ├── ECMFindModuleHelpers.rst
│ │ ├── ECMFindQmlModule.rst
│ │ ├── ECMGenerateDBusServiceFile.rst
│ │ ├── ECMGenerateExportHeader.rst
│ │ ├── ECMGenerateHeaders.rst
│ │ ├── ECMGeneratePkgConfigFile.rst
│ │ ├── ECMGeneratePriFile.rst
│ │ ├── ECMGeneratePythonBindings.rst
│ │ ├── ECMGenerateQDoc.rst
│ │ ├── ECMGenerateQmlTypes.rst
│ │ ├── ECMInstallIcons.rst
│ │ ├── ECMMarkAsTest.rst
│ │ ├── ECMMarkNonGuiExecutable.rst
│ │ ├── ECMOptionalAddSubdirectory.rst
│ │ ├── ECMPackageConfigHelpers.rst
│ │ ├── ECMPoQmTools.rst
│ │ ├── ECMQmlModule.rst
│ │ ├── ECMQtDeclareLoggingCategory.rst
│ │ ├── ECMQueryQt.rst
│ │ ├── ECMSetupQtPluginMacroNames.rst
│ │ ├── ECMSetupVersion.rst
│ │ ├── ECMSourceVersionControl.rst
│ │ ├── ECMUninstallTarget.rst
│ │ ├── ECMUseFindModules.rst
│ │ ├── ECMWinResolveSymlinks.rst
│ │ └── QtVersionOption.rst
│ ├── sphinx/
│ │ ├── .gitignore
│ │ ├── conf.py.in
│ │ ├── ecm.css.in
│ │ └── ext/
│ │ └── ecm.py
│ └── toolchain/
│ └── Android.rst
├── find-modules/
│ ├── ECMFindModuleHelpersStub.cmake
│ ├── Find7Zip.cmake
│ ├── Find7z.cmake
│ ├── FindCanberra.cmake
│ ├── FindEGL.cmake
│ ├── FindFFmpeg.cmake
│ ├── FindGLIB2.cmake
│ ├── FindGperf.cmake
│ ├── FindGradle.cmake
│ ├── FindIcoTool.cmake
│ ├── FindInotify.cmake
│ ├── FindIsoCodes.cmake
│ ├── FindKF5.cmake
│ ├── FindKF6.cmake
│ ├── FindLibExiv2.cmake
│ ├── FindLibGit2.cmake
│ ├── FindLibMount.cmake
│ ├── FindLibcap.cmake
│ ├── FindOpenEXR.cmake
│ ├── FindPhoneNumber.cmake
│ ├── FindPoppler.cmake
│ ├── FindPulseAudio.cmake
│ ├── FindQHelpGenerator.cmake
│ ├── FindQtWaylandScanner.cmake
│ ├── FindReuseTool.cmake
│ ├── FindSasl2.cmake
│ ├── FindSeccomp.cmake
│ ├── FindSharedMimeInfo.cmake
│ ├── FindTaglib.cmake
│ ├── FindUDev.cmake
│ ├── FindWayland.cmake
│ ├── FindWaylandProtocols.cmake
│ ├── FindWaylandScanner.cmake
│ ├── FindX11_XCB.cmake
│ ├── FindXCB.cmake
│ ├── Findepoxy.cmake
│ ├── Findgzip.cmake
│ ├── local.properties.cmake
│ └── settings.gradle.cmake
├── kde-modules/
│ ├── KDECMakeSettings.cmake
│ ├── KDEClangFormat.cmake
│ ├── KDECompilerSettings.cmake
│ ├── KDEFrameworkCompilerLegacySettings.cmake
│ ├── KDEFrameworkCompilerSettings.cmake
│ ├── KDEGitCommitHooks.cmake
│ ├── KDEInstallDirs.cmake
│ ├── KDEInstallDirs5.cmake
│ ├── KDEInstallDirs6.cmake
│ ├── KDEInstallDirsCommon.cmake
│ ├── KDEMetaInfoPlatformCheck.cmake
│ ├── KDEPackageAppTemplates.cmake
│ ├── KDESetupPrefixScript.cmake
│ ├── appstreamtest.cmake
│ ├── clang-format.cmake
│ ├── kde-git-commit-hooks/
│ │ ├── clang-format.sh
│ │ ├── combined.schema.json.in
│ │ ├── combined.schema.json.in.license
│ │ ├── json-schema.py
│ │ └── pre-commit.in
│ ├── prefix.sh.cmake
│ └── prefix.sh.fish.cmake
├── metainfo.yaml
├── modules/
│ ├── CheckAtomic.cmake
│ ├── ECMAddAndroidApk.cmake
│ ├── ECMAddAppIcon.cmake
│ ├── ECMAddQch.cmake
│ ├── ECMAddQtDesignerPlugin.cmake
│ ├── ECMAddTests.cmake
│ ├── ECMCheckOutboundLicense.cmake
│ ├── ECMConfiguredInstall.cmake
│ ├── ECMCoverageOption.cmake
│ ├── ECMCreateQmFromPoFiles.cmake
│ ├── ECMDeprecationSettings.cmake
│ ├── ECMEnableSanitizers.cmake
│ ├── ECMFeatureSummary.cmake
│ ├── ECMFindModuleHelpers.cmake
│ ├── ECMFindQmlModule.cmake
│ ├── ECMFindQmlModule.cmake.in
│ ├── ECMGenerateDBusServiceFile.cmake
│ ├── ECMGenerateExportHeader.cmake
│ ├── ECMGenerateHeaders.cmake
│ ├── ECMGeneratePkgConfigFile.cmake
│ ├── ECMGeneratePriFile.cmake
│ ├── ECMGeneratePythonBindings.cmake
│ ├── ECMGeneratePythonBindings.toml.in
│ ├── ECMGeneratePythonBindings.toml.in.license
│ ├── ECMGenerateQDoc.cmake
│ ├── ECMGenerateQmlTypes.cmake
│ ├── ECMInstallIcons.cmake
│ ├── ECMMarkAsTest.cmake
│ ├── ECMMarkNonGuiExecutable.cmake
│ ├── ECMOptionalAddSubdirectory.cmake
│ ├── ECMPackageConfigHelpers.cmake
│ ├── ECMPoQmTools.cmake
│ ├── ECMQMLModules.cmake
│ ├── ECMQchDoxygen.config.in
│ ├── ECMQchDoxygenLayout.xml
│ ├── ECMQmLoader.cpp.in
│ ├── ECMQmlModule.cmake
│ ├── ECMQmlModule.cpp.in
│ ├── ECMQmlModule.cpp.in.license
│ ├── ECMQmlModule.h.in
│ ├── ECMQmlModule.h.in.license
│ ├── ECMQmlModule5.cmake
│ ├── ECMQmlModule6.cmake
│ ├── ECMQtDeclareLoggingCategory.cmake
│ ├── ECMQtDeclareLoggingCategory.cpp.in
│ ├── ECMQtDeclareLoggingCategory.h.in
│ ├── ECMQueryQmake.cmake
│ ├── ECMQueryQt.cmake
│ ├── ECMSetupQtPluginMacroNames.cmake
│ ├── ECMSetupVersion.cmake
│ ├── ECMSourceVersionControl.cmake
│ ├── ECMUninstallTarget.cmake
│ ├── ECMUseFindModules.cmake
│ ├── ECMVersionHeader.h.in
│ ├── ECMWinResolveSymlinks.cmake
│ ├── QtVersionOption.cmake
│ ├── check-outbound-license.py
│ └── ecm_uninstall.cmake.in
├── test-modules/
│ └── test_execute_and_compare.cmake
├── tests/
│ ├── CMakeLists.txt
│ ├── ECMAddAppIconTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_files.cmake.in
│ │ └── main.cpp
│ ├── ECMAddTests/
│ │ ├── CMakeLists.txt
│ │ ├── check_files.cmake
│ │ ├── multi_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test1.cpp
│ │ │ ├── test10.cpp
│ │ │ ├── test11.cpp
│ │ │ ├── test12.cpp
│ │ │ ├── test13.cpp
│ │ │ ├── test14.cpp
│ │ │ ├── test15.cpp
│ │ │ ├── test2.cpp
│ │ │ ├── test3.cpp
│ │ │ ├── test4.cpp
│ │ │ ├── test5.cpp
│ │ │ ├── test6.cpp
│ │ │ ├── test7.cpp
│ │ │ ├── test8.cpp
│ │ │ └── test9.cpp
│ │ ├── nameprefix_by_path_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── dir_a/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── dir_b/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_bypropignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_first/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── dir_last/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── dir_afterlast/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_ignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_nodirs/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── nodir_first/
│ │ │ │ │ └── nodir_ignored/
│ │ │ │ │ └── nodir_notignored/
│ │ │ │ │ └── nodir_renamed/
│ │ │ │ │ └── nodir_last/
│ │ │ │ │ └── dir_afterlast/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_notignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── dir_renamed/
│ │ │ │ └── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── nameprefix_by_var_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── nameprefix_test_helpers.cmake
│ │ ├── single_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test1.cpp
│ │ │ ├── test2.cpp
│ │ │ ├── test3.cpp
│ │ │ ├── test4.cpp
│ │ │ ├── test5.cpp
│ │ │ ├── test6.cpp
│ │ │ ├── test6body.cpp
│ │ │ ├── test7.cpp
│ │ │ ├── test8.cpp
│ │ │ └── test9.cpp
│ │ ├── testhelper.cpp
│ │ └── testhelper.h
│ ├── ECMCheckOutboundLicenseTest/
│ │ ├── CMakeLists.txt
│ │ ├── run_test.cmake.config
│ │ └── testdata/
│ │ ├── BSD-2-Clause.cpp
│ │ ├── GPL-2.0-only.cpp
│ │ ├── GPL-2.0-or-later.cpp
│ │ ├── GPL-3.0-only.cpp
│ │ ├── LGPL-2.1-or-later.cpp
│ │ └── LGPL-3.0-only.cpp
│ ├── ECMConfiguredInstallTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── configured.txt
│ │ ├── configured_atOnly.txt.in
│ │ ├── expected/
│ │ │ ├── configured.txt
│ │ │ ├── configured_atOnly.txt
│ │ │ ├── multi1.txt
│ │ │ └── multi2.txt
│ │ ├── multi1.txt.in
│ │ └── multi2.txt.in
│ ├── ECMFindQmlModuleTest/
│ │ ├── CMakeLists.txt
│ │ ├── main.c
│ │ └── qmlinstall/
│ │ └── org/
│ │ └── kde/
│ │ └── ecmtest/
│ │ ├── Dummy.qml
│ │ └── qmldir
│ ├── ECMGenerateDBusServiceFileTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── expected/
│ │ │ ├── org.kde.kded5.service
│ │ │ └── org.kde.kded5.withSystemD.renamed.service
│ │ └── windowsexpected/
│ │ ├── org.kde.kded5.service
│ │ └── org.kde.kded5.withSystemD.renamed.service
│ ├── ECMGenerateExportHeaderTest/
│ │ ├── CMakeLists.txt
│ │ ├── consumer/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main.cpp
│ │ │ ├── testAPI_DISABLE_DEPRECATED_BEFORE_AND_AT.cmake
│ │ │ └── testAPI_NO_DEPRECATED.cmake
│ │ ├── format_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ └── library/
│ │ ├── CMakeLists.txt
│ │ ├── library.cpp
│ │ ├── library.hpp
│ │ └── main.cpp
│ ├── ECMGenerateHeadersTest/
│ │ ├── CMakeLists.txt
│ │ ├── CamelCaseHeadTest1.h
│ │ ├── CamelCaseHeadTest2.h
│ │ ├── CommonHeader
│ │ ├── headsubdir/
│ │ │ ├── headtest2.h
│ │ │ └── headtest3.h
│ │ ├── headtest1.h
│ │ ├── headtest1.hpp
│ │ ├── headtest2.h
│ │ ├── headtest2.hpp
│ │ ├── headtest4.h
│ │ └── run_test.cmake.config
│ ├── ECMGeneratePkgConfigFile/
│ │ ├── CMakeLists.txt
│ │ ├── KF5CoreAddons.pc
│ │ ├── KF5CoreAddons2.pc
│ │ ├── KF5CoreAddons3.pc
│ │ ├── KF5CoreAddons4.pc
│ │ ├── KF5CoreAddons5.pc
│ │ ├── KF6Attica.pc
│ │ ├── custom_defines/
│ │ │ └── CMakeLists.txt
│ │ ├── metainfo_with_description.yaml
│ │ ├── metainfo_with_empty_description.yaml
│ │ ├── metainfo_without_description.yaml
│ │ ├── no_description_parameter_metainfo_with_description-param/
│ │ │ └── CMakeLists.txt
│ │ ├── no_description_parameter_metainfo_with_empty_description/
│ │ │ └── CMakeLists.txt
│ │ ├── no_description_parameter_metainfo_without_description/
│ │ │ └── CMakeLists.txt
│ │ ├── no_optional_arguments/
│ │ │ └── CMakeLists.txt
│ │ ├── test-and-comparison-helpers.cmake
│ │ ├── test_imported_targets/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EGPF_imported_include_dirs_control.pc
│ │ │ └── main.cpp
│ │ ├── test_no_interface_include_dirs/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EGPF_no_interface_include_directories.pc
│ │ │ └── main.cpp
│ │ ├── with_an_URL_parameter/
│ │ │ └── CMakeLists.txt
│ │ └── with_public_and_private_dependencies/
│ │ └── CMakeLists.txt
│ ├── ECMInstallIconsTest/
│ │ ├── 128-places-home.mng
│ │ ├── 16-actions-badext.txt
│ │ ├── 16-animations-loading.mng
│ │ ├── 16-categories-system-help.mng
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── expected-tree/
│ │ │ ├── badly-named-files-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 16x16/
│ │ │ │ │ └── actions/
│ │ │ │ │ └── badext.txt
│ │ │ │ └── icon-theme.cache
│ │ │ ├── lang-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── l10n/
│ │ │ │ │ │ └── en_US/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── multi-file-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── single-file-test/
│ │ │ │ └── hicolor/
│ │ │ │ └── icon-theme.cache
│ │ │ ├── themed-lang-test/
│ │ │ │ └── oxygen/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── l10n/
│ │ │ │ │ │ └── en_US/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── themed-test/
│ │ │ │ └── theme-name-2/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── fonts-package.svgz
│ │ │ └── v1-icons/
│ │ │ ├── crystalsvg/
│ │ │ │ └── icon-theme.cache
│ │ │ ├── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ ├── home.mng
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ └── animations/
│ │ │ │ │ └── loading.mng
│ │ │ │ └── icon-theme.cache
│ │ │ ├── locolor/
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ ├── fonts-package.svgz
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ └── oxygen/
│ │ │ └── 16x16/
│ │ │ └── categories/
│ │ │ ├── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── system-help.mng
│ │ │ └── system-help.mng
│ │ ├── sc-mimetypes-fonts-package.svgz
│ │ ├── v1-syntax/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hi128-places-home.mng
│ │ │ ├── hi16-animations-loading.mng
│ │ │ ├── losc-mimetypes-fonts-package.svgz
│ │ │ └── ox16-categories-system-help.mng
│ │ ├── v1-syntax-l10n/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hi128-places-home.mng
│ │ │ ├── losc-mimetypes-fonts-package.svgz
│ │ │ └── ox16-categories-system-help.mng
│ │ └── v1-syntax-no-icons/
│ │ └── CMakeLists.txt
│ ├── ECMPoQmToolsTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ ├── check_conf.cmake.in
│ │ ├── check_conf_static.cmake.in
│ │ ├── only-process.po
│ │ ├── po/
│ │ │ ├── es/
│ │ │ │ └── install-test.po
│ │ │ ├── fr/
│ │ │ │ └── install-test.po
│ │ │ ├── no-po/
│ │ │ │ └── placeholder
│ │ │ └── should-not-be-installed
│ │ ├── po-custom-dir1/
│ │ │ ├── es/
│ │ │ │ └── custom-dir1-install-test.po
│ │ │ └── fr/
│ │ │ └── custom-dir1-install-test.po
│ │ ├── po-custom-dir2/
│ │ │ ├── es/
│ │ │ │ └── custom-dir2-install-test.po
│ │ │ └── fr/
│ │ │ └── custom-dir2-install-test.po
│ │ ├── process-and-install.po
│ │ ├── subdir/
│ │ │ └── CMakeLists.txt
│ │ ├── tr_test-po/
│ │ │ ├── de/
│ │ │ │ ├── catalog.po
│ │ │ │ └── catalog2.po
│ │ │ ├── en/
│ │ │ │ ├── catalog.po
│ │ │ │ └── catalog2.po
│ │ │ ├── pt/
│ │ │ │ └── catalog.po
│ │ │ └── pt_BR/
│ │ │ └── catalog.po
│ │ ├── tr_test.cpp
│ │ ├── tr_thread_test.cpp
│ │ └── tr_thread_test_module.cpp
│ ├── ECMQmlModuleTest/
│ │ ├── CMakeLists.txt
│ │ ├── QmlModule.qml
│ │ ├── QmlModule2.qml
│ │ ├── TestModule_init.cpp
│ │ ├── check.cmake.in
│ │ ├── qmldir_expected_depends_qt5
│ │ ├── qmldir_expected_depends_qt5.license
│ │ ├── qmldir_expected_depends_qt6
│ │ ├── qmldir_expected_depends_qt6.license
│ │ ├── qmldir_expected_full_qt5
│ │ ├── qmldir_expected_full_qt5.license
│ │ ├── qmldir_expected_full_qt6
│ │ ├── qmldir_expected_full_qt6.license
│ │ ├── qmldir_expected_qmlonly_qt5
│ │ ├── qmldir_expected_qmlonly_qt5.license
│ │ ├── qmldir_expected_qmlonly_qt6
│ │ ├── qmldir_expected_qmlonly_qt6.license
│ │ ├── qmlmodule.cpp
│ │ └── qmlmodule.h
│ ├── ECMQtDeclareLoggingCategoryTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ ├── log.categories
│ │ ├── log.renamecategories
│ │ └── testmain.cpp
│ ├── ECMSetupVersionTest/
│ │ ├── CMakeLists.txt
│ │ ├── new_explicit_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_expected_zero_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_zero_prefixed_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_soversion_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_anynewer/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_exact/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_samemajor/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ └── version_helpers.cmake
│ ├── ExecuteCoreModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── ExecuteKDEModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── FindModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── KDEFetchTranslations/
│ │ └── CMakeLists.txt
│ ├── KDEInstallDirsTest/
│ │ ├── not_cache_variable/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── relative_or_absolute/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── var_list.cmake
│ │ └── vars_in_sync/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── KDEPackageAppTemplatesCrossTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── someFile
│ ├── KDEPackageAppTemplatesForcedTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── qml-plasmoid/
│ │ ├── CMakeLists.txt
│ │ ├── Messages.sh
│ │ ├── README
│ │ ├── package/
│ │ │ ├── contents/
│ │ │ │ ├── images/
│ │ │ │ │ └── pairs.svgz
│ │ │ │ └── ui/
│ │ │ │ └── main.qml
│ │ │ └── metadata.desktop
│ │ └── qml-plasmoid.kdevtemplate
│ ├── KDEPackageAppTemplatesTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── qml-plasmoid/
│ │ ├── CMakeLists.txt
│ │ ├── Messages.sh
│ │ ├── README
│ │ ├── package/
│ │ │ ├── contents/
│ │ │ │ ├── images/
│ │ │ │ │ └── pairs.svgz
│ │ │ │ └── ui/
│ │ │ │ └── main.qml
│ │ │ └── metadata.desktop
│ │ └── qml-plasmoid.kdevtemplate
│ ├── UseFindModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ └── test_helpers.cmake
└── toolchain/
├── Android.cmake
├── ECMAndroidDeployQt5.cmake
├── deployment-file-qt514.json.in
├── deployment-file-qt6.json.in
├── deployment-file-qt6.json.in.license
├── deployment-file.json.in
├── ecm-version.gradle.in
├── generate-fastlane-metadata.py
├── hasMainSymbol.cmake
└── specifydependencies.cmake
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Ignore generated cmake files
cmake/ECMConfig.cmake
cmake/ECMConfigVersion.cmake
# Ignore the following files
*~
*.[oa]
*.diff
*.kate-swp
*.kdev4
.kdev_include_paths
*.kdevelop.pcs
*.moc
*.moc.cpp
*.orig
*.user
.*.swp
.swp.*
Doxyfile
Makefile
avail
random_seed
/build*/
/cmake-build*/
.idea
/.vscode/
CMakeLists.txt.user*
*.unc-backup*
__pycache__
.cmake/
/compile_commands.json
/.clang-format
/Testing
================================================
FILE: .gitlab-ci.yml
================================================
# SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org>
# SPDX-License-Identifier: CC0-1.0
include:
- project: sysadmin/ci-utilities
file:
- /gitlab-templates/linux.yml
- /gitlab-templates/android-qt6.yml
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/linux-qt6-next.yml
- /gitlab-templates/linux-qt6-static.yml
- /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/windows-qt6.yml
- /gitlab-templates/alpine-qt6.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
================================================
FILE: .kde-ci.yml
================================================
# SPDX-FileCopyrightText: None
# SPDX-License-Identifier: CC0-1.0
Options:
per-test-timeout: 120
require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows']
================================================
FILE: CMakeLists.txt
================================================
#=============================================================================
# SPDX-FileCopyrightText: 2006-2013 Alex Neundorf <neundorf@kde.org>
# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
cmake_minimum_required(VERSION 3.29)
#
# Preliminary setup
#
set(VERSION "6.27.0") # handled by release scripts
project(ECM
VERSION "${VERSION}"
LANGUAGES NONE
)
#
# Includes
#
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include(FeatureSummary)
#
# Installation paths
#
set(SHARE_INSTALL_DIR share
CACHE
PATH
"read-only architecture-independent data"
)
set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/cmake/)
set(FIND_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/find-modules/)
set(KDE_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/kde-modules)
set(MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/modules/)
set(TOOLCHAIN_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/toolchain/)
set(DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/ECM
CACHE
PATH
"HTML and QtHelp documentation"
)
set(MAN_INSTALL_DIR ${SHARE_INSTALL_DIR}/man
CACHE
PATH
"man pages"
)
#
# Documentation
#
option(BUILD_DOC "Build documentation." ON)
add_feature_info(BUILD_DOC BUILD_DOC "Build documentation.")
if(BUILD_DOC)
add_subdirectory(docs)
endif()
#
# Tests
#
option(BUILD_TESTING "Build automated tests." ON)
add_feature_info(BUILD_TESTING BUILD_TESTING "Build automated tests.")
if(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()
#
# Install modules
#
file(GLOB installModuleFiles ${CMAKE_SOURCE_DIR}/modules/*[^~])
install(FILES ${installModuleFiles} DESTINATION ${MODULES_INSTALL_DIR})
file(GLOB installTestModuleFiles ${CMAKE_SOURCE_DIR}/test-modules/*[^~])
install(FILES ${installTestModuleFiles} DESTINATION ${SHARE_INSTALL_DIR}/ECM/test-modules)
file(GLOB installKdeModuleFiles LIST_DIRECTORIES FALSE ${CMAKE_SOURCE_DIR}/kde-modules/*[^~])
install(FILES ${installKdeModuleFiles} DESTINATION ${KDE_MODULES_INSTALL_DIR})
# The scripts need to be executable
file(GLOB installKDECommitHooks ${CMAKE_SOURCE_DIR}/kde-modules/kde-git-commit-hooks/*[^~])
install(PROGRAMS ${installKDECommitHooks} DESTINATION ${KDE_MODULES_INSTALL_DIR}/kde-git-commit-hooks)
file(GLOB installFindModuleFiles ${CMAKE_SOURCE_DIR}/find-modules/*.cmake ${CMAKE_SOURCE_DIR}/find-modules/*.py)
install(FILES ${installFindModuleFiles} DESTINATION ${FIND_MODULES_INSTALL_DIR})
file(GLOB installToolchainModuleFiles ${CMAKE_SOURCE_DIR}/toolchain/*[^~])
install(FILES ${installToolchainModuleFiles} DESTINATION ${TOOLCHAIN_MODULES_INSTALL_DIR})
#
# Config.cmake file
#
include(CMakePackageConfigHelpers)
configure_package_config_file(
ECMConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake
INSTALL_DESTINATION
${CMAKECONFIG_INSTALL_DIR}
PATH_VARS
FIND_MODULES_INSTALL_DIR
KDE_MODULES_INSTALL_DIR
MODULES_INSTALL_DIR
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake
VERSION
"${PROJECT_VERSION}"
COMPATIBILITY
AnyNewerVersion
)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake
DESTINATION
${CMAKECONFIG_INSTALL_DIR}
)
#
# Packaging
#
set(CPACK_PACKAGE_NAME extra-cmake-modules)
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_SYSTEM_NAME "generic")
set(CPACK_GENERATOR "TGZ")
set(CPACK_SET_DESTDIR FALSE)
include(CPack)
#
# Feature summary
#
feature_summary(
FATAL_ON_MISSING_REQUIRED_PACKAGES
WHAT ALL
)
================================================
FILE: COPYING-CMAKE-SCRIPTS
================================================
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: ECMConfig.cmake.in
================================================
@PACKAGE_INIT@
set(ECM_FIND_MODULE_DIR "@PACKAGE_FIND_MODULES_INSTALL_DIR@")
set(ECM_MODULE_DIR "@PACKAGE_MODULES_INSTALL_DIR@")
set(ECM_KDE_MODULE_DIR "@PACKAGE_KDE_MODULES_INSTALL_DIR@")
set(ECM_PREFIX "@CMAKE_INSTALL_PREFIX@")
set(ECM_MODULE_PATH "${ECM_MODULE_DIR}" "${ECM_FIND_MODULE_DIR}" "${ECM_KDE_MODULE_DIR}")
set(ECM_GLOBAL_FIND_VERSION "${ECM_FIND_VERSION}")
include("${ECM_MODULE_DIR}/ECMUseFindModules.cmake")
================================================
FILE: LICENSES/BSD-2-Clause.txt
================================================
Copyright (c) <year> <owner>. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: LICENSES/BSD-3-Clause.txt
================================================
Copyright (c) <year> <owner>. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: LICENSES/CC0-1.0.txt
================================================
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
================================================
FILE: LICENSES/MIT.txt
================================================
MIT License Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
# Extra CMake Modules
## Introduction
The Extra CMake Modules package, or ECM, adds to the modules provided by CMake,
including ones used by ``find_package()`` to find common software, ones that
can be used directly in ``CMakeLists.txt`` files to perform common tasks and
toolchain files that must be specified on the commandline by the user.
In addition, it provides common build settings used in software produced by the
KDE community.
While the driving force of this module is to reduce duplication in CMake scripts
across KDE software, it is intended to be useful for any software that uses the
CMake build system.
For more information visit the documentation at https://api.kde.org/ecm/
================================================
FILE: README.rst
================================================
Extra CMake Modules
*******************
Introduction
============
The Extra CMake Modules package, or ECM, adds to the modules provided by CMake,
including ones used by ``find_package()`` to find common software, ones that
can be used directly in ``CMakeLists.txt`` files to perform common tasks and
toolchain files that must be specified on the commandline by the user.
In addition, it provides common build settings used in software produced by the
KDE community.
While the driving force of this module is to reduce duplication in CMake scripts
across KDE software, it is intended to be useful for any software that uses the
CMake build system.
Usage
=====
To use ECM, add the following to your ``CMakeLists.txt``:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
(note that you may want to append ``${ECM_MODULE_PATH}`` to
``CMAKE_MODULE_PATH`` rather than discarding the existing value). You can then
just include the modules you require, or use ``find_package()`` as needed. For
example:
.. code-block:: cmake
include(ECMInstallIcons)
Developers of KDE software will often want to use the KDE standard settings
provided by ECM; they can do the following:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
include(KDEInstallDirs)
include(KDECompilerSettings)
include(KDECMakeSettings)
Note that any combination of the above includes can be used if you only want
some of the settings. Some of the functionality of
:kde-module:`KDECMakeSettings` can also be selectively disabled.
Organization
------------
ECM provides four different types of modules.
* Core modules provide helpful macros for use in project CMake scripts.
See :manual:`ecm-modules(7)` for more information.
* Find modules extend the functionality of CMake's ``find_package()`` command.
See :manual:`ecm-find-modules(7)` for more information.
* KDE modules provide common settings for software produced by KDE; much of this
may also be useful to other projects. See :manual:`ecm-kde-modules(7)` for
more information.
* Toolchain files change the build tools and targets used by CMake. See
:manual:`ecm-toolchains(7)` for more information.
The ``${ECM_MODULE_DIR}``, ``${ECM_FIND_MODULE_DIR}`` and
``${ECM_KDE_MODULE_DIR}`` variables may be used instead of
``${ECM_MODULE_PATH}`` if you only need some of this functionality.
Development
===========
The :manual:`ecm-developer(7)` manual contains more information about
developing for Extra CMake Modules.
License
=======
All code is licensed under the `BSD 3-Clause license`_.
.. _BSD 3-Clause license: https://opensource.org/licenses/BSD-3-Clause
Links
=====
* Home page: https://commits.kde.org/extra-cmake-modules
* Documentation: https://api.kde.org/ecm/
* Mailing list: https://mail.kde.org/mailman/listinfo/kde-buildsystem
* IRC channel: #kde-devel on Libera Chat
* Git repository: https://commits.kde.org/extra-cmake-modules
================================================
FILE: cmake/FindSphinx.cmake
================================================
# SPDX-FileCopyrightText: 2015 Alex Merry <alex.merry@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindSphinx
----------
Try to find the Sphinx documentation builder.
This will define the following variables:
``Sphinx_FOUND``
True if (the requested version of) Sphinx is available
``Sphinx_VERSION``
The version of the Sphinx documentation builder.
``Sphinx_BUILD_EXECUTABLE``
The path to the Sphinx documentation builder executable.
If ``Sphinx_FOUND`` is TRUE, it will also define the following imported target:
``Sphinx::Build``
The Sphinx documentation builder.
In general we recommend using the imported target, as it is easier to use.
Since 5.17.0.
#]=======================================================================]
# Distros sometimes rename Python executables to allow for parallel
# installation of Python2 and Python3 versions
find_program(Sphinx_BUILD_EXECUTABLE
NAMES
sphinx-build
sphinx-build2
sphinx-build3
DOC "Sphinx Documentation Builder (https://www.sphinx-doc.org/)"
)
if (Sphinx_BUILD_EXECUTABLE)
if(NOT TARGET Sphinx::Build)
add_executable(Sphinx::Build IMPORTED)
set_target_properties(Sphinx::Build PROPERTIES
IMPORTED_LOCATION "${Sphinx_BUILD_EXECUTABLE}"
)
endif()
execute_process(
COMMAND "${Sphinx_BUILD_EXECUTABLE}" --version
OUTPUT_VARIABLE _Sphinx_version_raw
ERROR_VARIABLE _Sphinx_version_raw
)
if (_Sphinx_version_raw MATCHES "^Sphinx \\([^)]*\\) ([0-9]+(\\.[0-9]+)*)")
set(Sphinx_VERSION "${CMAKE_MATCH_1}")
endif()
unset(_Sphinx_version_raw)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Sphinx
FOUND_VAR
Sphinx_FOUND
REQUIRED_VARS
Sphinx_BUILD_EXECUTABLE
VERSION_VAR
Sphinx_VERSION
)
mark_as_advanced(Sphinx_BUILD_EXECUTABLE)
================================================
FILE: docs/CMakeLists.txt
================================================
#=============================================================================
# SPDX-FileCopyrightText: 2000-2013 Kitware, Inc.
# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
include(CMakeDependentOption)
enable_language(CXX)
find_package(Sphinx 1.2 MODULE)
set_package_properties(
Sphinx
PROPERTIES
URL "https://www.sphinx-doc.org/"
DESCRIPTION "Tool to generate documentation."
TYPE OPTIONAL
PURPOSE "Required to build documentation for Extra CMake Modules."
)
find_package(Qt6 COMPONENTS ToolsTools)
set_package_properties(
Qt6ToolsTools
PROPERTIES
URL "https://www.qt.io/"
DESCRIPTION "Qt help collection generator."
TYPE OPTIONAL
PURPOSE "Required to build Extra CMake Modules documentation in Qt Help format."
)
cmake_dependent_option(
BUILD_HTML_DOCS "Build html help with Sphinx" ON
"Sphinx_FOUND" OFF
)
add_feature_info(BUILD_HTML_DOCS BUILD_HTML_DOCS "Generate HTML documentation for installed modules.")
cmake_dependent_option(
BUILD_MAN_DOCS "Build man pages with Sphinx" ON
"Sphinx_FOUND" OFF
)
add_feature_info(BUILD_MAN_DOCS BUILD_MAN_DOCS "Generate man page documentation for installed modules.")
if(TARGET Qt6::qhelpgenerator)
set(QHelpGenerator_FOUND TRUE)
endif()
cmake_dependent_option(
BUILD_QTHELP_DOCS "Build Qt help with Sphinx" ON
"Sphinx_FOUND;QHelpGenerator_FOUND" OFF
)
add_feature_info(BUILD_QTHELP_DOCS BUILD_QTHELP_DOCS "Generate QtHelp documentation for installed modules.")
set(doc_formats "")
if(BUILD_HTML_DOCS)
list(APPEND doc_formats html)
endif()
if(BUILD_MAN_DOCS)
list(APPEND doc_formats man)
endif()
if(BUILD_QTHELP_DOCS)
list(APPEND doc_formats qthelp)
set(qthelp_extra_commands
COMMAND
Qt6::qhelpgenerator
${CMAKE_CURRENT_BINARY_DIR}/qthelp/ExtraCMakeModules.qhcp
)
endif()
if(NOT doc_formats)
return()
endif()
if (Sphinx_VERSION VERSION_LESS 1.3)
set(sphinx_theme default)
else()
set(sphinx_theme classic)
endif()
configure_file(sphinx/conf.py.in conf.py @ONLY)
configure_file(sphinx/ecm.css.in static/ecm.css)
set(doc_format_outputs "")
set(doc_format_last "")
foreach(format ${doc_formats})
set(doc_format_output "doc_format_${format}")
set(doc_format_log "build-${format}.log")
add_custom_command(
OUTPUT ${doc_format_output}
COMMAND
Sphinx::Build
-D man_make_section_directory=0
-c ${CMAKE_CURRENT_BINARY_DIR}
-d ${CMAKE_CURRENT_BINARY_DIR}/doctrees
-b ${format}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/${format}
> ${doc_format_log} # log stdout, pass stderr
${${format}_extra_commands}
DEPENDS ${doc_format_last}
COMMENT "sphinx-build ${format}: see ${CMAKE_CURRENT_BINARY_DIR}/${doc_format_log}"
VERBATIM
)
set_property(SOURCE ${doc_format_output} PROPERTY SYMBOLIC 1)
list(APPEND doc_format_outputs ${doc_format_output})
set(doc_format_last ${doc_format_output})
endforeach()
add_custom_target(documentation ALL DEPENDS ${doc_format_outputs})
if(BUILD_MAN_DOCS)
file(GLOB man_rst RELATIVE ${ECM_SOURCE_DIR}/docs/manual
${ECM_SOURCE_DIR}/docs/manual/*.[1-9].rst)
foreach(m ${man_rst})
if("x${m}" MATCHES "^x(.+)\\.([1-9])\\.rst$")
set(name "${CMAKE_MATCH_1}")
set(sec "${CMAKE_MATCH_2}")
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/man/${name}.${sec}
DESTINATION ${MAN_INSTALL_DIR}/man${sec}
)
endif()
endforeach()
endif()
if(BUILD_HTML_DOCS)
install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
DESTINATION ${DOC_INSTALL_DIR}
PATTERN .buildinfo EXCLUDE
PATTERN objects.inv EXCLUDE
)
endif()
if(BUILD_QTHELP_DOCS)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/qthelp/ExtraCMakeModules.qch
DESTINATION ${DOC_INSTALL_DIR}
)
endif()
================================================
FILE: docs/find-module/Find7Zip.rst
================================================
.. ecm-module:: ../../find-modules/Find7Zip.cmake
================================================
FILE: docs/find-module/Find7z.rst
================================================
.. ecm-module:: ../../find-modules/Find7z.cmake
================================================
FILE: docs/find-module/FindCanberra.rst
================================================
.. ecm-module:: ../../find-modules/FindCanberra.cmake
================================================
FILE: docs/find-module/FindEGL.rst
================================================
.. ecm-module:: ../../find-modules/FindEGL.cmake
================================================
FILE: docs/find-module/FindFFmpeg.rst
================================================
.. ecm-module:: ../../find-modules/FindFFmpeg.cmake
================================================
FILE: docs/find-module/FindGLIB2.rst
================================================
.. ecm-module:: ../../find-modules/FindGLIB2.cmake
================================================
FILE: docs/find-module/FindGperf.rst
================================================
.. ecm-module:: ../../find-modules/FindGperf.cmake
================================================
FILE: docs/find-module/FindGradle.rst
================================================
.. ecm-module:: ../../find-modules/FindGradle.cmake
================================================
FILE: docs/find-module/FindIcoTool.rst
================================================
.. ecm-module:: ../../find-modules/FindIcoTool.cmake
================================================
FILE: docs/find-module/FindInotify.rst
================================================
.. ecm-module:: ../../find-modules/FindInotify.cmake
================================================
FILE: docs/find-module/FindIsoCodes.rst
================================================
.. ecm-module:: ../../find-modules/FindIsoCodes.cmake
================================================
FILE: docs/find-module/FindKF5.rst
================================================
.. ecm-module:: ../../find-modules/FindKF5.cmake
================================================
FILE: docs/find-module/FindLibExiv2.rst
================================================
.. ecm-module:: ../../find-modules/FindLibExiv2.cmake
================================================
FILE: docs/find-module/FindLibGit2.rst
================================================
.. ecm-module:: ../../find-modules/FindLibGit2.cmake
================================================
FILE: docs/find-module/FindLibMount.rst
================================================
.. ecm-module:: ../../find-modules/FindLibMount.cmake
================================================
FILE: docs/find-module/FindLibcap.rst
================================================
.. ecm-module:: ../../find-modules/FindLibcap.cmake
================================================
FILE: docs/find-module/FindOpenEXR.rst
================================================
.. ecm-module:: ../../find-modules/FindOpenEXR.cmake
================================================
FILE: docs/find-module/FindPhoneNumber.rst
================================================
.. ecm-module:: ../../find-modules/FindPhoneNumber.cmake
================================================
FILE: docs/find-module/FindPoppler.rst
================================================
.. ecm-module:: ../../find-modules/FindPoppler.cmake
================================================
FILE: docs/find-module/FindPulseAudio.rst
================================================
.. ecm-module:: ../../find-modules/FindPulseAudio.cmake
================================================
FILE: docs/find-module/FindQtWaylandScanner.rst
================================================
.. ecm-module:: ../../find-modules/FindQtWaylandScanner.cmake
================================================
FILE: docs/find-module/FindSasl2.rst
================================================
.. ecm-module:: ../../find-modules/FindSasl2.cmake
================================================
FILE: docs/find-module/FindSeccomp.rst
================================================
.. ecm-module:: ../../find-modules/FindSeccomp.cmake
================================================
FILE: docs/find-module/FindSharedMimeInfo.rst
================================================
.. ecm-module:: ../../find-modules/FindSharedMimeInfo.cmake
================================================
FILE: docs/find-module/FindTaglib.rst
================================================
.. ecm-module:: ../../find-modules/FindTaglib.cmake
================================================
FILE: docs/find-module/FindUDev.rst
================================================
.. ecm-module:: ../../find-modules/FindUDev.cmake
================================================
FILE: docs/find-module/FindWayland.rst
================================================
.. ecm-module:: ../../find-modules/FindWayland.cmake
================================================
FILE: docs/find-module/FindWaylandProtocols.rst
================================================
.. ecm-module:: ../../find-modules/FindWaylandProtocols.cmake
================================================
FILE: docs/find-module/FindWaylandScanner.rst
================================================
.. ecm-module:: ../../find-modules/FindWaylandScanner.cmake
================================================
FILE: docs/find-module/FindX11_XCB.rst
================================================
.. ecm-module:: ../../find-modules/FindX11_XCB.cmake
================================================
FILE: docs/find-module/FindXCB.rst
================================================
.. ecm-module:: ../../find-modules/FindXCB.cmake
================================================
FILE: docs/find-module/Findepoxy.rst
================================================
.. ecm-module:: ../../find-modules/Findepoxy.cmake
================================================
FILE: docs/find-module/Findgzip.rst
================================================
.. ecm-module:: ../../find-modules/Findgzip.cmake
================================================
FILE: docs/index.rst
================================================
.. title:: Extra CMake Modules Reference Documentation
Reference Manuals
#################
.. toctree::
:maxdepth: 1
:glob:
/manual/ecm.7
/manual/*
.. only:: html
Index and Search
################
* :ref:`genindex`
* :ref:`search`
================================================
FILE: docs/kde-module/KDECMakeSettings.rst
================================================
.. ecm-module:: ../../kde-modules/KDECMakeSettings.cmake
================================================
FILE: docs/kde-module/KDEClangFormat.rst
================================================
.. ecm-module:: ../../kde-modules/KDEClangFormat.cmake
================================================
FILE: docs/kde-module/KDECompilerSettings.rst
================================================
.. ecm-module:: ../../kde-modules/KDECompilerSettings.cmake
================================================
FILE: docs/kde-module/KDEFrameworkCompilerSettings.rst
================================================
.. ecm-module:: ../../kde-modules/KDEFrameworkCompilerSettings.cmake
================================================
FILE: docs/kde-module/KDEGitCommitHooks.rst
================================================
.. ecm-module:: ../../kde-modules/KDEGitCommitHooks.cmake
================================================
FILE: docs/kde-module/KDEInstallDirs.rst
================================================
.. ecm-module:: ../../kde-modules/KDEInstallDirs.cmake
================================================
FILE: docs/kde-module/KDEInstallDirs5.rst
================================================
.. ecm-module:: ../../kde-modules/KDEInstallDirs5.cmake
================================================
FILE: docs/kde-module/KDEInstallDirs6.rst
================================================
.. ecm-module:: ../../kde-modules/KDEInstallDirs6.cmake
================================================
FILE: docs/kde-module/KDEMetaInfoPlatformCheck.rst
================================================
.. ecm-module:: ../../kde-modules/KDEMetaInfoPlatformCheck.cmake
================================================
FILE: docs/kde-module/KDEPackageAppTemplates.rst
================================================
.. ecm-module:: ../../kde-modules/KDEPackageAppTemplates.cmake
================================================
FILE: docs/manual/ecm-developer.7.rst
================================================
.. ecm-manual-description: ECM Developer Reference
ecm-developer(7)
****************
.. only:: html or latex
.. contents::
Writing Modules
===============
The CMake 3 documentation (and `cmake-developer(7)`_ in particular) has a lot of
useful information about writing CMake modules, including a large section
devoted to find modules. This guide will only highlight things that are
particular to the Extra CMake Modules project.
Most of these are stylistic points. For example, the license header for a module
in ECM should look like:
.. code-block:: cmake
# SPDX-FileCopyrightText: 20XX Your Name <your.email@example.com>
#
# SPDX-License-Identifier: BSD-3-Clause
Documentation is written in reStructuredText format and put inside a bracket
comment with a ``.rst:`` id after the opening bracket:
.. code-block:: cmake
#[=======================================================================[.rst:
The docs
#]=======================================================================]
(docs/sphinx/ext/ecm.py has code to extract the rst text from a comment with
such wrapping)
Functions should be used instead of macros unless there is a good reason not to
(and that reason should be noted in a comment), and lowercase should be used for
macros, functions and commands.
4 spaces is the generally-recommended indent, although there are several files
that use 2 spaces; consistency within a file is more important than consistency
across files.
If in doubt, look at how other modules in Extra CMake Modules are written, and
follow the same pattern.
Find Modules
------------
A good template for find module documentation is:
.. code-block:: cmake
#[=======================================================================[.rst:
FindFoo
-------
Finds the Foo library.
This will define the following variables:
``Foo_FOUND``
True if (the requested version of) Foo is available
``Foo_VERSION``
The version of Foo, if it is found
``Foo_LIBRARIES``
This can be passed to target_link_libraries() instead of the ``Foo::Foo``
target
``Foo_INCLUDE_DIRS``
This should be passed to target_include_directories() if the target is not
used for linking
``Foo_DEFINITIONS``
This should be passed to target_compile_options() if the target is not
used for linking
If ``Foo_FOUND`` is TRUE, it will also define the following imported target:
``Foo::Foo``
The Foo library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
#]=======================================================================]
Note the use of definition lists for the variables.
Because of the :module:`ECMUseFindModules` module, projects may easily make
local copies of find modules, and may install those copies with their own CMake
project config files. For this reason, find modules should include the full BSD
3-clause license::
#=============================================================================
# Copyright 20XX Your Name <your.email@example.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
Find modules should always provide imported targets in addition to the
traditional variables (like ``Foo_LIBRARIES``, etc).
Unlike find modules shipped with CMake, if the module requires a specific CMake
version it is not enough to warn when the minimum required version is not high
enough: you should also produce an error when the actual CMake version being
used is not high enough. This can be done with:
.. code-block:: cmake
if(CMAKE_VERSION VERSION_LESS 3.16.0)
message(FATAL_ERROR "CMake 3.16.0 is required by FindFoo.cmake")
endif()
if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.16.0)
message(AUTHOR_WARNING "Your project should require at least CMake 3.16.0 to use FindFoo.cmake")
endif()
The :module:`ECMFindModuleHelpers` module has several useful functions and
macros. For example, it allows you to replace the above version check with:
.. code-block:: cmake
ecm_find_package_version_check(Foo)
Components
~~~~~~~~~~
Using :module:`ECMFindModuleHelpers`, creating a find module for a library with
several inter-dependent components is reasonably straightforward. After the
documentation, you need to include the module and do the usual version check:
.. code-block:: cmake
include(ECMFindModuleHelpers)
ecm_find_package_version_check(Foo)
The important macros are ``ecm_find_package_parse_components`` and
``ecm_find_package_handle_library_components``. These take a list of
components, and query other variables you provide to find out the information
they require. The documentation for :module:`ECMFindModuleHelpers` provides
more information, but a simple setup might look like:
.. code-block:: cmake
set(Foo_known_components Bar Baz)
set(Foo_Bar_pkg_config "foo-bar")
set(Foo_Bar_lib "bar")
set(Foo_Bar_header "foo/bar.h")
set(Foo_Bar_pkg_config "foo-baz")
set(Foo_Baz_lib "baz")
set(Foo_Baz_header "foo/baz.h")
If ``Baz`` depends on ``Bar``, for example, you can specify this with
.. code-block:: cmake
set(Foo_Baz_component_deps "Bar")
Then call the macros:
.. code-block:: cmake
ecm_find_package_parse_components(Foo
RESULT_VAR Foo_components
KNOWN_COMPONENTS ${Foo_known_components}
)
ecm_find_package_handle_library_components(Foo
COMPONENTS ${Foo_components}
)
Of course, if your components need unusual handling, you may want to replace
``ecm_find_package_handle_library_components`` with, for example, a ``foreach``
loop over the components (the body of which should implement most of what a
normal find module does, including setting ``Foo_<component>_FOUND``).
At this point, you should set ``Foo_VERSION`` using whatever information you
have available (such as from parsing header files). Note that
``ecm_find_package_handle_library_components`` will set it to the version
reported by pkg-config of the first component found, but this depends on the
presence of pkg-config files, and the version of a component may not be the same
as the version of the whole package. After that, finish off with
.. code-block:: cmake
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Foo
FOUND_VAR
Foo_FOUND
REQUIRED_VARS
Foo_LIBRARIES
VERSION_VAR
Foo_VERSION
HANDLE_COMPONENTS
)
include(FeatureSummary)
set_package_properties(Foo PROPERTIES
URL "https://www.foo.example.com/"
DESCRIPTION "A library for doing useful things")
Submitting Modules
==================
Proposed new modules should be submitted using the `KDE Review Board instance`_,
and be assigned to the ``buildsystem`` and ``extracmakemodules`` groups. You
should be able to point to two separate projects that will make use of the
module.
The mailing list can be found at
https://mail.kde.org/mailman/listinfo/kde-buildsystem\ .
.. _KDE Review Board instance: https://git.reviewboard.kde.org/
.. _cmake-developer(7): https://www.cmake.org/cmake/help/git-master/manual/cmake-developer.7.html
================================================
FILE: docs/manual/ecm-find-modules.7.rst
================================================
.. ecm-manual-description: ECM Find Modules Reference
ecm-find-modules(7)
*******************
.. only:: html or latex
.. contents::
Introduction
============
Find modules are used by the CMake ``find_package`` command to search for
packages that do not provide their own CMake package config files. CMake
provides an extensive set of find modules, and Extra CMake Modules (ECM) adds
to that.
To use ECM's find modules, you need to tell CMake to find the ECM package, and
then add either ``${ECM_MODULE_PATH}`` or ``${ECM_FIND_MODULE_DIR}`` to the
``CMAKE_MODULE_PATH`` variable:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_FIND_MODULE_DIR})
Using ``${ECM_MODULE_PATH}`` will also make the modules intended for direct use
by CMake scripts available (see :manual:`ecm-modules(7)` and
:manual:`ecm-kde-modules(7)`).
You can also make local copies of find modules using the
``ecm_use_find_modules`` function from :module:`ECMUseFindModules`, which is
automatically included when ECM is found:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
ecm_use_find_modules(
DIR "${CMAKE_BINARY_DIR}/cmake"
MODULES FindEGL.cmake
)
set(CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}/cmake")
This allows selective use of ECM's find modules, and the NO_OVERRIDE argument
can be used to ensure that if CMake ships its own version of that find module,
it will be used instead.
All Find Modules
================
.. toctree::
:maxdepth: 1
:glob:
/find-module/*
.. only:: man
See Also
========
:manual:`ecm(7)`, :manual:`ecm-modules(7)`, :manual:`ecm-kde-modules(7)`
================================================
FILE: docs/manual/ecm-kde-modules.7.rst
================================================
.. ecm-manual-description: ECM KDE Modules Reference
ecm-kde-modules(7)
******************
.. only:: html or latex
.. contents::
Introduction
============
Extra CMake Modules (ECM) provides several modules that provide default settings
(like installation directories, compiler flags and other CMake options) aimed at
software produced by the KDE modules; these are documented here. ECM also
provides modules with more general functionality, documented in
:manual:`ecm-modules(7)`, and ones that extend the functionality of the
``find_package`` command, documented in :manual:`ecm-find-modules(7)`.
To use these modules, you need to tell CMake to find the ECM package, and
then add either ``${ECM_MODULE_PATH}`` or ``${ECM_KDE_MODULE_DIR}`` to the
``CMAKE_MODULE_PATH`` variable:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_DIR})
Using ``${ECM_MODULE_PATH}`` will also make the other types of modules
available.
All KDE Modules
===============
.. toctree::
:maxdepth: 1
:glob:
/kde-module/*
.. only:: man
See Also
========
:manual:`ecm(7)`, :manual:`ecm-modules(7)`, :manual:`ecm-find-modules(7)`
================================================
FILE: docs/manual/ecm-modules.7.rst
================================================
.. ecm-manual-description: ECM Modules Reference
ecm-modules(7)
**************
.. only:: html or latex
.. contents::
Introduction
============
Extra CMake Modules (ECM) provides various modules that provide useful functions
for CMake scripts. ECM actually provides three types of modules that can be
used from CMake scripts: those that extend the functionality of the
``find_package`` command are documented in :manual:`ecm-find-modules(7)`; those
that provide standard settings for software produced by the KDE community are
documented in :manual:`ecm-kde-modules(7)`. The rest provide macros and
functions for general use by CMake scripts and are documented here.
To use these modules, you need to tell CMake to find the ECM package, and
then add either ``${ECM_MODULE_PATH}`` or ``${ECM_MODULE_DIR}`` to the
``CMAKE_MODULE_PATH`` variable:
.. code-block:: cmake
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_DIR})
Using ``${ECM_MODULE_PATH}`` will also make the find modules and KDE modules
available.
Note that there are also toolchain modules, documented in
:manual:`ecm-toolchains(7)`, but these are used by users building the software
rather than developers writing CMake scripts.
All Modules
===========
.. toctree::
:maxdepth: 1
:glob:
/module/*
.. only:: man
See Also
========
:manual:`ecm(7)`, :manual:`ecm-find-modules(7)`, :manual:`ecm-kde-modules(7)`
================================================
FILE: docs/manual/ecm-toolchains.7.rst
================================================
.. ecm-manual-description: ECM Toolchains Reference
ecm-toolchains(7)
*****************
.. only:: html or latex
.. contents::
Introduction
============
Extra CMake Modules (ECM) provides some toolchain modules. Unlike normal
modules, these are not included directly in projects, but specified with
the ``CMAKE_TOOLCHAIN_FILE`` cache variable on the commandline.
All Modules
===========
.. toctree::
:maxdepth: 1
:glob:
/toolchain/*
.. only:: man
See Also
========
:manual:`ecm(7)`
================================================
FILE: docs/manual/ecm.7.rst
================================================
.. ecm-manual-description: Extra CMake Modules
ecm(7)
******
.. only:: html or latex
.. contents::
.. include:: ../../README.rst
:start-line: 2
================================================
FILE: docs/module/CheckAtomic.rst
================================================
.. ecm-module:: ../../modules/CheckAtomic.cmake
================================================
FILE: docs/module/ECMAddAndroidApk.rst
================================================
.. ecm-module:: ../../modules/ECMAddAndroidApk.cmake
================================================
FILE: docs/module/ECMAddAppIcon.rst
================================================
.. ecm-module:: ../../modules/ECMAddAppIcon.cmake
================================================
FILE: docs/module/ECMAddQch.rst
================================================
.. ecm-module:: ../../modules/ECMAddQch.cmake
================================================
FILE: docs/module/ECMAddQtDesignerPlugin.rst
================================================
.. ecm-module:: ../../modules/ECMAddQtDesignerPlugin.cmake
================================================
FILE: docs/module/ECMAddTests.rst
================================================
.. ecm-module:: ../../modules/ECMAddTests.cmake
================================================
FILE: docs/module/ECMCheckOutboundLicense.rst
================================================
.. ecm-module:: ../../modules/ECMCheckOutboundLicense.cmake
================================================
FILE: docs/module/ECMConfiguredInstall.rst
================================================
.. ecm-module:: ../../modules/ECMConfiguredInstall.cmake
================================================
FILE: docs/module/ECMCoverageOption.rst
================================================
.. ecm-module:: ../../modules/ECMCoverageOption.cmake
================================================
FILE: docs/module/ECMCreateQmFromPoFiles.rst
================================================
.. ecm-module:: ../../modules/ECMCreateQmFromPoFiles.cmake
================================================
FILE: docs/module/ECMDeprecationSettings.rst
================================================
.. ecm-module:: ../../modules/ECMDeprecationSettings.cmake
================================================
FILE: docs/module/ECMEnableSanitizers.rst
================================================
.. ecm-module:: ../../modules/ECMEnableSanitizers.cmake
================================================
FILE: docs/module/ECMFeatureSummary.rst
================================================
.. ecm-module:: ../../modules/ECMFeatureSummary.cmake
================================================
FILE: docs/module/ECMFindModuleHelpers.rst
================================================
.. ecm-module:: ../../modules/ECMFindModuleHelpers.cmake
================================================
FILE: docs/module/ECMFindQmlModule.rst
================================================
.. ecm-module:: ../../modules/ECMFindQmlModule.cmake
================================================
FILE: docs/module/ECMGenerateDBusServiceFile.rst
================================================
.. ecm-module:: ../../modules/ECMGenerateDBusServiceFile.cmake
================================================
FILE: docs/module/ECMGenerateExportHeader.rst
================================================
.. ecm-module:: ../../modules/ECMGenerateExportHeader.cmake
================================================
FILE: docs/module/ECMGenerateHeaders.rst
================================================
.. ecm-module:: ../../modules/ECMGenerateHeaders.cmake
================================================
FILE: docs/module/ECMGeneratePkgConfigFile.rst
================================================
.. ecm-module:: ../../modules/ECMGeneratePkgConfigFile.cmake
================================================
FILE: docs/module/ECMGeneratePriFile.rst
================================================
.. ecm-module:: ../../modules/ECMGeneratePriFile.cmake
================================================
FILE: docs/module/ECMGeneratePythonBindings.rst
================================================
.. ecm-module:: ../../modules/ECMGeneratePythonBindings.cmake
================================================
FILE: docs/module/ECMGenerateQDoc.rst
================================================
.. ecm-module:: ../../modules/ECMGenerateQDoc.cmake
================================================
FILE: docs/module/ECMGenerateQmlTypes.rst
================================================
.. ecm-module:: ../../modules/ECMGenerateQmlTypes.cmake
================================================
FILE: docs/module/ECMInstallIcons.rst
================================================
.. ecm-module:: ../../modules/ECMInstallIcons.cmake
================================================
FILE: docs/module/ECMMarkAsTest.rst
================================================
.. ecm-module:: ../../modules/ECMMarkAsTest.cmake
================================================
FILE: docs/module/ECMMarkNonGuiExecutable.rst
================================================
.. ecm-module:: ../../modules/ECMMarkNonGuiExecutable.cmake
================================================
FILE: docs/module/ECMOptionalAddSubdirectory.rst
================================================
.. ecm-module:: ../../modules/ECMOptionalAddSubdirectory.cmake
================================================
FILE: docs/module/ECMPackageConfigHelpers.rst
================================================
.. ecm-module:: ../../modules/ECMPackageConfigHelpers.cmake
================================================
FILE: docs/module/ECMPoQmTools.rst
================================================
.. ecm-module:: ../../modules/ECMPoQmTools.cmake
================================================
FILE: docs/module/ECMQmlModule.rst
================================================
.. ecm-module:: ../../modules/ECMQmlModule.cmake
================================================
FILE: docs/module/ECMQtDeclareLoggingCategory.rst
================================================
.. ecm-module:: ../../modules/ECMQtDeclareLoggingCategory.cmake
================================================
FILE: docs/module/ECMQueryQt.rst
================================================
.. ecm-module:: ../../modules/ECMQueryQt.cmake
================================================
FILE: docs/module/ECMSetupQtPluginMacroNames.rst
================================================
.. ecm-module:: ../../modules/ECMSetupQtPluginMacroNames.cmake
================================================
FILE: docs/module/ECMSetupVersion.rst
================================================
.. ecm-module:: ../../modules/ECMSetupVersion.cmake
================================================
FILE: docs/module/ECMSourceVersionControl.rst
================================================
.. ecm-module:: ../../modules/ECMSourceVersionControl.cmake
================================================
FILE: docs/module/ECMUninstallTarget.rst
================================================
.. ecm-module:: ../../modules/ECMUninstallTarget.cmake
================================================
FILE: docs/module/ECMUseFindModules.rst
================================================
.. ecm-module:: ../../modules/ECMUseFindModules.cmake
================================================
FILE: docs/module/ECMWinResolveSymlinks.rst
================================================
.. ecm-module:: ../../modules/ECMWinResolveSymlinks.cmake
================================================
FILE: docs/module/QtVersionOption.rst
================================================
.. ecm-module:: ../../modules/QtVersionOption.cmake
================================================
FILE: docs/sphinx/.gitignore
================================================
*.pyc
================================================
FILE: docs/sphinx/conf.py.in
================================================
#=============================================================================
# CMake - Cross Platform Makefile Generator
# SPDX-FileCopyrightText: 2000-2013 Kitware Inc., Insight Software Consortium
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
import sys
import os
import re
import glob
sys.path.insert(0, r'@CMAKE_CURRENT_SOURCE_DIR@/sphinx/ext')
source_suffix = '.rst'
master_doc = 'index'
project = 'Extra CMake Modules'
copyright = 'KDE Developers'
version = '@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@' # feature version
release = '@PROJECT_VERSION@' # full version string
primary_domain = 'ecm'
exclude_patterns = []
extensions = ['ecm']
ecm_manuals = sorted(glob.glob(r'@CMAKE_CURRENT_SOURCE_DIR@/manual/*.rst'))
ecm_manual_description = re.compile(r'^\.\. ecm-manual-description:(.*)$')
man_pages = []
for fpath in ecm_manuals:
try:
name, sec, rst = os.path.basename(fpath).split('.')
desc = None
f = open(fpath, 'r')
for l in f:
m = ecm_manual_description.match(l)
if m:
desc = m.group(1).strip()
break
f.close()
if desc:
man_pages.append(('manual/%s.%s' % (name, sec),
name, desc, [], int(sec)))
else:
sys.stderr.write("ERROR: No ecm-manual-description in '%s'\n" % fpath)
except Exception as e:
sys.stderr.write("ERROR: %s\n" % str(e))
man_show_urls = False
html_show_sourcelink = True
html_static_path = ['@CMAKE_CURRENT_BINARY_DIR@/static']
html_style = 'ecm.css'
html_theme = '@sphinx_theme@'
html_short_title = 'ECM %s documentation' % version
html_favicon = '@CMAKE_CURRENT_SOURCE_DIR@/sphinx/kde-favicon.ico'
================================================
FILE: docs/sphinx/ecm.css.in
================================================
/* Import the Sphinx theme style. */
@import url("${sphinx_theme}.css");
/* Wrap sidebar content even within words so that long
document names do not escape sidebar borders. */
div.sphinxsidebarwrapper {
word-wrap: break-word;
}
================================================
FILE: docs/sphinx/ext/ecm.py
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
#
# Based on cmake.py from CMake:
# SPDX-FileCopyrightText: 2000-2013 Kitware Inc., Insight Software Consortium
#
# SPDX-License-Identifier: BSD-3-Clause
import html
import os
import re
# Monkey patch for pygments reporting an error when generator expressions are
# used.
# https://bitbucket.org/birkenfeld/pygments-main/issue/942/cmake-generator-expressions-not-handled
from pygments.lexers import CMakeLexer
from pygments.token import Name, Operator
from pygments.lexer import bygroups
CMakeLexer.tokens["args"].append(('(\\$<)(.+?)(>)',
bygroups(Operator, Name.Variable, Operator)))
# Monkey patch for sphinx generating invalid content for qcollectiongenerator
# https://bitbucket.org/birkenfeld/sphinx/issue/1435/qthelp-builder-should-htmlescape-keywords
try:
from sphinxcontrib.qthelp import QtHelpBuilder
except ImportError:
# sphinx < 4.0
from sphinx.builders.qthelp import QtHelpBuilder
old_build_keywords = QtHelpBuilder.build_keywords
def new_build_keywords(self, title, refs, subitems):
old_items = old_build_keywords(self, title, refs, subitems)
new_items = []
for item in old_items:
before, rest = item.split("ref=\"", 1)
ref, after = rest.split("\"")
if ("<" in ref and ">" in ref):
new_items.append(before + "ref=\"" + html.escape(ref) + "\"" + after)
else:
new_items.append(item)
return new_items
QtHelpBuilder.build_keywords = new_build_keywords
from docutils.parsers.rst import Directive, directives
from docutils.transforms import Transform
from docutils import io, nodes
from sphinx.directives import ObjectDescription
from sphinx.domains import Domain, ObjType
from sphinx.roles import XRefRole
from sphinx.util.nodes import make_refnode
from sphinx import addnodes
class ECMModule(Directive):
required_arguments = 1
optional_arguments = 0
final_argument_whitespace = True
option_spec = {'encoding': directives.encoding}
def __init__(self, *args, **keys):
self.re_start = re.compile(r'^#\[(?P<eq>=*)\[\.rst:$')
Directive.__init__(self, *args, **keys)
def run(self):
settings = self.state.document.settings
if not settings.file_insertion_enabled:
raise self.warning('"%s" directive disabled.' % self.name)
env = self.state.document.settings.env
rel_path, path = env.relfn2path(self.arguments[0])
path = os.path.normpath(path)
encoding = self.options.get('encoding', settings.input_encoding)
e_handler = settings.input_encoding_error_handler
try:
settings.record_dependencies.add(path)
f = io.FileInput(source_path=path, encoding=encoding,
error_handler=e_handler)
except UnicodeEncodeError:
msg = ('Problems with "%s" directive path:\n'
'Cannot encode input file path "%s" '
'(wrong locale?).' % (self.name, path))
raise self.severe(msg)
except IOError as error:
msg = 'Problems with "%s" directive path:\n%s.' % (self.name, error)
raise self.severe(msg)
raw_lines = f.read().splitlines()
f.close()
rst = None
lines = []
for line in raw_lines:
if rst is not None and rst != '#':
# Bracket mode: check for end bracket
pos = line.find(rst)
if pos >= 0:
if line[0] == '#':
line = ''
else:
line = line[0:pos]
rst = None
else:
# Line mode: check for .rst start (bracket or line)
m = self.re_start.match(line)
if m:
rst = ']%s]' % m.group('eq')
line = ''
elif line == '#.rst:':
rst = '#'
line = ''
elif rst == '#':
if line == '#' or line[:2] == '# ':
line = line[2:]
else:
rst = None
line = ''
elif rst is None:
line = ''
lines.append(line)
if rst is not None and rst != '#':
raise self.warning('"%s" found unclosed bracket "#[%s[.rst:" in %s' %
(self.name, rst[1:-1], path))
self.state_machine.insert_input(lines, path)
return []
class _ecm_index_entry:
def __init__(self, desc):
self.desc = desc
def __call__(self, title, targetid):
return ('pair', u'%s ; %s' % (self.desc, title), targetid, 'main', None)
_ecm_index_objs = {
'manual': _ecm_index_entry('manual'),
'module': _ecm_index_entry('module'),
'find-module': _ecm_index_entry('find-module'),
'kde-module': _ecm_index_entry('kde-module'),
'toolchain': _ecm_index_entry('toolchain'),
}
def _ecm_object_inventory(env, document, line, objtype, targetid):
inv = env.domaindata['ecm']['objects']
if targetid in inv:
document.reporter.warning(
'ECM object "%s" also described in "%s".' %
(targetid, env.doc2path(inv[targetid][0])), line=line)
inv[targetid] = (env.docname, objtype)
class ECMTransform(Transform):
# Run this transform early since we insert nodes we want
# treated as if they were written in the documents.
default_priority = 210
def __init__(self, document, startnode):
Transform.__init__(self, document, startnode)
self.titles = {}
def parse_title(self, docname):
"""Parse a document title as the first line starting in [A-Za-z0-9<]
or fall back to the document basename if no such line exists.
Return the title or False if the document file does not exist.
"""
env = self.document.settings.env
title = self.titles.get(docname)
if title is None:
fname = os.path.join(env.srcdir, docname+'.rst')
try:
f = open(fname, 'r')
except IOError:
title = False
else:
for line in f:
if len(line) > 0 and (line[0].isalnum() or line[0] == '<'):
title = line.rstrip()
break
f.close()
if title is None:
title = os.path.basename(docname)
self.titles[docname] = title
return title
def apply(self):
env = self.document.settings.env
# Treat some documents as ecm domain objects.
objtype, sep, tail = env.docname.rpartition('/')
make_index_entry = _ecm_index_objs.get(objtype)
if make_index_entry:
title = self.parse_title(env.docname)
# Insert the object link target.
targetid = '%s:%s' % (objtype, title)
targetnode = nodes.target('', '', ids=[targetid])
self.document.insert(0, targetnode)
# Insert the object index entry.
indexnode = addnodes.index()
indexnode['entries'] = [make_index_entry(title, targetid)]
self.document.insert(0, indexnode)
# Add to ecm domain object inventory
_ecm_object_inventory(env, self.document, 1, objtype, targetid)
class ECMObject(ObjectDescription):
def handle_signature(self, sig, signode):
# called from sphinx.directives.ObjectDescription.run()
signode += addnodes.desc_name(sig, sig)
return sig
def add_target_and_index(self, name, sig, signode):
targetid = '%s:%s' % (self.objtype, name)
if targetid not in self.state.document.ids:
signode['names'].append(targetid)
signode['ids'].append(targetid)
signode['first'] = (not self.names)
self.state.document.note_explicit_target(signode)
_ecm_object_inventory(self.env, self.state.document,
self.lineno, self.objtype, targetid)
make_index_entry = _ecm_index_objs.get(self.objtype)
if make_index_entry:
self.indexnode['entries'].append(make_index_entry(name, targetid))
class ECMXRefRole(XRefRole):
# See sphinx.util.nodes.explicit_title_re; \x00 escapes '<'.
_re = re.compile(r'^(.+?)(\s*)(?<!\x00)<(.*?)>$', re.DOTALL)
_re_sub = re.compile(r'^([^()\s]+)\s*\(([^()]*)\)$', re.DOTALL)
def __call__(self, typ, rawtext, text, *args, **keys):
# CMake cross-reference targets may contain '<' so escape
# any explicit `<target>` with '<' not preceded by whitespace.
while True:
m = ECMXRefRole._re.match(text)
if m and len(m.group(2)) == 0:
text = '%s\x00<%s>' % (m.group(1), m.group(3))
else:
break
return XRefRole.__call__(self, typ, rawtext, text, *args, **keys)
class ECMDomain(Domain):
"""ECM domain."""
name = 'ecm'
label = 'ECM'
object_types = {
'module': ObjType('module', 'module'),
'kde-module': ObjType('kde-module', 'kde-module'),
'find-module': ObjType('find-module', 'find-module'),
'manual': ObjType('manual', 'manual'),
'toolchain': ObjType('toolchain', 'toolchain'),
}
directives = {}
roles = {
'module': XRefRole(),
'kde-module': XRefRole(),
'find-module': XRefRole(),
'manual': XRefRole(),
'toolchain': XRefRole(),
}
initial_data = {
'objects': {}, # fullname -> docname, objtype
}
def clear_doc(self, docname):
to_clear = []
for fullname, (fn, _) in self.data['objects'].items():
if fn == docname:
to_clear.append(fullname)
for fullname in to_clear:
del self.data['objects'][fullname]
def resolve_xref(self, env, fromdocname, builder,
typ, target, node, contnode):
targetid = '%s:%s' % (typ, target)
obj = self.data['objects'].get(targetid)
if obj is None:
# TODO: warn somehow?
return None
return make_refnode(builder, fromdocname, obj[0], targetid,
contnode, target)
def get_objects(self):
for refname, (docname, type) in self.data['objects'].items():
yield (refname, refname, type, docname, refname, 1)
def setup(app):
app.add_directive('ecm-module', ECMModule)
app.add_transform(ECMTransform)
app.add_domain(ECMDomain)
================================================
FILE: docs/toolchain/Android.rst
================================================
.. ecm-module:: ../../toolchain/Android.cmake
================================================
FILE: find-modules/ECMFindModuleHelpersStub.cmake
================================================
include(${CMAKE_CURRENT_LIST_DIR}/../modules/ECMFindModuleHelpers.cmake)
================================================
FILE: find-modules/Find7Zip.cmake
================================================
# SPDX-FileCopyrightText: 2019, 2021, 2023 Friedrich W. H. Kossebau <kossebau@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
Find7Zip
--------
Try to find 7-Zip.
If the 7-Zip executable is not in your PATH, you can provide
an alternative name or full path location with the ``7Zip_EXECUTABLE``
variable.
This will define the following variables:
``7Zip_FOUND``
TRUE if 7-Zip is available
``7Zip_EXECUTABLE``
Path to 7-Zip executable
If ``7Zip_FOUND`` is TRUE, it will also define the following imported
target:
``7Zip::7Zip``
Path to 7-Zip executable
.. note::
It will see to only find the original 7-Zip, not one of the p7zip forks.
Since 5.113.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
if(WIN32)
find_program(7Zip_EXECUTABLE NAMES 7z 7za)
else()
# Some p7zip used to be a fork for Linux of older 7-Zip,
# just supporting the 7z format, and occupied the 7z binary name.
# When 7-Zip got its official Linux support, it chose 7zz to not conflict,
# given it also has another set of arguments.
# Later p7zip was forked once more into some p7zip-zstd, using a newer copy of 7-Zip,
# supporting more than 7z format, therefore also many of the arguments known from 7-Zip.
# Being a different project though and now a real fork due to 7-Zip supporting Linux,
# we try to only find the original here, so consumers can rely on the original 7-Zip documentation.
find_program(7Zip_EXECUTABLE NAMES 7zz)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(7Zip
FOUND_VAR
7Zip_FOUND
REQUIRED_VARS
7Zip_EXECUTABLE
)
mark_as_advanced(7Zip_EXECUTABLE)
if(NOT TARGET 7Zip::7Zip AND 7Zip_FOUND)
add_executable(7Zip::7Zip IMPORTED)
set_target_properties(7Zip::7Zip PROPERTIES
IMPORTED_LOCATION "${7Zip_EXECUTABLE}"
)
endif()
include(FeatureSummary)
set_package_properties(7Zip PROPERTIES
URL "https://www.7-zip.org/"
DESCRIPTION "Data (de)compression program"
)
================================================
FILE: find-modules/Find7z.cmake
================================================
# SPDX-FileCopyrightText: 2019, 2021 Friedrich W. H. Kossebau <kossebau@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
Find7z
------
Try to find 7z.
If the 7z executable is not in your PATH, you can provide
an alternative name or full path location with the ``7z_EXECUTABLE``
variable.
This will define the following variables:
``7z_FOUND``
TRUE if 7z is available
``7z_EXECUTABLE``
Path to 7z executable
If ``7z_FOUND`` is TRUE, it will also define the following imported
target:
``7z::7z``
Path to 7z executable
.. note::
Only works on Windows.
Deprecated: since 5.113, use :find-module:`Find7Zip`.
Since 5.85.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_program(7z_EXECUTABLE NAMES 7z.exe 7za.exe)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(7z
FOUND_VAR
7z_FOUND
REQUIRED_VARS
7z_EXECUTABLE
)
mark_as_advanced(7z_EXECUTABLE)
if(NOT TARGET 7z::7z AND 7z_FOUND)
add_executable(7z::7z IMPORTED)
set_target_properties(7z::7z PROPERTIES
IMPORTED_LOCATION "${7z_EXECUTABLE}"
)
endif()
include(FeatureSummary)
set_package_properties(7z PROPERTIES
URL "https://www.7-zip.org/"
DESCRIPTION "Data (de)compression program"
)
================================================
FILE: find-modules/FindCanberra.cmake
================================================
# SPDX-FileCopyrightText: 2012 Raphael Kubo da Costa <rakuco@FreeBSD.org>
# SPDX-FileCopyrightText: 2019 Harald Sitter <sitter@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindCanberra
------------
Try to find Canberra event sound library.
This will define the following variables:
``Canberra_FOUND``
True if (the requested version of) Canberra is available
``Canberra_VERSION``
The version of Canberra
``Canberra_LIBRARIES``
The libraries of Canberra for use with target_link_libraries()
``Canberra_INCLUDE_DIRS``
The include dirs of Canberra for use with target_include_directories()
If ``Canberra_FOUND`` is TRUE, it will also define the following imported
target:
``Canberra::Canberra``
The Canberra library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
Since 5.56.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_Canberra QUIET IMPORTED_TARGET libcanberra)
find_library(Canberra_LIBRARIES
NAMES canberra
HINTS ${PC_Canberra_LIBRARY_DIRS}
)
find_path(Canberra_INCLUDE_DIRS
NAMES canberra.h
HINTS ${PC_Canberra_INCLUDE_DIRS}
)
set(Canberra_VERSION ${PC_Canberra_VERSION})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Canberra
FOUND_VAR
Canberra_FOUND
REQUIRED_VARS
Canberra_LIBRARIES
Canberra_INCLUDE_DIRS
VERSION_VAR
Canberra_VERSION
)
if(Canberra_FOUND AND NOT TARGET Canberra::Canberra)
add_library(Canberra::Canberra UNKNOWN IMPORTED)
set_target_properties(Canberra::Canberra PROPERTIES
IMPORTED_LOCATION "${Canberra_LIBRARIES}"
INTERFACE_COMPILE_OPTIONS "${PC_Canberra_CFLAGS}"
INTERFACE_INCLUDE_DIRECTORIES "${Canberra_INCLUDE_DIRS}"
)
if (TARGET PkgConfig::PC_Canberra)
target_link_libraries(Canberra::Canberra INTERFACE PkgConfig::PC_Canberra)
endif()
endif()
mark_as_advanced(Canberra_LIBRARIES Canberra_INCLUDE_DIRS Canberra_VERSION)
include(FeatureSummary)
set_package_properties(Canberra PROPERTIES
DESCRIPTION "Event sound library"
URL "https://0pointer.de/lennart/projects/libcanberra"
)
# Compatibility variables. In a previous life FindCanberra lived
# in a number of different repos: don't break them if they use ECM but have not
# been updated for this finder.
set(CANBERRA_FOUND ${Canberra_FOUND})
set(CANBERRA_VERSION ${Canberra_VERSION})
set(CANBERRA_LIBRARIES ${Canberra_LIBRARIES})
set(CANBERRA_INCLUDE_DIRS ${Canberra_INCLUDE_DIRS})
mark_as_advanced(CANBERRA_VERSION CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS)
================================================
FILE: find-modules/FindEGL.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindEGL
-------
Try to find EGL.
This will define the following variables:
``EGL_FOUND``
True if (the requested version of) EGL is available
``EGL_VERSION``
The version of EGL; note that this is the API version defined in the
headers, rather than the version of the implementation (eg: Mesa)
``EGL_LIBRARIES``
This can be passed to target_link_libraries() instead of the ``EGL::EGL``
target
``EGL_INCLUDE_DIRS``
This should be passed to target_include_directories() if the target is not
used for linking
``EGL_DEFINITIONS``
This should be passed to target_compile_options() if the target is not
used for linking
If ``EGL_FOUND`` is TRUE, it will also define the following imported target:
``EGL::EGL``
The EGL library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
Since pre-1.0.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
include(CheckCXXSourceCompiles)
include(CMakePushCheckState)
ecm_find_package_version_check(EGL)
# Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_EGL QUIET egl)
set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER})
find_path(EGL_INCLUDE_DIR
NAMES
EGL/egl.h
HINTS
${PKG_EGL_INCLUDE_DIRS}
)
if(NOT EMSCRIPTEN)
find_library(EGL_LIBRARY
NAMES
EGL
libEGL
HINTS
${PKG_EGL_LIBRARY_DIRS}
)
endif()
# NB: We do *not* use the version information from pkg-config, as that
# is the implementation version (eg: the Mesa version)
if(EGL_INCLUDE_DIR)
# egl.h has defines of the form EGL_VERSION_x_y for each supported
# version; so the header for EGL 1.1 will define EGL_VERSION_1_0 and
# EGL_VERSION_1_1. Finding the highest supported version involves
# finding all these defines and selecting the highest numbered.
file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents)
string(REGEX MATCHALL
"[ \t]EGL_VERSION_[0-9_]+"
_EGL_version_lines
"${_EGL_header_contents}"
)
unset(_EGL_header_contents)
foreach(_EGL_version_line ${_EGL_version_lines})
string(REGEX REPLACE
"[ \t]EGL_VERSION_([0-9_]+)"
"\\1"
_version_candidate
"${_EGL_version_line}"
)
string(REPLACE "_" "." _version_candidate "${_version_candidate}")
if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate)
set(EGL_VERSION "${_version_candidate}")
endif()
endforeach()
unset(_EGL_version_lines)
endif()
cmake_push_check_state(RESET)
if(NOT EMSCRIPTEN)
list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}")
endif()
list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}")
check_cxx_source_compiles("
#include <EGL/egl.h>
int main(int argc, char *argv[]) {
EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0;
eglDestroyContext(dpy, ctx);
}" HAVE_EGL)
cmake_pop_check_state()
set(required_vars EGL_INCLUDE_DIR HAVE_EGL)
if(NOT EMSCRIPTEN)
list(APPEND required_vars EGL_LIBRARY)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(EGL
FOUND_VAR
EGL_FOUND
REQUIRED_VARS
${required_vars}
VERSION_VAR
EGL_VERSION
)
if(EGL_FOUND AND NOT TARGET EGL::EGL)
if (EMSCRIPTEN)
add_library(EGL::EGL INTERFACE IMPORTED)
# Nothing further to be done, system include paths have headers and linkage is implicit.
else()
add_library(EGL::EGL UNKNOWN IMPORTED)
set_target_properties(EGL::EGL PROPERTIES
IMPORTED_LOCATION "${EGL_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}"
)
endif()
endif()
mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL)
# compatibility variables
set(EGL_LIBRARIES ${EGL_LIBRARY})
set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
set(EGL_VERSION_STRING ${EGL_VERSION})
include(FeatureSummary)
set_package_properties(EGL PROPERTIES
URL "https://www.khronos.org/egl/"
DESCRIPTION "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG."
)
================================================
FILE: find-modules/FindFFmpeg.cmake
================================================
# SPDX-FileCopyrightText: 2006 Matthias Kretz <kretz@kde.org>
# SPDX-FileCopyrightText: 2008 Alexander Neundorf <neundorf@kde.org>
# SPDX-FileCopyrightText: 2011 Michael Jansen <kde@michael-jansen.biz>
# SPDX-FileCopyrightText: 2021 Stefan Brüns <stefan.bruens@rwth-aachen.de>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindFFmpeg
----------
Try to find FFmpeg components.
The following components are available::
AVCODEC AVFILTER AVDEVICE AVFORMAT
AVUTIL SWRESAMPLE SWSCALE POSTPROCESS
If no components are specified in the find_module call, the following ones
will be choosen as default::
AVFORMAT AVUTIL AVCODEC
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``FFmpeg::FFmpeg``
For all the required FFmpeg components
``FFmpeg::<component>``
For each <component> that was found
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``FFMPEG_FOUND``
System has the all required components.
``FFMPEG_INCLUDE_DIRS``
Include directory necessary for using the required components headers.
``FFMPEG_LIBRARIES``
Link these to use the required FFmpeg components.
``FFMPEG_DEFINITIONS``
Compiler switches required for using the required FFmpeg components.
Additionally for each of the components, the following variables will be defined:
``<component>_FOUND``
True if (the requestion version of) <component> is available
``<component>_INCLUDE_DIRS``
Include directory necessary for using the <component> headers
``<component>_LIBRARIES``
Link these to use <component>
``<component>_DEFINITIONS``
Compiler switches required for using <component>
``<component>_VERSION``
The components version (NOTE: always empty on Windows)
As the versions of the various FFmpeg components differ for a given release,
and CMake supports only one common version for all components, use the
following to specify required versions for multiple components:
.. code-block:: cmake
find_package(FFmpeg 57.48 COMPONENTS AVCODEC)
find_package(FFmpeg 57.40 COMPONENTS AVFORMAT)
find_package(FFmpeg 55.27 COMPONENTS AVUTIL)
NOTE: version checking is skipped on Windows
Since 6.20.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(FindPackageHandleStandardArgs)
if(NOT FFmpeg_FIND_COMPONENTS)
# The default components were taken from a survey over other FindFFMPEG.cmake files
set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL)
endif()
list(LENGTH FFmpeg_FIND_COMPONENTS _numComponents)
if((${_numComponents} GREATER 1) AND DEFINED ${FFmpeg_FIND_VERSION})
message(WARNING "Using a required version in combination with multiple COMPONENTS is not supported")
set(_FFmpeg_REQUIRED_VERSION 0)
elseif(DEFINED FFmpeg_FIND_VERSION)
set(_FFmpeg_REQUIRED_VERSION ${FFmpeg_FIND_VERSION})
else()
set(_FFmpeg_REQUIRED_VERSION 0)
endif()
set(_FFmpeg_ALL_COMPONENTS AVCODEC AVFILTER AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWRESAMPLE SWSCALE)
### Macro: set_component_found
#
# Marks the given component as found if both *_LIBRARIES AND *_INCLUDE_DIRS is present.
macro(set_component_found _component )
if(${_component}_LIBRARIES AND ${_component}_INCLUDE_DIRS)
set(${_component}_FOUND TRUE)
set(FFmpeg_${_component}_FOUND TRUE)
endif()
endmacro()
macro(create_target _component )
if(${_component}_FOUND AND NOT TARGET FFmpeg::${_component})
add_library(FFmpeg::${_component} UNKNOWN IMPORTED)
set_target_properties(FFmpeg::${_component} PROPERTIES
IMPORTED_LOCATION "${${_component}_LIBRARIES}"
INTERFACE_COMPILE_OPTIONS "${${_component}_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${${_component}_INCLUDE_DIRS}"
)
endif()
endmacro()
### Macro: find_component
#
# Checks for the given component by invoking pkgconfig and then looking up the libraries and
# include directories.
macro(find_component _component _pkgconfig _library _header)
if(NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
pkg_check_modules(PC_${_component} QUIET ${_pkgconfig})
endif()
find_path(${_component}_INCLUDE_DIRS ${_header}
HINTS
${PC_LIB${_component}_INCLUDEDIR}
${PC_LIB${_component}_INCLUDE_DIRS}
PATH_SUFFIXES
ffmpeg
)
find_library(${_component}_LIBRARIES NAMES ${_library}
HINTS
${PC_LIB${_component}_LIBDIR}
${PC_LIB${_component}_LIBRARY_DIRS}
)
set(${_component}_DEFINITIONS ${PC_${_component}_CFLAGS_OTHER} CACHE STRING "The ${_component} CFLAGS.")
set(${_component}_VERSION ${PC_${_component}_VERSION} CACHE STRING "The ${_component} version number.")
set_component_found(${_component})
create_target(${_component})
mark_as_advanced(
${_component}_INCLUDE_DIRS
${_component}_LIBRARIES
${_component}_DEFINITIONS
${_component}_VERSION)
endmacro()
# Check for cached results. If there are skip the costly part.
if(NOT FFMPEG_LIBRARIES)
# Check for all possible component.
find_component(AVCODEC libavcodec avcodec libavcodec/avcodec.h)
find_component(AVFILTER libavfilter avfilter libavfilter/avfilter.h)
find_component(AVFORMAT libavformat avformat libavformat/avformat.h)
find_component(AVDEVICE libavdevice avdevice libavdevice/avdevice.h)
find_component(AVUTIL libavutil avutil libavutil/avutil.h)
find_component(SWRESAMPLE libswresample swresample libswresample/swresample.h)
find_component(SWSCALE libswscale swscale libswscale/swscale.h)
find_component(POSTPROCESS libpostproc postproc libpostproc/postprocess.h)
# Check if the required components were found and add their stuff to the FFMPEG_* vars.
foreach(_component ${_FFmpeg_ALL_COMPONENTS})
if(${_component}_FOUND)
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${${_component}_LIBRARIES})
set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} ${${_component}_DEFINITIONS})
list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS})
endif()
endforeach()
# Build the include path with duplicates removed.
if(FFMPEG_INCLUDE_DIRS)
list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS)
endif()
# cache the vars.
set(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} CACHE STRING "The FFmpeg include directories." FORCE)
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} CACHE STRING "The FFmpeg libraries." FORCE)
set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} CACHE STRING "The FFmpeg cflags." FORCE)
mark_as_advanced(FFMPEG_INCLUDE_DIRS
FFMPEG_LIBRARIES
FFMPEG_DEFINITIONS)
else()
# Set the noncached _FOUND vars for the components.
foreach(_component ${_FFmpeg_ALL_COMPONENTS})
set_component_found(${_component})
create_target(${_component})
endforeach()
endif()
# Compile the list of required vars
unset(_FFmpeg_REQUIRED_VARS)
set(_FFmpeg_FOUND_LIBRARIES "")
foreach(_component ${FFmpeg_FIND_COMPONENTS})
if(${_component}_FOUND)
if(NOT WIN32)
if(${_component}_VERSION VERSION_LESS _FFmpeg_REQUIRED_VERSION)
message(STATUS "${_component}: ${${_component}_VERSION} < ${_FFmpeg_REQUIRED_VERSION}")
unset(${_component}_FOUND)
endif()
else()
# We don't use PkgConfig on Windows an hence the <component>_VERSION var is empty
# TODO: We could add some magic to retrieve the version from the .pc files or version headers ourself,
# like https://github.com/Kitware/VTK/blob/master/CMake/FindFFMPEG.cmake
message(WARNING "${_component}: Version check is not supported on Windows, skipping version check")
endif()
list(APPEND _FFmpeg_FOUND_LIBRARIES ${${_component}_LIBRARIES})
endif()
list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS ${_component}_FOUND)
endforeach()
list(INSERT _FFmpeg_REQUIRED_VARS 0 _FFmpeg_FOUND_LIBRARIES)
# Give a nice error message if some of the required vars are missing.
find_package_handle_standard_args(FFmpeg
REQUIRED_VARS ${_FFmpeg_REQUIRED_VARS}
HANDLE_COMPONENTS)
# Create the general target
if(FFmpeg_FOUND AND NOT TARGET FFmpeg::FFmpeg)
add_library(FFmpeg::FFmpeg INTERFACE IMPORTED)
foreach(_component ${FFmpeg_FIND_COMPONENTS})
if(${_component}_FOUND AND TARGET FFmpeg::${_component})
target_link_libraries(FFmpeg::FFmpeg INTERFACE FFmpeg::${_component})
endif()
endforeach()
endif()
================================================
FILE: find-modules/FindGLIB2.cmake
================================================
# SPDX-FileCopyrightText: 2008 Laurent Montel <montel@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindGLIB2
---------
Try to locate the GLib2 library.
If found, this will define the following variables:
``GLIB2_FOUND``
True if the GLib2 library is available
``GLIB2_INCLUDE_DIRS``
The GLib2 include directories
``GLIB2_LIBRARIES``
The GLib2 libraries for linking
``GLIB2_INCLUDE_DIR``
Deprecated, use ``GLIB2_INCLUDE_DIRS``
``GLIB2_LIBRARY``
Deprecated, use ``GLIB2_LIBRARIES``
If ``GLIB2_FOUND`` is TRUE, it will also define the following
imported target:
``GLIB2::GLIB2``
The GLIB2 library
``GLIB2::GTHREAD2``
The GThread2 library (since 6.7.0)
``GLIB2::GOBJECT``
The GObject library (since 6.7.0)
``GLIB2::GIO``
The GIO library (since 6.7.0)
Since 5.41.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_GLIB2 QUIET glib-2.0)
find_path(GLIB2_INCLUDE_DIRS
NAMES glib.h
HINTS ${PC_GLIB2_INCLUDEDIR}
PATH_SUFFIXES glib-2.0)
find_library(GLIB2_LIBRARIES
NAMES glib-2.0
HINTS ${PC_GLIB2_LIBDIR}
)
pkg_check_modules(PC_GTHREAD2 QUIET gthread-2.0)
find_library(GTHREAD2_LIBRARIES
NAMES gthread-2.0
HINTS ${PC_GTHREAD2_LIBDIR}
)
pkg_check_modules(PC_GOBJECT QUIET gobject-2.0)
find_path(GLIB2_GOBJECT_INCLUDE_DIRS
NAMES glib-object.h
HINTS ${PC_GOBJECT_INCLUDEDIR}
PATH_SUFFIXES glib-2.0)
find_library(GLIB2_GOBJECT_LIBRARIES
NAMES gobject-2.0
HINTS ${PC_GOBJECT_LIBDIR}
)
pkg_check_modules(PC_GIO QUIET gio-2.0)
find_path(GLIB2_GIO_INCLUDE_DIRS
NAMES gio/gio.h
HINTS ${PC_GIO_INCLUDEDIR}
PATH_SUFFIXES glib-2.0)
find_library(GLIB2_GIO_LIBRARIES
NAMES gio-2.0
HINTS ${PC_GIO_LIBDIR}
)
# search the glibconfig.h include dir under the same root where the library is found
get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" DIRECTORY)
find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h
PATH_SUFFIXES glib-2.0/include
HINTS ${PC_GLIB2_INCLUDEDIR} "${glib2LibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH})
# not sure if this include dir is optional or required
# for now it is optional
if(GLIB2_INTERNAL_INCLUDE_DIR)
list(APPEND GLIB2_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GLIB2_GOBJECT_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
list(APPEND GLIB2_GIO_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
endif()
# Deprecated synonyms
set(GLIB2_INCLUDE_DIR "${GLIB2_INCLUDE_DIRS}")
set(GLIB2_LIBRARY "${GLIB2_LIBRARIES}")
set(GLIB2_GOBJECT_INCLUDE_DIR "${GLIB2_GOBJECT_INCLUDE_DIRS}")
set(GLIB2_GOBJECT_LIBRARY "${GLIB2_GOBJECT_LIBRARIES}")
set(GLIB2_GIO_INCLUDE_DIR "${GLIB2_GIO_INCLUDE_DIRS}")
set(GLIB2_GIO_LIBRARY "${GLIB2_GIO_LIBRARIES}")
if(GLIB2_GOBJECT_LIBRARIES AND GLIB2_GOBJECT_INCLUDE_DIRS)
set(GLIB2_GOBJECT_FOUND TRUE)
endif()
if(GLIB2_GIO_LIBRARIES AND GLIB2_GIO_INCLUDE_DIRS)
set(GLIB2_GIO_FOUND TRUE)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLIB2
REQUIRED_VARS GLIB2_LIBRARIES GTHREAD2_LIBRARIES GLIB2_INCLUDE_DIRS
HANDLE_COMPONENTS)
if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
add_library(GLIB2::GLIB2 UNKNOWN IMPORTED)
set_target_properties(GLIB2::GLIB2 PROPERTIES
IMPORTED_LOCATION "${GLIB2_LIBRARIES}"
INTERFACE_LINK_LIBRARIES "${GTHREAD2_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}")
endif()
if(GLIB2_GOBJECT_FOUND AND NOT TARGET GLIB2::GOBJECT)
add_library(GLIB2::GOBJECT UNKNOWN IMPORTED)
set_target_properties(GLIB2::GOBJECT PROPERTIES
IMPORTED_LOCATION "${GLIB2_GOBJECT_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GOBJECT_INCLUDE_DIRS}")
endif()
if(GLIB2_GIO_FOUND AND NOT TARGET GLIB2::GIO)
add_library(GLIB2::GIO UNKNOWN IMPORTED)
set_target_properties(GLIB2::GIO PROPERTIES
IMPORTED_LOCATION "${GLIB2_GIO_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GIO_INCLUDE_DIRS}")
endif()
mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR
GLIB2_LIBRARIES GLIB2_LIBRARY
GLIB2_GOBJECT_INCLUDE_DIRS GLIB2_GOBJECT_INCLUDE_DIR
GLIB2_GOBJECT_LIBRARIES GLIB2_GOBJECT_LIBRARY
GLIB2_GIO_INCLUDE_DIRS GLIB2_GIO_INCLUDE_DIR
GLIB2_GIO_LIBRARIES GLIB2_GIO_LIBRARY)
include(FeatureSummary)
set_package_properties(GLIB2 PROPERTIES
URL "https://wiki.gnome.org/Projects/GLib"
DESCRIPTION "Event loop and utility library")
================================================
FILE: find-modules/FindGperf.cmake
================================================
# SPDX-FileCopyrightText: 2016-2017 Pino Toscano <pino@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindGperf
-----------
Try to find GNU gperf.
If the gperf executable is not in your PATH, you can provide
an alternative name or full path location with the ``Gperf_EXECUTABLE``
variable.
This will define the following variables:
``Gperf_FOUND``
True if gperf is available.
``Gperf_EXECUTABLE``
The gperf executable.
``Gperf_VERSION``
The gperf version. (since 5.85)
If ``Gperf_FOUND`` is TRUE, it will also define the following imported
target:
``GPerf::Gperf``
The gperf executable.
and the following public function:
::
ecm_gperf_generate(<GperfInput> <OutputFile> <OutputVariable(|target (since 5.83))>
[GENERATION_FLAGS <flags>])
Run ``gperf`` on ``<GperfInput>`` to generate ``<OutputFile>``, adding it to
the ``<OutputVariable>`` variable which contains the source for the target
where ``<OutputFile>`` is going to be built or, since KF 5.83, if the given
argument is a target, to the list of private sources of that target. The
target must not be an alias. The optional ``GENERATION_FLAGS`` argument is
needed to pass extra parameters to ``gperf`` (note you cannot override that
way the output file).
A simple invocation would be:
.. code-block:: cmake
ecm_gperf_generate(simple.gperf ${CMAKE_CURRENT_BINARY_DIR}/simple.h MySources)
Since 5.35.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(Gperf)
# Find gperf
find_program(Gperf_EXECUTABLE NAMES gperf)
if(Gperf_EXECUTABLE)
execute_process(COMMAND ${Gperf_EXECUTABLE} -v
OUTPUT_VARIABLE _version_string
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(_version_string MATCHES "^GNU gperf ([-0-9\\.]+)")
set(Gperf_VERSION "${CMAKE_MATCH_1}")
endif()
unset(_version_string)
else()
set(Gperf_VERSION)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Gperf
FOUND_VAR
Gperf_FOUND
REQUIRED_VARS
Gperf_EXECUTABLE
VERSION_VAR
Gperf_VERSION
)
mark_as_advanced(Gperf_EXECUTABLE)
if (Gperf_FOUND)
if (NOT TARGET GPerf::Gperf)
add_executable(GPerf::Gperf IMPORTED)
set_target_properties(GPerf::Gperf PROPERTIES
IMPORTED_LOCATION "${Gperf_EXECUTABLE}"
)
endif()
endif()
include(FeatureSummary)
set_package_properties(Gperf PROPERTIES
URL "https://www.gnu.org/software/gperf/"
DESCRIPTION "Perfect hash function generator"
)
function(ecm_gperf_generate input_file output_file _target_or_sources_var)
# Parse arguments
set(oneValueArgs GENERATION_FLAGS)
cmake_parse_arguments(ARGS "" "${oneValueArgs}" "" ${ARGN})
if(ARGS_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to ecm_gperf_generate(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
endif()
if (TARGET ${_target_or_sources_var})
get_target_property(aliased_target ${_target_or_sources_var} ALIASED_TARGET)
if(aliased_target)
message(FATAL_ERROR "Target argument passed to ecm_gperf_generate must not be an alias: ${_target_or_sources_var}")
endif()
endif()
get_filename_component(_infile ${input_file} ABSOLUTE)
set(_extraopts "${ARGS_GENERATION_FLAGS}")
separate_arguments(_extraopts)
add_custom_command(OUTPUT ${output_file}
COMMAND ${Gperf_EXECUTABLE} ${_extraopts} --output-file=${output_file} ${_infile}
DEPENDS ${_infile}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
VERBATIM
)
set_property(SOURCE ${output_file} PROPERTY SKIP_AUTOMOC ON)
if (TARGET ${_target_or_sources_var})
target_sources(${_target_or_sources_var} PRIVATE ${output_file})
else()
set(${_target_or_sources_var} ${${_target_or_sources_var}} ${output_file} PARENT_SCOPE)
endif()
endfunction()
================================================
FILE: find-modules/FindGradle.cmake
================================================
# SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindGradle
----------
Provides the ability to build Android AAR libraries using Gradle.
This relies on the Qt provided Gradle, so a Qt for Android installation
is required.
::
gradle_add_aar(<target>
BUIDLFILE build.gradle
NAME <aar-name>)
This builds an Android AAR library using the given ``build.gradle`` file.
::
gradle_install_aar(<target>
DESTINATION <dest>)
Installs a Android AAR library that has been created with ``gradle_add_aar``.
Since 5.76.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/../modules/QtVersionOption.cmake)
include(FindPackageHandleStandardArgs)
find_package(Qt${QT_MAJOR_VERSION}Core REQUIRED)
set (Gradle_PRECOMMAND "")
if (NOT WIN32)
set(Gradle_EXECUTABLE ${CMAKE_BINARY_DIR}/gradle/gradlew)
# the gradlew script installed by Qt6 is not executable, so running it directly fails
if (QT_MAJOR_VERSION EQUAL "6")
set(Gradle_PRECOMMAND "sh")
endif()
else()
set(Gradle_EXECUTABLE ${CMAKE_BINARY_DIR}/gradle/gradlew.bat)
endif()
get_target_property(_qt_core_location Qt${QT_MAJOR_VERSION}::Core LOCATION)
get_filename_component(_qt_install_root ${_qt_core_location} DIRECTORY)
get_filename_component(_qt_install_root ${_qt_install_root}/../ ABSOLUTE)
set(_gradle_template_dir ${CMAKE_CURRENT_LIST_DIR})
add_custom_command(OUTPUT ${Gradle_EXECUTABLE}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/gradle
COMMAND ${CMAKE_COMMAND} -E copy_directory ${_qt_install_root}/src/3rdparty/gradle ${CMAKE_BINARY_DIR}/gradle
)
add_custom_target(gradle DEPENDS ${Gradle_EXECUTABLE})
# Android Gradle plugin version (not the Gradle version!) used by Qt, for use in our own build.gradle files
file(READ ${_qt_install_root}/src/android/templates/build.gradle _build_grade_template)
string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" Gradle_ANDROID_GRADLE_PLUGIN_VERSION ${_build_grade_template})
find_package_handle_standard_args(Gradle DEFAULT_MSG Gradle_EXECUTABLE)
function(gradle_add_aar target)
cmake_parse_arguments(ARG "" "BUILDFILE;NAME" "" ${ARGN})
set(_build_root ${CMAKE_CURRENT_BINARY_DIR}/gradle_build/${ARG_NAME})
configure_file(${_gradle_template_dir}/local.properties.cmake ${_build_root}/local.properties)
configure_file(${_gradle_template_dir}/settings.gradle.cmake ${_build_root}/settings.gradle)
configure_file(${ARG_BUILDFILE} ${_build_root}/build.gradle)
if (CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
set(_aar_suffix "-debug")
set(_aar_gradleCmd "assembleDebug")
else()
set(_aar_suffix "-release")
set(_aar_gradleCmd "assembleRelease")
endif()
file(GLOB_RECURSE _src_files CONFIGURE_DEPENDS "*")
add_custom_command(
OUTPUT ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar
COMMAND ${Gradle_PRECOMMAND} ${Gradle_EXECUTABLE} ${_aar_gradleCmd}
# this allows make create-apk to work without installations for apps with AAR libs in the same repository
COMMAND ${CMAKE_COMMAND} -E copy ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar ${CMAKE_BINARY_DIR}/jar/${ARG_NAME}.aar
DEPENDS ${Gradle_EXECUTABLE} ${_src_files}
DEPENDS gradle
WORKING_DIRECTORY ${_build_root}
)
add_custom_target(${target} ALL DEPENDS ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar)
set_target_properties(${target} PROPERTIES LOCATION ${_build_root}/build/outputs/aar/${ARG_NAME}${_aar_suffix}.aar)
set_target_properties(${target} PROPERTIES OUTPUT_NAME ${ARG_NAME})
endfunction()
function(gradle_install_aar target)
cmake_parse_arguments(ARG "" "DESTINATION" "" ${ARGN})
get_target_property(_loc ${target} LOCATION)
get_target_property(_name ${target} OUTPUT_NAME)
install(FILES ${_loc} DESTINATION ${ARG_DESTINATION} RENAME ${_name}.aar)
endfunction()
================================================
FILE: find-modules/FindIcoTool.cmake
================================================
# SPDX-FileCopyrightText: 2017 Vincent Pinon <vpinon@kde.org>
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindIcoTool
-----------
Try to find icotool.
If the icotool executable is not in your PATH, you can provide
an alternative name or full path location with the ``IcoTool_EXECUTABLE``
variable.
This will define the following variables:
``IcoTool_FOUND``
True if icotool is available.
``IcoTool_EXECUTABLE``
The icotool executable.
If ``IcoTool_FOUND`` is TRUE, it will also define the following imported
target:
``IcoTool::IcoTool``
The icotool executable.
Since 5.49.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(IcoTool)
find_program(IcoTool_EXECUTABLE NAMES icotool)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(IcoTool
FOUND_VAR
IcoTool_FOUND
REQUIRED_VARS
IcoTool_EXECUTABLE
)
mark_as_advanced(IcoTool_EXECUTABLE)
if (IcoTool_FOUND)
if (NOT TARGET IcoTool::IcoTool)
add_executable(IcoTool::IcoTool IMPORTED)
set_target_properties(IcoTool::IcoTool PROPERTIES
IMPORTED_LOCATION "${IcoTool_EXECUTABLE}"
)
endif()
endif()
include(FeatureSummary)
set_package_properties(IcoTool PROPERTIES
URL "https://www.nongnu.org/icoutils/"
DESCRIPTION "Executable that converts a collection of PNG files into a Windows icon file"
)
================================================
FILE: find-modules/FindInotify.cmake
================================================
# SPDX-FileCopyrightText: 2016 Tobias C. Berner <tcberner@FreeBSD.org>
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
#
# SPDX-License-Identifier: BSD-2-Clause
#[=======================================================================[.rst:
FindInotify
--------------
Try to find inotify on this system. This finds:
- libinotify on Unix like systems, or
- the kernel's inotify.
This will define the following variables:
``Inotify_FOUND``
True if inotify is available
``Inotify_LIBRARIES``
This has to be passed to target_link_libraries()
``Inotify_INCLUDE_DIRS``
This has to be passed to target_include_directories()
On some platforms like Linux and SunOS, the libraries and include directories
are empty, even though ``Inotify_FOUND`` may be set to TRUE. This is because
no special includes or libraries are needed. On other systems
these may be needed to use inotify.
Since 5.32.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
# Reset the cache var before searching for sys/inotify.h
# This is required, because on systems with native inotify we reset Inotify_INCLUDE_DIRS
# to an empty string. Rerunning CMake in this case will reuse the empty variable
# and we will not get into if(Inotify_INCLUDE_DIRS) the second time
unset(Inotify_INCLUDE_DIRS CACHE)
find_path(Inotify_INCLUDE_DIRS sys/inotify.h PATHS /usr/include NO_DEFAULT_PATH)
find_path(Inotify_INCLUDE_DIRS sys/inotify.h)
if(Inotify_INCLUDE_DIRS)
# On OSes with a kernel implementation, there is no library to link against.
# On some others inotify is implemented through a library, libinotify.
# If we found a header, but not a library, assume a kernel implementation
find_library(Inotify_LIBRARIES NAMES inotify)
if(NOT Inotify_LIBRARIES)
set(Inotify_FOUND TRUE)
set(Inotify_LIBRARIES "" CACHE STRING "" FORCE)
set(Inotify_INCLUDE_DIRS "" CACHE STRING "" FORCE)
else()
# On FreeBSD 15+ we may end up with both in-kernel and libinotify
# implementation. To discern between them, compare prefixes of
# ${Inotify_INCLUDE_DIRS} and ${Inotify_LIBRARIES}: if we get
# /usr/include and /usr/local/lib/libinotify.so then assume that the
# kernel implementation is available and user wants it, instead of libinotify
cmake_path(GET Inotify_INCLUDE_DIRS PARENT_PATH includes_prefix)
cmake_path(GET Inotify_LIBRARIES PARENT_PATH lib_prefix)
cmake_path(GET lib_prefix PARENT_PATH lib_prefix)
cmake_path(COMPARE ${includes_prefix} EQUAL ${lib_prefix} prefixes_match)
if(NOT prefixes_match)
set(Inotify_FOUND TRUE)
set(Inotify_LIBRARIES "" CACHE STRING "" FORCE)
set(Inotify_INCLUDE_DIRS "" CACHE STRING "" FORCE)
else()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Inotify
FOUND_VAR
Inotify_FOUND
REQUIRED_VARS
Inotify_LIBRARIES
Inotify_INCLUDE_DIRS
)
include(FeatureSummary)
set_package_properties(Inotify PROPERTIES
URL "https://github.com/libinotify-kqueue/"
DESCRIPTION "inotify API on the *BSD family of operating systems."
)
endif()
endif()
if(NOT TARGET Inotify::Inotify)
add_library(Inotify::Inotify INTERFACE IMPORTED)
set_property(TARGET Inotify::Inotify PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${Inotify_INCLUDE_DIRS}")
set_property(TARGET Inotify::Inotify PROPERTY INTERFACE_LINK_LIBRARIES "${Inotify_LIBRARIES}")
endif()
else()
set(Inotify_FOUND FALSE)
endif()
mark_as_advanced(Inotify_LIBRARIES Inotify_INCLUDE_DIRS)
================================================
FILE: find-modules/FindIsoCodes.cmake
================================================
# SPDX-FileCopyrightText: 2016 Pino Toscano <pino@kde.org>
# SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindIsoCodes
------------
Try to find iso-codes data files.
Once done this will define:
``IsoCodes_FOUND``
Whether the system has iso-codes
``IsoCodes_PREFIX``
The location in which the iso-codes data files are found
``IsoCodes_DOMAINS``
The available domains provided by iso-codes
Since 5.80.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_iso_codes QUIET iso-codes)
set(IsoCodes_VERSION ${PKG_iso_codes_VERSION})
set(IsoCodes_PREFIX ${PKG_iso_codes_PREFIX})
pkg_get_variable(IsoCodes_DOMAINS iso-codes domains)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(IsoCodes
FOUND_VAR IsoCodes_FOUND
REQUIRED_VARS IsoCodes_DOMAINS IsoCodes_PREFIX
VERSION_VAR IsoCodes_VERSION
)
include(FeatureSummary)
set_package_properties(IsoCodes PROPERTIES
URL "https://salsa.debian.org/iso-codes-team/iso-codes"
DESCRIPTION "Data about various ISO standards (e.g. country, language, language scripts, and currency names)"
)
================================================
FILE: find-modules/FindKF5.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindKF5
-------
Find KDE Frameworks 5 with a single find_package() call.
This will use the package config files provided by the individual frameworks.
For example, if you wish to find KArchive, which presents itself to CMake as
KF5Archive (ie: you would do ``find_package(KF5Archive)`` to find it
directly), you can do
.. code-block:: cmake
find_package(KF5 COMPONENTS Archive)
If all the required components (those given in the COMPONENTS argument, but
not those given in the OPTIONAL_COMPONENTS argument) are found, ``KF5_FOUND``
will be set to true. Otherwise, it will be set to false.
Since pre-1.0.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(KF5)
if (NOT KF5_FIND_COMPONENTS)
set(KF5_NOT_FOUND_MESSAGE "The KF5 package requires at least one component")
set(KF5_FOUND False)
return()
endif()
set(_quiet_arg)
if (KF5_FIND_QUIETLY)
set(_quiet_arg QUIET)
endif()
set(_exact_arg)
if (KF5_FIND_EXACT)
set(_exact_arg EXACT)
endif()
include(FindPackageHandleStandardArgs)
include(FeatureSummary)
set(KF5_VERSION)
foreach(_module ${KF5_FIND_COMPONENTS})
find_package(KF5${_module} ${KF5_FIND_VERSION}
${_exact_arg} ${_quiet_arg}
CONFIG
)
# CMake >= 3.17 wants to be explicitly told we are fine with name mismatch here
set(_name_mismatched_arg)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
set(_name_mismatched_arg NAME_MISMATCHED)
endif()
find_package_handle_standard_args(KF5${_module} CONFIG_MODE ${_name_mismatched_arg})
if (KF5_FIND_REQUIRED AND KF5_FIND_REQUIRED_${_module})
# If the component was required, we tell FeatureSummary so that it
# will be displayed in the correct list. We do not use the REQUIRED
# argument of find_package() to allow all the missing frameworks
# to be listed at once (fphsa will error out at the end of this file
# anyway).
set_package_properties(KF5${_module} PROPERTIES TYPE REQUIRED)
endif()
# Component-based find modules are expected to set
# <module>_<component>_FOUND and <module>_<component>_VERSION variables,
# but the find_package calls above will have set KF5<component>_*
# variables.
set(KF5_${_module}_FOUND ${KF5${_module}_FOUND})
if(KF5${_module}_FOUND)
set(KF5_${_module}_VERSION ${KF5${_module}_VERSION})
# make KF5_VERSION the minimum found version
if(NOT KF5_VERSION OR KF5_VERSION VERSION_GREATER KF5${_module}_VERSION)
set(KF5_VERSION ${KF5${_module}_VERSION})
endif()
endif()
endforeach()
# Annoyingly, find_package_handle_standard_args requires you to provide
# REQUIRED_VARS even when using HANDLE_COMPONENTS, but all we actually
# care about is whether the required components were found. So we provide
# a dummy variable that is just set to something that will be printed
# on success.
set(_dummy_req_var "success")
find_package_handle_standard_args(KF5
FOUND_VAR
KF5_FOUND
REQUIRED_VARS
_dummy_req_var
VERSION_VAR
KF5_VERSION
HANDLE_COMPONENTS
)
================================================
FILE: find-modules/FindKF6.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindKF6
-------
Find KDE Frameworks 6 with a single find_package() call.
This will use the package config files provided by the individual frameworks.
For example, if you wish to find KArchive, which presents itself to CMake as
KF6Archive (ie: you would do ``find_package(KF6Archive)`` to find it
directly), you can do
.. code-block:: cmake
find_package(KF6 COMPONENTS Archive)
If all the required components (those given in the COMPONENTS argument, but
not those given in the OPTIONAL_COMPONENTS argument) are found, ``KF6_FOUND``
will be set to true. Otherwise, it will be set to false.
Since 6.0.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(KF6)
if (NOT KF6_FIND_COMPONENTS)
set(KF6_NOT_FOUND_MESSAGE "The KF6 package requires at least one component")
set(KF6_FOUND False)
return()
endif()
set(_quiet_arg)
if (KF6_FIND_QUIETLY)
set(_quiet_arg QUIET)
endif()
set(_exact_arg)
if (KF6_FIND_EXACT)
set(_exact_arg EXACT)
endif()
include(FindPackageHandleStandardArgs)
include(FeatureSummary)
set(KF6_VERSION)
set(KF6_MISSING_REQUIRED_COMPONENTS)
foreach(_module ${KF6_FIND_COMPONENTS})
find_package(KF6${_module} ${KF6_FIND_VERSION}
${_exact_arg} ${_quiet_arg}
CONFIG
)
# CMake >= 3.17 wants to be explicitly told we are fine with name mismatch here
set(_name_mismatched_arg)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
set(_name_mismatched_arg NAME_MISMATCHED)
endif()
find_package_handle_standard_args(KF6${_module} CONFIG_MODE ${_name_mismatched_arg})
if (KF6_FIND_REQUIRED AND KF6_FIND_REQUIRED_${_module})
# If the component was required, we tell FeatureSummary so that it
# will be displayed in the correct list. We do not use the REQUIRED
# argument of find_package() to allow all the missing frameworks
# to be listed at once (fphsa will error out at the end of this file
# anyway).
set_package_properties(KF6${_module} PROPERTIES TYPE REQUIRED)
endif()
# Component-based find modules are expected to set
# <module>_<component>_FOUND and <module>_<component>_VERSION variables,
# but the find_package calls above will have set KF6<component>_*
# variables.
set(KF6_${_module}_FOUND ${KF6${_module}_FOUND})
if(KF6${_module}_FOUND)
set(KF6_${_module}_VERSION ${KF6${_module}_VERSION})
# make KF6_VERSION the minimum found version
if(NOT KF6_VERSION OR KF6_VERSION VERSION_GREATER KF6${_module}_VERSION)
set(KF6_VERSION ${KF6${_module}_VERSION})
endif()
elseif(KF6_FIND_REQUIRED_${_module})
list(APPEND KF6_MISSING_REQUIRED_COMPONENTS ${_module})
endif()
endforeach()
# Annoyingly, find_package_handle_standard_args requires you to provide
# REQUIRED_VARS even when using HANDLE_COMPONENTS, but all we actually
# care about is whether the required components were found. So we provide
# a dummy variable that is just set to something that will be printed
# on success.
set(_dummy_req_var "success")
list(JOIN KF6_MISSING_REQUIRED_COMPONENTS " " MISSING_COMPONENTS_STRING)
find_package_handle_standard_args(KF6
FOUND_VAR
KF6_FOUND
REQUIRED_VARS
_dummy_req_var
VERSION_VAR
KF6_VERSION
HANDLE_COMPONENTS
REASON_FAILURE_MESSAGE "Missing the following required components: ${MISSING_COMPONENTS_STRING}"
)
unset(MISSING_COMPONENTS_STRING)
unset(KF6_MISSING_REQUIRED_COMPONENTS)
================================================
FILE: find-modules/FindLibExiv2.cmake
================================================
# SPDX-FileCopyrightText: 2018 Christophe Giboudeaux <christophe@krop.fr>
# SPDX-FileCopyrightText: 2010 Alexander Neundorf <neundorf@kde.org>
# SPDX-FileCopyrightText: 2008 Gilles Caulier <caulier.gilles@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindLibExiv2
------------
Try to find the Exiv2 library.
This will define the following variables:
``LibExiv2_FOUND``
True if (the requested version of) Exiv2 is available
``LibExiv2_VERSION``
The version of Exiv2
``LibExiv2_INCLUDE_DIRS``
The include dirs of Exiv2 for use with target_include_directories()
``LibExiv2_LIBRARIES``
The Exiv2 library for use with target_link_libraries().
This can be passed to target_link_libraries() instead of
the ``LibExiv2::LibExiv2`` target
If ``LibExiv2_FOUND`` is TRUE, it will also define the following imported
target:
``LibExiv2::LibExiv2``
The Exiv2 library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
Since 5.53.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_EXIV2 QUIET exiv2)
find_path(LibExiv2_INCLUDE_DIRS NAMES exiv2/exif.hpp
HINTS ${PC_EXIV2_INCLUDEDIR}
)
find_library(LibExiv2_LIBRARIES NAMES exiv2 libexiv2
HINTS ${PC_EXIV2_LIBRARY_DIRS}
)
set(LibExiv2_VERSION ${PC_EXIV2_VERSION})
if(NOT LibExiv2_VERSION AND DEFINED LibExiv2_INCLUDE_DIRS)
# With exiv >= 0.27, the version #defines are in exv_conf.h instead of version.hpp
foreach(_exiv2_version_file "version.hpp" "exv_conf.h")
if(EXISTS "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}")
file(READ "${LibExiv2_INCLUDE_DIRS}/exiv2/${_exiv2_version_file}" _exiv_version_file_content)
string(REGEX MATCH "#define EXIV2_MAJOR_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_MAJOR_VERSION_MATCH ${_exiv_version_file_content})
string(REGEX MATCH "#define EXIV2_MINOR_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_MINOR_VERSION_MATCH ${_exiv_version_file_content})
string(REGEX MATCH "#define EXIV2_PATCH_VERSION[ ]+\\([0-9]+U?\\)" EXIV2_PATCH_VERSION_MATCH ${_exiv_version_file_content})
if(EXIV2_MAJOR_VERSION_MATCH)
string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_MAJOR_VERSION ${EXIV2_MAJOR_VERSION_MATCH})
string(REGEX REPLACE ".*_MINOR_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_MINOR_VERSION ${EXIV2_MINOR_VERSION_MATCH})
string(REGEX REPLACE ".*_PATCH_VERSION[ ]+\\(([0-9]*)U?\\)" "\\1" EXIV2_PATCH_VERSION ${EXIV2_PATCH_VERSION_MATCH})
endif()
endif()
endforeach()
set(LibExiv2_VERSION "${EXIV2_MAJOR_VERSION}.${EXIV2_MINOR_VERSION}.${EXIV2_PATCH_VERSION}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibExiv2
FOUND_VAR LibExiv2_FOUND
REQUIRED_VARS LibExiv2_LIBRARIES LibExiv2_INCLUDE_DIRS
VERSION_VAR LibExiv2_VERSION
)
mark_as_advanced(LibExiv2_INCLUDE_DIRS LibExiv2_LIBRARIES)
if(LibExiv2_FOUND AND NOT TARGET LibExiv2::LibExiv2)
add_library(LibExiv2::LibExiv2 UNKNOWN IMPORTED)
set_target_properties(LibExiv2::LibExiv2 PROPERTIES
IMPORTED_LOCATION "${LibExiv2_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${LibExiv2_INCLUDE_DIRS}"
)
if (LibExiv2_VERSION VERSION_LESS 0.28.0)
# exiv2 0.27 or older still uses std::auto_ptr, which is no longer available
# by default when using newer C++ versions
set_target_properties(LibExiv2::LibExiv2 PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR=1;_HAS_AUTO_PTR_ETC=1"
)
endif()
endif()
include(FeatureSummary)
set_package_properties(LibExiv2 PROPERTIES
URL "https://www.exiv2.org"
DESCRIPTION "Image metadata support"
)
================================================
FILE: find-modules/FindLibGit2.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
# SPDX-FileCopyrightText: 2014 Christoph Cullmann <cullmann@kde.org>
# SPDX-FileCopyrightText: 2023 Louis Moureaux <m_louis30@yahoo.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindLibGit2
-----------
Try to find libgit2 on a Unix system.
This will define the following variables:
``LIBGIT2_FOUND``
True if (the requested version of) libgit2 is available
``LIBGIT2_VERSION``
The version of libgit2
``LIBGIT2_LIBRARIES``
This can be passed to target_link_libraries() instead of the ``LibGit2::LibGit2``
target
``LIBGIT2_INCLUDE_DIRS``
This should be passed to target_include_directories() if the target is not
used for linking
``LIBGIT2_DEFINITIONS``
This should be passed to target_compile_options() if the target is not
used for linking
If ``LIBGIT2_FOUND`` is TRUE, it will also define the following imported target:
``LibGit2::LibGit2``
The libgit2 library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
Since 1.3.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(LibGit2)
# Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_GIT2 QUIET libgit2)
set(LIBGIT2_DEFINITIONS ${PKG_GIT2_CFLAGS_OTHER})
find_path(LIBGIT2_INCLUDE_DIR
NAMES
git2.h
HINTS
${PKG_GIT2_INCLUDE_DIRS}
)
find_library(LIBGIT2_LIBRARY
NAMES
git2
HINTS
${PKG_GIT2_LIBRARY_DIRS}
)
# get version from header, should work on windows, too
if(LIBGIT2_INCLUDE_DIR)
file(STRINGS "${LIBGIT2_INCLUDE_DIR}/git2/version.h" LIBGIT2_H REGEX "^#define LIBGIT2_VERSION +\"[^\"]*\"$")
string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"([0-9]+).*$" "\\1" LIBGIT2_VERSION_MAJOR "${LIBGIT2_H}")
string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_MINOR "${LIBGIT2_H}")
string(REGEX REPLACE "^.*LIBGIT2_VERSION +\"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" LIBGIT2_VERSION_PATCH "${LIBGIT2_H}")
set(LIBGIT2_VERSION "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${LIBGIT2_VERSION_PATCH}")
set(LIBGIT2_MAJOR_VERSION "${LIBGIT2_VERSION_MAJOR}")
set(LIBGIT2_MINOR_VERSION "${LIBGIT2_VERSION_MINOR}")
set(LIBGIT2_PATCH_VERSION "${LIBGIT2_VERSION_PATCH}")
unset(LIBGIT2_H)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibGit2
FOUND_VAR
LIBGIT2_FOUND
REQUIRED_VARS
LIBGIT2_LIBRARY
LIBGIT2_INCLUDE_DIR
VERSION_VAR
LIBGIT2_VERSION
)
if(LIBGIT2_FOUND AND NOT TARGET LibGit2::LibGit2)
add_library(LibGit2::LibGit2 UNKNOWN IMPORTED)
set_target_properties(LibGit2::LibGit2 PROPERTIES
IMPORTED_LOCATION "${LIBGIT2_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${LIBGIT2_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${LIBGIT2_INCLUDE_DIR}"
)
endif()
mark_as_advanced(LIBGIT2_LIBRARY LIBGIT2_INCLUDE_DIR)
set(LIBGIT2_LIBRARIES ${LIBGIT2_LIBRARY})
set(LIBGIT2_INCLUDE_DIRS ${LIBGIT2_INCLUDE_DIR})
include(FeatureSummary)
set_package_properties(LibGit2 PROPERTIES
URL "https://libgit2.github.com/"
DESCRIPTION "A plain C library to interface with the git version control system."
)
================================================
FILE: find-modules/FindLibMount.cmake
================================================
# SPDX-FileCopyrightText: 2021 Ahmad Samir <a.samirh78@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindLibMount
------------
Try to find the libmount library (part of util-linux), once done this will define:
``LibMount_FOUND``
LibMount was found on the system.
``LibMount_INCLUDE_DIRS``
The libmount include directory.
``LibMount_LIBRARIES``
The libmount libraries.
``LibMount_VERSION``
The libmount version.
If ``LibMount_FOUND`` is TRUE, it will also define the following imported target:
``LibMount::LibMount``
The libmount library
Since 5.83.0
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBMOUNT QUIET IMPORTED_TARGET mount)
find_path(LibMount_INCLUDE_DIRS NAMES libmount.h PATH_SUFFIXES libmount HINTS ${PC_LIBMOUNT_INCLUDE_DIRS})
find_library(LibMount_LIBRARIES NAMES mount HINTS ${PC_LIBMOUNT_LIBRARY_DIRS})
set(LibMount_VERSION ${PC_LIBMOUNT_VERSION})
if(LibMount_INCLUDE_DIRS AND NOT LibMount_VERSION)
file(READ "${LibMount_INCLUDE_DIRS}/libmount.h" _LibMount_header_contents)
string(REGEX MATCHALL "#define[ \t]+LIBMOUNT_VERSION[ \t]+\"*[0-9.]+" _LibMount_version_line "${_LibMount_header_contents}")
unset(_LibMount_header_contents)
string(REGEX REPLACE ".*LIBMOUNT_VERSION[ \t]+\"*([0-9.]+)\"*" "\\1" _version "${_LibMount_version_line}")
set(LibMount_VERSION "${_version}")
unset(_LibMount_version_line)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibMount
FOUND_VAR LibMount_FOUND
REQUIRED_VARS LibMount_INCLUDE_DIRS LibMount_LIBRARIES
VERSION_VAR LibMount_VERSION
)
mark_as_advanced(LibMount_INCLUDE_DIRS LibMount_LIBRARIES)
if(LibMount_FOUND AND NOT TARGET LibMount::LibMount)
add_library(LibMount::LibMount UNKNOWN IMPORTED)
set_target_properties(LibMount::LibMount PROPERTIES
IMPORTED_LOCATION "${LibMount_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${LibMount_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS "${PC_LIBMOUNT_CFLAGS_OTHER}"
)
if (TARGET PkgConfig::PC_LIBMOUNT)
target_link_libraries(LibMount::LibMount INTERFACE PkgConfig::PC_LIBMOUNT)
endif()
endif()
include(FeatureSummary)
set_package_properties(LibMount PROPERTIES
DESCRIPTION "API for getting info about mounted filesystems (part of util-linux)"
URL "https://www.kernel.org/pub/linux/utils/util-linux/"
)
================================================
FILE: find-modules/FindLibcap.cmake
================================================
# SPDX-FileCopyrightText: 2014 Hrvoje Senjan <hrvoje.senjan@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindLibcap
----------
Try to find the setcap binary and cap libraries
This will define:
``Libcap_FOUND``
system has the cap library and setcap binary
``Libcap_LIBRARIES``
cap libraries to link against
``SETCAP_EXECUTABLE``
path of the setcap binary
In addition, the following targets are defined:
``Libcap::SetCapabilities``
Since 5.80.0
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_program(SETCAP_EXECUTABLE NAMES setcap DOC "The setcap executable")
find_library(Libcap_LIBRARIES NAMES cap DOC "The cap (capabilities) library")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libcap FOUND_VAR Libcap_FOUND
REQUIRED_VARS SETCAP_EXECUTABLE Libcap_LIBRARIES)
if(Libcap_FOUND AND NOT TARGET Libcap::SetCapabilities)
add_executable(Libcap::SetCapabilities IMPORTED)
set_target_properties(Libcap::SetCapabilities PROPERTIES
IMPORTED_LOCATION "${SETCAP_EXECUTABLE}"
)
endif()
mark_as_advanced(SETCAP_EXECUTABLE Libcap_LIBRARIES)
include(FeatureSummary)
set_package_properties(Libcap PROPERTIES
URL https://sites.google.com/site/fullycapable/
DESCRIPTION "Capabilities are a measure to limit the omnipotence of the superuser.")
================================================
FILE: find-modules/FindOpenEXR.cmake
================================================
# SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>
# SPDX-FileCopyrightText: 2006 Alexander Neundorf <neundorf@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindOpenEXR
-----------
Try to find the OpenEXR libraries.
This will define the following variables:
``OpenEXR_FOUND``
True if OpenEXR is available
``OpenEXR_LIBRARIES``
Link to these to use OpenEXR
``OpenEXR_INCLUDE_DIRS``
Include directory for OpenEXR
``OpenEXR_DEFINITIONS``
Compiler flags required to link against OpenEXR
and the following imported targets:
``OpenEXR::IlmImf``
The OpenEXR core library
In general we recommend using the imported target, as it is easier to use.
Bear in mind, however, that if the target is in the link interface of an
exported library, it must be made available by the package config file.
Since pre-1.0.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(OpenEXR)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig QUIET)
pkg_check_modules(PC_OpenEXR QUIET OpenEXR)
set(OpenEXR_DEFINITIONS ${PC_OpenEXR_CFLAGS_OTHER})
find_path(OpenEXR_INCLUDE_DIR ImfRgbaFile.h
PATHS
${PC_OpenEXR_INCLUDEDIR}
${PC_OpenEXR_INCLUDE_DIRS}
PATH_SUFFIXES OpenEXR
)
# Required libraries for OpenEXR
find_library(OpenEXR_HALF_LIBRARY NAMES Half
PATHS
${PC_OpenEXR_LIBDIR}
${PC_OpenEXR_LIBRARY_DIRS}
)
find_library(OpenEXR_IEX_LIBRARY NAMES Iex
PATHS
${PC_OpenEXR_LIBDIR}
${PC_OpenEXR_LIBRARY_DIRS}
)
find_library(OpenEXR_IMATH_LIBRARY NAMES Imath
PATHS
${PC_OpenEXR_LIBDIR}
${PC_OpenEXR_LIBRARY_DIRS}
)
find_library(OpenEXR_ILMTHREAD_LIBRARY NAMES IlmThread
PATHS
${PC_OpenEXR_LIBDIR}
${PC_OpenEXR_LIBRARY_DIRS}
)
# This is the actual OpenEXR library
find_library(OpenEXR_ILMIMF_LIBRARY NAMES IlmImf
PATHS
${PC_OpenEXR_LIBDIR}
${PC_OpenEXR_LIBRARY_DIRS}
)
set(_OpenEXR_deps
${OpenEXR_HALF_LIBRARY}
${OpenEXR_IEX_LIBRARY}
${OpenEXR_IMATH_LIBRARY}
${OpenEXR_ILMTHREAD_LIBRARY})
set(OpenEXR_LIBRARIES
${_OpenEXR_deps}
${OpenEXR_ILMIMF_LIBRARY})
if (OpenEXR_INCLUDE_DIR AND EXISTS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h")
file(STRINGS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h" openexr_version_str
REGEX "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"[^\"]*\"")
string(REGEX REPLACE "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"([^\"]*).*"
"\\1" OpenEXR_VERSION_STRING "${openexr_version_str}")
unset(openexr_version_str)
endif ()
include(FindPackageHandleStandardArgs)
# find_package_handle_standard_args reports the value of the first variable
# on success, so make sure this is the actual OpenEXR library
find_package_handle_standard_args(OpenEXR
FOUND_VAR OpenEXR_FOUND
REQUIRED_VARS
OpenEXR_ILMIMF_LIBRARY
OpenEXR_HALF_LIBRARY
OpenEXR_IEX_LIBRARY
OpenEXR_IMATH_LIBRARY
OpenEXR_ILMTHREAD_LIBRARY
OpenEXR_INCLUDE_DIR
VERSION_VAR OpenEXR_VERSION_STRING)
set(OpenEXR_INCLUDE_DIRS ${OpenEXR_INCLUDE_DIR})
include(FeatureSummary)
set_package_properties(OpenEXR PROPERTIES
URL https://www.openexr.com/
DESCRIPTION "A library for handling OpenEXR high dynamic-range image files")
mark_as_advanced(
OpenEXR_INCLUDE_DIR
OpenEXR_LIBRARIES
OpenEXR_DEFINITIONS
OpenEXR_ILMIMF_LIBRARY
OpenEXR_ILMTHREAD_LIBRARY
OpenEXR_IMATH_LIBRARY
OpenEXR_IEX_LIBRARY
OpenEXR_HALF_LIBRARY
)
if(OpenEXR_FOUND AND NOT TARGET OpenEXR::IlmImf)
add_library(OpenEXR::IlmImf UNKNOWN IMPORTED)
set_target_properties(OpenEXR::IlmImf PROPERTIES
IMPORTED_LOCATION "${OpenEXR_ILMIMF_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${OpenEXR_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${_OpenEXR_deps}"
)
endif()
================================================
FILE: find-modules/FindPhoneNumber.cmake
================================================
# SPDX-FileCopyrightText: 2017 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
# SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindPhoneNumber
---------------
Try to find PhoneNumber.
This is a component-based find module, which makes use of the COMPONENTS and
OPTIONAL_COMPONENTS arguments to find_module. The following components are
available::
PhoneNumber GeoCoding
If no components are specified, this module will act as though all components
were passed to OPTIONAL_COMPONENTS.
This module will define the following variables, independently of the
components searched for or found:
``PhoneNumber_FOUND``
True if (the requestion version of) PhoneNumber is available
For each searched-for components, ``PhoneNumber_<component>_FOUND`` will be set to
TRUE if the corresponding library was found, and FALSE otherwise. If
``PhoneNumber_<component>_FOUND`` is TRUE, the imported target ``PhoneNumber::<component>``
will be defined.
Since 5.54.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(ECMFindModuleHelpersStub)
ecm_find_package_version_check(PhoneNumber)
set(PhoneNumber_known_components
PhoneNumber
GeoCoding
)
set(PhoneNumber_default_components ${PhoneNumber_known_components})
set(PhoneNumber_PhoneNumber_lib phonenumber)
set(PhoneNumber_PhoneNumber_header phonenumbers/phonenumberutil.h)
set(PhoneNumber_GeoCoding_lib geocoding)
set(PhoneNumber_GeoCoding_header phonenumbers/geocoding/phonenumber_offline_geocoder.h)
ecm_find_package_parse_components(PhoneNumber
RESULT_VAR PhoneNumber_components
KNOWN_COMPONENTS ${PhoneNumber_known_components}
DEFAULT_COMPONENTS ${PhoneNumber_default_components}
)
ecm_find_package_handle_library_components(PhoneNumber
COMPONENTS ${PhoneNumber_components}
)
find_package_handle_standard_args(PhoneNumber
FOUND_VAR
PhoneNumber_FOUND
REQUIRED_VARS
PhoneNumber_LIBRARIES
VERSION_VAR
PhoneNumber_VERSION
HANDLE_COMPONENTS
)
set(PhoneNumber_VERSION 0) # there is no observable version number in the installed files
include(FeatureSummary)
set_package_properties(PhoneNumber PROPERTIES
URL "https://github.com/googlei18n/libphonenumber"
DESCRIPTION "Library for parsing, formatting, and validating international phone numbers")
================================================
FILE: find-modules/FindPoppler.cmake
================================================
# SPDX-FileCopyrightText: 2015 Alex Richardson <arichardson.kde@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindPoppler
-----------
Try to find Poppler.
This is a component-based find module, which makes use of the COMPONENTS
and OPTIONAL_COMPONENTS arguments to find_module. The following components
are available::
Core Cpp Qt5 Qt4 Glib
If no components are specified, this module will act as though all components
were passed to OPTIONAL_COMPONENTS.
This module will define the following variables, independently of the
components searched for or found:
``Poppler_FOUND``
TRUE if (the requested version of) Poppler is available
``Poppler_VERSION``
Found Poppler version
``Poppler_TARGETS``
A list of all targets imported by this module (note that there may be more
than the components that were requested)
``Poppler_LIBRARIES``
This can be passed to target_link_libraries() instead of the imported
targets
``Poppler_INCLUDE_DIRS``
This should be passed to target_include_directories() if the targets are
not used for linking
``Poppler_DEFINITIONS``
This should be passed to target_compile_options() if the targets are not
used for linking
For each searched-for components, ``Poppler_<component>_FOUND`` will be set to
TRUE if the corresponding Poppler library was found, and FALSE otherwise. If
``Poppler_<component>_FOUND`` is TRUE, the imported target
``Poppler::<component>`` will be defined. This module will also attempt to
determine ``Poppler_*_VERSION`` variables for each imported target, although
``Poppler_VERSION`` should normally be sufficient.
In general we recommend using the imported targets, as they are easier to use
and provide more control. Bear in mind, however, that if any target is in the
link interface of an exported library, it must be made available by the
package config file.
Since 5.19
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(Poppler)
set(Poppler_known_components
Cpp
Qt4
Qt5
Qt6
Glib
)
foreach(_comp ${Poppler_known_components})
string(TOLOWER "${_comp}" _lc_comp)
set(Poppler_${_comp}_component_deps "Core")
set(Poppler_${_comp}_pkg_config "poppler-${_lc_comp}")
set(Poppler_${_comp}_lib "poppler-${_lc_comp}")
set(Poppler_${_comp}_header_subdir "poppler/${_lc_comp}")
endforeach()
set(Poppler_known_components Core ${Poppler_known_components})
set(Poppler_Core_component_deps "")
set(Poppler_Core_pkg_config "poppler")
# poppler-config.h header is only installed with --enable-xpdf-headers
# fall back to using any header from a submodule with a path to make it work in that case too
set(Poppler_Core_header "poppler-config.h" "cpp/poppler-version.h" "qt6/poppler-qt6.h" "qt5/poppler-qt5.h" "qt4/poppler-qt4.h" "glib/poppler.h")
set(Poppler_Core_header_subdir "poppler")
set(Poppler_Core_lib "poppler")
set(Poppler_Cpp_header "poppler-version.h")
set(Poppler_Qt6_header "poppler-qt6.h")
set(Poppler_Qt5_header "poppler-qt5.h")
set(Poppler_Qt4_header "poppler-qt4.h")
set(Poppler_Glib_header "poppler.h")
ecm_find_package_parse_components(Poppler
RESULT_VAR Poppler_components
KNOWN_COMPONENTS ${Poppler_known_components}
)
ecm_find_package_handle_library_components(Poppler
COMPONENTS ${Poppler_components}
)
# If pkg-config didn't provide us with version information,
# try to extract it from poppler-version.h or poppler-config.h
if(NOT Poppler_VERSION)
find_file(Poppler_VERSION_HEADER
NAMES "poppler-config.h" "cpp/poppler-version.h"
HINTS ${Poppler_INCLUDE_DIRS}
PATH_SUFFIXES ${Poppler_Core_header_subdir}
)
mark_as_advanced(Poppler_VERSION_HEADER)
if(Poppler_VERSION_HEADER)
file(READ ${Poppler_VERSION_HEADER} _poppler_version_header_contents)
string(REGEX REPLACE
"^.*[ \t]+POPPLER_VERSION[ \t]+\"([0-9d.]*)\".*$"
"\\1"
Poppler_VERSION
"${_poppler_version_header_contents}"
)
unset(_poppler_version_header_contents)
endif()
endif()
find_package_handle_standard_args(Poppler
FOUND_VAR
Poppler_FOUND
REQUIRED_VARS
Poppler_LIBRARIES
VERSION_VAR
Poppler_VERSION
HANDLE_COMPONENTS
)
include(FeatureSummary)
set_package_properties(Poppler PROPERTIES
DESCRIPTION "A PDF rendering library"
URL "https://poppler.freedesktop.org/"
)
================================================
FILE: find-modules/FindPulseAudio.cmake
================================================
# SPDX-FileCopyrightText: 2008 Matthias Kretz <kretz@kde.org>
# SPDX-FileCopyrightText: 2009 Marcus Hufgard <Marcus.Hufgard@hufgard.de>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindPulseAudio
--------------
Try to locate the PulseAudio library.
If found, this will define the following variables:
``PulseAudio_FOUND``
True if the system has the PulseAudio library of at least
the minimum version specified by either the version parameter
to find_package() or the variable PulseAudio_MINIMUM_VERSION
``PulseAudio_INCLUDE_DIRS``
The PulseAudio include directory
``PulseAudio_LIBRARIES``
The PulseAudio libraries for linking
``PulseAudio_MAINLOOP_LIBRARY``
The libraries needed to use PulseAudio Mainloop
``PulseAudio_VERSION``
The version of PulseAudio that was found
``PulseAudio_INCLUDE_DIR``
Deprecated, use ``PulseAudio_INCLUDE_DIRS``
``PulseAudio_LIBRARY``
Deprecated, use ``PulseAudio_LIBRARIES``
If ``PulseAudio_FOUND`` is TRUE, it will also define the following
imported target:
``PulseAudio::PulseAudio``
The PulseAudio library
Since 5.41.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
# Support PulseAudio_MINIMUM_VERSION for compatibility:
if(NOT PulseAudio_FIND_VERSION)
set(PulseAudio_FIND_VERSION "${PulseAudio_MINIMUM_VERSION}")
endif()
# the minimum version of PulseAudio we require
if(NOT PulseAudio_FIND_VERSION)
set(PulseAudio_FIND_VERSION "0.9.9")
endif()
find_package(PkgConfig QUIET)
pkg_check_modules(PC_PulseAudio QUIET libpulse>=${PulseAudio_FIND_VERSION})
pkg_check_modules(PC_PulseAudio_MAINLOOP QUIET libpulse-mainloop-glib)
find_path(PulseAudio_INCLUDE_DIRS pulse/pulseaudio.h
HINTS
${PC_PulseAudio_INCLUDEDIR}
${PC_PulseAudio_INCLUDE_DIRS}
)
find_library(PulseAudio_LIBRARIES NAMES pulse libpulse
HINTS
${PC_PulseAudio_LIBDIR}
${PC_PulseAudio_LIBRARY_DIRS}
)
find_library(PulseAudio_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib
HINTS
${PC_PulseAudio_LIBDIR}
${PC_PulseAudio_LIBRARY_DIRS}
)
# Store the version number in the cache, so we don't have to search every time again:
if (PulseAudio_INCLUDE_DIRS AND NOT PulseAudio_VERSION)
# get PulseAudio's version from its version.h
file(STRINGS "${PulseAudio_INCLUDE_DIRS}/pulse/version.h" pulse_version_h
REGEX ".*pa_get_headers_version\\(\\).*")
string(REGEX REPLACE ".*pa_get_headers_version\\(\\)\ \\(\"([0-9]+\\.[0-9]+\\.[0-9]+)[^\"]*\"\\).*" "\\1"
_PulseAudio_VERSION "${pulse_version_h}")
set(PulseAudio_VERSION "${_PulseAudio_VERSION}" CACHE STRING "Version number of PulseAudio" FORCE)
endif()
# Use the new extended syntax of find_package_handle_standard_args(), which also handles version checking:
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PulseAudio REQUIRED_VARS PulseAudio_LIBRARIES PulseAudio_INCLUDE_DIRS
VERSION_VAR PulseAudio_VERSION)
# Deprecated synonyms
set(PULSEAUDIO_INCLUDE_DIR "${PulseAudio_INCLUDE_DIRS}")
set(PULSEAUDIO_LIBRARY "${PulseAudio_LIBRARIES}")
set(PULSEAUDIO_MAINLOOP_LIBRARY "${PulseAudio_MAINLOOP_LIBRARY}")
set(PULSEAUDIO_FOUND "${PulseAudio_FOUND}")
if(PulseAudio_FOUND AND NOT TARGET PulseAudio::PulseAudio)
add_library(PulseAudio::PulseAudio UNKNOWN IMPORTED)
set_target_properties(PulseAudio::PulseAudio PROPERTIES
IMPORTED_LOCATION "${PulseAudio_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${PulseAudio_INCLUDE_DIRS}")
endif()
mark_as_advanced(PulseAudio_INCLUDE_DIRS PULSEAUDIO_INCLUDE_DIR
PulseAudio_LIBRARIES PULSEAUDIO_LIBRARY
PulseAudio_MAINLOOP_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY)
include(FeatureSummary)
set_package_properties(PulseAudio PROPERTIES
URL "https://www.freedesktop.org/wiki/Software/PulseAudio"
DESCRIPTION "Sound server, for sound stream routing and mixing")
================================================
FILE: find-modules/FindQHelpGenerator.cmake
================================================
# SPDX-FileCopyrightText: 2016 Friedrich W. H. Kossebau <kossebau@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
WARNING: FOR ECM-INTERNAL USE ONLY, DO NOT USE IN OWN PROJECTS
THIS FILE MIGHT DISAPPEAR IN FUTURE VERSIONS OF ECM.
Finds the Qt5 QHelpGenerator
QHelpGenerator_FOUND - True if QHelpGenerator found.
QHelpGenerator_EXECUTABLE - Path to executable
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/../modules/QtVersionOption.cmake)
find_package(Qt${QT_MAJOR_VERSION}Help QUIET)
if (TARGET Qt5::qhelpgenerator)
get_target_property(QHelpGenerator_EXECUTABLE Qt5::qhelpgenerator LOCATION)
else()
# assume same folder as qmake executable
if (TARGET Qt5::qmake)
get_target_property(_qmake_EXECUTABLE Qt5::qmake LOCATION)
get_filename_component(_path ${_qmake_EXECUTABLE} DIRECTORY)
else()
set(_path)
endif()
find_program(QHelpGenerator_EXECUTABLE
NAMES
qhelpgenerator-qt5
qhelpgenerator
PATHS
${_path}
NO_DEFAULT_PATH
)
endif()
mark_as_advanced(QHelpGenerator_EXECUTABLE)
if(QHelpGenerator_EXECUTABLE)
set(QHelpGenerator_FOUND TRUE)
else()
set(QHelpGenerator_FOUND FALSE)
endif()
if(QHelpGenerator_FOUND)
if(NOT QHelpGenerator_FIND_QUIETLY )
message( STATUS "Found QHelpGenerator executable: ${QHelpGenerator_EXECUTABLE}")
endif()
else()
if(QHelpGenerator_FIND_REQUIRED)
message( FATAL_ERROR "Could not find QHelpGenerator executable" )
else()
message( STATUS "Optional QHelpGenerator executable was not found" )
endif()
endif()
================================================
FILE: find-modules/FindQtWaylandScanner.cmake
================================================
# SPDX-FileCopyrightText: 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindQtWaylandScanner
--------------------
Try to find qtwaylandscanner.
If the qtwaylandscanner executable is not in your PATH, you can provide
an alternative name or full path location with the ``QtWaylandScanner_EXECUTABLE``
variable.
This will define the following variables:
``QtWaylandScanner_FOUND``
True if qtwaylandscanner is available
``QtWaylandScanner_EXECUTABLE``
The qtwaylandscanner executable.
If ``QtWaylandScanner_FOUND`` is TRUE, it will also define the following imported
target:
``Wayland::QtScanner``
The qtwaylandscanner executable.
This module provides the following functions to generate C++ protocol
implementations:
- ``ecm_add_qtwayland_client_protocol``
- ``ecm_add_qtwayland_server_protocol``
::
ecm_add_qtwayland_client_protocol(<target>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>]
[PRIVATE_CODE])
ecm_add_qtwayland_client_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>]
[PRIVATE_CODE])
Generate C++ wrapper to Wayland client protocol files from ``<xmlfile>``
XML definition for the ``<basename>`` interface and append those files
to ``<source_files_var>`` or ``<target>``. Pass the ``<prefix>`` argument if the interface
names don't start with ``qt_`` or ``wl_``.
``PRIVATE_CODE`` instructs wayland-scanner to hide marshalling code
from the compiled DSO for use in other DSOs. The default is to
export this code.
WaylandScanner is required and will be searched for.
::
ecm_add_qtwayland_server_protocol(<target>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>]
[PRIVATE_CODE])
ecm_add_qtwayland_server_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>
[PREFIX <prefix>]
[PRIVATE_CODE])
Generate C++ wrapper to Wayland server protocol files from ``<xmlfile>``
XML definition for the ``<basename>`` interface and append those files
to ``<source_files_var>`` or ``<target>``. Pass the ``<prefix>`` argument if the interface
names don't start with ``qt_`` or ``wl_``.
``PRIVATE_CODE`` instructs wayland-scanner to hide marshalling code
from the compiled DSO for use in other DSOs. The default is to
export this code.
WaylandScanner is required and will be searched for.
Since 1.4.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
include("${ECM_MODULE_DIR}/ECMQueryQt.cmake")
ecm_find_package_version_check(QtWaylandScanner)
if (QT_MAJOR_VERSION STREQUAL "5")
ecm_query_qt(qtwaylandscanner_dir QT_HOST_BINS)
else()
ecm_query_qt(qtwaylandscanner_dir QT_HOST_LIBEXECS)
endif()
# Find qtwaylandscanner
find_program(QtWaylandScanner_EXECUTABLE NAMES qtwaylandscanner HINTS ${qtwaylandscanner_dir})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(QtWaylandScanner
FOUND_VAR
QtWaylandScanner_FOUND
REQUIRED_VARS
QtWaylandScanner_EXECUTABLE
)
mark_as_advanced(QtWaylandScanner_EXECUTABLE)
if(NOT TARGET Wayland::QtScanner AND QtWaylandScanner_FOUND)
add_executable(Wayland::QtScanner IMPORTED)
set_target_properties(Wayland::QtScanner PROPERTIES
IMPORTED_LOCATION "${QtWaylandScanner_EXECUTABLE}"
)
endif()
include(FeatureSummary)
set_package_properties(QtWaylandScanner PROPERTIES
URL "https://qt.io/"
DESCRIPTION "Executable that converts XML protocol files to C++ code"
)
function(ecm_add_qtwayland_client_protocol target_or_sources_var)
# Parse arguments
set(oneValueArgs PROTOCOL BASENAME PREFIX)
set(options PRIVATE_CODE)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "" ${ARGN})
if(ARGS_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to ecm_add_qtwayland_client_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
endif()
set(_prefix "${ARGS_PREFIX}")
if(ARGS_PRIVATE_CODE)
set(_private_code_option PRIVATE_CODE)
endif()
find_package(WaylandScanner REQUIRED QUIET)
ecm_add_wayland_client_protocol(${target_or_sources_var}
PROTOCOL ${ARGS_PROTOCOL}
BASENAME ${ARGS_BASENAME}
${_private_code_option})
get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
set(_header "${CMAKE_CURRENT_BINARY_DIR}/qwayland-${ARGS_BASENAME}.h")
set(_code "${CMAKE_CURRENT_BINARY_DIR}/qwayland-${ARGS_BASENAME}.cpp")
set_source_files_properties(${_header} ${_code} GENERATED)
add_custom_command(OUTPUT "${_header}"
COMMAND ${QtWaylandScanner_EXECUTABLE} client-header ${_infile} "" ${_prefix} > ${_header}
DEPENDS ${_infile} ${_cheader} VERBATIM)
add_custom_command(OUTPUT "${_code}"
COMMAND ${QtWaylandScanner_EXECUTABLE} client-code ${_infile} "" ${_prefix} > ${_code}
DEPENDS ${_infile} ${_header} VERBATIM)
set_property(SOURCE ${_header} ${_code} PROPERTY SKIP_AUTOMOC ON)
if (TARGET ${target_or_sources_var})
target_sources(${target_or_sources_var} PRIVATE "${_code}")
else()
list(APPEND ${target_or_sources_var} "${_code}")
set(${target_or_sources_var} ${${target_or_sources_var}} PARENT_SCOPE)
endif()
endfunction()
function(ecm_add_qtwayland_server_protocol target_or_sources_var)
# Parse arguments
set(oneValueArgs PROTOCOL BASENAME PREFIX)
set(options PRIVATE_CODE)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "" ${ARGN})
if(ARGS_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to ecm_add_qtwayland_server_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
endif()
set(_prefix "${ARGS_PREFIX}")
if(ARGS_PRIVATE_CODE)
set(_private_code_option PRIVATE_CODE)
endif()
find_package(WaylandScanner REQUIRED QUIET)
ecm_add_wayland_server_protocol(${target_or_sources_var}
PROTOCOL ${ARGS_PROTOCOL}
BASENAME ${ARGS_BASENAME}
${_private_code_option})
get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
set(_header "${CMAKE_CURRENT_BINARY_DIR}/qwayland-server-${ARGS_BASENAME}.h")
set(_code "${CMAKE_CURRENT_BINARY_DIR}/qwayland-server-${ARGS_BASENAME}.cpp")
set_source_files_properties(${_header} ${_code} GENERATED)
add_custom_command(OUTPUT "${_header}"
COMMAND ${QtWaylandScanner_EXECUTABLE} server-header ${_infile} "" ${_prefix} > ${_header}
DEPENDS ${_infile} VERBATIM)
add_custom_command(OUTPUT "${_code}"
COMMAND ${QtWaylandScanner_EXECUTABLE} server-code ${_infile} "" ${_prefix} > ${_code}
DEPENDS ${_infile} ${_header} VERBATIM)
set_property(SOURCE ${_header} ${_code} PROPERTY SKIP_AUTOMOC ON)
if (TARGET ${target_or_sources_var})
target_sources(${target_or_sources_var} PRIVATE "${_code}")
else()
list(APPEND ${target_or_sources_var} "${_code}")
set(${target_or_sources_var} ${${target_or_sources_var}} PARENT_SCOPE)
endif()
endfunction()
================================================
FILE: find-modules/FindReuseTool.cmake
================================================
# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandwehr@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
WARNING: FOR ECM-INTERNAL USE ONLY, DO NOT USE IN OWN PROJECTS
THIS FILE MIGHT DISAPPEAR IN FUTURE VERSIONS OF ECM.
Finds the REUSE Tool by FSFE: https://github.com/fsfe/reuse-tool
REUSETOOL_FOUND - True if REUSE tool is found.
REUSETOOL_EXECUTABLE - Path to executable
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_program(REUSETOOL_EXECUTABLE NAMES reuse)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ReuseTool
FOUND_VAR
REUSETOOL_FOUND
REQUIRED_VARS
REUSETOOL_EXECUTABLE
)
================================================
FILE: find-modules/FindSasl2.cmake
================================================
# SPDX-FileCopyrightText: 2006, 2007 Laurent Montel <montel@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindSasl2
---------
Try to find the SASL2 library.
This will define the following variables:
``Sasl2_FOUND``
System has SASL2.
``Sasl2_VERSION``
The version of SASL2.
``Sasl2_INCLUDE_DIRS``
This should be passed to target_include_directories() if
the target is not used for linking.
``Sasl2_LIBRARIES``
The SASL2 library.
This can be passed to target_link_libraries() instead of
the ``Sasl2::Sasl2`` target
If ``Sasl2_FOUND`` is TRUE, the following imported target
will be available:
``Sasl2::Sasl2``
The SASL2 library
Since 5.41.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
# NOTE: libsasl2.pc doesn't export the include dir.
find_package(PkgConfig QUIET)
pkg_check_modules(PC_Sasl2 libsasl2)
find_path(Sasl2_INCLUDE_DIRS NAMES sasl/sasl.h)
# libsasl2 add for windows, because the windows package of cyrus-sasl2
# contains a libsasl2 also for msvc which is not standard conform
find_library(Sasl2_LIBRARIES
NAMES sasl2 libsasl2
HINTS ${PC_Sasl2_LIBRARY_DIRS}
)
set(Sasl2_VERSION "${PC_Sasl2_VERSION}")
if(NOT Sasl2_VERSION)
if(EXISTS "${Sasl2_INCLUDE_DIRS}/sasl/sasl.h")
file(READ "${Sasl2_INCLUDE_DIRS}/sasl/sasl.h" SASL2_H_CONTENT)
string(REGEX MATCH "#define SASL_VERSION_MAJOR[ ]+[0-9]+" SASL2_VERSION_MAJOR_MATCH ${SASL2_H_CONTENT})
string(REGEX MATCH "#define SASL_VERSION_MINOR[ ]+[0-9]+" SASL2_VERSION_MINOR_MATCH ${SASL2_H_CONTENT})
string(REGEX MATCH "#define SASL_VERSION_STEP[ ]+[0-9]+" SASL2_VERSION_STEP_MATCH ${SASL2_H_CONTENT})
string(REGEX REPLACE ".*_MAJOR[ ]+(.*)" "\\1" SASL2_VERSION_MAJOR ${SASL2_VERSION_MAJOR_MATCH})
string(REGEX REPLACE ".*_MINOR[ ]+(.*)" "\\1" SASL2_VERSION_MINOR ${SASL2_VERSION_MINOR_MATCH})
string(REGEX REPLACE ".*_STEP[ ]+(.*)" "\\1" SASL2_VERSION_STEP ${SASL2_VERSION_STEP_MATCH})
set(Sasl2_VERSION "${SASL2_VERSION_MAJOR}.${SASL2_VERSION_MINOR}.${SASL2_VERSION_STEP}")
else()
# Could not find the version
set(Sasl2_VERSION "0.0.0")
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Sasl2
FOUND_VAR Sasl2_FOUND
REQUIRED_VARS Sasl2_LIBRARIES Sasl2_INCLUDE_DIRS
VERSION_VAR Sasl2_VERSION
)
if(Sasl2_FOUND AND NOT TARGET Sasl2::Sasl2)
add_library(Sasl2::Sasl2 UNKNOWN IMPORTED)
set_target_properties(Sasl2::Sasl2 PROPERTIES
IMPORTED_LOCATION "${Sasl2_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${Sasl2_INCLUDE_DIRS}")
endif()
mark_as_advanced(Sasl2_LIBRARIES Sasl2_INCLUDE_DIRS Sasl2_VERSION)
include(FeatureSummary)
set_package_properties(Sasl2 PROPERTIES
URL "https://www.cyrusimap.org/sasl/"
DESCRIPTION "The Cyrus-sasl library."
)
================================================
FILE: find-modules/FindSeccomp.cmake
================================================
# SPDX-FileCopyrightText: 2017 Martin Flöser <mgraesslin@kde.org>
# SPDX-FileCopyrightText: 2017 David Kahles <david.kahles96@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindSeccomp
-----------
Try to locate the libseccomp library.
This will define the following variables:
``Seccomp_FOUND``
True if the seccomp library is available
``Seccomp_INCLUDE_DIRS``
The seccomp include directories
``Seccomp_LIBRARIES``
The seccomp libraries for linking
If ``Seccomp_FOUND`` is TRUE, it will also define the following
imported target:
``Seccomp::Seccomp``
The Seccomp library
Since 5.44.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_Libseccomp QUIET libseccomp)
find_path(Seccomp_INCLUDE_DIRS
NAMES
seccomp.h
HINTS
${PKG_Libseccomp_INCLUDE_DIRS}
)
find_library(Seccomp_LIBRARIES
NAMES
seccomp
HINTS
${PKG_Libseccomp_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Seccomp
FOUND_VAR
Seccomp_FOUND
REQUIRED_VARS
Seccomp_LIBRARIES
Seccomp_INCLUDE_DIRS
)
if (Seccomp_FOUND AND NOT TARGET Seccomp::Seccomp)
add_library(Seccomp::Seccomp UNKNOWN IMPORTED)
set_target_properties(Seccomp::Seccomp PROPERTIES
IMPORTED_LOCATION "${Seccomp_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${Seccomp_INCLUDE_DIRS}"
)
endif()
mark_as_advanced(Seccomp_LIBRARIES Seccomp_INCLUDE_DIRS)
include(FeatureSummary)
set_package_properties(Seccomp PROPERTIES
URL "https://github.com/seccomp/libseccomp"
DESCRIPTION "The enhanced seccomp library."
)
================================================
FILE: find-modules/FindSharedMimeInfo.cmake
================================================
# SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>
# SPDX-FileCopyrightText: 2007 Pino Toscano <toscano.pino@tiscali.it>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindSharedMimeInfo
------------------
Try to find the shared-mime-info package.
This will define the following variables:
``SharedMimeInfo_FOUND``
True if system has the shared-mime-info package
``UPDATE_MIME_DATABASE_EXECUTABLE``
The update-mime-database executable
and the following imported targets:
``SharedMimeInfo::UpdateMimeDatabase``
The update-mime-database executable
The follow macro is available::
update_xdg_mimetypes(<path>)
Updates the XDG mime database at install time (unless the ``$DESTDIR``
environment variable is set, in which case it is up to package managers to
perform this task).
Since pre-1.0.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(SharedMimeInfo)
find_program (UPDATE_MIME_DATABASE_EXECUTABLE NAMES update-mime-database)
if (UPDATE_MIME_DATABASE_EXECUTABLE)
execute_process(
COMMAND "${UPDATE_MIME_DATABASE_EXECUTABLE}" -v
OUTPUT_VARIABLE _smiVersionRaw
ERROR_VARIABLE _smiVersionRaw)
string(REGEX REPLACE "update-mime-database \\([a-zA-Z\\-]+\\) ([0-9]\\.[0-9]+).*"
"\\1" SharedMimeInfo_VERSION_STRING "${_smiVersionRaw}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SharedMimeInfo
FOUND_VAR
SharedMimeInfo_FOUND
REQUIRED_VARS
UPDATE_MIME_DATABASE_EXECUTABLE
VERSION_VAR
SharedMimeInfo_VERSION_STRING)
if(SharedMimeInfo_FOUND AND NOT TARGET SharedMimeInfo::UpdateMimeDatabase)
add_executable(SharedMimeInfo::UpdateMimeDatabase IMPORTED)
set_target_properties(SharedMimeInfo::UpdateMimeDatabase PROPERTIES
IMPORTED_LOCATION "${UPDATE_MIME_DATABASE_EXECUTABLE}"
)
endif()
mark_as_advanced(UPDATE_MIME_DATABASE_EXECUTABLE)
function(UPDATE_XDG_MIMETYPES _path)
get_filename_component(_xdgmimeDir "${_path}" NAME)
if("${_xdgmimeDir}" STREQUAL packages )
get_filename_component(_xdgmimeDir "${_path}" DIRECTORY)
else()
set(_xdgmimeDir "${_path}")
endif()
# Note that targets and most variables are not available to install code
install(CODE "
set(DESTDIR_VALUE \"\$ENV{DESTDIR}\")
if (NOT DESTDIR_VALUE)
# under Windows relative paths are used, that's why it runs from CMAKE_INSTALL_PREFIX
message(STATUS \"Updating MIME database at \${CMAKE_INSTALL_PREFIX}/${_xdgmimeDir}\")
execute_process(COMMAND \"${UPDATE_MIME_DATABASE_EXECUTABLE}\" -n \"${_xdgmimeDir}\"
WORKING_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}\")
endif (NOT DESTDIR_VALUE)
")
endfunction()
include(FeatureSummary)
set_package_properties(SharedMimeInfo PROPERTIES
URL https://freedesktop.org/wiki/Software/shared-mime-info/
DESCRIPTION "A database of common MIME types")
================================================
FILE: find-modules/FindTaglib.cmake
================================================
# SPDX-FileCopyrightText: 2006 Laurent Montel <montel@kde.org>
# SPDX-FileCopyrightText: 2019 Heiko Becker <heirecka@exherbo.org>
# SPDX-FileCopyrightText: 2020 Elvis Angelaccio <elvis.angelaccio@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindTaglib
----------
Try to find the Taglib library.
This will define the following variables:
``Taglib_FOUND``
True if the system has the taglib library of at least the minimum
version specified by the version parameter to find_package()
``Taglib_INCLUDE_DIRS``
The taglib include dirs for use with target_include_directories
``Taglib_LIBRARIES``
The taglib libraries for use with target_link_libraries()
``Taglib_VERSION``
The version of taglib that was found
If ``Taglib_FOUND`` is TRUE, it will also define the following imported
target:
``Taglib::Taglib``
The Taglib library
Since 5.72.0
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_TAGLIB QUIET taglib)
find_path(Taglib_INCLUDE_DIRS
NAMES tag.h
PATH_SUFFIXES taglib
HINTS ${PC_TAGLIB_INCLUDEDIR}
)
find_library(Taglib_LIBRARIES
NAMES tag
HINTS ${PC_TAGLIB_LIBDIR}
)
set(Taglib_VERSION ${PC_TAGLIB_VERSION})
if (Taglib_INCLUDE_DIRS AND NOT Taglib_VERSION)
if(EXISTS "${Taglib_INCLUDE_DIRS}/taglib.h")
file(READ "${Taglib_INCLUDE_DIRS}/taglib.h" TAGLIB_H)
string(REGEX MATCH "#define TAGLIB_MAJOR_VERSION[ ]+[0-9]+" TAGLIB_MAJOR_VERSION_MATCH ${TAGLIB_H})
string(REGEX MATCH "#define TAGLIB_MINOR_VERSION[ ]+[0-9]+" TAGLIB_MINOR_VERSION_MATCH ${TAGLIB_H})
string(REGEX MATCH "#define TAGLIB_PATCH_VERSION[ ]+[0-9]+" TAGLIB_PATCH_VERSION_MATCH ${TAGLIB_H})
string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+(.*)" "\\1" TAGLIB_MAJOR_VERSION "${TAGLIB_MAJOR_VERSION_MATCH}")
string(REGEX REPLACE ".*_MINOR_VERSION[ ]+(.*)" "\\1" TAGLIB_MINOR_VERSION "${TAGLIB_MINOR_VERSION_MATCH}")
string(REGEX REPLACE ".*_PATCH_VERSION[ ]+(.*)" "\\1" TAGLIB_PATCH_VERSION "${TAGLIB_PATCH_VERSION_MATCH}")
set(Taglib_VERSION "${TAGLIB_MAJOR_VERSION}.${TAGLIB_MINOR_VERSION}.${TAGLIB_PATCH_VERSION}")
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Taglib
FOUND_VAR
Taglib_FOUND
REQUIRED_VARS
Taglib_LIBRARIES
Taglib_INCLUDE_DIRS
VERSION_VAR
Taglib_VERSION
)
if (Taglib_FOUND AND NOT TARGET Taglib::Taglib)
add_library(Taglib::Taglib UNKNOWN IMPORTED)
set_target_properties(Taglib::Taglib PROPERTIES
IMPORTED_LOCATION "${Taglib_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${Taglib_INCLUDE_DIRS}"
)
endif()
mark_as_advanced(Taglib_LIBRARIES Taglib_INCLUDE_DIRS)
include(FeatureSummary)
set_package_properties(Taglib PROPERTIES
URL "https://taglib.org/"
DESCRIPTION "A library for reading and editing the meta-data of audio formats"
)
================================================
FILE: find-modules/FindUDev.cmake
================================================
# SPDX-FileCopyrightText: 2010 Rafael Fernández López <ereslibre@kde.org>
# SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindUDev
--------
Try to find the UDev library.
This will define the following variables:
``UDev_FOUND``
System has UDev.
``UDev_INCLUDE_DIRS``
The libudev include directory.
``UDev_LIBRARIES``
The libudev libraries.
``UDev_VERSION``
The libudev version.
If ``UDev_FOUND`` is TRUE, it will also define the following imported
target:
``UDev::UDev``
The UDev library
Since 5.57.0.
#]=======================================================================]
cmake_policy(VERSION 3.16)
find_package(PkgConfig QUIET)
pkg_check_modules(PC_UDEV QUIET libudev)
find_path(UDev_INCLUDE_DIRS NAMES libudev.h HINTS ${PC_UDEV_INCLUDE_DIRS})
find_library(UDev_LIBRARIES NAMES udev HINTS ${PC_UDEV_LIBRARY_DIRS})
set(UDev_VERSION ${PC_UDEV_VERSION})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(UDev
FOUND_VAR UDev_FOUND
REQUIRED_VARS UDev_INCLUDE_DIRS UDev_LIBRARIES
VERSION_VAR UDev_VERSION
)
mark_as_
gitextract_vm9rnzxq/
├── .gitignore
├── .gitlab-ci.yml
├── .kde-ci.yml
├── CMakeLists.txt
├── COPYING-CMAKE-SCRIPTS
├── ECMConfig.cmake.in
├── LICENSES/
│ ├── BSD-2-Clause.txt
│ ├── BSD-3-Clause.txt
│ ├── CC0-1.0.txt
│ └── MIT.txt
├── README.md
├── README.rst
├── cmake/
│ └── FindSphinx.cmake
├── docs/
│ ├── CMakeLists.txt
│ ├── find-module/
│ │ ├── Find7Zip.rst
│ │ ├── Find7z.rst
│ │ ├── FindCanberra.rst
│ │ ├── FindEGL.rst
│ │ ├── FindFFmpeg.rst
│ │ ├── FindGLIB2.rst
│ │ ├── FindGperf.rst
│ │ ├── FindGradle.rst
│ │ ├── FindIcoTool.rst
│ │ ├── FindInotify.rst
│ │ ├── FindIsoCodes.rst
│ │ ├── FindKF5.rst
│ │ ├── FindLibExiv2.rst
│ │ ├── FindLibGit2.rst
│ │ ├── FindLibMount.rst
│ │ ├── FindLibcap.rst
│ │ ├── FindOpenEXR.rst
│ │ ├── FindPhoneNumber.rst
│ │ ├── FindPoppler.rst
│ │ ├── FindPulseAudio.rst
│ │ ├── FindQtWaylandScanner.rst
│ │ ├── FindSasl2.rst
│ │ ├── FindSeccomp.rst
│ │ ├── FindSharedMimeInfo.rst
│ │ ├── FindTaglib.rst
│ │ ├── FindUDev.rst
│ │ ├── FindWayland.rst
│ │ ├── FindWaylandProtocols.rst
│ │ ├── FindWaylandScanner.rst
│ │ ├── FindX11_XCB.rst
│ │ ├── FindXCB.rst
│ │ ├── Findepoxy.rst
│ │ └── Findgzip.rst
│ ├── index.rst
│ ├── kde-module/
│ │ ├── KDECMakeSettings.rst
│ │ ├── KDEClangFormat.rst
│ │ ├── KDECompilerSettings.rst
│ │ ├── KDEFrameworkCompilerSettings.rst
│ │ ├── KDEGitCommitHooks.rst
│ │ ├── KDEInstallDirs.rst
│ │ ├── KDEInstallDirs5.rst
│ │ ├── KDEInstallDirs6.rst
│ │ ├── KDEMetaInfoPlatformCheck.rst
│ │ └── KDEPackageAppTemplates.rst
│ ├── manual/
│ │ ├── ecm-developer.7.rst
│ │ ├── ecm-find-modules.7.rst
│ │ ├── ecm-kde-modules.7.rst
│ │ ├── ecm-modules.7.rst
│ │ ├── ecm-toolchains.7.rst
│ │ └── ecm.7.rst
│ ├── module/
│ │ ├── CheckAtomic.rst
│ │ ├── ECMAddAndroidApk.rst
│ │ ├── ECMAddAppIcon.rst
│ │ ├── ECMAddQch.rst
│ │ ├── ECMAddQtDesignerPlugin.rst
│ │ ├── ECMAddTests.rst
│ │ ├── ECMCheckOutboundLicense.rst
│ │ ├── ECMConfiguredInstall.rst
│ │ ├── ECMCoverageOption.rst
│ │ ├── ECMCreateQmFromPoFiles.rst
│ │ ├── ECMDeprecationSettings.rst
│ │ ├── ECMEnableSanitizers.rst
│ │ ├── ECMFeatureSummary.rst
│ │ ├── ECMFindModuleHelpers.rst
│ │ ├── ECMFindQmlModule.rst
│ │ ├── ECMGenerateDBusServiceFile.rst
│ │ ├── ECMGenerateExportHeader.rst
│ │ ├── ECMGenerateHeaders.rst
│ │ ├── ECMGeneratePkgConfigFile.rst
│ │ ├── ECMGeneratePriFile.rst
│ │ ├── ECMGeneratePythonBindings.rst
│ │ ├── ECMGenerateQDoc.rst
│ │ ├── ECMGenerateQmlTypes.rst
│ │ ├── ECMInstallIcons.rst
│ │ ├── ECMMarkAsTest.rst
│ │ ├── ECMMarkNonGuiExecutable.rst
│ │ ├── ECMOptionalAddSubdirectory.rst
│ │ ├── ECMPackageConfigHelpers.rst
│ │ ├── ECMPoQmTools.rst
│ │ ├── ECMQmlModule.rst
│ │ ├── ECMQtDeclareLoggingCategory.rst
│ │ ├── ECMQueryQt.rst
│ │ ├── ECMSetupQtPluginMacroNames.rst
│ │ ├── ECMSetupVersion.rst
│ │ ├── ECMSourceVersionControl.rst
│ │ ├── ECMUninstallTarget.rst
│ │ ├── ECMUseFindModules.rst
│ │ ├── ECMWinResolveSymlinks.rst
│ │ └── QtVersionOption.rst
│ ├── sphinx/
│ │ ├── .gitignore
│ │ ├── conf.py.in
│ │ ├── ecm.css.in
│ │ └── ext/
│ │ └── ecm.py
│ └── toolchain/
│ └── Android.rst
├── find-modules/
│ ├── ECMFindModuleHelpersStub.cmake
│ ├── Find7Zip.cmake
│ ├── Find7z.cmake
│ ├── FindCanberra.cmake
│ ├── FindEGL.cmake
│ ├── FindFFmpeg.cmake
│ ├── FindGLIB2.cmake
│ ├── FindGperf.cmake
│ ├── FindGradle.cmake
│ ├── FindIcoTool.cmake
│ ├── FindInotify.cmake
│ ├── FindIsoCodes.cmake
│ ├── FindKF5.cmake
│ ├── FindKF6.cmake
│ ├── FindLibExiv2.cmake
│ ├── FindLibGit2.cmake
│ ├── FindLibMount.cmake
│ ├── FindLibcap.cmake
│ ├── FindOpenEXR.cmake
│ ├── FindPhoneNumber.cmake
│ ├── FindPoppler.cmake
│ ├── FindPulseAudio.cmake
│ ├── FindQHelpGenerator.cmake
│ ├── FindQtWaylandScanner.cmake
│ ├── FindReuseTool.cmake
│ ├── FindSasl2.cmake
│ ├── FindSeccomp.cmake
│ ├── FindSharedMimeInfo.cmake
│ ├── FindTaglib.cmake
│ ├── FindUDev.cmake
│ ├── FindWayland.cmake
│ ├── FindWaylandProtocols.cmake
│ ├── FindWaylandScanner.cmake
│ ├── FindX11_XCB.cmake
│ ├── FindXCB.cmake
│ ├── Findepoxy.cmake
│ ├── Findgzip.cmake
│ ├── local.properties.cmake
│ └── settings.gradle.cmake
├── kde-modules/
│ ├── KDECMakeSettings.cmake
│ ├── KDEClangFormat.cmake
│ ├── KDECompilerSettings.cmake
│ ├── KDEFrameworkCompilerLegacySettings.cmake
│ ├── KDEFrameworkCompilerSettings.cmake
│ ├── KDEGitCommitHooks.cmake
│ ├── KDEInstallDirs.cmake
│ ├── KDEInstallDirs5.cmake
│ ├── KDEInstallDirs6.cmake
│ ├── KDEInstallDirsCommon.cmake
│ ├── KDEMetaInfoPlatformCheck.cmake
│ ├── KDEPackageAppTemplates.cmake
│ ├── KDESetupPrefixScript.cmake
│ ├── appstreamtest.cmake
│ ├── clang-format.cmake
│ ├── kde-git-commit-hooks/
│ │ ├── clang-format.sh
│ │ ├── combined.schema.json.in
│ │ ├── combined.schema.json.in.license
│ │ ├── json-schema.py
│ │ └── pre-commit.in
│ ├── prefix.sh.cmake
│ └── prefix.sh.fish.cmake
├── metainfo.yaml
├── modules/
│ ├── CheckAtomic.cmake
│ ├── ECMAddAndroidApk.cmake
│ ├── ECMAddAppIcon.cmake
│ ├── ECMAddQch.cmake
│ ├── ECMAddQtDesignerPlugin.cmake
│ ├── ECMAddTests.cmake
│ ├── ECMCheckOutboundLicense.cmake
│ ├── ECMConfiguredInstall.cmake
│ ├── ECMCoverageOption.cmake
│ ├── ECMCreateQmFromPoFiles.cmake
│ ├── ECMDeprecationSettings.cmake
│ ├── ECMEnableSanitizers.cmake
│ ├── ECMFeatureSummary.cmake
│ ├── ECMFindModuleHelpers.cmake
│ ├── ECMFindQmlModule.cmake
│ ├── ECMFindQmlModule.cmake.in
│ ├── ECMGenerateDBusServiceFile.cmake
│ ├── ECMGenerateExportHeader.cmake
│ ├── ECMGenerateHeaders.cmake
│ ├── ECMGeneratePkgConfigFile.cmake
│ ├── ECMGeneratePriFile.cmake
│ ├── ECMGeneratePythonBindings.cmake
│ ├── ECMGeneratePythonBindings.toml.in
│ ├── ECMGeneratePythonBindings.toml.in.license
│ ├── ECMGenerateQDoc.cmake
│ ├── ECMGenerateQmlTypes.cmake
│ ├── ECMInstallIcons.cmake
│ ├── ECMMarkAsTest.cmake
│ ├── ECMMarkNonGuiExecutable.cmake
│ ├── ECMOptionalAddSubdirectory.cmake
│ ├── ECMPackageConfigHelpers.cmake
│ ├── ECMPoQmTools.cmake
│ ├── ECMQMLModules.cmake
│ ├── ECMQchDoxygen.config.in
│ ├── ECMQchDoxygenLayout.xml
│ ├── ECMQmLoader.cpp.in
│ ├── ECMQmlModule.cmake
│ ├── ECMQmlModule.cpp.in
│ ├── ECMQmlModule.cpp.in.license
│ ├── ECMQmlModule.h.in
│ ├── ECMQmlModule.h.in.license
│ ├── ECMQmlModule5.cmake
│ ├── ECMQmlModule6.cmake
│ ├── ECMQtDeclareLoggingCategory.cmake
│ ├── ECMQtDeclareLoggingCategory.cpp.in
│ ├── ECMQtDeclareLoggingCategory.h.in
│ ├── ECMQueryQmake.cmake
│ ├── ECMQueryQt.cmake
│ ├── ECMSetupQtPluginMacroNames.cmake
│ ├── ECMSetupVersion.cmake
│ ├── ECMSourceVersionControl.cmake
│ ├── ECMUninstallTarget.cmake
│ ├── ECMUseFindModules.cmake
│ ├── ECMVersionHeader.h.in
│ ├── ECMWinResolveSymlinks.cmake
│ ├── QtVersionOption.cmake
│ ├── check-outbound-license.py
│ └── ecm_uninstall.cmake.in
├── test-modules/
│ └── test_execute_and_compare.cmake
├── tests/
│ ├── CMakeLists.txt
│ ├── ECMAddAppIconTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_files.cmake.in
│ │ └── main.cpp
│ ├── ECMAddTests/
│ │ ├── CMakeLists.txt
│ │ ├── check_files.cmake
│ │ ├── multi_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test1.cpp
│ │ │ ├── test10.cpp
│ │ │ ├── test11.cpp
│ │ │ ├── test12.cpp
│ │ │ ├── test13.cpp
│ │ │ ├── test14.cpp
│ │ │ ├── test15.cpp
│ │ │ ├── test2.cpp
│ │ │ ├── test3.cpp
│ │ │ ├── test4.cpp
│ │ │ ├── test5.cpp
│ │ │ ├── test6.cpp
│ │ │ ├── test7.cpp
│ │ │ ├── test8.cpp
│ │ │ └── test9.cpp
│ │ ├── nameprefix_by_path_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── dir_a/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── dir_b/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_bypropignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_first/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── dir_last/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── dir_afterlast/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_ignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_nodirs/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── nodir_first/
│ │ │ │ │ └── nodir_ignored/
│ │ │ │ │ └── nodir_notignored/
│ │ │ │ │ └── nodir_renamed/
│ │ │ │ │ └── nodir_last/
│ │ │ │ │ └── dir_afterlast/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ ├── dir_notignored/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── dir_renamed/
│ │ │ │ └── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── nameprefix_by_var_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── nameprefix_test_helpers.cmake
│ │ ├── single_tests/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test1.cpp
│ │ │ ├── test2.cpp
│ │ │ ├── test3.cpp
│ │ │ ├── test4.cpp
│ │ │ ├── test5.cpp
│ │ │ ├── test6.cpp
│ │ │ ├── test6body.cpp
│ │ │ ├── test7.cpp
│ │ │ ├── test8.cpp
│ │ │ └── test9.cpp
│ │ ├── testhelper.cpp
│ │ └── testhelper.h
│ ├── ECMCheckOutboundLicenseTest/
│ │ ├── CMakeLists.txt
│ │ ├── run_test.cmake.config
│ │ └── testdata/
│ │ ├── BSD-2-Clause.cpp
│ │ ├── GPL-2.0-only.cpp
│ │ ├── GPL-2.0-or-later.cpp
│ │ ├── GPL-3.0-only.cpp
│ │ ├── LGPL-2.1-or-later.cpp
│ │ └── LGPL-3.0-only.cpp
│ ├── ECMConfiguredInstallTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── configured.txt
│ │ ├── configured_atOnly.txt.in
│ │ ├── expected/
│ │ │ ├── configured.txt
│ │ │ ├── configured_atOnly.txt
│ │ │ ├── multi1.txt
│ │ │ └── multi2.txt
│ │ ├── multi1.txt.in
│ │ └── multi2.txt.in
│ ├── ECMFindQmlModuleTest/
│ │ ├── CMakeLists.txt
│ │ ├── main.c
│ │ └── qmlinstall/
│ │ └── org/
│ │ └── kde/
│ │ └── ecmtest/
│ │ ├── Dummy.qml
│ │ └── qmldir
│ ├── ECMGenerateDBusServiceFileTest/
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── expected/
│ │ │ ├── org.kde.kded5.service
│ │ │ └── org.kde.kded5.withSystemD.renamed.service
│ │ └── windowsexpected/
│ │ ├── org.kde.kded5.service
│ │ └── org.kde.kded5.withSystemD.renamed.service
│ ├── ECMGenerateExportHeaderTest/
│ │ ├── CMakeLists.txt
│ │ ├── consumer/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main.cpp
│ │ │ ├── testAPI_DISABLE_DEPRECATED_BEFORE_AND_AT.cmake
│ │ │ └── testAPI_NO_DEPRECATED.cmake
│ │ ├── format_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ └── library/
│ │ ├── CMakeLists.txt
│ │ ├── library.cpp
│ │ ├── library.hpp
│ │ └── main.cpp
│ ├── ECMGenerateHeadersTest/
│ │ ├── CMakeLists.txt
│ │ ├── CamelCaseHeadTest1.h
│ │ ├── CamelCaseHeadTest2.h
│ │ ├── CommonHeader
│ │ ├── headsubdir/
│ │ │ ├── headtest2.h
│ │ │ └── headtest3.h
│ │ ├── headtest1.h
│ │ ├── headtest1.hpp
│ │ ├── headtest2.h
│ │ ├── headtest2.hpp
│ │ ├── headtest4.h
│ │ └── run_test.cmake.config
│ ├── ECMGeneratePkgConfigFile/
│ │ ├── CMakeLists.txt
│ │ ├── KF5CoreAddons.pc
│ │ ├── KF5CoreAddons2.pc
│ │ ├── KF5CoreAddons3.pc
│ │ ├── KF5CoreAddons4.pc
│ │ ├── KF5CoreAddons5.pc
│ │ ├── KF6Attica.pc
│ │ ├── custom_defines/
│ │ │ └── CMakeLists.txt
│ │ ├── metainfo_with_description.yaml
│ │ ├── metainfo_with_empty_description.yaml
│ │ ├── metainfo_without_description.yaml
│ │ ├── no_description_parameter_metainfo_with_description-param/
│ │ │ └── CMakeLists.txt
│ │ ├── no_description_parameter_metainfo_with_empty_description/
│ │ │ └── CMakeLists.txt
│ │ ├── no_description_parameter_metainfo_without_description/
│ │ │ └── CMakeLists.txt
│ │ ├── no_optional_arguments/
│ │ │ └── CMakeLists.txt
│ │ ├── test-and-comparison-helpers.cmake
│ │ ├── test_imported_targets/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EGPF_imported_include_dirs_control.pc
│ │ │ └── main.cpp
│ │ ├── test_no_interface_include_dirs/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EGPF_no_interface_include_directories.pc
│ │ │ └── main.cpp
│ │ ├── with_an_URL_parameter/
│ │ │ └── CMakeLists.txt
│ │ └── with_public_and_private_dependencies/
│ │ └── CMakeLists.txt
│ ├── ECMInstallIconsTest/
│ │ ├── 128-places-home.mng
│ │ ├── 16-actions-badext.txt
│ │ ├── 16-animations-loading.mng
│ │ ├── 16-categories-system-help.mng
│ │ ├── CMakeLists.txt
│ │ ├── check_tree.cmake.in
│ │ ├── expected-tree/
│ │ │ ├── badly-named-files-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 16x16/
│ │ │ │ │ └── actions/
│ │ │ │ │ └── badext.txt
│ │ │ │ └── icon-theme.cache
│ │ │ ├── lang-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── l10n/
│ │ │ │ │ │ └── en_US/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── multi-file-test/
│ │ │ │ └── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── single-file-test/
│ │ │ │ └── hicolor/
│ │ │ │ └── icon-theme.cache
│ │ │ ├── themed-lang-test/
│ │ │ │ └── oxygen/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── l10n/
│ │ │ │ │ │ └── en_US/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ ├── themed-test/
│ │ │ │ └── theme-name-2/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ ├── animations/
│ │ │ │ │ │ └── loading.mng
│ │ │ │ │ └── categories/
│ │ │ │ │ └── system-help.mng
│ │ │ │ ├── icon-theme.cache
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ └── fonts-package.svgz
│ │ │ └── v1-icons/
│ │ │ ├── crystalsvg/
│ │ │ │ └── icon-theme.cache
│ │ │ ├── hicolor/
│ │ │ │ ├── 128x128/
│ │ │ │ │ └── places/
│ │ │ │ │ ├── home.mng
│ │ │ │ │ └── l10n/
│ │ │ │ │ └── en_US/
│ │ │ │ │ └── home.mng
│ │ │ │ ├── 16x16/
│ │ │ │ │ └── animations/
│ │ │ │ │ └── loading.mng
│ │ │ │ └── icon-theme.cache
│ │ │ ├── locolor/
│ │ │ │ └── scalable/
│ │ │ │ └── mimetypes/
│ │ │ │ ├── fonts-package.svgz
│ │ │ │ └── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── fonts-package.svgz
│ │ │ └── oxygen/
│ │ │ └── 16x16/
│ │ │ └── categories/
│ │ │ ├── l10n/
│ │ │ │ └── en_US/
│ │ │ │ └── system-help.mng
│ │ │ └── system-help.mng
│ │ ├── sc-mimetypes-fonts-package.svgz
│ │ ├── v1-syntax/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hi128-places-home.mng
│ │ │ ├── hi16-animations-loading.mng
│ │ │ ├── losc-mimetypes-fonts-package.svgz
│ │ │ └── ox16-categories-system-help.mng
│ │ ├── v1-syntax-l10n/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── hi128-places-home.mng
│ │ │ ├── losc-mimetypes-fonts-package.svgz
│ │ │ └── ox16-categories-system-help.mng
│ │ └── v1-syntax-no-icons/
│ │ └── CMakeLists.txt
│ ├── ECMPoQmToolsTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ ├── check_conf.cmake.in
│ │ ├── check_conf_static.cmake.in
│ │ ├── only-process.po
│ │ ├── po/
│ │ │ ├── es/
│ │ │ │ └── install-test.po
│ │ │ ├── fr/
│ │ │ │ └── install-test.po
│ │ │ ├── no-po/
│ │ │ │ └── placeholder
│ │ │ └── should-not-be-installed
│ │ ├── po-custom-dir1/
│ │ │ ├── es/
│ │ │ │ └── custom-dir1-install-test.po
│ │ │ └── fr/
│ │ │ └── custom-dir1-install-test.po
│ │ ├── po-custom-dir2/
│ │ │ ├── es/
│ │ │ │ └── custom-dir2-install-test.po
│ │ │ └── fr/
│ │ │ └── custom-dir2-install-test.po
│ │ ├── process-and-install.po
│ │ ├── subdir/
│ │ │ └── CMakeLists.txt
│ │ ├── tr_test-po/
│ │ │ ├── de/
│ │ │ │ ├── catalog.po
│ │ │ │ └── catalog2.po
│ │ │ ├── en/
│ │ │ │ ├── catalog.po
│ │ │ │ └── catalog2.po
│ │ │ ├── pt/
│ │ │ │ └── catalog.po
│ │ │ └── pt_BR/
│ │ │ └── catalog.po
│ │ ├── tr_test.cpp
│ │ ├── tr_thread_test.cpp
│ │ └── tr_thread_test_module.cpp
│ ├── ECMQmlModuleTest/
│ │ ├── CMakeLists.txt
│ │ ├── QmlModule.qml
│ │ ├── QmlModule2.qml
│ │ ├── TestModule_init.cpp
│ │ ├── check.cmake.in
│ │ ├── qmldir_expected_depends_qt5
│ │ ├── qmldir_expected_depends_qt5.license
│ │ ├── qmldir_expected_depends_qt6
│ │ ├── qmldir_expected_depends_qt6.license
│ │ ├── qmldir_expected_full_qt5
│ │ ├── qmldir_expected_full_qt5.license
│ │ ├── qmldir_expected_full_qt6
│ │ ├── qmldir_expected_full_qt6.license
│ │ ├── qmldir_expected_qmlonly_qt5
│ │ ├── qmldir_expected_qmlonly_qt5.license
│ │ ├── qmldir_expected_qmlonly_qt6
│ │ ├── qmldir_expected_qmlonly_qt6.license
│ │ ├── qmlmodule.cpp
│ │ └── qmlmodule.h
│ ├── ECMQtDeclareLoggingCategoryTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ ├── log.categories
│ │ ├── log.renamecategories
│ │ └── testmain.cpp
│ ├── ECMSetupVersionTest/
│ │ ├── CMakeLists.txt
│ │ ├── new_explicit_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_explicit_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_expected_zero_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_header_zero_prefixed_version/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_simple_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_soversion_prefix/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── new_project_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_header/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_header_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_simple/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_simple_no_version_string_vars/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_soversion/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_abspath/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_anynewer/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_exact/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── old_version_file_samemajor/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ └── version_helpers.cmake
│ ├── ExecuteCoreModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── ExecuteKDEModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── FindModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── KDEFetchTranslations/
│ │ └── CMakeLists.txt
│ ├── KDEInstallDirsTest/
│ │ ├── not_cache_variable/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── relative_or_absolute/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.c
│ │ ├── var_list.cmake
│ │ └── vars_in_sync/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ ├── KDEPackageAppTemplatesCrossTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── someFile
│ ├── KDEPackageAppTemplatesForcedTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── qml-plasmoid/
│ │ ├── CMakeLists.txt
│ │ ├── Messages.sh
│ │ ├── README
│ │ ├── package/
│ │ │ ├── contents/
│ │ │ │ ├── images/
│ │ │ │ │ └── pairs.svgz
│ │ │ │ └── ui/
│ │ │ │ └── main.qml
│ │ │ └── metadata.desktop
│ │ └── qml-plasmoid.kdevtemplate
│ ├── KDEPackageAppTemplatesTest/
│ │ ├── CMakeLists.txt
│ │ ├── check.cmake.in
│ │ └── qml-plasmoid/
│ │ ├── CMakeLists.txt
│ │ ├── Messages.sh
│ │ ├── README
│ │ ├── package/
│ │ │ ├── contents/
│ │ │ │ ├── images/
│ │ │ │ │ └── pairs.svgz
│ │ │ │ └── ui/
│ │ │ │ └── main.qml
│ │ │ └── metadata.desktop
│ │ └── qml-plasmoid.kdevtemplate
│ ├── UseFindModules/
│ │ ├── CMakeLists.txt
│ │ └── main.c
│ └── test_helpers.cmake
└── toolchain/
├── Android.cmake
├── ECMAndroidDeployQt5.cmake
├── deployment-file-qt514.json.in
├── deployment-file-qt6.json.in
├── deployment-file-qt6.json.in.license
├── deployment-file.json.in
├── ecm-version.gradle.in
├── generate-fastlane-metadata.py
├── hasMainSymbol.cmake
└── specifydependencies.cmake
Condensed preview — 516 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,068K chars).
[
{
"path": ".gitignore",
"chars": 405,
"preview": "# Ignore generated cmake files\ncmake/ECMConfig.cmake\ncmake/ECMConfigVersion.cmake\n\n# Ignore the following files\n*~\n*.[oa..."
},
{
"path": ".gitlab-ci.yml",
"chars": 568,
"preview": "# SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org>\n# SPDX-License-Identifier: CC0-1.0\n\ninclude:\n - project:..."
},
{
"path": ".kde-ci.yml",
"chars": 160,
"preview": "# SPDX-FileCopyrightText: None\n# SPDX-License-Identifier: CC0-1.0\n\nOptions:\n per-test-timeout: 120\n require-passing-te..."
},
{
"path": "CMakeLists.txt",
"chars": 3754,
"preview": "#=============================================================================\n# SPDX-FileCopyrightText: 2006-2013 Alex..."
},
{
"path": "COPYING-CMAKE-SCRIPTS",
"chars": 1327,
"preview": "Redistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the followi..."
},
{
"path": "ECMConfig.cmake.in",
"chars": 431,
"preview": "@PACKAGE_INIT@\n\nset(ECM_FIND_MODULE_DIR \"@PACKAGE_FIND_MODULES_INSTALL_DIR@\")\n\nset(ECM_MODULE_DIR \"@PACKAGE_MODULES_INST..."
},
{
"path": "LICENSES/BSD-2-Clause.txt",
"chars": 1288,
"preview": "Copyright (c) <year> <owner>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without m..."
},
{
"path": "LICENSES/BSD-3-Clause.txt",
"chars": 1480,
"preview": "Copyright (c) <year> <owner>. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without m..."
},
{
"path": "LICENSES/CC0-1.0.txt",
"chars": 7048,
"preview": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE..."
},
{
"path": "LICENSES/MIT.txt",
"chars": 1108,
"preview": "MIT License Copyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtain..."
},
{
"path": "README.md",
"chars": 697,
"preview": "# Extra CMake Modules\n\n## Introduction\n\nThe Extra CMake Modules package, or ECM, adds to the modules provided by CMake,..."
},
{
"path": "README.rst",
"chars": 3014,
"preview": "Extra CMake Modules\n*******************\n\nIntroduction\n============\n\nThe Extra CMake Modules package, or ECM, adds to the..."
},
{
"path": "cmake/FindSphinx.cmake",
"chars": 1983,
"preview": "# SPDX-FileCopyrightText: 2015 Alex Merry <alex.merry@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[============..."
},
{
"path": "docs/CMakeLists.txt",
"chars": 4173,
"preview": "#=============================================================================\n# SPDX-FileCopyrightText: 2000-2013 Kitwa..."
},
{
"path": "docs/find-module/Find7Zip.rst",
"chars": 50,
"preview": ".. ecm-module:: ../../find-modules/Find7Zip.cmake\n"
},
{
"path": "docs/find-module/Find7z.rst",
"chars": 48,
"preview": ".. ecm-module:: ../../find-modules/Find7z.cmake\n"
},
{
"path": "docs/find-module/FindCanberra.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../find-modules/FindCanberra.cmake\n"
},
{
"path": "docs/find-module/FindEGL.rst",
"chars": 49,
"preview": ".. ecm-module:: ../../find-modules/FindEGL.cmake\n"
},
{
"path": "docs/find-module/FindFFmpeg.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../find-modules/FindFFmpeg.cmake\n"
},
{
"path": "docs/find-module/FindGLIB2.rst",
"chars": 51,
"preview": ".. ecm-module:: ../../find-modules/FindGLIB2.cmake\n"
},
{
"path": "docs/find-module/FindGperf.rst",
"chars": 51,
"preview": ".. ecm-module:: ../../find-modules/FindGperf.cmake\n"
},
{
"path": "docs/find-module/FindGradle.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../find-modules/FindGradle.cmake\n"
},
{
"path": "docs/find-module/FindIcoTool.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindIcoTool.cmake\n"
},
{
"path": "docs/find-module/FindInotify.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindInotify.cmake\n"
},
{
"path": "docs/find-module/FindIsoCodes.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../find-modules/FindIsoCodes.cmake\n"
},
{
"path": "docs/find-module/FindKF5.rst",
"chars": 49,
"preview": ".. ecm-module:: ../../find-modules/FindKF5.cmake\n"
},
{
"path": "docs/find-module/FindLibExiv2.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../find-modules/FindLibExiv2.cmake\n"
},
{
"path": "docs/find-module/FindLibGit2.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindLibGit2.cmake\n"
},
{
"path": "docs/find-module/FindLibMount.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../find-modules/FindLibMount.cmake\n"
},
{
"path": "docs/find-module/FindLibcap.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../find-modules/FindLibcap.cmake\n"
},
{
"path": "docs/find-module/FindOpenEXR.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindOpenEXR.cmake\n"
},
{
"path": "docs/find-module/FindPhoneNumber.rst",
"chars": 57,
"preview": ".. ecm-module:: ../../find-modules/FindPhoneNumber.cmake\n"
},
{
"path": "docs/find-module/FindPoppler.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindPoppler.cmake\n"
},
{
"path": "docs/find-module/FindPulseAudio.rst",
"chars": 56,
"preview": ".. ecm-module:: ../../find-modules/FindPulseAudio.cmake\n"
},
{
"path": "docs/find-module/FindQtWaylandScanner.rst",
"chars": 62,
"preview": ".. ecm-module:: ../../find-modules/FindQtWaylandScanner.cmake\n"
},
{
"path": "docs/find-module/FindSasl2.rst",
"chars": 51,
"preview": ".. ecm-module:: ../../find-modules/FindSasl2.cmake\n"
},
{
"path": "docs/find-module/FindSeccomp.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindSeccomp.cmake\n"
},
{
"path": "docs/find-module/FindSharedMimeInfo.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../find-modules/FindSharedMimeInfo.cmake\n"
},
{
"path": "docs/find-module/FindTaglib.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../find-modules/FindTaglib.cmake\n"
},
{
"path": "docs/find-module/FindUDev.rst",
"chars": 50,
"preview": ".. ecm-module:: ../../find-modules/FindUDev.cmake\n"
},
{
"path": "docs/find-module/FindWayland.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindWayland.cmake\n"
},
{
"path": "docs/find-module/FindWaylandProtocols.rst",
"chars": 62,
"preview": ".. ecm-module:: ../../find-modules/FindWaylandProtocols.cmake\n"
},
{
"path": "docs/find-module/FindWaylandScanner.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../find-modules/FindWaylandScanner.cmake\n"
},
{
"path": "docs/find-module/FindX11_XCB.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../find-modules/FindX11_XCB.cmake\n"
},
{
"path": "docs/find-module/FindXCB.rst",
"chars": 49,
"preview": ".. ecm-module:: ../../find-modules/FindXCB.cmake\n"
},
{
"path": "docs/find-module/Findepoxy.rst",
"chars": 51,
"preview": ".. ecm-module:: ../../find-modules/Findepoxy.cmake\n"
},
{
"path": "docs/find-module/Findgzip.rst",
"chars": 50,
"preview": ".. ecm-module:: ../../find-modules/Findgzip.cmake\n"
},
{
"path": "docs/index.rst",
"chars": 253,
"preview": ".. title:: Extra CMake Modules Reference Documentation\n\nReference Manuals\n#################\n\n.. toctree::\n :maxdepth:..."
},
{
"path": "docs/kde-module/KDECMakeSettings.rst",
"chars": 57,
"preview": ".. ecm-module:: ../../kde-modules/KDECMakeSettings.cmake\n"
},
{
"path": "docs/kde-module/KDEClangFormat.rst",
"chars": 55,
"preview": ".. ecm-module:: ../../kde-modules/KDEClangFormat.cmake\n"
},
{
"path": "docs/kde-module/KDECompilerSettings.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../kde-modules/KDECompilerSettings.cmake\n"
},
{
"path": "docs/kde-module/KDEFrameworkCompilerSettings.rst",
"chars": 69,
"preview": ".. ecm-module:: ../../kde-modules/KDEFrameworkCompilerSettings.cmake\n"
},
{
"path": "docs/kde-module/KDEGitCommitHooks.rst",
"chars": 58,
"preview": ".. ecm-module:: ../../kde-modules/KDEGitCommitHooks.cmake\n"
},
{
"path": "docs/kde-module/KDEInstallDirs.rst",
"chars": 55,
"preview": ".. ecm-module:: ../../kde-modules/KDEInstallDirs.cmake\n"
},
{
"path": "docs/kde-module/KDEInstallDirs5.rst",
"chars": 56,
"preview": ".. ecm-module:: ../../kde-modules/KDEInstallDirs5.cmake\n"
},
{
"path": "docs/kde-module/KDEInstallDirs6.rst",
"chars": 56,
"preview": ".. ecm-module:: ../../kde-modules/KDEInstallDirs6.cmake\n"
},
{
"path": "docs/kde-module/KDEMetaInfoPlatformCheck.rst",
"chars": 65,
"preview": ".. ecm-module:: ../../kde-modules/KDEMetaInfoPlatformCheck.cmake\n"
},
{
"path": "docs/kde-module/KDEPackageAppTemplates.rst",
"chars": 63,
"preview": ".. ecm-module:: ../../kde-modules/KDEPackageAppTemplates.cmake\n"
},
{
"path": "docs/manual/ecm-developer.7.rst",
"chars": 8687,
"preview": ".. ecm-manual-description: ECM Developer Reference\n\necm-developer(7)\n****************\n\n.. only:: html or latex\n\n .. co..."
},
{
"path": "docs/manual/ecm-find-modules.7.rst",
"chars": 1652,
"preview": ".. ecm-manual-description: ECM Find Modules Reference\n\necm-find-modules(7)\n*******************\n\n.. only:: html or latex..."
},
{
"path": "docs/manual/ecm-kde-modules.7.rst",
"chars": 1184,
"preview": ".. ecm-manual-description: ECM KDE Modules Reference\n\necm-kde-modules(7)\n******************\n\n.. only:: html or latex..."
},
{
"path": "docs/manual/ecm-modules.7.rst",
"chars": 1432,
"preview": ".. ecm-manual-description: ECM Modules Reference\n\necm-modules(7)\n**************\n\n.. only:: html or latex\n\n .. contents..."
},
{
"path": "docs/manual/ecm-toolchains.7.rst",
"chars": 512,
"preview": ".. ecm-manual-description: ECM Toolchains Reference\n\necm-toolchains(7)\n*****************\n\n.. only:: html or latex\n\n ....."
},
{
"path": "docs/manual/ecm.7.rst",
"chars": 153,
"preview": ".. ecm-manual-description: Extra CMake Modules\n\necm(7)\n******\n\n.. only:: html or latex\n\n .. contents::\n\n.. include:: ...."
},
{
"path": "docs/module/CheckAtomic.rst",
"chars": 48,
"preview": ".. ecm-module:: ../../modules/CheckAtomic.cmake\n"
},
{
"path": "docs/module/ECMAddAndroidApk.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../modules/ECMAddAndroidApk.cmake\n"
},
{
"path": "docs/module/ECMAddAppIcon.rst",
"chars": 50,
"preview": ".. ecm-module:: ../../modules/ECMAddAppIcon.cmake\n"
},
{
"path": "docs/module/ECMAddQch.rst",
"chars": 46,
"preview": ".. ecm-module:: ../../modules/ECMAddQch.cmake\n"
},
{
"path": "docs/module/ECMAddQtDesignerPlugin.rst",
"chars": 59,
"preview": ".. ecm-module:: ../../modules/ECMAddQtDesignerPlugin.cmake\n"
},
{
"path": "docs/module/ECMAddTests.rst",
"chars": 48,
"preview": ".. ecm-module:: ../../modules/ECMAddTests.cmake\n"
},
{
"path": "docs/module/ECMCheckOutboundLicense.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../modules/ECMCheckOutboundLicense.cmake\n"
},
{
"path": "docs/module/ECMConfiguredInstall.rst",
"chars": 57,
"preview": ".. ecm-module:: ../../modules/ECMConfiguredInstall.cmake\n"
},
{
"path": "docs/module/ECMCoverageOption.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../modules/ECMCoverageOption.cmake\n"
},
{
"path": "docs/module/ECMCreateQmFromPoFiles.rst",
"chars": 59,
"preview": ".. ecm-module:: ../../modules/ECMCreateQmFromPoFiles.cmake\n"
},
{
"path": "docs/module/ECMDeprecationSettings.rst",
"chars": 59,
"preview": ".. ecm-module:: ../../modules/ECMDeprecationSettings.cmake\n"
},
{
"path": "docs/module/ECMEnableSanitizers.rst",
"chars": 56,
"preview": ".. ecm-module:: ../../modules/ECMEnableSanitizers.cmake\n"
},
{
"path": "docs/module/ECMFeatureSummary.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../modules/ECMFeatureSummary.cmake\n"
},
{
"path": "docs/module/ECMFindModuleHelpers.rst",
"chars": 57,
"preview": ".. ecm-module:: ../../modules/ECMFindModuleHelpers.cmake\n"
},
{
"path": "docs/module/ECMFindQmlModule.rst",
"chars": 53,
"preview": ".. ecm-module:: ../../modules/ECMFindQmlModule.cmake\n"
},
{
"path": "docs/module/ECMGenerateDBusServiceFile.rst",
"chars": 63,
"preview": ".. ecm-module:: ../../modules/ECMGenerateDBusServiceFile.cmake\n"
},
{
"path": "docs/module/ECMGenerateExportHeader.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../modules/ECMGenerateExportHeader.cmake\n"
},
{
"path": "docs/module/ECMGenerateHeaders.rst",
"chars": 55,
"preview": ".. ecm-module:: ../../modules/ECMGenerateHeaders.cmake\n"
},
{
"path": "docs/module/ECMGeneratePkgConfigFile.rst",
"chars": 61,
"preview": ".. ecm-module:: ../../modules/ECMGeneratePkgConfigFile.cmake\n"
},
{
"path": "docs/module/ECMGeneratePriFile.rst",
"chars": 55,
"preview": ".. ecm-module:: ../../modules/ECMGeneratePriFile.cmake\n"
},
{
"path": "docs/module/ECMGeneratePythonBindings.rst",
"chars": 62,
"preview": ".. ecm-module:: ../../modules/ECMGeneratePythonBindings.cmake\n"
},
{
"path": "docs/module/ECMGenerateQDoc.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../modules/ECMGenerateQDoc.cmake\n"
},
{
"path": "docs/module/ECMGenerateQmlTypes.rst",
"chars": 56,
"preview": ".. ecm-module:: ../../modules/ECMGenerateQmlTypes.cmake\n"
},
{
"path": "docs/module/ECMInstallIcons.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../modules/ECMInstallIcons.cmake\n"
},
{
"path": "docs/module/ECMMarkAsTest.rst",
"chars": 50,
"preview": ".. ecm-module:: ../../modules/ECMMarkAsTest.cmake\n"
},
{
"path": "docs/module/ECMMarkNonGuiExecutable.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../modules/ECMMarkNonGuiExecutable.cmake\n"
},
{
"path": "docs/module/ECMOptionalAddSubdirectory.rst",
"chars": 63,
"preview": ".. ecm-module:: ../../modules/ECMOptionalAddSubdirectory.cmake\n"
},
{
"path": "docs/module/ECMPackageConfigHelpers.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../modules/ECMPackageConfigHelpers.cmake\n"
},
{
"path": "docs/module/ECMPoQmTools.rst",
"chars": 49,
"preview": ".. ecm-module:: ../../modules/ECMPoQmTools.cmake\n"
},
{
"path": "docs/module/ECMQmlModule.rst",
"chars": 49,
"preview": ".. ecm-module:: ../../modules/ECMQmlModule.cmake\n"
},
{
"path": "docs/module/ECMQtDeclareLoggingCategory.rst",
"chars": 64,
"preview": ".. ecm-module:: ../../modules/ECMQtDeclareLoggingCategory.cmake\n"
},
{
"path": "docs/module/ECMQueryQt.rst",
"chars": 47,
"preview": ".. ecm-module:: ../../modules/ECMQueryQt.cmake\n"
},
{
"path": "docs/module/ECMSetupQtPluginMacroNames.rst",
"chars": 63,
"preview": ".. ecm-module:: ../../modules/ECMSetupQtPluginMacroNames.cmake\n"
},
{
"path": "docs/module/ECMSetupVersion.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../modules/ECMSetupVersion.cmake\n"
},
{
"path": "docs/module/ECMSourceVersionControl.rst",
"chars": 60,
"preview": ".. ecm-module:: ../../modules/ECMSourceVersionControl.cmake\n"
},
{
"path": "docs/module/ECMUninstallTarget.rst",
"chars": 55,
"preview": ".. ecm-module:: ../../modules/ECMUninstallTarget.cmake\n"
},
{
"path": "docs/module/ECMUseFindModules.rst",
"chars": 54,
"preview": ".. ecm-module:: ../../modules/ECMUseFindModules.cmake\n"
},
{
"path": "docs/module/ECMWinResolveSymlinks.rst",
"chars": 58,
"preview": ".. ecm-module:: ../../modules/ECMWinResolveSymlinks.cmake\n"
},
{
"path": "docs/module/QtVersionOption.rst",
"chars": 52,
"preview": ".. ecm-module:: ../../modules/QtVersionOption.cmake\n"
},
{
"path": "docs/sphinx/.gitignore",
"chars": 6,
"preview": "*.pyc\n"
},
{
"path": "docs/sphinx/conf.py.in",
"chars": 1799,
"preview": "#=============================================================================\n# CMake - Cross Platform Makefile Generat..."
},
{
"path": "docs/sphinx/ecm.css.in",
"chars": 237,
"preview": "/* Import the Sphinx theme style. */\n@import url(\"${sphinx_theme}.css\");\n\n/* Wrap sidebar content even within words so..."
},
{
"path": "docs/sphinx/ext/ecm.py",
"chars": 10721,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n#\n# Based on cmake.py from CMake:\n# SPDX-FileCopyrightTex..."
},
{
"path": "docs/toolchain/Android.rst",
"chars": 46,
"preview": ".. ecm-module:: ../../toolchain/Android.cmake\n"
},
{
"path": "find-modules/ECMFindModuleHelpersStub.cmake",
"chars": 73,
"preview": "include(${CMAKE_CURRENT_LIST_DIR}/../modules/ECMFindModuleHelpers.cmake)\n"
},
{
"path": "find-modules/Find7Zip.cmake",
"chars": 2144,
"preview": "# SPDX-FileCopyrightText: 2019, 2021, 2023 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-..."
},
{
"path": "find-modules/Find7z.cmake",
"chars": 1381,
"preview": "# SPDX-FileCopyrightText: 2019, 2021 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clau..."
},
{
"path": "find-modules/FindCanberra.cmake",
"chars": 2889,
"preview": "# SPDX-FileCopyrightText: 2012 Raphael Kubo da Costa <rakuco@FreeBSD.org>\n# SPDX-FileCopyrightText: 2019 Harald Sitter <..."
},
{
"path": "find-modules/FindEGL.cmake",
"chars": 4827,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin..."
},
{
"path": "find-modules/FindFFmpeg.cmake",
"chars": 8621,
"preview": "# SPDX-FileCopyrightText: 2006 Matthias Kretz <kretz@kde.org>\n# SPDX-FileCopyrightText: 2008 Alexander Neundorf <neundor..."
},
{
"path": "find-modules/FindGLIB2.cmake",
"chars": 4921,
"preview": "# SPDX-FileCopyrightText: 2008 Laurent Montel <montel@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n\n#[===========..."
},
{
"path": "find-modules/FindGperf.cmake",
"chars": 4110,
"preview": "# SPDX-FileCopyrightText: 2016-2017 Pino Toscano <pino@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[===========..."
},
{
"path": "find-modules/FindGradle.cmake",
"chars": 4166,
"preview": "# SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[============..."
},
{
"path": "find-modules/FindIcoTool.cmake",
"chars": 1648,
"preview": "# SPDX-FileCopyrightText: 2017 Vincent Pinon <vpinon@kde.org>\n# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde...."
},
{
"path": "find-modules/FindInotify.cmake",
"chars": 3822,
"preview": "# SPDX-FileCopyrightText: 2016 Tobias C. Berner <tcberner@FreeBSD.org>\n# SPDX-FileCopyrightText: 2017 Adriaan de Groot <..."
},
{
"path": "find-modules/FindIsoCodes.cmake",
"chars": 1329,
"preview": "# SPDX-FileCopyrightText: 2016 Pino Toscano <pino@kde.org>\n# SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org..."
},
{
"path": "find-modules/FindKF5.cmake",
"chars": 3476,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gm..."
},
{
"path": "find-modules/FindKF6.cmake",
"chars": 3861,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gm..."
},
{
"path": "find-modules/FindLibExiv2.cmake",
"chars": 4075,
"preview": "# SPDX-FileCopyrightText: 2018 Christophe Giboudeaux <christophe@krop.fr>\n# SPDX-FileCopyrightText: 2010 Alexander Neund..."
},
{
"path": "find-modules/FindLibGit2.cmake",
"chars": 3748,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin..."
},
{
"path": "find-modules/FindLibMount.cmake",
"chars": 2560,
"preview": "# SPDX-FileCopyrightText: 2021 Ahmad Samir <a.samirh78@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[=========..."
},
{
"path": "find-modules/FindLibcap.cmake",
"chars": 1493,
"preview": "# SPDX-FileCopyrightText: 2014 Hrvoje Senjan <hrvoje.senjan@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[====..."
},
{
"path": "find-modules/FindOpenEXR.cmake",
"chars": 4091,
"preview": "# SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>\n# SPDX-FileCopyrightText: 2006 Alexander Neundor..."
},
{
"path": "find-modules/FindPhoneNumber.cmake",
"chars": 2483,
"preview": "# SPDX-FileCopyrightText: 2017 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>\n# SPDX-FileCopyrightTe..."
},
{
"path": "find-modules/FindPoppler.cmake",
"chars": 4611,
"preview": "# SPDX-FileCopyrightText: 2015 Alex Richardson <arichardson.kde@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[..."
},
{
"path": "find-modules/FindPulseAudio.cmake",
"chars": 4060,
"preview": "# SPDX-FileCopyrightText: 2008 Matthias Kretz <kretz@kde.org>\n# SPDX-FileCopyrightText: 2009 Marcus Hufgard <Marcus.Hufg..."
},
{
"path": "find-modules/FindQHelpGenerator.cmake",
"chars": 1760,
"preview": "# SPDX-FileCopyrightText: 2016 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[..."
},
{
"path": "find-modules/FindQtWaylandScanner.cmake",
"chars": 7884,
"preview": "# SPDX-FileCopyrightText: 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-..."
},
{
"path": "find-modules/FindReuseTool.cmake",
"chars": 800,
"preview": "# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandwehr@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#..."
},
{
"path": "find-modules/FindSasl2.cmake",
"chars": 2898,
"preview": "# SPDX-FileCopyrightText: 2006, 2007 Laurent Montel <montel@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[======..."
},
{
"path": "find-modules/FindSeccomp.cmake",
"chars": 1798,
"preview": "# SPDX-FileCopyrightText: 2017 Martin Flöser <mgraesslin@kde.org>\n# SPDX-FileCopyrightText: 2017 David Kahles <david.kah..."
},
{
"path": "find-modules/FindSharedMimeInfo.cmake",
"chars": 3133,
"preview": "# SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>\n# SPDX-FileCopyrightText: 2007 Pino Toscano <tos..."
},
{
"path": "find-modules/FindTaglib.cmake",
"chars": 3065,
"preview": "# SPDX-FileCopyrightText: 2006 Laurent Montel <montel@kde.org>\n# SPDX-FileCopyrightText: 2019 Heiko Becker <heirecka@exh..."
},
{
"path": "find-modules/FindUDev.cmake",
"chars": 2007,
"preview": "# SPDX-FileCopyrightText: 2010 Rafael Fernández López <ereslibre@kde.org>\n# SPDX-FileCopyrightText: 2019 Volker Krause <..."
},
{
"path": "find-modules/FindWayland.cmake",
"chars": 4907,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin..."
},
{
"path": "find-modules/FindWaylandProtocols.cmake",
"chars": 1297,
"preview": "# SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[==..."
},
{
"path": "find-modules/FindWaylandScanner.cmake",
"chars": 6609,
"preview": "# SPDX-FileCopyrightText: 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-..."
},
{
"path": "find-modules/FindX11_XCB.cmake",
"chars": 3082,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2011 Fredrik Höglund <fredrik@k..."
},
{
"path": "find-modules/FindXCB.cmake",
"chars": 5084,
"preview": "# SPDX-FileCopyrightText: 2011 Fredrik Höglund <fredrik@kde.org>\n# SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraessl..."
},
{
"path": "find-modules/Findepoxy.cmake",
"chars": 2633,
"preview": "# SPDX-FileCopyrightText: 2014 Fredrik Höglund <fredrik@kde.org>\n# SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.za..."
},
{
"path": "find-modules/Findgzip.cmake",
"chars": 1358,
"preview": "# SPDX-FileCopyrightText: 2019, 2021 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clau..."
},
{
"path": "find-modules/local.properties.cmake",
"chars": 27,
"preview": "sdk.dir=@ANDROID_SDK_ROOT@\n"
},
{
"path": "find-modules/settings.gradle.cmake",
"chars": 32,
"preview": "rootProject.name = '@ARG_NAME@'\n"
},
{
"path": "kde-modules/KDECMakeSettings.cmake",
"chars": 16120,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Aleix Pol <aleixpol@kde.or..."
},
{
"path": "kde-modules/KDEClangFormat.cmake",
"chars": 5309,
"preview": "# SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org>\n# SPDX-FileCopyrightText: 2021 Alexander Lohnau <al..."
},
{
"path": "kde-modules/KDECompilerSettings.cmake",
"chars": 34754,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <steveire@gm..."
},
{
"path": "kde-modules/KDEFrameworkCompilerLegacySettings.cmake",
"chars": 3149,
"preview": "# SPDX-FileCopyrightText: 2013 Albert Astals Cid <aacid@kde.org>\n# SPDX-FileCopyrightText: 2007 Matthias Kretz <kretz@kd..."
},
{
"path": "kde-modules/KDEFrameworkCompilerSettings.cmake",
"chars": 2935,
"preview": "# SPDX-FileCopyrightText: 2013 Albert Astals Cid <aacid@kde.org>\n# SPDX-FileCopyrightText: 2007 Matthias Kretz <kretz@kd..."
},
{
"path": "kde-modules/KDEGitCommitHooks.cmake",
"chars": 8237,
"preview": "# SPDX-FileCopyrightText: 2020-2023 Alexander Lohnau <alexander.lohnau@gmx.de>\n# SPDX-FileCopyrightText: 2022 Ahmad Sami..."
},
{
"path": "kde-modules/KDEInstallDirs.cmake",
"chars": 598,
"preview": "# SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[============..."
},
{
"path": "kde-modules/KDEInstallDirs5.cmake",
"chars": 16887,
"preview": "# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <stevei..."
},
{
"path": "kde-modules/KDEInstallDirs6.cmake",
"chars": 13673,
"preview": "# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <stevei..."
},
{
"path": "kde-modules/KDEInstallDirsCommon.cmake",
"chars": 16478,
"preview": "# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <stevei..."
},
{
"path": "kde-modules/KDEMetaInfoPlatformCheck.cmake",
"chars": 3677,
"preview": "# SPDX-FileCopyrightText: 2022 Albert Astals Cid <aacid@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[==========..."
},
{
"path": "kde-modules/KDEPackageAppTemplates.cmake",
"chars": 6061,
"preview": "# SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>\n# SPDX-FileCopyrightText: 2014 Simon Wächter <waechter.simon@..."
},
{
"path": "kde-modules/KDESetupPrefixScript.cmake",
"chars": 2013,
"preview": "# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 Stephen Kelly <stevei..."
},
{
"path": "kde-modules/appstreamtest.cmake",
"chars": 957,
"preview": "cmake_policy(VERSION 3.16)\n\nfile(GLOB install_done \"${INSTALL_FILES}\")\nif (install_done)\n file(READ \"${INSTALL_FILES}..."
},
{
"path": "kde-modules/clang-format.cmake",
"chars": 2712,
"preview": "---\n# SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org>\n# SPDX-FileCopyrightText: 2019 Gernot Gebhard <..."
},
{
"path": "kde-modules/kde-git-commit-hooks/clang-format.sh",
"chars": 1756,
"preview": "#!/usr/bin/env bash\n\n# Based on okular/hooks/pre-commit, credits go to Albert Astals Cid\n\nclang_format_major_version=@KD..."
},
{
"path": "kde-modules/kde-git-commit-hooks/combined.schema.json.in",
"chars": 145,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"if\": {\n \"type\": \"object\"\n },\n \"then\": {\n \"allOf\": [..."
},
{
"path": "kde-modules/kde-git-commit-hooks/combined.schema.json.in.license",
"chars": 178,
"preview": "# Version in sysadmin/ci-utilities should be single source of truth\nSPDX-FileCopyrightText: 2023 Alexander Lohnau <alexa..."
},
{
"path": "kde-modules/kde-git-commit-hooks/json-schema.py",
"chars": 2279,
"preview": "#!/usr/bin/python3\n# Version in sysadmin/ci-utilities should be single source of truth\n# SPDX-FileCopyrightText: 2023 Al..."
},
{
"path": "kde-modules/kde-git-commit-hooks/pre-commit.in",
"chars": 550,
"preview": "#!/usr/bin/env bash\n\n${PRE_COMMIT_SCRIPTS}\n\nRESULT=$?\nif [ $RESULT != 0 ]; then\n exit $RESULT\nfi\n\n# If the user has c..."
},
{
"path": "kde-modules/prefix.sh.cmake",
"chars": 819,
"preview": "export PATH=@KDE_INSTALL_FULL_BINDIR@:$PATH\n\n# LD_LIBRARY_PATH only needed if you are building without rpath\n# export LD..."
},
{
"path": "kde-modules/prefix.sh.fish.cmake",
"chars": 918,
"preview": "# SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de>\n# SPDX-License-Identifier: BSD-3-Clause\n\nset P..."
},
{
"path": "metainfo.yaml",
"chars": 283,
"preview": "description: Extra CMake modules\ntier: 1\ntype: functional\nplatforms:\n - name: Linux\n - name: FreeBSD\n - name: W..."
},
{
"path": "modules/CheckAtomic.cmake",
"chars": 3299,
"preview": "# SPDX-FileCopyrightText: 2003-2018 University of Illinois at Urbana-Champaign.\n#\n# SPDX-License-Identifier: BSD-3-Claus..."
},
{
"path": "modules/ECMAddAndroidApk.cmake",
"chars": 9363,
"preview": "# SPDX-FileCopyrightText: 2018-2023 Aleix Pol <aleixpol@kde.org>\n# SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@k..."
},
{
"path": "modules/ECMAddAppIcon.cmake",
"chars": 17542,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2014 Ralf Habacker <ralf.haback..."
},
{
"path": "modules/ECMAddQch.cmake",
"chars": 34627,
"preview": "# SPDX-FileCopyrightText: 2016-2017 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Claus..."
},
{
"path": "modules/ECMAddQtDesignerPlugin.cmake",
"chars": 23048,
"preview": "# SPDX-FileCopyrightText: 2019 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[..."
},
{
"path": "modules/ECMAddTests.cmake",
"chars": 18397,
"preview": "# SPDX-FileCopyrightText: 2013 Alexander Richardson <arichardson.kde@gmail.com>\n# SPDX-FileCopyrightText: 2015 Alex Merr..."
},
{
"path": "modules/ECMCheckOutboundLicense.cmake",
"chars": 6616,
"preview": "# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandwehr@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#..."
},
{
"path": "modules/ECMConfiguredInstall.cmake",
"chars": 2490,
"preview": "# SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[===..."
},
{
"path": "modules/ECMCoverageOption.cmake",
"chars": 1094,
"preview": "# SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[======..."
},
{
"path": "modules/ECMCreateQmFromPoFiles.cmake",
"chars": 8968,
"preview": "# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[==========..."
},
{
"path": "modules/ECMDeprecationSettings.cmake",
"chars": 5801,
"preview": "# SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[=..."
},
{
"path": "modules/ECMEnableSanitizers.cmake",
"chars": 6693,
"preview": "# SPDX-FileCopyrightText: 2014 Mathieu Tarral <mathieu.tarral@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[==..."
},
{
"path": "modules/ECMFeatureSummary.cmake",
"chars": 1023,
"preview": "# SPDX-FileCopyrightText: 2023 David Faure <faure@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[================..."
},
{
"path": "modules/ECMFindModuleHelpers.cmake",
"chars": 12270,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[============..."
},
{
"path": "modules/ECMFindQmlModule.cmake",
"chars": 2422,
"preview": "# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@blue-systems.com>\n# SPDX-FileCopyrightText: 2023 Alexander L..."
},
{
"path": "modules/ECMFindQmlModule.cmake.in",
"chars": 3646,
"preview": "#=============================================================================\n# SPDX-FileCopyrightText: 2015 Aleix Pol..."
},
{
"path": "modules/ECMGenerateDBusServiceFile.cmake",
"chars": 3571,
"preview": "# SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <kde@broulik.de>\n# SPDX-FileCopyrightText: 2020 Henri Chain <henri.chain@..."
},
{
"path": "modules/ECMGenerateExportHeader.cmake",
"chars": 36562,
"preview": "# SPDX-FileCopyrightText: 2019 Friedrich W. H. Kossebau <kossebau@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[..."
},
{
"path": "modules/ECMGenerateHeaders.cmake",
"chars": 12837,
"preview": "# SPDX-FileCopyrightText: 2013 Aleix Pol Gonzalez <aleixpol@blue-systems.com>\n# SPDX-FileCopyrightText: 2014 Alex Merry..."
},
{
"path": "modules/ECMGeneratePkgConfigFile.cmake",
"chars": 11054,
"preview": "# SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@kde.org>\n# SPDX-FileCopyrightText: 2014 David Faure <faure@k..."
},
{
"path": "modules/ECMGeneratePriFile.cmake",
"chars": 10987,
"preview": "# SPDX-FileCopyrightText: 2014 David Faure <faure@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[================..."
},
{
"path": "modules/ECMGeneratePythonBindings.cmake",
"chars": 9426,
"preview": "# SPDX-FileCopyrightText: 2023 The Qt Company Ltd.\n# SPDX-FileCopyrightText: 2024 Manuel Alcaraz Zambrano <manuelalcaraz..."
},
{
"path": "modules/ECMGeneratePythonBindings.toml.in",
"chars": 768,
"preview": "[project]\nname = \"${PB_PACKAGE_NAME}\"\nversion = \"${PB_VERSION}\"\nauthors = [\n { name=\"${PB_AUTHOR}\" },\n]\ndescription =..."
},
{
"path": "modules/ECMGeneratePythonBindings.toml.in.license",
"chars": 114,
"preview": "SPDX-FileCopyrightText: 2024 Manuel Alcaraz Zambrano <manuelalcarazzam@gmail.com>\nSPDX-License-Identifier: CC0-1.0"
},
{
"path": "modules/ECMGenerateQDoc.cmake",
"chars": 7931,
"preview": "# SPDX-FileCopyrightText: 2025 Nicolas Fella <nicolas.fella@gmx.de>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[=======..."
},
{
"path": "modules/ECMGenerateQmlTypes.cmake",
"chars": 2524,
"preview": "# SPDX-FileCopyrightText: 2017 Aleix Pol Gonzalez <aleixpol@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[======..."
},
{
"path": "modules/ECMInstallIcons.cmake",
"chars": 11309,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2013 David Edmundson <kde@david..."
},
{
"path": "modules/ECMMarkAsTest.cmake",
"chars": 1210,
"preview": "# SPDX-FileCopyrightText: 2012 Stephen Kelly <steveire@gmail.com>\n# SPDX-FileCopyrightText: 2012 Alex Neundorf <neundorf..."
},
{
"path": "modules/ECMMarkNonGuiExecutable.cmake",
"chars": 984,
"preview": "# SPDX-FileCopyrightText: 2012 Stephen Kelly <steveire@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[=========..."
},
{
"path": "modules/ECMOptionalAddSubdirectory.cmake",
"chars": 1777,
"preview": "# SPDX-FileCopyrightText: 2007 Alexander Neundorf <neundorf@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[======..."
}
]
// ... and 316 more files (download for full content)
About this extraction
This page contains the full source code of the KDE/extra-cmake-modules GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 560 files (967.9 KB), approximately 269.0k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.