From e6bb5d3397bb34d409d2a37c3927aa6fd8a81e0f Mon Sep 17 00:00:00 2001 From: Walid Boussaffa Date: Thu, 15 Oct 2020 20:12:39 +0100 Subject: [PATCH] added recipe for extra-cmake-modules 5.75.0 --- recipes/extra-cmake-modules/all/conandata.yml | 4 ++ recipes/extra-cmake-modules/all/conanfile.py | 56 +++++++++++++++++++ .../all/test_package/CMakeLists.txt | 21 +++++++ .../all/test_package/conanfile.py | 17 ++++++ .../all/test_package/example.cpp | 6 ++ .../all/test_package/foo.h | 5 ++ recipes/extra-cmake-modules/config.yml | 3 + 7 files changed, 112 insertions(+) create mode 100644 recipes/extra-cmake-modules/all/conandata.yml create mode 100644 recipes/extra-cmake-modules/all/conanfile.py create mode 100644 recipes/extra-cmake-modules/all/test_package/CMakeLists.txt create mode 100644 recipes/extra-cmake-modules/all/test_package/conanfile.py create mode 100644 recipes/extra-cmake-modules/all/test_package/example.cpp create mode 100644 recipes/extra-cmake-modules/all/test_package/foo.h create mode 100644 recipes/extra-cmake-modules/config.yml diff --git a/recipes/extra-cmake-modules/all/conandata.yml b/recipes/extra-cmake-modules/all/conandata.yml new file mode 100644 index 0000000000000..5ab8bc8620648 --- /dev/null +++ b/recipes/extra-cmake-modules/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "5.75.0": + url: "https://download.kde.org/stable/frameworks/5.75/extra-cmake-modules-5.75.0.zip" + sha256: "dc937fd2018eb8285c1b07d4b5de104c60959404c4979883f6bdb0a4d40cf98e" diff --git a/recipes/extra-cmake-modules/all/conanfile.py b/recipes/extra-cmake-modules/all/conanfile.py new file mode 100644 index 0000000000000..260ac51ba3a9a --- /dev/null +++ b/recipes/extra-cmake-modules/all/conanfile.py @@ -0,0 +1,56 @@ +import os +from conans import ConanFile, CMake, tools + +class ExtracmakemodulesConan(ConanFile): + name = "extra-cmake-modules" + license = ("MIT", "BSD-2-Clause", "BSD-3-Clause") + url = "https://github.com/conan-io/conan-center-index" + homepage = "https://api.kde.org/ecm/" + topics = ("conan", "cmake", "toolchain", "build-settings") + description = "KDE's CMake modules" + generators = "cmake" + no_copy_source = False + + _cmake = None + + @property + def _source_subfolder(self): + return "source_subfolder" + + def source(self): + tools.get(**self.conan_data["sources"][self.version]) + os.rename("extra-cmake-modules-{}".format(self.version), self._source_subfolder) + + def _configure_cmake(self): + if self._cmake: + return self._cmake + + # KB-H016: do not install Find*.cmake + tools.replace_path_in_file(os.path.join(self._source_subfolder, "CMakeLists.txt"), + "install(FILES ${installFindModuleFiles} DESTINATION ${FIND_MODULES_INSTALL_DIR})", "") + + self._cmake = CMake(self) + self._cmake.definitions["BUILD_HTML_DOCS"] = False + self._cmake.definitions["BUILD_QTHELP_DOCS"] = False + self._cmake.definitions["BUILD_MAN_DOCS"] = False + self._cmake.definitions["SHARE_INSTALL_DIR"] = os.path.join(self.package_folder, "res") + self._cmake.configure(source_folder=os.path.join(self.source_folder, self._source_subfolder)) + return self._cmake + + def build(self): + cmake = self._configure_cmake() + cmake.build() + + def package(self): + cmake = self._configure_cmake() + cmake.install() + self.copy("testhelper.h", src=os.path.join(self.source_folder, self._source_subfolder, "tests/ECMAddTests"), dst="res/tests") + self.copy("*", src=os.path.join(self.source_folder, self._source_subfolder, "LICENSES"), dst="licenses") + + def package_info(self): + self.cpp_info.resdirs = ["res"] + self.cpp_info.builddirs = ["res/ECM/cmake", "res/ECM/kde-modules", "res/ECM/modules", "res/ECM/test-modules", "res/ECM/toolchain"] + + def package_id(self): + self.info.header_only() + diff --git a/recipes/extra-cmake-modules/all/test_package/CMakeLists.txt b/recipes/extra-cmake-modules/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..96f9cb73534c7 --- /dev/null +++ b/recipes/extra-cmake-modules/all/test_package/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.1) +project(test_package CXX) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup(TARGETS) + + +find_package(ECM REQUIRED NO_MODULE) +list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) +include(ECMGenerateHeaders) + +add_library(MyLib INTERFACE) +target_include_directories(MyLib INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") +ecm_generate_headers( + MyLib_FORWARDING_HEADERS + HEADER_NAMES Foo + REQUIRED_HEADERS MyLib_HEADERS +) + +add_executable(example example.cpp) +target_link_libraries(example MyLib) diff --git a/recipes/extra-cmake-modules/all/test_package/conanfile.py b/recipes/extra-cmake-modules/all/test_package/conanfile.py new file mode 100644 index 0000000000000..1ffe0933a5715 --- /dev/null +++ b/recipes/extra-cmake-modules/all/test_package/conanfile.py @@ -0,0 +1,17 @@ +from conans import ConanFile, CMake, tools +import os + +class ExtraCMakeModulesTestConan(ConanFile): + settings = "os", "compiler", "arch", "build_type" + generators = "cmake" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if not tools.cross_building(self): + bin_path = os.path.join("bin", "example") + self.run(bin_path, run_environment=True) + diff --git a/recipes/extra-cmake-modules/all/test_package/example.cpp b/recipes/extra-cmake-modules/all/test_package/example.cpp new file mode 100644 index 0000000000000..e187901537727 --- /dev/null +++ b/recipes/extra-cmake-modules/all/test_package/example.cpp @@ -0,0 +1,6 @@ +#include // This header should be created by ECM + +int main() +{ + return success(); +} diff --git a/recipes/extra-cmake-modules/all/test_package/foo.h b/recipes/extra-cmake-modules/all/test_package/foo.h new file mode 100644 index 0000000000000..601218dcdca80 --- /dev/null +++ b/recipes/extra-cmake-modules/all/test_package/foo.h @@ -0,0 +1,5 @@ +int success() +{ + return 0; +} + diff --git a/recipes/extra-cmake-modules/config.yml b/recipes/extra-cmake-modules/config.yml new file mode 100644 index 0000000000000..fa51eae71f324 --- /dev/null +++ b/recipes/extra-cmake-modules/config.yml @@ -0,0 +1,3 @@ +versions: + "5.75.0": + folder: "all"