summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/src.pro42
-rw-r--r--tools/qmake/config.tests/libcap/libcap.cpp44
-rw-r--r--tools/qmake/config.tests/libcap/libcap.pro3
-rw-r--r--tools/qmake/mkspecs/features/configure.prf23
-rw-r--r--tools/qmake/mkspecs/features/default_post.prf8
-rw-r--r--tools/qmake/mkspecs/features/default_pre.prf7
-rw-r--r--tools/qmake/mkspecs/features/functions.prf20
7 files changed, 118 insertions, 29 deletions
diff --git a/src/src.pro b/src/src.pro
index 60f873c76..ed402c582 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -1,30 +1,26 @@
TEMPLATE = subdirs
-isPlatformSupported() {
- process.depends = core
- webengine.depends = core
- webenginewidgets.depends = core webengine
- webengine_plugin.subdir = webengine/plugin
- webengine_plugin.target = sub-webengine-plugin
- webengine_plugin.depends = webengine
- webengine_experimental_plugin.subdir = webengine/plugin/experimental
- webengine_experimental_plugin.target = sub-webengine-experimental-plugin
- webengine_experimental_plugin.depends = webengine
+process.depends = core
+webengine.depends = core
+webenginewidgets.depends = core webengine
+webengine_plugin.subdir = webengine/plugin
+webengine_plugin.target = sub-webengine-plugin
+webengine_plugin.depends = webengine
+webengine_experimental_plugin.subdir = webengine/plugin/experimental
+webengine_experimental_plugin.target = sub-webengine-experimental-plugin
+webengine_experimental_plugin.depends = webengine
- SUBDIRS += core \
- process \
- webengine \
- webengine_plugin \
- webengine_experimental_plugin
+SUBDIRS += core \
+ process \
+ webengine \
+ webengine_plugin \
+ webengine_experimental_plugin
- # FIXME: We probably want a bit more control over config options to tweak what to build/ship or not.
- # Another example of where this could be necessary is to make it easy to build proprietery codecs support.
- !contains(WEBENGINE_CONFIG, no_ui_delegates): SUBDIRS += webengine/ui
+# FIXME: We probably want a bit more control over config options to tweak what to build/ship or not.
+# Another example of where this could be necessary is to make it easy to build proprietery codecs support.
+!contains(WEBENGINE_CONFIG, no_ui_delegates): SUBDIRS += webengine/ui
- qtHaveModule(widgets) {
- SUBDIRS += webenginewidgets
- }
-} else {
- warning("QtWebEngine is not maintained for this platform/configuration and is therefore disabled.")
+qtHaveModule(widgets) {
+ SUBDIRS += webenginewidgets
}
diff --git a/tools/qmake/config.tests/libcap/libcap.cpp b/tools/qmake/config.tests/libcap/libcap.cpp
new file mode 100644
index 000000000..c0bba3eae
--- /dev/null
+++ b/tools/qmake/config.tests/libcap/libcap.cpp
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtWebEngine module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <sys/capability.h>
+
+int main(int, char **)
+{
+ cap_t cap = cap_get_proc();
+ const char *text = cap_to_text(cap, 0);
+ return 0;
+}
diff --git a/tools/qmake/config.tests/libcap/libcap.pro b/tools/qmake/config.tests/libcap/libcap.pro
new file mode 100644
index 000000000..2c688f809
--- /dev/null
+++ b/tools/qmake/config.tests/libcap/libcap.pro
@@ -0,0 +1,3 @@
+linux: SOURCES += libcap.cpp
+LIBS += -lcap
+CONFIG -= qt
diff --git a/tools/qmake/mkspecs/features/configure.prf b/tools/qmake/mkspecs/features/configure.prf
new file mode 100644
index 000000000..d0cb50877
--- /dev/null
+++ b/tools/qmake/mkspecs/features/configure.prf
@@ -0,0 +1,23 @@
+# Load configure.prf from qtbase first
+load(configure)
+load(functions)
+
+defineTest(runConfigure) {
+ webengine_successfully_configured: return(true)
+ # 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)
+ }
+ # libcap-dev package doesn't ship .pc files on Ubuntu.
+ linux:!config_libcap:skipBuild("libcap appears to be missing")
+
+ isEmpty(skipBuildReason):cache(CONFIG, add, $$list(webengine_successfully_configured))
+}
+
diff --git a/tools/qmake/mkspecs/features/default_post.prf b/tools/qmake/mkspecs/features/default_post.prf
new file mode 100644
index 000000000..d09ba05fd
--- /dev/null
+++ b/tools/qmake/mkspecs/features/default_post.prf
@@ -0,0 +1,8 @@
+load(default_post)
+
+!isEmpty(skipBuildReason) {
+ SUBDIRS =
+ export(SUBDIRS)
+ log($${skipBuildReason}$${EOL})
+ log(QtWebEngine will not be built.$${EOL})
+}
diff --git a/tools/qmake/mkspecs/features/default_pre.prf b/tools/qmake/mkspecs/features/default_pre.prf
index aeb7c0b3b..02f4f24d4 100644
--- a/tools/qmake/mkspecs/features/default_pre.prf
+++ b/tools/qmake/mkspecs/features/default_pre.prf
@@ -9,8 +9,15 @@ QTWEBENGINEPROCESS_NAME = QtWebEngineProcess
# Location of sync.profile
MODULE_BASE_DIR = $$QTWEBENGINE_ROOT
+EOL = $$escape_expand(\\n)
load(functions)
+# Check platform support and run config tests early enough to bail
+equals(_PRO_FILE_, "$$QTWEBENGINE_ROOT/qtwebengine.pro"): isPlatformSupported() {
+ load(configure)
+ runConfigure()
+}
+
# Call the original default_pre.
load(default_pre)
diff --git a/tools/qmake/mkspecs/features/functions.prf b/tools/qmake/mkspecs/features/functions.prf
index acf15a811..4c2547d57 100644
--- a/tools/qmake/mkspecs/features/functions.prf
+++ b/tools/qmake/mkspecs/features/functions.prf
@@ -1,16 +1,19 @@
defineTest(isPlatformSupported) {
- static: return(false)
+ static {
+ skipBuild("Static builds of QtWebEngine aren't supported.")
+ return(false)
+ }
osx:lessThan(QMAKE_XCODE_VERSION, 5.1) {
- warning("Using xcode version $$QMAKE_XCODE_VERSION, but at least version 5.1 is required to build Qt WebEngine.")
+ skipBuild("Using xcode version $$QMAKE_XCODE_VERSION, but at least version 5.1 is required to build Qt WebEngine.")
return(false)
}
- linux-g++*:!isGCCVersionSupported():return(false)
+ linux-g++*:!isGCCVersionSupported(): return(false)
!isPythonVersionSupported(): return(false)
linux-g++*|win32-msvc2013|macx-clang: return(true)
boot2qt: return(true)
- warning("Qt WebEngine can currently only be built for Linux (GCC), Windows (MSVC 2013), OS X (XCode 5.1+) or Qt for Device Creation".)
+ skipBuild("Qt WebEngine can currently only be built for Linux (GCC), Windows (MSVC 2013), OS X (XCode 5.1+) or Qt for Device Creation.")
return(false)
}
@@ -18,7 +21,7 @@ defineTest(isPythonVersionSupported) {
python_major_version = $$system('python -c "import sys; print sys.version_info.major"')
python_minor_version = $$system('python -c "import sys; print sys.version_info.minor"')
greaterThan(python_major_version, 1): greaterThan(python_minor_version, 6): return(true)
- warning("Using Python version "$$python_major_version"."$$python_minor_version", but at least Python version 2.7 is required to build Qt WebEngine.")
+ skipBuild("Using Python version "$$python_major_version"."$$python_minor_version", but at least Python version 2.7 is required to build Qt WebEngine.")
return(false)
}
@@ -26,7 +29,7 @@ defineTest(isGCCVersionSupported) {
# The below will work for gcc 4.6 and up and also match gcc 5
greaterThan(QT_GCC_MINOR_VERSION, 5):return(true)
greaterThan(QT_GCC_MAJOR_VERSION, 4):return(true)
- warning("Using gcc version "$$QT_GCC_MAJOR_VERSION"."$$QT_GCC_MINOR_VERSION", but at least gcc version 4.6 is required to build Qt WebEngine.")
+ skipBuild("Using gcc version "$$QT_GCC_MAJOR_VERSION"."$$QT_GCC_MINOR_VERSION", but at least gcc version 4.6 is required to build Qt WebEngine.")
return(false)
}
@@ -140,3 +143,8 @@ defineReplace(findOrBuildNinja) {
}
return($$out)
}
+
+defineTest(skipBuild) {
+ skipBuildReason = "$$skipBuildReason $${EOL}$$1"
+ export(skipBuildReason)
+}