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