source: branches/4.5.1/README.OS2@ 921

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

README for GA (update #2).

File size: 17.8 KB
Line 
1This is Qt version 4.5.1 GA 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
14
15
16REQUIREMENTS
17
18In order to compile the Qt library and Qt-based applications, you will need
19the following tools:
20
21 - One of the OS/2 Warp 4, OS/2 Warp 4.5 or eComStation operating systems.
22
23 - InnoTek GCC compiler version 3.3.5 CSD3 or 4.4.2 (recommended).
24 You can download the GCC 4.4.2 compiler using the following link:
25
26 http://download.smedley.info/gcc-4.4.2-os2-20091205.zip
27
28 GCC 4.4.2 requires newer binutils available at:
29
30 http://download.smedley.info/binutils-2.19.1-os2-20090427.zip
31
32 Note that in order to use the above version of GCC, you will also need
33 to install the previous 3.x version (e.g. 3.3.5 CSD3) available at:
34
35 ftp://ftp.netlabs.org/pub/gcc/GCC-3.3.5-csd3.zip
36
37 - Patched OpenWatcom linker which you can download from here:
38
39 ftp://ftp.netlabs.org/pub/gcc/wl-hll-r1.zip
40
41 Note that if you use IBM ILINK (no matter what version), you will
42 not be able to build the debug version of the library due to
43 bugs/limitations of ILINK.
44
45 - GNU Make 3.81beta1 or above (not tested) available at:
46
47 http://unix.os2site.com/pub/binary/make/make-3_81beta1-bin-static.zip
48
49 - LxLite 1.3.3 or above (not tested) if you want Qt DLLs and application
50 executables to be compressed (to save hard disk space and load time). If
51 you have a recent eComStation installation (e.g. 2.0 rc6) you will already
52 have LxLite installed. Otherwise, you may take it from here:
53
54 http://www.os2site.com/sw/util/archiver/lxlt133.zip
55
56
57
58SETTING UP THE ENVIRONMENT
59
60After unpacking the GCC archive, you will have to set up the compiler
61environment by invoking gccenv.cmd from the "bin" subdirectory with the correct
62arguments (type gccenv.cmd -? for help). For the OpenWatcom linker, specify
63WLINK as the second argument.
64
65Please note that setting up the GCC 4.x environment requires some additional
66steps. Please look through the README files contained within the OS/2
67distribution.
68
69You will also need to perform the following steps:
70
71 - Make sure the selected linker, the make utility and LxLite executable are
72 in PATH.
73
74 - Make sure CMD.EXE is your command line processor (the generated makefiles
75 will rely on its 'copy', 'if' and other commands). If you have a Unix shell
76 (SH.EXE) in your environment, you may need to force GNU make to use CMD.EXE
77 by doing 'set MAKESHELL=C:\OS2\CMD.EXE' where C: is your boot drive.
78
79 - Do set LIBRARY_PATH=C:\OS2\DLL;C:\MPTN\DLL where C: is your boot drive.
80
81 - Make sure that there are no traces of any other Watcom or OpenWatcom
82 installation in the environment where you build Qt as it will most likely
83 interfere with the patched OpenWatcom linker we use. This basically means
84 removing all *WATCOM* environment variables and removing references to those
85 Watcom installations from PATH.
86
87 - Add the "bin" subdirectory of the directory where you unpacked the Qt4
88 source tree to PATH and BEGINLIBPATH using its full path, e.g.:
89
90 set PATH=D:\Coding\Qt4\bin;%PATH%
91 set BEGINLIBPATH=D:\Coding\Qt4\bin;%BEGINLIBPATH%
92
93Note that the QTDIR environment variable used by previous Qt versions is not
94used by Qt4 anymore (except two rare cases that do not affect the OS/2 platform
95anyway and are probably leftovers after the migration of the qmake feature
96specifications to Qt4). Therefore, there is no need to set this variable
97explicitly. See also a note below about hard-coded paths to the source tree.
98
99There is also no need to set the QMAKESPEC variable explicitly. If it is absent,
100qmake will use the specification stored in the <Qt4_Home>/mkspecs/default
101directory, which on OS/2 always refers to the "os2-g++" specification, the only
102one supported at the present time.
103
104
105
106COMPILING QT
107
108You should skip this section if you downloaded and installed a binary
109distribution of the Qt library for developers (qt-dev-X_Y_Z.wpi) and proceed
110directly to section USING OFFICIAL BINARY QT PACKAGES below.
111
112When the environment is set up, go to the directory where you unpacked the
113Qt4 source tree and type:
114
115 configure.cmd
116
117This will set up the library (by creating necessary configuration and include
118files and a bunch of Makefiles for variuos components) and build the qmake
119utility.
120
121The next step is to type:
122
123 make
124
125This will compile and link the library. Note that by default both the release
126and the debug version of the library are built (please be patient, it may take
127quite some time depending on your hardware). The release and debug libraries can
128co-exist in the same source tree and may be used in parallel: all the debug DLLs
129get a 'd' letter in their name preceeding the Qt major version number and use
130separate directories for object files.
131
132To save time, you may also build the release and the debug versions of the
133library separately by typing 'make release' or 'make debug' accordingly
134instead of just 'make'.
135
136Once the library is successfully built, you may try to compile the demos
137and examples by visiting the individual example subdirectories in the source
138tree and typing 'qmake' followed by one of 'make', 'make release' or
139'make debug' in that subdirectory.
140
141NOTE:
142
143 This version of Qt for OS/2 includes the Extended system tray plugin for
144 XCenter/eCenter which is necessary to enable Qt support for the special
145 notification area on the XCenter/eCenter panel (called the "system tray")
146 which is used by many long-running applications to display their status.
147 In order to activate this support, you need to install this plugin to your
148 XCenter or eCenter. The plugin is built during the normal Qt build process
149 and can be found in the file \plugins\xcenter\xsystray.dll in the Qt source
150 tree. In order to install the plugin, do the following:
151
152 a. Copy xsystray.dll to <XWorkplace installation folder>\plugins\xcenter\
153 (on eComStation, this will be C:\ecs\system\ewps\plugins\xcenter\ where
154 C: is your boot drive).
155
156 b. Restart WPS.
157
158 c. Add the "Extended system tray" widget to the XCenter/eCenter panel using
159 the XCenter context menu ('Create new widget').
160
161 Note that if you upgrade from the previous version of the plugin then
162 please unlock xsystray.dll in the target folder using the UNLOCK.EXE
163 utility (which you can find in the LxLite package, for example) before
164 performing step a., otherwise the copy operation will fail.
165
166IMPORTANT NOTE:
167
168 Please take into account that the Qt library you build on your own as
169 described above is NOT intended for wide distribution with Qt applications
170 you port or create. Such private Qt builds help you develop Qt applications
171 (because you can easily debug your program and parts of the Qt framework at
172 the source level) but being widely distributed they will create a so-called
173 DLL hell when a program running on a user computer crashes because it picks
174 up a wrong build of the Qt library. This will happen because even a single
175 change to Qt configuration options may make your build binary incompatible
176 with another build. And even if you convince the user to isolate different
177 DLLs (using BEGINLIBPATH and alike) it will create another major problem:
178 two different Qt applications will load two different Qt builds into memory
179 which will double resource usage; having three different builds will
180 tripple it and so on -- what a vaste of system resources!
181
182 In order to nicely solve this problem, netlabs.org provides the official
183 binary builds of the Qt library distributed as WPI packages which are
184 described in the next section.
185
186
187
188USING OFFICIAL BINARY QT PACKAGES
189
190For your convenience, netlabs.org provides the following binary distributions
191of the Qt library (where X_Y_Z is the Qt version number):
192
193 qt-lib-X_Y_Z.wpi - Runtime DLLs and binaries ("lib" package)
194 qt-dev-X_Y_Z.wpi - Development libraries, tools and headers ("dev" package)
195
196These packages are called the official binary packages of the Qt library for
197OS/2. An official binary distribution is the most complete Qt build available
198that enables all Qt library features and includes all standard Qt plugins that
199were implemented for OS/2.
200
201The "lib" package contains the release versions of DLLs (and may contain a few
202helper binaries) necessary to run applications created using the Qt framework.
203This package is usually installed by end users together with the Qt applications
204they want to use.
205
206The "dev" package contains pre-built release versions of import libraries and
207a complete set of C++ include headers of the Qt framework. This package is used
208by developers and porters of Qt applications to build release versions of the
209applications for OS/2 that are binary compatibie with the "lib" package
210described above.
211
212Using the "dev" package requires the same environment as the one necessary for
213building Qt and described in section SETTING UP THE ENVIRONMET above with the
214exception that the "bin" subdirectory of the directory where you installed the
215"dev" package needs to be added to PATH instead of the "bin" subdirectory of
216the Qt4 source tree.
217
218The process of compiling Qt applications using the "dev" package is basically
219the same as with the hand made-build of Qt. Note, however, that if you are
220developing or porting a Qt application, it is still recommended that you build
221the debug version of the Qt library yourself and use it in your daily work since
222it will give you much more feedback than the stripped down release version
223contained in the "dev" package. The "dev" package, as said above, is intended
224for making the final release build of the application for subsequent
225distribution together with the official "lib" package.
226
227Besides the "lib" and the "dev" packages, the following official packages exist
228that you may also find useful:
229
230 qt-examples-X_Y_Z.wpi - Demo and example sources ("examples")
231
232The "examples" package contains the demo and example applications shipped with
233Qt along with the source code. They serve as a good demonstration of the Qt
234library features and it is recommended to look at them.
235
236Please note that this package does not contain all Qt demos and examples
237available since not all features have been implemented in the OS/2 version of
238Qt yet.
239
240NOTE:
241
242 All .DLL and .EXE files of the official binary build contain a DESCRIPTION
243 string with the vendor field set to "netlabs.org" (by contrast, all custom
244 Qt builds will set the vendor field to what the USER environment variable
245 contains or to "anonymous" if USER is not set). Please note that you must
246 NOT set vendor to "netlabs.org" when creating your own builds of the Qt
247 library because it will make it really difficult to identify various
248 distributions and track possible problems with the builds.
249
250
251
252QMAKE CONFIG OPTIONS
253
254The following CONFIG options of the qmake utility have a special meaning in
255OS/2:
256
257 windows Turns on generation of PM (WINDOWAPI) executables. By
258 default, this option is set for release builds that link
259 to the Qt GUI library.
260
261 console Turns on generation of text mode (WINDOWCOMPAT) executables.
262 By default, this option is set when setting the "windows"
263 option is not appropriate (see above).
264
265In addition, qmake recognizes the following OS/2-specific CONFIG options:
266
267 map Turns on generation of the .map files for executables and
268 DLLs. This option is set by default.
269
270 exepack Turns on compression for executables and DLLs. The option is
271 turned on by default for release builds if configure.cmd
272 finds a compression tool (LxLite) in PATH.
273
274 highmem Turns on high memory usage for dynamically allocated memory
275 in DLLs and executables. When this option is set, a special
276 compiler flag (-Zhigh-mem for GCC) is used to enable high
277 memory support in the C library (LIBC). This option is set
278 by default so that all Qt DLLs and Qt applications built
279 with qmake are enabled for high memory. Note that high
280 memory support must be enabled for all LIBC-based DLLs
281 linked to the executable as well as for the executable
282 itself: high memory usage will be disabled if one of them
283 votes against it.
284
285
286
287ENVIRONMENT VARIABLES
288
289The Qt library recognizes a number of OS/2-specific environment variables that
290affect its functionality at runtime. The table below lists these variables and
291their meaning:
292
293 QT_PM_NO_SOUND_SHARE If set, Qt will open the audio device in exclusive
294 only one sound may be played on the computer at a
295 time. This mode is recommended for some sound cards
296 when using the Uniaud audio driver as it is known to
297 have problems with simultaneous playback. In current
298 Qt builds, this is the default behavior if neither
299 this nor the QT_PM_SOUND_SHARE variable is set.
300
301 QT_PM_SOUND_SHARE The opposite to the above. If set, Qt will open the
302 audio device in shared mode. This variable is
303 ignored if QT_PM_NO_SOUND_SHARE is set.
304
305 QT_PM_NO_REGISTRY If set, Qt will not use the Open32 registry to store
306 application settings with QSettings. Instead, plain
307 text INI files will be used for both NativeFormat
308 and IniFormat. Due to a number of problems in the
309 Open32 registry implementation (that may easily lead
310 to registry corruption), this is the default
311 behavior if neither this nor the QT_PM_REGISTRY
312 variable is set.
313
314 QT_PM_REGISTRY The opposite to the above. If set, Qt will use the
315 Open32 registry to store application settings.
316
317
318
319CURRENT LIMITATIONS
320
321 1. configure.cmd is not yet capable of generating individual Makefiles for
322 demos and examples, it only generates the main Makefile that builds the
323 library and the necessary tools. Demos and examples can be compiled by
324 hand (as described above).
325
326 2. configure.cmd does not understand any command line options. If you want
327 to customize the build of the Qt library (which is not recommended), you
328 may try to modify configure.cmd itself.
329
330 3. OS/2 bitmap fonts are not yet supported. Use TTF or Type1 (PFB) fonts with
331 Qt.
332
333 4. In order to let Qt correctly detect the regional settings and choose the
334 right language for translating the user interface, the LANG environment
335 variable must be set. The format is
336
337 set LANG=ll_CC
338
339 where <ll> is the language code and <CC> is the country code (refer to
340 wikipedia.org to find correct letters for your langage and country if you
341 do not know them). Note that the optional encoding part of the LANG
342 specification is ignored by Qt for OS/2 since 4.5.1 Beta 5 because it now
343 detects the encoding automatically based on the system OS/2 settings.
344
345 Later, the correct language will be detected from the system settings so
346 that specifying LANG will be not necessary at all.
347
348 5. No qt3support module. This functionality is rarely necessary in mature
349 real life applications and has low priority.
350
351 6. No native PM style, but Qt will use fonts and colors from the current
352 OS/2 theme. Hint: if your default OS/2 font is "WarpSans", install the
353 "Workplace Sans" TTF font from Alex Taylor to get more native look & feel.
354 It is recommended to install version 0.6 of the Normal face and version 0.2
355 of the Bold face which you can find here:
356
357 http://users.socis.ca/~ataylo00/creative/fonts/workplace/
358
359 7. QProcess: when starting PM applications from text-mode applications, the
360 returned PID is a PID of the intermediate cmd.exe process, not the target
361 application.
362
363 8. The followign classes are not available due to their rare usage or low
364 importance on the OS/2 platform: QSharedMemory, QSystemSemaphore,
365 QInputContext, QAccessible. The following macros are defined to indicate
366 this: QT_NO_SYSTEMSEMAPHORE, QT_NO_SHAREDMEMORY,
367 QT_NO_IM, QT_NO_ACCESSIBILITY. Applications normally use them to guard the
368 relevant parts of code so they should still build.
369
370 9. No QAssistant, no printer support (QT_NO_PRINTER and QT_NO_PRINTDIALOG are
371 defined). No IPV6 support in the network module (QT_NO_IPV6 is defined).
372
373 See the project roadmap for more information on the current progress and
374 future plans:
375
376 http://svn.netlabs.org/qt4/roadmap
377
378 Feel free to request new features and report bugs using the project bug
379 tracker abaialble at:
380
381 http://svn.netlabs.org/qt4/report
382
383
384
385CREDITS
386
387Dmitry A. Kuminov (development)
388Silvan Scherrer (management)
389
390netlabs.org (hosting & support)
391
392Nokia Corporation (original Qt library)
393
394We also want to THANK all individuals and organizations who made the donations
395to this project and helped to make it happen. Please visit
396
397 http://qt.netlabs.org/en/site/index.xml
398
399to get the full list of sponsors and to find information on how you can support
400the project.
401
402
403Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
404OS/2 and OS/2 Warp are trademarks of the IBM Corporation and/or its subsidiary(-ies).
405eComStation is a trademark of Serenity Systems International and/or its subsidiary(-ies).
406Etc.
Note: See TracBrowser for help on using the repository browser.