From 8fe04a14b1f3688c9ce0933ebec0c28616595d93 Mon Sep 17 00:00:00 2001 From: Rolland Dudemaine Date: Mon, 19 Sep 2011 17:03:22 +0200 Subject: Resolve a number of compilation issues with INTEGRITY First, #ifdef'ed out getpwuid_r() and getpwgid_r() usage since users/groups support is not in in single-process Posix mode. Also, correct a typo and add missing files to io.pri. Update documentation to disable libtiff which won't compile until ibtiff itself is updated, and add back -no-exceptions in the sample command line. And add a line to compile host tools. Add a dummy QT_OPEN_LARGEFILE definition in qplatformdefs.h since there is code that requires it. Move definition of getGlyph() after the definition of qHash(GlyphAndSubPixelPosition). Merge-request: 2686 Reviewed-by: ossi --- doc/src/platforms/platform-notes-rtos.qdoc | 11 +++++++++-- mkspecs/unsupported/integrity-ghs/qplatformdefs.h | 1 + src/corelib/io/io.pri | 4 +++- src/corelib/io/qfilesystemengine_unix.cpp | 4 ++++ src/gui/text/qfontengine_ft_p.h | 15 +++++++++------ 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/doc/src/platforms/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc index 0b1265b..dd72016 100644 --- a/doc/src/platforms/platform-notes-rtos.qdoc +++ b/doc/src/platforms/platform-notes-rtos.qdoc @@ -313,7 +313,7 @@ ARM INTEGRITY target: \code - ./configure --hostprefix=$PWD -embedded integrity -xplatform unsupported/qws/integrity-arm-cxarm -static -qt-kbd-integrity -qt-mouse-integrity -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty -qt-gfx-integrityfb -no-qt3support -no-gfx-linuxfb -no-glib -no-openssl -no-largefile -little-endian -arch integrity -prefix / -opensource -no-feature-QWS_MULTIPROCESS -no-feature-SHAREDMEMORY -no-feature-PROCESS -no-feature-SYSTEMSEMAPHORE -no-feature-PRINTER -no-feature-QWS_QPF2 -no-scripttools + ./configure --hostprefix=$PWD -embedded integrity -xplatform unsupported/qws/integrity-arm-cxarm -static -qt-kbd-integrity -qt-mouse-integrity -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty -qt-gfx-integrityfb -no-qt3support -no-gfx-linuxfb -no-glib -no-openssl -no-largefile -little-endian -arch integrity -prefix / -opensource -no-feature-QWS_MULTIPROCESS -no-feature-SHAREDMEMORY -no-feature-PROCESS -no-feature-SYSTEMSEMAPHORE -no-feature-PRINTER -no-feature-QWS_QPF2 -no-libtiff -no-exceptions -no-scripttools \endcode \list @@ -326,6 +326,7 @@ \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on INTEGRITY \o \c{-no-exceptions} - reduces the size of the library by disabling exception support \o \c{-no-openssl} - disable support for OpenSSL + \o \c(-no-libtiff} - disable support for libTIFF \o \c{-no-glib} - disable support for unavailable Glib \o \c{-no-largefile} - disable support for large (> 2TB) files \o \c{-no-scripttools} - disable support for QtScript tools @@ -346,7 +347,13 @@ of INTEGRITY_DIR and INTEGRITY_BSP in unsupported/qws/integrity-arm-cxarm/qmake.conf. If you do not do this, you will have to modify the resulting generated projects.gpj - \o GIF support is currently not enabled. + \o Compilation of native preprocessing tools (moc, rcc, uic) is not automatic. From + a Linux shell or a MingWin shell, you can run the following command to compile these tools : + \code + cd src/tools/bootstrap && make && cd ../rcc && make && cd ../moc && make && cd ../uic && make && cd ../../.. + \endcode + + \o GIF and TIFF support are currently not enabled. \o Default .int files are generated. You may want to modify the amount of heap assigned to each example by modifying the HeapSize declaration in the specific example .int file. diff --git a/mkspecs/unsupported/integrity-ghs/qplatformdefs.h b/mkspecs/unsupported/integrity-ghs/qplatformdefs.h index 919d2cf..589b3bf 100644 --- a/mkspecs/unsupported/integrity-ghs/qplatformdefs.h +++ b/mkspecs/unsupported/integrity-ghs/qplatformdefs.h @@ -89,6 +89,7 @@ #define QT_TRUNCATE ::truncate #define QT_FTRUNCATE ::ftruncate #define QT_LSEEK ::lseek +#define QT_OPEN_LARGEFILE 0 #endif #ifdef QT_LARGEFILE_SUPPORT diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index e411f8f..78993a0 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -118,5 +118,7 @@ win32 { } integrity { SOURCES += io/qfsfileengine_unix.cpp \ - io/qfsfileengine_iterator_unix.cpp + io/qfsfileengine_iterator.cpp \ + io/qfilesystemengine_unix.cpp \ + io/qfilesystemiterator_unix.cpp } diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index cfb17de..b1b5e7e 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -264,12 +264,14 @@ QString QFileSystemEngine::resolveUserName(uint userId) #endif struct passwd *pw = 0; +#if !defined(Q_OS_INTEGRITY) #if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) struct passwd entry; getpwuid_r(userId, &entry, buf.data(), buf.size(), &pw); #else pw = getpwuid(userId); #endif +#endif if (pw) return QFile::decodeName(QByteArray(pw->pw_name)); return QString(); @@ -286,6 +288,7 @@ QString QFileSystemEngine::resolveGroupName(uint groupId) #endif struct group *gr = 0; +#if !defined(Q_OS_INTEGRITY) #if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) size_max = sysconf(_SC_GETGR_R_SIZE_MAX); if (size_max == -1) @@ -305,6 +308,7 @@ QString QFileSystemEngine::resolveGroupName(uint groupId) #else gr = getgrgid(groupId); #endif +#endif if (gr) return QFile::decodeName(QByteArray(gr->gr_name)); return QString(); diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index 57811fa..95e5b82 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -196,12 +196,7 @@ public: inline bool useFastGlyphData(glyph_t index, QFixed subPixelPosition) const { return (index < 256 && subPixelPosition == 0); } - inline Glyph *getGlyph(glyph_t index, QFixed subPixelPosition = 0) const - { - if (useFastGlyphData(index, subPixelPosition)) - return fast_glyph_data[index]; - return glyph_data.value(GlyphAndSubPixelPosition(index, subPixelPosition)); - } + inline Glyph *getGlyph(glyph_t index, QFixed subPixelPosition = 0) const; void setGlyph(glyph_t index, QFixed spp, Glyph *glyph); private: @@ -376,6 +371,14 @@ inline uint qHash(const QFontEngineFT::GlyphAndSubPixelPosition &g) return (g.glyph << 8) | (g.subPixelPosition * 10).round().toInt(); } +inline QFontEngineFT::Glyph *QFontEngineFT::QGlyphSet::getGlyph(glyph_t index, QFixed subPixelPosition) const +{ + if (useFastGlyphData(index, subPixelPosition)) + return fast_glyph_data[index]; + return glyph_data.value(GlyphAndSubPixelPosition(index, subPixelPosition)); +} + + QT_END_NAMESPACE #endif // QT_NO_FREETYPE -- cgit v0.12