diff options
Diffstat (limited to 'BuildTools/SCons/Tools/WindowsBundle.py')
| -rw-r--r-- | BuildTools/SCons/Tools/WindowsBundle.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/BuildTools/SCons/Tools/WindowsBundle.py b/BuildTools/SCons/Tools/WindowsBundle.py index 20d41ff..4d73fa3 100644 --- a/BuildTools/SCons/Tools/WindowsBundle.py +++ b/BuildTools/SCons/Tools/WindowsBundle.py @@ -31,11 +31,11 @@ def generate(env) : if p: stdout, stderr = p.communicate() mappings = [] - p = re.compile(ur'"([^\"]*)" "([^\"]*)"') + p = re.compile(r'"([^\"]*)" "([^\"]*)"') matches = re.findall(p, stdout) for match in matches: mappings.append(match) return mappings @@ -81,12 +81,25 @@ def generate(env) : all_files += env.Install(os.path.join(bundle, dir), resource) qtmappings = captureWinDeployQtMapping() assert(qtmappings) + # Add QtWebKit dependencies. + # This is needed as QtWebKit since 5.6 is developed and released seperately + # of Qt and windeployqt does not know about its dependencies anymore. + for map_from, map_to in qtmappings: + if map_to == "Qt5WebKit.dll": + # hidden Qt5WebKit dependencies + hidden_dependencies = ["libxml2.dll", "libxslt.dll"] + for dependency in hidden_dependencies: + dependency_from_path = os.path.join(env["QTDIR"], "bin", dependency) + if os.path.isfile(dependency_from_path): + qtmappings.append((dependency_from_path, dependency)) + break + # handle core DLLs - qt_corelib_regex = re.compile(ur".*bin.*\\(.*)\.dll") + qt_corelib_regex = re.compile(r".*bin.*\\(.*)\.dll") for qtlib in qtlibs: if qtlib.startswith("Qt5"): (src_path, target_path) = next(((src_path, target_path) for (src_path, target_path) in qtmappings if qt_corelib_regex.match(src_path) and qt_corelib_regex.match(src_path).group(1) == qtlib), (None, None)) if src_path != None: @@ -96,11 +109,11 @@ def generate(env) : for (src_path, target_path) in qtmappings: if qt_corelib_regex.match(src_path) and not qt_corelib_regex.match(src_path).group(1).startswith("Qt5"): all_files += env.Install(bundle, src_path) # handle plugins - qt_plugin_regex = re.compile(ur".*plugins.*\\(.*)\\(.*)\.dll") + qt_plugin_regex = re.compile(r".*plugins.*\\(.*)\\(.*)\.dll") for (src_path, target_path) in qtmappings: if qt_plugin_regex.match(src_path): plugin_folder, filename = qt_plugin_regex.match(src_path).groups() try: if plugin_folder in ["audio"] or filename[1:] in qtplugins[plugin_folder]: @@ -117,6 +130,5 @@ def generate(env) : env.AddMethod(createWindowsBundle, "WindowsBundle") def exists(env) : return env["PLATFORM"] == "win32" - |
Swift