summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/mac/default_post.prf
blob: b459389c72069986504430388f61707481b1c9b0 (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
67
68
69
70
71
72
73
74
75
76
77
78
79
load(default_post)
!no_objective_c:CONFIG += objective_c

qt:!isEmpty(QT_CONFIG) {
    # Pick a suitable default architecture for qmake-based applications.
    # If the Qt package contains one of x86 and x86_64, pick that one. If it
    # contains both then use the compiler default. Make a similar decision for
    # PowerPC-based systems. Note that this logic assumes that Qt has been
    # configured with an architecture that is usable on the system.
    contains(QMAKE_HOST.arch, ppc)|contains(QMAKE_HOST.arch, "Power Macintosh") {
        !contains(QT_CONFIG, ppc64):contains(QT_CONFIG, ppc):CONFIG += ppc
        contains(QT_CONFIG, ppc64):!contains(QT_CONFIG, ppc):CONFIG += ppc64
    } else {
        !contains(QT_CONFIG, x86_64):contains(QT_CONFIG, x86):CONFIG += x86
        contains(QT_CONFIG, x86_64):!contains(QT_CONFIG, x86):CONFIG += x86_64
    }

    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)