summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rwxr-xr-xutil/cmake/configurejson2cmake.py4
-rw-r--r--util/cmake/helper.py47
-rwxr-xr-xutil/cmake/pro2cmake.py13
3 files changed, 57 insertions, 7 deletions
diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py
index b98aece55b..5a77c36b4e 100755
--- a/util/cmake/configurejson2cmake.py
+++ b/util/cmake/configurejson2cmake.py
@@ -40,6 +40,7 @@ from helper import (
map_platform,
find_3rd_party_library_mapping,
generate_find_package_info,
+ get_compile_test_dependent_library_mapping,
)
knownTests = set() # type: Set[str]
@@ -700,7 +701,8 @@ def write_compile_test(
if len(library) == 0:
continue
- library_usage = get_library_usage_for_compile_test(library)
+ adjusted_library = get_compile_test_dependent_library_mapping(name, library)
+ library_usage = get_library_usage_for_compile_test(adjusted_library)
if "fixme" in library_usage:
qmakeFixme += library_usage["fixme"]
continue
diff --git a/util/cmake/helper.py b/util/cmake/helper.py
index 56bf864adb..aae67555f6 100644
--- a/util/cmake/helper.py
+++ b/util/cmake/helper.py
@@ -44,6 +44,7 @@ class LibraryMapping:
is_bundled_with_qt: bool = False,
test_library_overwrite: str = "",
run_library_test: bool = False,
+ no_link_so_name: str = "",
) -> None:
self.soName = soName
self.packageName = packageName
@@ -66,6 +67,9 @@ class LibraryMapping:
# Run the library compile test of configure.json
self.run_library_test = run_library_test
+ # The custom nolink library mapping associated with this one.
+ self.no_link_so_name = no_link_so_name
+
def is_qt(self) -> bool:
return self.packageName == "Qt" or self.packageName == "Qt5" or self.packageName == "Qt6"
@@ -447,20 +451,21 @@ _library_map = [
LibraryMapping("opengl", "OpenGL", "OpenGL::GL", resultVariable="OpenGL_OpenGL"),
LibraryMapping(
"openssl_headers",
- "OpenSSL",
- "OpenSSL::SSL_nolink",
+ "WrapOpenSSLHeaders",
+ "WrapOpenSSLHeaders::WrapOpenSSLHeaders",
resultVariable="TEST_openssl_headers",
appendFoundSuffix=False,
- test_library_overwrite="OpenSSL::SSL",
+ test_library_overwrite="WrapOpenSSLHeaders::WrapOpenSSLHeaders",
run_library_test=True,
),
LibraryMapping(
"openssl",
- "OpenSSL",
- "OpenSSL::SSL",
+ "WrapOpenSSL",
+ "WrapOpenSSL::WrapOpenSSL",
resultVariable="TEST_openssl",
appendFoundSuffix=False,
run_library_test=True,
+ no_link_so_name="openssl_headers",
),
LibraryMapping("oci", "Oracle", "Oracle::OCI"),
LibraryMapping(
@@ -698,24 +703,56 @@ def map_platform(platform: str) -> str:
def is_known_3rd_party_library(lib: str) -> bool:
+ handling_no_link = False
if lib.endswith("/nolink") or lib.endswith("_nolink"):
lib = lib[:-7]
+ handling_no_link = True
mapping = find_3rd_party_library_mapping(lib)
+ if handling_no_link and mapping and mapping.no_link_so_name:
+ no_link_mapping = find_3rd_party_library_mapping(mapping.no_link_so_name)
+ if no_link_mapping:
+ mapping = no_link_mapping
return mapping is not None
def map_3rd_party_library(lib: str) -> str:
+ handling_no_link = False
libpostfix = ""
if lib.endswith("/nolink"):
lib = lib[:-7]
libpostfix = "_nolink"
+ handling_no_link = True
+
mapping = find_3rd_party_library_mapping(lib)
+
+ if handling_no_link and mapping and mapping.no_link_so_name:
+ no_link_mapping = find_3rd_party_library_mapping(mapping.no_link_so_name)
+ if no_link_mapping:
+ mapping = no_link_mapping
+ libpostfix = ""
+
if not mapping or not mapping.targetName:
return lib
+
return mapping.targetName + libpostfix
+compile_test_dependent_library_mapping = {
+ "dtls": {"openssl": "openssl_headers"},
+ "ocsp": {"openssl": "openssl_headers"},
+}
+
+
+def get_compile_test_dependent_library_mapping(compile_test_name: str, dependency_name: str):
+ if compile_test_name in compile_test_dependent_library_mapping:
+ mapping = compile_test_dependent_library_mapping[compile_test_name]
+ if dependency_name in mapping:
+ return mapping[dependency_name]
+
+ return dependency_name
+
+
def generate_find_package_info(
lib: LibraryMapping,
use_qt_find_package: bool = True,
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py
index ae46277293..87e2593d00 100755
--- a/util/cmake/pro2cmake.py
+++ b/util/cmake/pro2cmake.py
@@ -1285,7 +1285,18 @@ class Scope(object):
else:
return [f"${{CMAKE_CURRENT_BINARY_DIR}}/{relative_path}"]
- return self._evalOps(key, None, [], inherit=inherit)
+ # Horrible hack. If we're returning the values for some key
+ # that looks like source or header files, make sure to use a
+ # map_files transformer, so that $$PWD values are evaluated
+ # in the transformer scope, otherwise relative paths will be
+ # broken.
+ # Looking at you qmltyperegistrar.pro.
+ eval_ops_transformer = None
+ if key.endswith("SOURCES") or key.endswith("HEADERS"):
+ def file_transformer(scope, files):
+ return scope._map_files(files)
+ eval_ops_transformer = file_transformer
+ return self._evalOps(key, eval_ops_transformer, [], inherit=inherit)
def get_string(self, key: str, default: str = "", inherit: bool = False) -> str:
v = self.get(key, inherit=inherit)