source: trunk/README.OS2@ 755

Last change on this file since 755 was 740, checked in by Dmitry A. Kuminov, 15 years ago

Updated README and CHANGES for 4.6.2.

File size: 25.5 KB
Line 
1This is Qt version 4.6.2 for OS/2 and eCS.
2
3This document contains a brief information on the OS/2 version of the Qt
4library. Please read it carefully before starting your work. You may also
5visit the project page at
6
7 http://svn.netlabs.org/qt4/wiki
8
9to get more information and the latest news and also to report bugs.
10
11To get a brief list of OS/2-specific changes from release to release
12please see the CHANGES.OS2 file included in this distribution.
13
14Please note that this version is binary incompatible with previous versions of
15Qt 4 for OS/2! This is not a behavior of the original Qt library (where versions
16with the same major number are usually binary compatible), but it is due to the
17fact that we continue to add missing features to the OS/2 version ot Qt and this
18cannot be done witout breaking the binary compatibility. On practice, this means
19that you need to recompile your applications with the new version of the Qt
20library in order to make them work with it.
21
22
23
24REQUIREMENTS
25
26In order to compile the Qt library and Qt-based applications, you will need
27the following tools:
28
29 - One of the OS/2 Warp 4, OS/2 Warp 4.5 or eComStation operating systems.
30
31 - GCC compiler version 4.4.2 for OS/2, patched OpenWatcom linker and
32 GNU Make 3.81beta1 or above. The GCC compiler must be set up to use the
33 OpenWatcom linker for linking.
34
35 If you do not have a working GCC environment with the above requirements, it
36 is recommended to download a ready-to-use GCC 4.2.2 distribution from here:
37
38 ftp://ftp.netlabs.org/pub/qt4/gcc-4_4_2-complete-20091205.zip
39
40 This distribution includes all tools necessary to compile and build the Qt
41 library from the source code. Just follow the installation instructions
42 contained in the README file inside this ZIP archive to set up the GCC
43 environment.
44
45 Please note that starting from Qt 4.6.2, support for GCC 3.3.5 and earlier
46 versions of the compiler has been dropped and the Qt library will most
47 likely not build if you use one of these compilers. Later versions prior to
48 GCC 4.4.2 may work but they are not tested and not supported.
49
50There is also a set of optional tools which are necessary to enable the selected
51features of the Qt library. If these tools are missing, the Qt configuration
52script (discussed in section "COMPILING QT" below) will automatically disable
53the corresponding feature:
54
55 - LxLite 1.3.3 or above (not tested) to enable the compression of Qt DLLs and
56 application executables (which saves hard disk space and application startup
57 time). If you use a recent version of eComStation (e.g. 2.0 rc6) you will
58 already have LxLite installed. Otherwise, you may take it from here:
59
60 http://www.os2site.com/sw/util/archiver/lxlt133.zip
61
62 - eCUPS 1.3.11 or later to support printing in Qt. The eCUPS WPI is available
63 from:
64
65 ftp://ftp.netlabs.org/incoming/eCUPS003.wpi or
66 ftp://ftp.netlabs.org/pub/ecups/eCUPS003.wpi
67
68 Linking against eCUPS also requires pthread.lib:
69
70 http://web.os2power.com/download/lib/pthread-20100217-os2.zip
71
72
73
74SETTING UP THE ENVIRONMENT
75
76First of all, make sure that your GCC environment is set up and meets the
77specified requirements. To perform a quick check, you may run the following
78command:
79
80 gcc --version && make --version && wl /version
81
82If the setup is done properly, it will print the versions of the key tools
83to the console.
84
85The next step is to set up the Qt environment. If you installed the Qt
86development libraries from the WPI archive (refer to section "USING OFFICIAL
87BINARY QT ARCHIVES" below for more details about existing WPI archives), you
88will only need to run the supplied "QtEnv.cmd" script which will do all the
89setup job for you. The script is located in the directory where you installed
90the developmnent libraries (or in the WPS folder created by the WPI installer).
91If you use this script, you may skip the rest of this section and proceed to the
92next one.
93
94If you use the full source code ZIP distribution of the Qt library or work
95directly with the Qt SVN tree, you will need to set up the environment yourself
96by performing the following steps:
97
98 - Add the "bin" subdirectory of the directory where you unpacked the Qt4
99 source tree to PATH and BEGINLIBPATH, like this:
100
101 set PATH=D:\Coding\Qt4\bin;%PATH%
102 set BEGINLIBPATH=D:\Coding\Qt4\bin;%BEGINLIBPATH%
103
104 - Add the system DLLs to the GCC library path with the following command:
105
106 set LIBRARY_PATH=C:\OS2\DLL;C:\MPTN\DLL;%LIBRARY_PATH%
107
108 where C: is your boot drive.
109
110 - Make sure CMD.EXE is your command line processor (the generated makefiles
111 will rely on its 'copy', 'if' and other commands). If you have a Unix shell
112 (SH.EXE) in your environment, you may need to force GNU make to use CMD.EXE
113 by executing the followingn command:
114
115 set MAKESHELL=C:\OS2\CMD.EXE
116
117 where C: is your boot drive.
118
119Note that the QTDIR environment variable used in previous Qt versions is not
120used in Qt4 anymore. Therefore, there is no need to set this variable
121explicitly.
122
123There is also no need to set the QMAKESPEC variable explicitly. If it is absent,
124qmake will use the specification stored in the <Qt4_Home>/mkspecs/default
125directory, which on OS/2 always refers to the "os2-g++" specification, the only
126one supported at the present time.
127
128NOTE:
129
130 It is especially important to make sure that there are no traces of any
131 other Watcom or OpenWatcom installation in the environment where you build
132 Qt as it will interfere with the patched OpenWatcom linker we use. This
133 basically means removing all environment variables containing "WATCOM" in
134 their names and also removing references to all those Watcom installations
135 from PATH.
136
137
138
139SETTING UP OPTIONAL TOOLS
140
141The following list describes the steps necessary to set up the optional tools
142that the Qt library depends on:
143
144 - Install the eCUPS WPI archive to enable printing support. If this WPI is
145 installed, the Qt build system will pick up all necessary libraries
146 automatically. Otherwise (e.g. if you use a ZIP or build eCUPS yourself),
147 you will need to use the following environment variables to tell it where to
148 look for CUPS:
149
150 set CUPS_INCLUDEPATH=X:\Path\to\CUPS\include
151 set CUPS_LIBS=X:\Path\to\CUPS\lib\libcups.a
152
153 You will also need to make sure that pthread.lib is placed somewhere in your
154 system library path so that the compiler can find it.
155
156
157
158COMPILING QT
159
160You should skip this section if you installed the Qt development libraries using
161the WPI archive (that already contains compiled release versions of the
162libraries) and proceed directly to the next section.
163
164When the environment is set up, go to the directory where you unpacked the
165Qt4 source tree and type:
166
167 configure.cmd
168
169This will set up the Qt library (by creating necessary configuration and include
170files and a bunch of Makefiles for variuos components) and build the qmake tool.
171
172The next step is to type:
173
174 make
175
176This will compile and link the Qt library. Note that by default both the release
177and the debug version of the library are built (please be patient, it may take
178quite some time depending on your hardware). The release and debug libraries can
179co-exist in the same source tree and may be used in parallel: all the debug DLLs
180get a 'd' letter in their name preceeding the Qt major version number and use
181separate directories for object files.
182
183To save time, you may build the release and the debug versions of the Qt library
184separately by typing 'make release' or 'make debug' accordingly instead of just
185'make'.
186
187Once the library is successfully built, you may try to compile the demos and
188examples by visiting the individual example subdirectories in the source tree
189and typing 'qmake' followed by one of 'make', 'make release' or 'make debug'
190in that subdirectory.
191
192NOTE:
193
194 This version of Qt for OS/2 includes the Extended system tray plugin for
195 XCenter/eCenter which is necessary to enable Qt support for the special
196 notification area on the XCenter/eCenter panel (called the "system tray")
197 which is used by many long-running applications to display their status.
198 In order to activate this support, you need to install this plugin to your
199 XCenter or eCenter. The plugin is built during the normal Qt build process
200 and can be found in the file \plugins\xcenter\xsystray.dll in the Qt source
201 tree. In order to install the plugin, do the following:
202
203 a. Copy xsystray.dll to <XWorkplace installation folder>\plugins\xcenter\
204 (on eComStation, this will be C:\ecs\system\ewps\plugins\xcenter\ where
205 C: is your boot drive).
206
207 b. Restart WPS.
208
209 c. Add the "Extended system tray" widget to the XCenter/eCenter panel using
210 the XCenter context menu ('Create new widget').
211
212 Note that if you upgrade from the previous version of the plugin then
213 please unlock xsystray.dll in the target folder using the UNLOCK.EXE
214 utility (which you can find in the LxLite package, for example) before
215 performing step a., otherwise the copy operation will fail.
216
217IMPORTANT NOTE:
218
219 Please take into account that the Qt library you build on your own as
220 described above is NOT intended for wide distribution with Qt applications
221 you port or create. Such private Qt builds help you develop Qt applications
222 (because you can easily debug your program and parts of the Qt framework at
223 the source level) but being widely distributed they will create a so-called
224 DLL hell when a program running on a user computer crashes because it picks
225 up a wrong build of the Qt library. This will happen because even a single
226 change to Qt configuration options may make your build binary incompatible
227 with another build. And even if you convince the user to isolate different
228 DLLs (using LIBPATHSTRICT and BEGINLIBPATH) it will create another major
229 problem: two different Qt applications will load two different copies of Qt
230 into memory which will create an unnecessary overhead by doubling the
231 amount of used system resources.
232
233 In order to nicely solve this problem, netlabs.org provides the official
234 binary builds of the Qt library distributed as WPI archives which are
235 described in the next section.
236
237
238
239USING OFFICIAL BINARY QT ARCHIVES
240
241For your convenience, netlabs.org provides the following binary distributions
242of the Qt library (where X_Y_Z is the Qt version number) distributed as WPI
243archives:
244
245 qt-lib-X_Y_Z.wpi - Runtime DLLs and binaries ("lib" archive)
246 qt-dev-X_Y_Z.wpi - Development libraries, tools and headers ("dev" archive)
247
248These archives are called the official binary archives of the Qt library for
249OS/2. An official binary archive contains the most complete Qt build that
250enables all features of the Qt library and includes all standard Qt plugins
251implemented for the OS/2 platform at the time of the release.
252
253The "lib" archive contains the release versions of DLLs (and may contain a few
254helper binaries) necessary to run applications created using the Qt framework.
255This package is usually installed by end users together with Qt applications
256they want to use.
257
258The "dev" archive contains pre-built release versions of import libraries and
259a complete set of C++ include headers of the Qt framework. This package is used
260by developers and porters of Qt applications to build release versions of the
261applications that are binary compatibie with the Qt runtime provided by the
262official "lib" archive described above. Using the "dev" package requires the
263same environment as described in section "SETTING UP THE ENVIRONMET" above.
264
265Please note again that the "dev" archive is intended to make a final release
266build of the Qt application which you do when you decide to ship a new version
267to the end users -- makes sure that the deployed application will share the same
268Qt runtime with other Qt applications. However, for daily work it is highly
269recommended that you build the debug version of the Qt library yourself (using
270the full source code ZIP archive or directly from SVN) as described in section
271"COMPILING QT").
272
273Besides the "lib" and the "dev" archives, the following official archives exist
274that you may also find useful:
275
276 qt-examples-X_Y_Z.wpi - Demo and example sources ("examples")
277
278The "examples" archive contains the source code and compiled binaries of the
279demo and example applications shipped with Qt. They serve as a good
280demonstration of the Qt library features and it is recommended to look at them.
281The binaries are compiled using the official "lib" archive. Please note that
282some demos and examples may miss from the arcvhice since not all features have
283been implemented in the OS/2 version of Qt yet.
284
285NOTE:
286
287 All .DLL and .EXE files of the official binary build contain a DESCRIPTION
288 string with the vendor field set to "netlabs.org" (by contrast, all custom
289 Qt builds will set the vendor field to what the USER environment variable
290 contains or to "anonymous" if USER is not set). Please note that you must
291 NOT set vendor to "netlabs.org" when creating your own builds of the Qt
292 library because it will make it difficult to identify various distributions
293 and track possible problems with the builds.
294
295
296
297QMAKE CONFIG OPTIONS
298
299The following CONFIG options of the qmake tool have a special meaning in OS/2:
300
301 windows Turns on generation of PM (WINDOWAPI) executables. By
302 default, this option is set for release builds that link
303 to the Qt GUI library.
304
305 console Turns on generation of text mode (WINDOWCOMPAT) executables.
306 By default, this option is set when setting the "windows"
307 option is not appropriate (see above).
308
309In addition, qmake recognizes the following OS/2-specific CONFIG options:
310
311 map Turns on generation of the .map files for executables and
312 DLLs. This option is set by default.
313
314 exepack Turns on compression for executables and DLLs. The option is
315 turned on by default for release builds if configure.cmd
316 finds a compression tool (LxLite) in PATH.
317
318 highmem Turns on high memory usage for dynamically allocated memory
319 in DLLs and executables. When this option is set, a special
320 compiler flag (-Zhigh-mem for GCC) is used to enable high
321 memory support in the C library (LIBC). This option is set
322 by default so that all Qt DLLs and Qt applications built
323 with qmake are enabled for high memory. Note that high
324 memory support must be enabled for all LIBC-based DLLs
325 linked to the executable as well as for the executable
326 itself: high memory usage will be disabled if one of them
327 votes against it.
328
329 export_all Cause the linker to export all public symbols in a generated
330 DLL. By default (when this option is absent), only the
331 symbols marked with the __declspec(dllexport) compiler
332 directive in the source files.
333
334
335
336PRINTING SUPPORT
337
338Starting with version 4.6.2, Qt for OS/2 supports printing through the CUPS
339framework (provided that this support is enabled when building Qt, see the
340respective sections in the beginning of this document). The OS/2 implementation
341of the CUPS framework is provided by the eCUPS package available at
342http://svn.netlabs.org/ecups/.
343
344The Qt Runtime detects the presence of eCUPS in the system on the fly and talks
345to the CUPS daemon directly, bypassing the standard OS/2 printing subsystem.
346This means that in order to print from Qt applications, you don't need to create
347and configure printer objects using the standard OS/2 system printer setup
348procedure -- you only need to install eCUPS and configure your printers in
349there. Please refer to the eCUPS user manual to obtain the detailed instructions
350on how to configure CUPS printers.
351
352
353
354ENVIRONMENT VARIABLES
355
356The Qt library recognizes a number of OS/2-specific environment variables that
357affect its functionality at runtime. The table below lists these variables and
358their meaning:
359
360 QT_PM_NO_DIVE If set, Qt will not use DIVE (direct interface video
361 extensions) for painting widgets even if DIVE (which
362 provides a much faster painting speed than the
363 regular GPI approach) is available. Currently, this
364 is the default setting if the Panorama video driver
365 is detected because its DIVE implementation contains
366 a number of bugs.
367
368 QT_PM_DIVE=<mode> Enables using DIVE for painting widgets. <mode> is
369 one of:
370
371 - FB (direct framebuffer access, which is the
372 fastest mode but causes the curruption of the
373 screen under the software mouse pointer due to
374 the limitation of DIVE). If this mode is not
375 available, BLIT will be used (see below).
376
377 - FBSWM (the same FB but hides the mouse pointer
378 before painting which introduces mouse flicker
379 and may be a bit slower than the raw FB).
380
381 - BLIT (slower than both FB and FBSWM but prevents
382 screen corruption under the mouse pointer and
383 does not produce a mouse pointer flicker
384 effect).
385
386 This variable is ignored if QT_PM_NO_DIVE is set. If
387 neither this nor the QT_PM_NO_DIVE variable is set,
388 the FBSWM mode is used by default (unless the
389 current video driver is Panorama, see above).
390
391 QT_PM_NO_SOUND_SHARE If set, Qt will open the audio device in exclusive
392 only one sound may be played on the computer at a
393 time. This mode is recommended for some sound cards
394 when using the Uniaud audio driver as it is known to
395 have problems with simultaneous playback. In current
396 Qt builds, this is the default behavior if neither
397 this nor the QT_PM_SOUND_SHARE variable is set.
398
399 QT_PM_SOUND_SHARE The opposite to the above. If set, Qt will open the
400 audio device in shared mode. This variable is
401 ignored if QT_PM_NO_SOUND_SHARE is set.
402
403 QT_PM_NO_REGISTRY If set, Qt will not use the Open32 registry to store
404 application settings with QSettings. Instead, plain
405 text INI files will be used for both NativeFormat
406 and IniFormat. Due to a number of problems in the
407 Open32 registry implementation (that may easily lead
408 to registry corruption), this is the default
409 behavior if neither this nor the QT_PM_REGISTRY
410 variable is set.
411
412 QT_PM_REGISTRY The opposite to the above. If set, Qt will use the
413 Open32 registry to store application settings. This
414 variable is ignored if QT_PM_NO_REGISTRY is set.
415
416 QT_PM_NO_SYSTEM_LOCALE If set, Qt will ignore the regional settings from
417 the system locale object found in the Country
418 Palette located in the System Setup folder and will
419 take them from the internal Qt locale database
420 according to the current country and language
421 settings. Due to the fact that this internal Qt
422 database usually has a better representation of the
423 regional settings, this is the default behavior if
424 neither this nor the QT_PM_SYSTEM_LOCALE variable is
425 set.
426
427 QT_PM_SYSTEM_LOCALE The opposite to the above. If set, Qt will use the
428 regional settings as found in the default locale
429 object set the Country Palette. This variable is
430 ignored if QT_PM_NO_SYSTEM_LOCALE is set.
431
432 LANG This variable can be used to override the default
433 country and language used in the Qt application both
434 for regional settings and for translations. The
435 format of the value is "ll_CC" where <ll> is the
436 two-letter ISO language code and <CC> is the two-
437 letter ISO country code. Note that if this variable
438 is not set, Qt will derive the language and country
439 from the system country code specified in the
440 COUNTRY statement of CONFIG.SYS.
441
442
443
444COMMAND LINE OPTIONS
445
446Any Qt executable recognizes a number of command line options that may change
447the behavior of the Qt application. Here are the most interesting ones:
448
449 -style <name> Changes the default Qt widget style (theme) to a
450 style with the given name. The buiil-in styles which
451 are always available in the official build include:
452 "windows" (currently, the default on OS/2), "motif",
453 "cde", "plastique" and "cleanlooks". Other styles
454 may be also provided by the style plugins.
455
456 -graphicssystem <name> Changes the graphics system used to paint widgets.
457 On OS/2, only two values are supported: "native"
458 (the default one) and "raster". The "native" system
459 uses DIVE (direct interface video extensions) when
460 it is available. If DIVE is not available or if it
461 is disabled (see the QT_PM_NO_DIVE environment
462 variable description for details), the "raster"
463 system will be automatically selected as a fallback.
464
465
466
467CURRENT LIMITATIONS
468
469 1. configure.cmd is does not build demos and examples by default (to save
470 time). They may be built by hand, as described above.
471
472 2. configure.cmd does not understand any command line options yet. If you want
473 to customize your build of the Qt library (which is normally not
474 recommended and not supported), you may try to modify configure.cmd itself.
475
476 3. OS/2 bitmap fonts are not supported. Use TTF or Type1 (PFB) fonts with Qt.
477
478 4. No native PM style, but Qt will use fonts and colors from the current
479 OS/2 theme. Hint: if your default OS/2 font is "WarpSans", install the
480 "Workplace Sans" TTF font from Alex Taylor to get more native look & feel.
481 It is recommended to install version 0.7 of the Normal face and version 0.3
482 of the Bold face which you can find here:
483
484 http://users.socis.ca/~ataylo00/creative/fonts/workplace/
485
486 5. QProcess: when starting PM applications from text-mode applications, the
487 returned PID is a PID of the intermediate cmd.exe process, not the target
488 application.
489
490 6. The following classes are not available due to their rare usage or low
491 importance on the OS/2 platform: QSharedMemory, QSystemSemaphore,
492 QInputContext. On the source level, a number of macros is defined to
493 reflect this, respectively: QT_NO_SYSTEMSEMAPHORE, QT_NO_SHAREDMEMORY,
494 QT_NO_IM. Normally, Qt applications use these macros in the form of
495 "#fndef QT_NO_SOMEFEATURE" to isolate the relevant parts of the code that
496 uses these classes so that the application still builds when the
497 corresponding feature is missing.
498
499 7. No qt3support module. This functionality is rarely necessary in mature
500 real life Qt applications and has low priority. In the code, it is
501 reflected by the absense of the QT3_SUPPORT macro.
502
503 8. The following features are missing (either because of the lack of the
504 required support from the system side or because of the rare usage):
505
506 - IPV6 support in the network module (QT_NO_IPV6 is defined).
507 - OpenSSL support in the network module (QT_NO_OPENSSL is defined).
508 - phonon module (QT_NO_PHONON is defined).
509 - multimedia module (QT_NO_MULTIMEDIA is defined).
510 - OpenGL module (QT_NO_OPENGL is defined).
511 - declarative module (QT_NO_DECLARATIVE is defined).
512 - tablet support (QT_NO_TABLET is defined).
513
514 See the project roadmap for more information on the current progress and
515 future plans:
516
517 http://svn.netlabs.org/qt4/roadmap
518
519 Feel free to request new features and report bugs using the project bug
520 tracker abaialble at:
521
522 http://svn.netlabs.org/qt4/report
523
524
525
526CREDITS
527
528Dmitry A. Kuminov (development)
529Silvan Scherrer (management)
530
531netlabs.org (hosting & support)
532
533Nokia Corporation (original Qt library)
534
535We also want to THANK all individuals and organizations who made the donations
536to this project and helped to make it happen. Please visit
537
538 http://qt.netlabs.org/en/site/index.xml
539
540to get the full list of sponsors and to find information on how you can support
541the project.
542
543
544Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
545OS/2 and OS/2 Warp are trademarks of the IBM Corporation and/or its subsidiary(-ies).
546eComStation is a trademark of Serenity Systems International and/or its subsidiary(-ies).
547Etc.
Note: See TracBrowser for help on using the repository browser.