doc/src/platforms/platform-notes-rtos.qdoc
changeset 7 f7bc934e204c
equal deleted inserted replaced
3:41300fa6a67c 7:f7bc934e204c
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the documentation of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 /*!
       
    43     \page platform-notes-vxworks.html
       
    44     \title Platform Notes - VxWorks
       
    45     \contentspage Platform Notes
       
    46     \target VxWorks
       
    47 
       
    48     \note VxWorks is a community supported platform. See the
       
    49     \l{Supported Platforms} page for more information.
       
    50 
       
    51     This page contains information about the Qt for VxWorks port. More
       
    52     information about the combinations of platforms and compilers supported
       
    53     by Qt can be found on the \l{Supported Platforms} page.
       
    54 
       
    55     \tableofcontents
       
    56 
       
    57     \section1 Supported Versions
       
    58 
       
    59     Qt has been tested on WindRiver VxWorks 6.7 in kernel mode using the
       
    60     vendor supplied GCC compiler, targetting both the x86 simulator
       
    61     (simpentium) and Power-PC devices (ppc).
       
    62     VxWorks' RTP mode is currently not supported.
       
    63 
       
    64     \section1 Limitations
       
    65 
       
    66     The VxWorks kernel has an optional POSIX compatibility layer, but this
       
    67     layer does not implement all POSIX functionality needed for a complete
       
    68     Qt port.
       
    69 
       
    70     \table
       
    71     \header \o Function \o Notes
       
    72     \row \o QProcess
       
    73          \o Not available - VxWorks has no concept of processes.
       
    74     \row \o QSharedMemory
       
    75          \o Not available - VxWorks has only a global, flat address space.
       
    76     \row \o QSystemSemaphore
       
    77          \o Not available - VxWorks has no concept of processes.
       
    78     \row \o QLibrary
       
    79          \o QLibrary is only a small stub to make it possible to build
       
    80             static plugins.
       
    81     \row \o QCoreApplication
       
    82          \o Can only be instantiated once. Qt's Q(CoreE)Application is
       
    83             tightly coupled to one address space and process, while VxWorks
       
    84             only supports one global address space and has no concept of
       
    85             processes.
       
    86     \row \o Phonon
       
    87          \o There is no standard audio backend, which could be integrated into Phonon.
       
    88     \row \o Qt3Support
       
    89          \o The Qt3Support library is not available on VxWorks.
       
    90 
       
    91     \endtable
       
    92 
       
    93     \section1 Build Instructions
       
    94 
       
    95     Qt for VxWorks needs to be \l{Cross-Compiling Qt for Embedded Linux
       
    96     Applications}{cross-compiled} on a Linux host.  \c configure and \c make
       
    97     the build like you would with a standard \l{Cross-Compiling Qt for
       
    98     Embedded Linux Applications}{embedded Linux cross build}.  Building the
       
    99     VxWorks simulator would be done like this:
       
   100 
       
   101     \code
       
   102     <path/to/qt/sources>/configure -xplatform unsupported/vxworks-simpentium-g++ -embedded vxworks -exceptions -no-gfx-linuxfb -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty
       
   103     make
       
   104     \endcode
       
   105 
       
   106     \list
       
   107     \o \c{-xplatform unsupported/qws/vxworks-simpentium-g++} - selects the x86 simulator mkspec for VxWorks
       
   108     \o \c{-embedded vxworks} - builds the embedded version of Qt and sets the architecture to VxWorks
       
   109     \o \c{-exceptions} - see General Notes below
       
   110     \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on VxWorks
       
   111     \endlist
       
   112 
       
   113     \section1 General Notes
       
   114 
       
   115     \list
       
   116 
       
   117     \o Configuring with \c{-exceptions} is necessary, because the VxWorks
       
   118     6.7 g++ headers require exceptions to be enabled when compiling C++
       
   119     code.
       
   120 
       
   121     \o Configure's \c{-xplatform} can be any of
       
   122     \c{unsupported/vxworks-(simpentium|ppc)-(g++|dcc)}, but \c{dcc}
       
   123     (WindRiver DIAB compiler) has not yet tested been tested with Qt 4.6 and
       
   124     VxWorks 6.7.
       
   125 
       
   126     \o Building shared libraries with \c{-shared} (the default) doesn't
       
   127     really build shared libraries, like e.g.  on Linux, since these are not
       
   128     supported by VxWorks.  Instead, qmake will created partially linked
       
   129     objects, that can be loaded at runtime with \c{ld}.
       
   130 
       
   131     \o Creating static builds with \c{-static} is fully supported.
       
   132 
       
   133     \o "Munching" (generating constructors/destructors for static C++
       
   134     objects) is done automatically by a special qmake extension (for both
       
   135     shared libraries and executables)
       
   136 
       
   137     \o VxWorks does not have a file system layer, but the low level storage
       
   138     drivers have to supply a file system like interface to the applications.
       
   139     Since each driver implements a different subset of the functionality
       
   140     supported by this interface, Qt's file system auto-tests show wildly
       
   141     differing results running on different "file systems".  The best results
       
   142     can be achieved when running on a (writable) NFS mount, since that
       
   143     provides the most Unix-ish interface.  The worst results come from the
       
   144     FTP file system driver, which may crash when accessed by a
       
   145     \c{QFileInfo}.
       
   146 
       
   147     \o Keep in mind that VxWorks doesn't call your \c{main()} function with
       
   148     the standard \c{argc}/\c{argv} parameters.  So either add a special
       
   149     \c{vxmain()} function or use a tool like \c{callmain} to translate
       
   150     VxWorks' commandline arguments to an \c{argc}/\c{argv} array.
       
   151 
       
   152     \o Some example will fail to build, due to some missing dependencies
       
   153     (e.g. shared memory) - this will be fixed in a later release.
       
   154 
       
   155     \endlist
       
   156 */
       
   157 
       
   158 /*!
       
   159     \page platform-notes-qnx.html
       
   160     \title Platform Notes - QNX
       
   161     \contentspage Platform Notes
       
   162     \target QNX
       
   163 
       
   164     \note QNX is a community supported platform. See the
       
   165     \l{Supported Platforms} page for more information.
       
   166 
       
   167     This page contains information about the Qt for QNX port. More
       
   168     information about the combinations of platforms and compilers supported
       
   169     by Qt can be found on the \l{Supported Platforms} page.
       
   170 
       
   171     Note that Qt for QNX is currently based on \l{Qt for Embedded Linux}, which
       
   172     contains its own windowing system. Mixing QNX's Photon environment with
       
   173     Qt for QNX is currently not possible. Building Qt for QNX with Photon's
       
   174     X11 embedded server is not recommended due to missing support for X11 extensions,
       
   175     resulting in poor rendering quality.
       
   176 
       
   177     Qt for QNX contains experimental screen and input drivers based on QNX's
       
   178     \c devi-hid and \c io-display. For more information, check the class documentation
       
   179     for QQnxScreen, QWSQnxKeyboardHandler and QQnxMouseHandler. See the
       
   180     \l{Porting Qt for Embedded Linux to a New Architecture} document for information
       
   181     on how to add custom screen or input drivers.
       
   182 
       
   183     \tableofcontents
       
   184 
       
   185     \section1 Supported Versions
       
   186 
       
   187     Qt has been tested on QNX 6.4 on i386 and PowerPC targets with QNX's default
       
   188     gcc compiler.
       
   189 
       
   190     \section1 Limitations
       
   191 
       
   192     Some of Qt's functionality is currently not available on QNX:
       
   193 
       
   194     \table
       
   195     \header \o Function \o Notes
       
   196     \row \o QProcess
       
   197          \o Not available - QNX doesn't support mixing threads and processes.
       
   198     \row \o QSharedMemory
       
   199          \o Not available - QNX doesn't support SYSV style shared memory.
       
   200     \row \o QSystemSemaphore
       
   201          \o Not available - QNX doesn't support SYSV style system semaphores.
       
   202     \row \o QWS Multi Process
       
   203          \o QT_NO_QWS_MULTIPROCESS is always on due to missing shared memory support.
       
   204     \row \o Phonon
       
   205          \o There is no standard audio backend, which could be integrated into Phonon.
       
   206     \row \o Qt3Support
       
   207          \o The Qt3Support library is not available on QNX.
       
   208     \endtable
       
   209 
       
   210     \section1 Build Instructions
       
   211 
       
   212     Qt for QNX needs to be built either on a QNX system, or \l{Cross-Compiling Qt
       
   213     for Embedded Linux Applications}{cross-compiled} on a Linux host. In either
       
   214     case, The QNX Software Development Platform must be installed.
       
   215 
       
   216     Example configure line for cross-compiling Qt for QNX on a Linux host for an
       
   217     i386 QNX target:
       
   218 
       
   219     \code
       
   220     configure -xplatform unsupported/qws/qnx-i386-g++ -embedded i386 -no-gfx-linuxfb -no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-gfx-qnx -qt-mouse-qnx -qt-kbd-qnx -no-exceptions
       
   221     \endcode
       
   222 
       
   223     \list
       
   224     \o \c{-xplatform unsupported/qws/qnx-i386-g++} - selects the i386-g++ mkspec for QNX
       
   225     \o \c{-embedded i386} - builds the embedded version of Qt and sets the architecture to i386
       
   226     \o \c{-no-gfx-linuxfb},  \c{-no-mouse-linuxtp} and \c{-no-kbd-tty} are Linux specific and won't work on QNX
       
   227     \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on QNX
       
   228     \o \c{-no-exceptions} - reduces the size of the library by disabling exception support
       
   229     \o \c{-qt-gfx-qnx} - enables the experimental \c{io-graphics} based display driver
       
   230     \o \c{-qt-mouse-qnx} - enables the experimental \c{devi-hig} based mouse driver
       
   231     \o \c{-qt-kbd-qnx} - enables the experimental \c{devi-hig} based keyboard driver
       
   232     \endlist
       
   233 
       
   234     \section1 General Notes
       
   235 
       
   236     \list
       
   237     \o To enable the experimental QNX display and input drivers, \c{io-display} needs to be
       
   238        up and running. The \c devi-hid based Qt input drivers require \c devi-hid to run
       
   239        in resource mode without Photon support. To enable a standard mouse and keyboard
       
   240        combination, run \c devi-hid as follows: \c{/usr/photon/bin/devi-hid -Pr kbd mouse}.
       
   241        Note that your current shell will not accept keyboard and mouse input anymore after
       
   242        running that command, so run it either from a script that launches a Qt application
       
   243        afterwards, or make sure to have remote login available to launch a Qt application.
       
   244        In addition, the \c QWS_DISPLAY, \c QWS_MOUSE_PROTO and \c QWS_KEYBOARD environment
       
   245        variables should all be set to \c{qnx} before running a Qt application.
       
   246 
       
   247     \o The 3rd party TIFF library currently doesn't build due to the missing \c inflateSync
       
   248        symbol from QNX's \c{libz.so.2}. Workarounds would be to manually replace QNX's libz
       
   249        with a newer version, or disable the TIFF plugin entierly by appending
       
   250        \c{QT_CONFIG += no-tiff} to \c{.qmake.cache} after configuring Qt.
       
   251 
       
   252     \o Some of the tools, examples and demos do not compile due to dependencies on QProcess
       
   253        or other classes that are not available on QNX.
       
   254     \endlist
       
   255 
       
   256     \section1 Platform Regressions
       
   257 
       
   258     Qt for QNX's behavior is mostly identical with \l{Qt for Embedded Linux}. However,
       
   259     some regressions were spotted in QDateTime computation around year 0 and year 1970,
       
   260     which have been tracked back to faulty time zone data on some QNX versions.
       
   261 */