From 6c6b5ff8fb8dfdc9f9057e4d9db5f467131a3a04 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 25 Sep 2014 17:14:40 +0200 Subject: de-duplicate top-level bundle symlink creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit multiple QMAKE_BUNDLE_DATA entries can install into the same directory, but it obviously makes no sense to symlink that repeatedly. Change-Id: If65f7acdf4e158e33511917a027a380e642e2f28 Reviewed-by: Morten Johan Sørvig --- qmake/generators/unix/unixmake2.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'qmake/generators/unix/unixmake2.cpp') diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 1f7d1ecf3e..556036b692 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -703,6 +703,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) } if (!project->isEmpty("QMAKE_BUNDLE")) { + QHash symlinks; ProStringList &alldeps = project->values("ALL_DEPS"); QString bundle_dir = project->first("DESTDIR") + project->first("QMAKE_BUNDLE") + "/"; if (!project->first("QMAKE_PKGINFO").isEmpty()) { @@ -810,13 +811,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) if (!project->isEmpty(vkey)) { QString version = project->first(vkey) + "/" + project->first("QMAKE_FRAMEWORK_VERSION") + "/"; - QString link = Option::fixPathToLocalOS(path + project->first(pkey)); - bundledFiles << link; - alldeps << link; - t << link << ": \n\t" - << mkdir_p_asstring(path) << "\n\t" - << "@$(SYMLINK) " << project->first(vkey) + "/Current/" << project->first(pkey) - << " " << path << endl; + symlinks[Option::fixPathToLocalOS(path + project->first(pkey))] = + project->first(vkey) + "/Current/" + project->first(pkey); path += version; } path += project->first(pkey).toQString(); @@ -842,6 +838,15 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) } } } + QHash::ConstIterator symIt = symlinks.constBegin(), + symEnd = symlinks.constEnd(); + for (; symIt != symEnd; ++symIt) { + bundledFiles << symIt.key(); + alldeps << symIt.key(); + t << symIt.key() << ":\n\t" + << mkdir_p_asstring(bundle_dir) << "\n\t" + << "@$(SYMLINK) " << symIt.value() << " " << bundle_dir << endl; + } } t << endl << "all: " << escapeDependencyPath(deps) -- cgit v1.2.3