diff --git a/mkspecs/features/resolve_target.prf b/mkspecs/features/resolve_target.prf
index d6460c1d9d256d354d2c17c2a929bb3c81d4958e..5c3a46e117e65b2957525b65202e52e624b6043e 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}
             }