source: trunk/README.OS2@ 624

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

Readme for r623.

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