From 838fd4039e6ac48761cf1064d94b735902b014ac Mon Sep 17 00:00:00 2001
From: Jake Petroules <jake.petroules@theqtcompany.com>
Date: Wed, 6 Apr 2016 20:36:45 -0700
Subject: [PATCH] Fix bugs in accuracy of target path calculation in
 resolve_target.

Incidentally, this introduces QMAKE_RESOLVED_BUNDLE, which can be used
to determine the path of the bundle wrapper itself as well as the
executable target.

This is necessary for a subsequent patch adding support for
-separate-debug-info on Apple platforms.

Change-Id: Ia11430026b8e3f171e5db6677b190b8356832805
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
---
 mkspecs/features/resolve_target.prf | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/mkspecs/features/resolve_target.prf b/mkspecs/features/resolve_target.prf
index d6460c1d9d2..5c3a46e117e 100644
--- a/mkspecs/features/resolve_target.prf
+++ b/mkspecs/features/resolve_target.prf
@@ -33,7 +33,18 @@ win32 {
     mac {
         equals(TEMPLATE, lib) {
             lib_bundle {
-                QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}.framework/$${TARGET}
+                !isEmpty(QMAKE_FRAMEWORK_BUNDLE_NAME): \
+                    framework_target = $$QMAKE_FRAMEWORK_BUNDLE_NAME
+                else: \
+                    framework_target = $$TARGET
+                QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${framework_target}.framework
+                !shallow_bundle {
+                    TEMP_VERSION = $$section(VERSION, ., 0, 0)
+                    isEmpty(TEMP_VERSION):TEMP_VERSION = A
+                    QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Versions/$${TEMP_VERSION}/$${TARGET}
+                } else {
+                    QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET}
+                }
             } else {
                 QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${LIBPREFIX}$${TARGET}
                 !plugin {
@@ -46,7 +57,15 @@ win32 {
             }
         } else {
             app_bundle {
-                QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}.app/Contents/MacOS/$${TARGET}
+                !isEmpty(QMAKE_APPLICATION_BUNDLE_NAME): \
+                    app_target = $$QMAKE_APPLICATION_BUNDLE_NAME
+                else: \
+                    app_target = $$TARGET
+                QMAKE_RESOLVED_BUNDLE = $${QMAKE_RESOLVED_TARGET}$${app_target}.app
+                !shallow_bundle: \
+                    QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/Contents/MacOS/$${TARGET}
+                else: \
+                    QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_BUNDLE}/$${TARGET}
             } else {
                 QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}
             }
-- 
GitLab