diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2012-11-22 18:41:29 +0000 |
---|---|---|
committer | Thomas McGuire <thomas.mcguire@kdab.com> | 2012-11-23 09:24:05 +0100 |
commit | 14a366111055d4651d960a7d5f051a1e04e63485 (patch) | |
tree | 3764014a88de5322406c2e58837e672d3c680307 | |
parent | 09a0e56acb6a49a99fc1c0feaa2ab9344dcfd8c3 (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-x | configure | 6 | ||||
-rw-r--r-- | doc/src/snippets/sensors/sensors.pro | 2 | ||||
-rw-r--r-- | features/mobility.prf.template | 2 | ||||
-rw-r--r-- | plugins/multimedia/multimedia.pro | 2 | ||||
-rw-r--r-- | src/3rdparty/proj/pj_open_lib_qt.cpp | 5 | ||||
-rw-r--r-- | src/location/maps/qgeomapobjectengine_p.cpp | 6 | ||||
-rw-r--r-- | tools/icheck/parser/src/shared/cplusplus/Lexer.cpp | 2 | ||||
-rw-r--r-- | tools/icheck/parser/src/shared/cplusplus/MemoryPool.cpp | 3 | ||||
-rw-r--r-- | tools/icheck/parser/src/shared/cplusplus/Scope.cpp | 9 | ||||
-rw-r--r-- | tools/icheck/parser/src/shared/cplusplus/TranslationUnit.cpp | 5 |
10 files changed, 31 insertions, 11 deletions
@@ -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 |