summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-04-18 15:56:26 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-19 11:07:25 +0200
commita0aad0b1b2e2222472ea5030b47785d402ebfac6 (patch)
treec08a0a4a265e4da1b376fd10d15e7132643e3765
parent197aa9f67fadc7218c118dcafb4dc4154ce2502b (diff)
Add a functionality test for DirectFB to ensure it compiles.
Some versions of the DirectFB headers are unclean and will cause Qt compilation failures. So blacklist those versions. Version 1.5.3 (present in Fedora 16) is known to be buggy and gets disabled by this patch. The compile error was: qurlquery.h:169:5: error: ‘typeof’ was not declared in this scope (qplatformcursor_qpa.h includes qevent.h which includes qurl.h which includes that) The error comes from the Q_FOREACH expansion. Note that Q_FOREACH uses __typeof__, so it's supposed to be safe, unless someone ill-advised goes and defines the GCC "safe" macro (double underscores on both sides) to something else. Change-Id: Ida41ee3b3c2fcba86a7e12182e7055123166693b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-rw-r--r--config.tests/unix/directfb/directfb.cpp51
-rw-r--r--config.tests/unix/directfb/directfb.pro3
-rwxr-xr-xconfigure15
3 files changed, 67 insertions, 2 deletions
diff --git a/config.tests/unix/directfb/directfb.cpp b/config.tests/unix/directfb/directfb.cpp
new file mode 100644
index 0000000000..a5a0bd4760
--- /dev/null
+++ b/config.tests/unix/directfb/directfb.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Intel Corporation
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the config.tests of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 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 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <directfb.h>
+
+#ifdef __typeof__
+#error DirectFB headers are unclean and cannot compile
+#endif
+
+int main(int, char **)
+{
+ return 0;
+}
diff --git a/config.tests/unix/directfb/directfb.pro b/config.tests/unix/directfb/directfb.pro
new file mode 100644
index 0000000000..958ced7bea
--- /dev/null
+++ b/config.tests/unix/directfb/directfb.pro
@@ -0,0 +1,3 @@
+SOURCES = directfb.cpp
+CONFIG -= qt
+mac:CONFIG -= app_bundle
diff --git a/configure b/configure
index 5e08b43fab..42e0c3cdb2 100755
--- a/configure
+++ b/configure
@@ -4574,7 +4574,17 @@ if [ "$CFG_DIRECTFB" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists directfb 2>/dev/null; then
QMAKE_CFLAGS_DIRECTFB=`$PKG_CONFIG --cflags directfb 2>/dev/null`
QMAKE_LIBS_DIRECTFB=`$PKG_CONFIG --libs directfb 2>/dev/null`
- QT_CONFIG="$QT_CONFIG directfb"
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/directfb" "DirectFB" $L_FLAGS $I_FLAGS $l_FLAGS $QMAKE_CFLAGS_DIRECTFB $QMAKE_LIBS_DIRECTFB; then
+ CFG_DIRECTFB=yes
+ elif [ "$CFG_DIRECTFB" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo " DirectFB support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
+ CFG_DIRECTFB=no
+ fi
else
CFG_DIRECTFB=no
fi
@@ -4631,7 +4641,8 @@ if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
QMakeVar set QMAKE_DEFINES_XCB "$QMAKE_DEFINES_XCB"
fi
-if [ -n "$QMAKE_CFLAGS_DIRECTFB" ] || [ -n "$QMAKE_LIBS_DIRECTFB" ]; then
+if [ "$CFG_DIRECTFB" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG directfb"
QMakeVar set QMAKE_CFLAGS_DIRECTFB "$QMAKE_CFLAGS_DIRECTFB"
QMakeVar set QMAKE_LIBS_DIRECTFB "$QMAKE_LIBS_DIRECTFB"
fi