diff --git a/utils/deploy_tool/main.cpp b/utils/deploy_tool/main.cpp index f196b358..98dccabb 100644 --- a/utils/deploy_tool/main.cpp +++ b/utils/deploy_tool/main.cpp @@ -128,8 +128,9 @@ QtDep qt_deps[] = { int depth = 8; -bool fake = false, is_ldd = true, is_deps = false, need_qt = false; +bool fake = false, is_ldd = true, is_deps = false, need_qt = false, make_qt_format = true; PIString ldd, readelf, objdump, otool, dpkg, nametool, strip, out_dir, qt_dir, out_plugins_dir, dpkg_workdir; +PIString qt_pref, qt_suff; PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs, qt_add_libs; PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs; PIMap qt_filters; @@ -182,17 +183,22 @@ PIString execute(const PIString & cmd) { void checkQtLib(PIString lib) { - if (lib.startsWith("lib")) lib.cutLeft(3); - if (lib.startsWith("qt5")) lib.cutLeft(3); - if (lib.startsWith("qt")) lib.cutLeft(2); - if (lib.find(".")) lib = lib.left(lib.find(".")); - //piCout << "checkQt" << lib; + PIString pref, suff; + if (lib.startsWith("lib")) {pref += "lib"; lib.cutLeft(3);} + if (lib.startsWith("qt5")) {pref += "Qt5"; lib.cutLeft(3);} + if (lib.startsWith("qt" )) {pref += "Qt" ; lib.cutLeft(2);} + if (lib.find('.') >= 0) {suff = lib.right(lib.size_s() - lib.find('.')); lib = lib.left(lib.find('.'));} for (int i = 0; ; ++i) { if (qt_deps[i].lib.isEmpty()) break; if (qt_deps[i].lib == lib) { qt_plugins << qt_deps[i].plugins; //piCout << "add qt plugins" << qt_deps[i].plugins << "now" << qt_plugins; need_qt = true; + if (make_qt_format) { + make_qt_format = false; + qt_pref = pref; + qt_suff = suff; + } break; } } @@ -485,6 +491,7 @@ int main(int argc, char * argv[]) { cli.addArgument("Styles", true); cli.addArgument("Platforms", true); cli.addArgument("qt-plugins", PIChar('\0'), true); + cli.addArgument("qt-modules", PIChar('\0'), true); cli.addArgument("ldd", true); cli.addArgument("Lreadelf", true); cli.addArgument("Wobjdump", true); @@ -620,8 +627,15 @@ int main(int argc, char * argv[]) { } }); //piCout << files; - if (depth > 0) + if (depth > 0) { input_files.forEach([&](const PIString & f){procLdd(f);}); + qt_add_libs.forEach([&](const PIString & f){ + PIString l = findLib(qt_pref + f + qt_suff); + if (l.isEmpty()) return; + procLdd(l, true); + checkQtLib(f.toLowerCase()); + }); + } piForeach (PIString & s, add_libs) { if (s.isEmpty()) continue; PIString alib = findLib(s);