summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/mac/default_post.prf
blob: 7100717b78fabe8c8fcbd2cb0f219b596ea5620e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
load(default_post)
!no_objective_c:CONFIG += objective_c

qt {
    contains(QT_CONFIG, static) {
        # C++11 support means using libc++ instead of libstd++. As the
        # two libraries are incompatible we need to ensure the end user
        # project is built using the same C++11 support/no support as Qt.
        contains(QT_CONFIG, c++11) {
            CONFIG += c++11
        } else: c++11 {
            warning("Qt was not built with C++11 enabled, disabling feature")
            CONFIG -= c++11
        }

        !c++11 {
            # Explicitly use libstdc++ if C++11 support is not enabled,
            # as otherwise the compiler will choose the standard library
            # based on the deployment target, which for iOS 7 and OS X 10.9
            # is libc++, and we can't mix and match the two.
            QMAKE_CXXFLAGS += -stdlib=libstdc++
            QMAKE_LFLAGS   += -stdlib=libstdc++
        }
    }
    # If Qt was built with shared libraries with rpath support and project does
    # not specify own rpaths (including empty list) add one pointing to Qt
    # libraries. This applies only to apps, since all loaded libraries inherit
    # rpaths from current process executable.
    else:!if(host_build:force_bootstrap):equals(TEMPLATE, app):!defined(QMAKE_RPATHDIR, var):contains(QT_CONFIG, rpath) {
        # If app is expected to be installed into the Qt prefix build, use
        # relative path, so all SDK tools and examples work when relocated.
        prefix_build:defined(target.path, var):\
            contains(target.path, "$$re_escape($$[QT_INSTALL_PREFIX])/.*"):\
            # Tests are an exception, since they are launched in their build not
            # install location by CI, so we cannot use relative rpaths there.
            !contains(target.path, "$$re_escape($$[QT_INSTALL_TESTS])/.*") {
            app_bundle {
                ios:  binpath = $$target.path/$${TARGET}.app
                else: binpath = $$target.path/$${TARGET}.app/Contents/MacOS
            } else {
                binpath = $$target.path
            }
            QMAKE_RPATHDIR = @loader_path/$$relative_path($$[QT_INSTALL_LIBS], $$binpath)
            unset(binpath)
        } else {
             # Otherwise, use absolute path to Qt libraries
             QMAKE_RPATHDIR = $$[QT_INSTALL_LIBS]
        }
    }
}

macx-xcode:!isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) {
    debug_information_format.name = DEBUG_INFORMATION_FORMAT
    debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT
    debug_information_format.build = debug
    QMAKE_MAC_XCODE_SETTINGS += debug_information_format
}

cache(QMAKE_XCODE_DEVELOPER_PATH, stash)
cache(QMAKE_XCODE_VERSION, stash)

QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix()

# Ensure that we process sdk.prf first, as it will update QMAKE_CXX
# and friends that other features/extra compilers may depend on.
sdk: load(sdk)