summaryrefslogtreecommitdiffstats
path: root/conanfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'conanfile.py')
-rw-r--r--conanfile.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/conanfile.py b/conanfile.py
new file mode 100644
index 000000000..137285c08
--- /dev/null
+++ b/conanfile.py
@@ -0,0 +1,89 @@
+# Copyright (C) 2021 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+from conans import ConanFile
+import re
+from pathlib import Path
+from typing import Dict, Any
+
+_qtwebengine_features = [
+ "qtpdf-build",
+ "qtpdf-quick-build",
+ "qtpdf-widgets-build",
+ "qtwebengine-build",
+ "qtwebengine-core-build",
+ "qtwebengine-quick-build",
+ "qtwebengine-widgets-build",
+ "webengine-developer-build",
+ "webengine-embedded-build",
+ "webengine-extensions",
+ "webengine-full-debug-info",
+ "webengine-jumbo-build",
+ "webengine-kerberos",
+ "webengine-native-spellchecker",
+ "webengine-pepper-plugins",
+ "webengine-printing-and-pdf",
+ "webengine-proprietary-codecs",
+ "webengine-sanitizer",
+ "webengine-spellchecker",
+ "webengine-webchannel",
+ "webengine-webrtc",
+ "webengine-webrtc-pipewire",
+ "system-webengine-ffmpeg",
+ "system-webengine-icu",
+]
+
+
+def _parse_qt_version_by_key(key: str) -> str:
+ with open(Path(__file__).parent.resolve() / ".cmake.conf") as f:
+ m = re.search(fr'{key} .*"(.*)"', f.read())
+ return m.group(1) if m else ""
+
+
+def _get_qt_minor_version() -> str:
+ return ".".join(_parse_qt_version_by_key("QT_REPO_MODULE_VERSION").split(".")[:2])
+
+
+class QtWebEngine(ConanFile):
+ name = "qtwebengine"
+ license = "LGPL-3.0-only, Commercial Qt License Agreement"
+ author = "The Qt Company <https://www.qt.io/contact-us>"
+ url = "https://code.qt.io/cgit/qt/qtwebengine.git"
+ description = (
+ "Qt WebEngine integrates Chromium's fast moving web capabilities into Qt. "
+ "The integration with Qt focuses on an API that is easy to use, yet extensible. "
+ "We also make no compromise on the graphics integration, integrating the layer "
+ "rendering of Chromium directly into the OpenGL scene graph of Qt Quick."
+ )
+ topics = "qt", "qt6", "qtwebengine", "WebEngine", "Chromium"
+ settings = "os", "compiler", "arch", "build_type"
+ # for referencing the version number and prerelease tag and dependencies info
+ exports = ".cmake.conf", "dependencies.yaml"
+ exports_sources = "*", "!conan*.*"
+ python_requires = f"qt-conan-common/{_get_qt_minor_version()}@qt/everywhere"
+ python_requires_extend = "qt-conan-common.QtLeafModule"
+
+ def get_qt_leaf_module_options(self) -> Dict[str, Any]:
+ """Implements abstractmethod from qt-conan-common.QtLeafModule"""
+ return self._shared.convert_qt_features_to_conan_options(_qtwebengine_features)
+
+ def get_qt_leaf_module_default_options(self) -> Dict[str, Any]:
+ """Implements abstractmethod from qt-conan-common.QtLeafModule"""
+ return self._shared.convert_qt_features_to_default_conan_options(_qtwebengine_features)
+
+ def package_env_info(self) -> Dict[str, Any]:
+ """Implements abstractmethod from qt-conan-common.QtLeafModule"""
+ # this will be called only after a successful build
+ _f = lambda p: True
+ if tools.os_info.is_windows:
+ ptrn = "**/QtWebEngineProcess.exe"
+ elif tools.os_info.is_macos:
+ ptrn = "**/QtWebEngineProcess.app/**/QtWebEngineProcess"
+ _f = lambda p: not any(".dSYM" in item for item in p.parts)
+ else:
+ ptrn = "**/QtWebEngineProcess"
+ ret = [str(p) for p in Path(self.package_folder).rglob(ptrn) if p.is_file() and _f(p)]
+ if len(ret) != 1:
+ print("Expected to find one 'QtWebEngineProcess'. Found: {0}".format(ret))
+ return {"QTWEBENGINEPROCESS_PATH": ret.pop() if ret else ""}
+