summaryrefslogtreecommitdiffstats
path: root/tools/qmake/mkspecs/features/configure.prf
blob: 597a6d9d38bf1f1d4b9c0a1090e3b5203c28b484 (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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Load configure.prf from qtbase first
load(configure)
load(functions)

defineTest(runConfigure) {
    webengine_successfully_configured: return(true)
    linux:contains(QT_CONFIG,no-pkg-config) {
        skipBuild("pkg-config is required")
        return(false)
    }
    # Ignore the cached config tests results in case they were not successful
    CONFIG += recheck
    #Override the config.tests path
    QMAKE_CONFIG_TESTS_DIR = $$QTWEBENGINE_ROOT/tools/qmake/config.tests
    CONFIG_TESTS = $$files($$QMAKE_CONFIG_TESTS_DIR/*.pro, true)
    log("Running configure tests$${EOL}")
    for(test, CONFIG_TESTS) {
        test = $$basename(test)
        test ~= s/\\.pro$//
        qtCompileTest($$test)
    }

    linux {
        !config_khr:skipBuild("khronos development headers appear to be missing (mesa/libegl1-mesa-dev)")

        REQUIRED_PACKAGES = dbus-1 fontconfig
        !cross_compile: qtConfig(xcb): REQUIRED_PACKAGES += libdrm xcomposite xcursor xi xrandr xscrnsaver xtst
        contains(QT_CONFIG, pulseaudio): REQUIRED_PACKAGES += libpulse
        qtConfig(system-png): REQUIRED_PACKAGES += libpng
        qtConfig(system-harfbuzz): REQUIRED_PACKAGES += harfbuzz
        !cross_compile: REQUIRED_PACKAGES += libpci

        for(package, $$list($$REQUIRED_PACKAGES)) {
            !packagesExist($$package):skipBuild("Unmet dependency: $$package")
        }
        packagesExist(minizip, zlib): WEBENGINE_CONFIG += use_system_minizip
        else: log("System zlib or minizip not found. Using Chromium's copies.$${EOL}")
        packagesExist(libwebp,libwebpdemux): WEBENGINE_CONFIG += use_system_libwebp
        else: log("System libwebp or libwebpdemux not found. Using Chromium's copies.$${EOL}")
        packagesExist(libxml-2.0,libxslt): WEBENGINE_CONFIG += use_system_libxslt
        else: log("System libxml2 or libxslt not found. Using Chromium's copies.$${EOL}")
        for(package, $$list("libevent jsoncpp opus protobuf")) {
            packagesExist($$package): WEBENGINE_CONFIG += use_system_$$package
            else: log("System $$package not found. Using Chromium's copy.$${EOL}")
        }
        use?(system_protobuf) {
            !system("which protoc > /dev/null") {
                log("Protobuf compiler not found. Using Chromium's copy of protobuf.$${EOL}")
                WEBENGINE_CONFIG -= use_system_protobuf
            }
        }
        config_libvpx: WEBENGINE_CONFIG += use_system_vpx
        else: log("Compatible system libvpx not found. Using Chromium's copy.$${EOL}")
        config_srtp: WEBENGINE_CONFIG += use_system_libsrtp
        else: log("System libsrtp not found. Using Chromium's copy.$${EOL}")
        config_snappy: WEBENGINE_CONFIG += use_system_snappy
        else: log("System snappy not found. Using Chromium's copy.$${EOL}")

        !cross_compile {
            packagesExist(nss): WEBENGINE_CONFIG += use_nss
            else: log("System NSS not found, BoringSSL will be used.$${EOL}")
        }
    }

    isEmpty(skipBuildReason): {
        cache(CONFIG, add, $$list(webengine_successfully_configured))
        !isEmpty(WEBENGINE_CONFIG) {
            cache(WEBENGINE_CONFIG, add, $$list($$WEBENGINE_CONFIG))
            export(WEBENGINE_CONFIG)
        }
    }
}

# This is called from default_post, at which point we've also parsed
# command line options
defineTest(finalizeConfigure) {
    linux {
        use?(nss) {
            log("Certificate handling.............. Using system NSS$${EOL}")
        } else {
            log("Certificate handling.............. Using bundled BoringSSL$${EOL}")
        }
        use?(system_icu) {
            packagesExist("icu-uc icu-i18n") {
                log("ICU............................... Using system version$${EOL}")
            } else {
                log("ICU............................... System ICU not found$${EOL}")
                skipBuild("Unmet dependencies: icu-uc, icu-i18n")
            }
        } else {
            log("ICU............................... Using internal copy (Default, force system ICU with WEBENGINE_CONFIG+=use_system_icu)$${EOL}")
        }
        use?(system_ffmpeg) {
            packagesExist("libavcodec libavformat libavutil") {
                packagesExist("libwebp, libwebpdemux, opus, \'vpx >= 1.4\'"){
                    log("FFMPEG............................ Using system version$${EOL}")
                } else {
                    log("FFMPEG............................ Conflicting FFMPEG dependencies$${EOL}")
                    skipBuild("Unmet dependencies: opus, vpx, libwebp, libwebpdemux")
                }
            } else {
                log("FFMPEG............................ System FFMPEG not found$${EOL}")
                skipBuild("Unmet dependencies: libavcodec, libavformat, libavutil")
            }
        } else {
            log("FFMPEG............................ Using internal copy (Default, force system FFMPEG with WEBENGINE_CONFIG+=use_system_ffmpeg)$${EOL}")
        }
    }
    use?(proprietary_codecs) {
        log("Proprietary codecs (H264, MP3).... Enabled$${EOL}")
    } else {
        log("Proprietary codecs (H264, MP3).... Not enabled         (Default, enable with WEBENGINE_CONFIG+=use_proprietary_codecs)$${EOL}")
    }
    qtHaveModule(positioning): {
        log("Geolocation....................... Enabled$${EOL}")
    } else {
        log("Geolocation....................... Not enabled         (Requires Qt Positioning module)$${EOL}")
    }
    osx {
        use?(appstore_compliant_code) {
            log("AppStore Compliant ............... Enabled$${EOL}")
        } else {
            log("AppStore Compliant ............... Not enabled         (Default, enable with WEBENGINE_CONFIG+=use_appstore_compliant_code)$${EOL}")
        }
        !isMinOSXSDKVersion(10, 10, 3) {
            log("Force Touch API usage ............ Not enabled         (Because the OS X SDK version to be used \"$${WEBENGINE_OSX_SDK_PRODUCT_VERSION}\" is lower than the required \"10.10.3\")$${EOL}")
        }
    }
}