summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-11-22 18:41:29 +0000
committerThomas McGuire <thomas.mcguire@kdab.com>2012-11-23 09:24:05 +0100
commit14a366111055d4651d960a7d5f051a1e04e63485 (patch)
tree3764014a88de5322406c2e58837e672d3c680307
parent09a0e56acb6a49a99fc1c0feaa2ab9344dcfd8c3 (diff)
Fix build on QNX.
* Not all C++ compilers inject C functions into global namespace, On QNX you need to use std:: when using functions from <cstdlib> for example. * Disable a few modules that don't compile. * QNX linker doesn't like -rdynamic. * Explicitly link against network, sql and declarative modules since QNX's linker doesn't pull in indirect dependencies. * Don't build against gstreamer on QNX. Change-Id: Ic3a202fbbbb77b25334323681e7dbf8bd5872f59 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
-rwxr-xr-xconfigure6
-rw-r--r--doc/src/snippets/sensors/sensors.pro2
-rw-r--r--features/mobility.prf.template2
-rw-r--r--plugins/multimedia/multimedia.pro2
-rw-r--r--src/3rdparty/proj/pj_open_lib_qt.cpp5
-rw-r--r--src/location/maps/qgeomapobjectengine_p.cpp6
-rw-r--r--tools/icheck/parser/src/shared/cplusplus/Lexer.cpp2
-rw-r--r--tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp3
-rw-r--r--tools/icheck/parser/src/shared/cplusplus/Scope.cpp9
-rw-r--r--tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp5
10 files changed, 31 insertions, 11 deletions
diff --git a/configure b/configure
index 5c151d99ae..403758ba39 100755
--- a/configure
+++ b/configure
@@ -653,6 +653,12 @@ echo "mobility_modules = $MOBILITY_MODULES" >> "$CONFIG_IN"
echo "contains(mobility_modules,versit): mobility_modules *= contacts" >> "$CONFIG_IN"
echo "symbian:contains(nfc_symbian_enabled,yes):contains(mobility_modules,connectivity): mobility_modules *= serviceframework" >> "$CONFIG_IN"
echo "maemo5|maemo6:contains(maemo-icd_enabled, no): mobility_modules -= bearer" >> "$CONFIG_IN"
+
+# Some modules are disabled from compilation on QNX right now:
+# - publishsubscribe: dlmalloc.c redefining some symbols
+# - systeminfo: Implementation files for _qnx missing
+echo "qnx: mobility_modules -= publishsubscribe systeminfo" >> "$CONFIG_IN"
+
# Mobility doesn't support Bearer on MeeGo -> Use Qt 4.7 Bearer instead
echo "meego:contains(mobility_modules, bearer) { " >> "$CONFIG_IN"
#echo " message(Bearer module not supported on MeeGo)" >> "$CONFIG_IN"
diff --git a/doc/src/snippets/sensors/sensors.pro b/doc/src/snippets/sensors/sensors.pro
index de2fc505e1..2931a6e636 100644
--- a/doc/src/snippets/sensors/sensors.pro
+++ b/doc/src/snippets/sensors/sensors.pro
@@ -7,7 +7,7 @@ SOURCES+=main.cpp\
start.cpp\
plugin.cpp
HEADERS+=mybackend.h
-LIBS+=-rdynamic
+!qnx: LIBS+=-rdynamic
CONFIG+=mobility
MOBILITY+=sensors
CONFIG+=strict_flags
diff --git a/features/mobility.prf.template b/features/mobility.prf.template
index c9faa1ee0b..86353b14ce 100644
--- a/features/mobility.prf.template
+++ b/features/mobility.prf.template
@@ -63,10 +63,12 @@ contains(MOBILITY, publishsubscribe) {
}
contains(MOBILITY, location) {
+ qnx: QT += network sql declarative
qtMobilityAddLibrary(QtLocation)
}
contains(MOBILITY, serviceframework) {
+ qnx: QT += network sql
qtMobilityAddLibrary(QtServiceFramework)
}
diff --git a/plugins/multimedia/multimedia.pro b/plugins/multimedia/multimedia.pro
index 586e492d7c..3611668837 100644
--- a/plugins/multimedia/multimedia.pro
+++ b/plugins/multimedia/multimedia.pro
@@ -21,7 +21,7 @@ win32:!wince* {
simulator: SUBDIRS += simulator
-unix:!mac:!symbian {
+unix:!mac:!symbian:!qnx {
TMP_GST_LIBS = \
gstreamer-0.10 >= 0.10.19 \
gstreamer-base-0.10 >= 0.10.19 \
diff --git a/src/3rdparty/proj/pj_open_lib_qt.cpp b/src/3rdparty/proj/pj_open_lib_qt.cpp
index ac6baf9b55..f625b24665 100644
--- a/src/3rdparty/proj/pj_open_lib_qt.cpp
+++ b/src/3rdparty/proj/pj_open_lib_qt.cpp
@@ -31,6 +31,11 @@
*****************************************************************************/
#define PJ_LIB__
+
+#ifdef __QNXNTO__
+# include <math.h> // Needs to be included outside of "extern "C""
+#endif
+
extern "C" {
#include <projects.h>
#include <stdio.h>
diff --git a/src/location/maps/qgeomapobjectengine_p.cpp b/src/location/maps/qgeomapobjectengine_p.cpp
index b679ee54d5..1fec5b91ed 100644
--- a/src/location/maps/qgeomapobjectengine_p.cpp
+++ b/src/location/maps/qgeomapobjectengine_p.cpp
@@ -54,7 +54,11 @@
#include <QGraphicsPathItem>
#include <QGraphicsEllipseItem>
-#include <cmath>
+#ifdef Q_OS_QNX
+# include <math.h>
+#else
+# include <cmath>
+#endif
#include <QDebug>
diff --git a/tools/icheck/parser/src/shared/cplusplus/Lexer.cpp b/tools/icheck/parser/src/shared/cplusplus/Lexer.cpp
index dbf7f45ef9..b2d12f96cc 100644
--- a/tools/icheck/parser/src/shared/cplusplus/Lexer.cpp
+++ b/tools/icheck/parser/src/shared/cplusplus/Lexer.cpp
@@ -613,7 +613,7 @@ void Lexer::scan_helper(Token *tok)
do {
yyinp();
- if (! (isalnum(_yychar) || _yychar == '_' || _yychar == '$'))
+ if (! (std::isalnum(_yychar) || _yychar == '_' || _yychar == '$'))
break;
} while (_yychar);
diff --git a/tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp b/tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp
index 6df3b38558..69ce5c66c9 100644
--- a/tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp
+++ b/tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp
@@ -61,6 +61,7 @@
#include "MemoryPool.h"
#include <cstring>
#include <cassert>
+#include <cstdlib>
using namespace CPlusPlus;
@@ -101,7 +102,7 @@ void *MemoryPool::allocate_helper(size_t size)
else
_allocatedBlocks *= 2;
- _blocks = (char **) realloc(_blocks, sizeof(char *) * _allocatedBlocks);
+ _blocks = (char **) std::realloc(_blocks, sizeof(char *) * _allocatedBlocks);
}
char *&block = _blocks[_blockCount];
diff --git a/tools/icheck/parser/src/shared/cplusplus/Scope.cpp b/tools/icheck/parser/src/shared/cplusplus/Scope.cpp
index aef254fc36..6ee0a727cc 100644
--- a/tools/icheck/parser/src/shared/cplusplus/Scope.cpp
+++ b/tools/icheck/parser/src/shared/cplusplus/Scope.cpp
@@ -64,6 +64,7 @@
#include "Literals.h"
#include <cassert>
#include <cstring>
+#include <cstdlib>
using namespace CPlusPlus;
@@ -79,9 +80,9 @@ Scope::Scope(ScopedSymbol *owner)
Scope::~Scope()
{
if (_symbols)
- free(_symbols);
+ std::free(_symbols);
if (_hash)
- free(_hash);
+ std::free(_hash);
}
ScopedSymbol *Scope::owner() const
@@ -214,7 +215,7 @@ void Scope::enterSymbol(Symbol *symbol)
if (! _allocatedSymbols)
_allocatedSymbols = DefaultInitialSize;
- _symbols = reinterpret_cast<Symbol **>(realloc(_symbols, sizeof(Symbol *) * _allocatedSymbols));
+ _symbols = reinterpret_cast<Symbol **>(std::realloc(_symbols, sizeof(Symbol *) * _allocatedSymbols));
}
assert(! symbol->_scope || symbol->scope() == this);
@@ -300,7 +301,7 @@ void Scope::rehash()
if (! _hashSize)
_hashSize = DefaultInitialSize;
- _hash = reinterpret_cast<Symbol **>(realloc(_hash, sizeof(Symbol *) * _hashSize));
+ _hash = reinterpret_cast<Symbol **>(std::realloc(_hash, sizeof(Symbol *) * _hashSize));
std::memset(_hash, 0, sizeof(Symbol *) * _hashSize);
for (int index = 0; index < _symbolCount + 1; ++index) {
diff --git a/tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp b/tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp
index 40081674f8..ee4e7958bf 100644
--- a/tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp
+++ b/tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp
@@ -68,6 +68,7 @@
#include "DiagnosticClient.h"
#include <stack>
#include <cstdarg>
+#include <cstdlib>
#include <algorithm>
using namespace CPlusPlus;
@@ -220,7 +221,7 @@ void TranslationUnit::tokenize()
if (! tk.f.newline && tk.is(T_IDENTIFIER) && tk.identifier == lineId)
lex(&tk);
if (! tk.f.newline && tk.is(T_NUMERIC_LITERAL)) {
- unsigned line = (unsigned) strtoul(tk.spell(), 0, 0);
+ unsigned line = (unsigned) std::strtoul(tk.spell(), 0, 0);
lex(&tk);
if (! tk.f.newline && tk.is(T_STRING_LITERAL)) {
const StringLiteral *fileName = control()->findOrInsertStringLiteral(tk.string->chars(),
@@ -485,7 +486,7 @@ void TranslationUnit::fatal(unsigned index, const char *format, ...)
showErrorLine(index, column, stderr);
}
- exit(EXIT_FAILURE);
+ std::exit(EXIT_FAILURE);
}
unsigned TranslationUnit::findPreviousLineOffset(unsigned tokenIndex) const