source: trunk/README.OS2@ 356

Last change on this file since 356 was 330, checked in by Dmitry A. Kuminov, 16 years ago

README.OS2: Fixed: Input/output redirection operators are supported well by WINDOWAPI executables.

File size: 17.1 KB
Line 
1This is Beta 4 of Qt version 4.5.1 for OS/2 and eCS.
2
3This document contains a brief information on the OS/2 version of the Qt library
4plus a brief list of OS/2-specific changes from release to release (section
5CHANGES below). Please visit 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
11
12
13REQUIREMENTS
14
15In order to compile the Qt library, you will need the following tools:
16
17 - One of the OS/2 Warp 4, OS/2 Warp 4.5 or eComStation operating systems.
18
19 - InnoTek GCC compiler version 3.3.5 CSD3 or above (not tested).
20 You can download a copy of the compiler using the following link:
21
22 ftp://ftp.netlabs.org/pub/gcc/GCC-3.3.5-csd3.zip
23
24 - Patched OpenWatcom linker which you can download from here:
25
26 ftp://ftp.netlabs.org/pub/gcc/wl-hll-r1.zip
27
28 Note that if you use IBM ILINK (no matter what version), you will
29 not be able to build the debug version of the library due to
30 bugs/limitations of ILINK.
31
32 - GNU Make 3.81beta1 or above (not tested) available at:
33
34 http://unix.os2site.com/pub/binary/make/make-3_81beta1-bin-static.zip
35
36 - LxLite 1.3.3 or above (not tested) if you want Qt DLLs and application
37 executables to be compressed (to save hard disk space and load time). If
38 you have a recent eComStation installation (e.g. 2.0 rc6) you will already
39 have LxLite installed. Otherwise, you may take it from here:
40
41 http://www.os2site.com/sw/util/archiver/lxlt133.zip
42
43After unpacking the GCC archive, you will have to set up the compiler
44environment by invoking gccenv.cmd from the bin subdirectory with the
45correct arguments (type gccenv.cmd -? for help). For the OpenWatcom
46linker, specify WLINK as the second argument.
47
48You will also need to perform the following steps:
49
50 - Make sure the selected linker, the make utility and LxLite executable are
51 in PATH.
52
53 - Make sure CMD.EXE is your command line processor (the generated makefiles
54 will rely on its 'copy', 'if' and other commands). If you have a Unix shell
55 (SH.EXE) in your environment, you may need to force GNU make to use CMD.EXE
56 by doing 'set MAKESHELL=C:\OS2\CMD.EXE' where C: is your boot drive.
57
58 - set LIBRARY_PATH=C:\OS2\DLL;C:\MPTN\DLL where C: is your boot drive.
59
60 - Make sure that there are no traces of any other Watcom or OpenWatcom
61 installation in the environment where you build Qt as it will most likely
62 interfere with the patched OpenWatcom linker we use. This basically means
63 removing all *WATCOM* environment variables and removing references to those
64 Watcom installations from PATH.
65
66Note that the QTDIR environment variable used by previous Qt versions is not
67used by Qt4 anymore (except two rare cases that do not affect the OS/2 platform
68anyway and are probably leftovers after the migration of the qmake feature
69specifications to Qt4). Therefore, there is no need to set this variable
70explicitly. See also a note below about hard-coded paths to the source tree.
71
72There is also no need to set the QMAKESPEC variable explicitly. If it is absent,
73qmake will use the specification stored in the <Qt4_Home>/mkspecs/default
74directory, which on OS/2 always refers to the "os2-g++" specification, the only
75one supported at the present time.
76
77When the environment is set up, go to the directory where you unpacked the
78Qt4 source tree and type:
79
80 configure.cmd
81
82This will set up the library (by creating necessary configuration and include
83files and a bunch of Makefiles for variuos components) and build the qmake
84utility.
85
86The next step is to go to the src subdirectory and type:
87
88 make
89
90This will compile and link the library. Note that by default both the release
91and the debug version of the library are built (please be patient, it may take
92quite some time depending on your hardware). The release and debug libraries can
93co-exist in the same source tree and may be used in parallel: all the debug DLLs
94get a 'd' letter in their name preceeding the Qt major version number and use
95separate directories for object files.
96
97To save time, you may also build the release and the debug versions of the
98library separately by typing 'make release' or 'make debug' accordingly
99instead of just 'make'.
100
101Once the library is successfully built, you may try to compile the demos
102and examples by visiting the individual example subdirectories in the source
103tree and typing 'qmake' followed by one of 'make', 'make release' or
104'make debug' in that subdirectory.
105
106NOTES:
107
108 1. Please keep in mind that due to dropping the QTDIR variable recognition,
109 qmake.exe now unconditionally uses hard-coded paths to locate various Qt4
110 components (such as the include or source directory) during the makefile
111 generation process and therefore if you move the Qt source tree to another
112 location you will need to run configure.cmd again in order to update these
113 hard-coded paths and rebuild qmake and other dependent parts of the
114 library.
115
116 2. This version of Qt for OS/2 includes the Extended system tray plugin for
117 XCenter/eCenter which is necessary to enable Qt support for the special
118 notification area on the XCenter/eCenter panel (called the "system tray")
119 which is used by many long-running applications to display their status.
120 In order to activate this support, you need to install this plugin to your
121 XCenter or eCenter. The plugin is built during the normal Qt build process
122 and can be found in the file \plugins\xcenter\xsystray.dll in the Qt source
123 tree. In order to install the plugin, do the following:
124
125 a. Copy xsystray.dll to <XWorkplace installation folder>\plugins\xcenter\
126 (on eComStation, this will be C:\ecs\system\ewps\plugins\xcenter\ where
127 C: is your boot drive).
128
129 b. Restart WPS.
130
131 c. Add the "Extended system tray" widget to the XCenter/eCenter panel using
132 the XCenter context menu ('Create new widget').
133
134 Note that if you upgrade from the previous version of the plugin then
135 please unlock xsystray.dll in the target folder using the UNLOCK.EXE
136 utility (which you can find in the LxLite package, for example) before
137 performing step a., otherwise the copy operation will fail.
138
139
140
141CURRENT LIMITATIONS
142
143 1. configure.cmd is not yet capable to generate individual Makefiles for demos
144 and examples, it only generates the main Makefile that builds the library
145 and the necessary tools. Demos and examples can be compiled by hand
146 (as described above).
147
148 2. OS/2 bitmap fonts are not yet supported. Use TTF or Type1 (PFB) fonts with
149 Qt.
150
151 3. Make sure you have the LANG environment variable properly set. The format
152 is 'set LANG=ll_CC[.encoding]' where <ll> is the language code, <CC> is the
153 country code and <encoding> is the optional encoding to use. If LANG is
154 missing or invalid, string conversion operations may work incorrectly
155 resulting in distorted text input or output. Note that for most languages
156 you will have to specify the encoding number explicitly because Qt and OS/2
157 usually disagree about the default encoding for the given language.
158
159 To specify the correct encoding for Qt you need to know your system code
160 page number. You can find this number in the CODEPAGE statement of your
161 CONFIG.SYS. Note however that the code page number from CONFIG.SYS and the
162 encoding name you specify in LANG are different things. Qt doesn't
163 understand IBM code page numbers directly. In most cases, you can get the
164 encoding name by prepending 'cp' to the code page number (for example,
165 'cp850' for code page 850) but sometimes this will not work because not all
166 encodings have 'cp'-like aliases. In this case, you should google around to
167 find the correct encoding name for your code page number. Here is a couple
168 of examples of the proper LANG specification:
169
170 set LANG=de_DE.cp850 - for the German OS/2 locale
171 set LANG=ru_RU.cp866 - for the Russian OS/2 locale
172
173 Later, the correct encoding for the system code page will be detected
174 automatically and specifying it in LANG will not be necessary.
175
176 4. Some functionality of the already available Qt classes may be limited or
177 unimplemented. If you find such a case and there is no ticket for it
178 in the bug tracker, feel free to add one.
179
180 5. No qt3support module. This functionality is rarely necessary in mature
181 real life applications and has low priority.
182
183 6. No native PM style, but Qt will use fonts and colors from the current
184 OS/2 theme. Hint: if your default OS/2 font is "WarpSans", install the
185 "Workplace Sans" TTF font from Alex Taylor to get more native look & feel.
186 It is recommended to install version 0.6 of the Normal face and version 0.2
187 of the Bold face which you can find here:
188
189 http://users.socis.ca/~ataylo00/creative/fonts/workplace/
190
191 7. QProcess: when starting PM applications from text-mode applications and
192 when detaching applications with startDetached(), the returned PID is a
193 PID of the intermediate cmd.exe process, not the target application.
194
195 8. No QDesigner, no QAssistant.
196
197 9. No clipboard, no Drag&Drop, no printer support. See the project roadmap for
198 more information on the current progress and future plans:
199
200 http://svn.netlabs.org/qt4/roadmap
201
202
203
204CHANGES
205
206Beta 4 (11-11-2009)
207
208 Improvements:
209
210 - Added sound support (implemented QSound class).
211
212 - Added system tray support (QSystemTrayIcon class). This support requires
213 the Extended system tray XCenter plugin to be installed. See the note above
214 on how to compile and install this plugin.
215
216 - Enabled QPlugin support on OS/2. This in turn enables SVG support for
217 QIcon (which is built as a Qt plugin DLL by default).
218
219 - Better widget modality support (widgets blocked by modality cannot be
220 activated and moved using the mouse and the title bar anymore).
221
222 - Added support for 'console' and 'windows' CONFIG options in .pro files.
223 Now, if 'windows' is present, the target executable will have the WINDOWAPI
224 attribute set which effectively makes it a PM application. This, in
225 particular, disables standard input, output and error streams so that when
226 started, the application will not have a console window attached to it.
227 By default, 'console' mode is active unless you perform a release build and
228 the application is linked against the QtGui library ('QT = gui' in .pro),
229 in which case the default is 'windows'.
230
231 - Improved paint speed in Qt windows which should increase overall graphical
232 UI performance by 10%-20% in Qt4 applications.
233
234 - Implemented setting window icons for top-level windows (using
235 QWidget::setWindowIcon()).
236
237 - Added LxLite support to provide compression for executables and DLLs. The
238 compression is controlled by the 'exepack' CONFIG option which is turned on
239 by default for release builds if the LxLite executable is present in PATH
240 during the configure.cmd invocation. The compression may be turned off on a
241 per-project basis by adding a 'CONFIG -= exepack' line to the .pro file.
242
243 - Improved the section of this README.OS2 file that describes how to properly
244 set the LANG variable to have correct national characters in file names and
245 in window titles of Qt applications.
246
247 Fixes:
248
249 - QProcess: The executable's path was not always added to BEGINLIBPATH.
250
251 - Fixed-size top-level widgets could not be moved.
252
253 - Application crash after pressing a button in a dialog window that resizes
254 this dialog (for example, makes it bigger to show more information).
255
256 - Resizing top level windows using the top border broke mouse coordinates so
257 that Qt tought you pressed the mouse button in a different place of the
258 window than where you actually did it.
259
260 - Events posted with QCoreApplication::postEvent() were only processed upon
261 receiving a next message from the system. This caused funny delays such as
262 controls in a Qt window still indicating the input focus (the dotted
263 rectangle) after the window was deactivated and losing this indication only
264 when the mouse pointer was moved over the window.
265
266 - Don't replay mouse button press on a push button that is showing a popup
267 menu but instead hide the popup menu and unpress the button to get more
268 native look and feel.
269
270 - Deactivating the window with a push button showing a popup menu would hide
271 the popup but leave the button pressed.
272
273 - Fixed incorrect Qt dirty widget region calculation when processing WM_PAINT
274 messages. This fixes a lot of redraw problems (menu items in the main menu
275 bar, text in combo-boxes, various redraw problems in smplayer when switching
276 interfaces and going to/from fullscreen, and similar).
277
278Beta 3 (17-10-2009)
279
280 Improvements:
281
282 - Added proper font support. All outline (scalable) fonts visible in the Font
283 Palette should be now recognized by Qt. The fonts are hinted and antialiased
284 using the Freetype2 library when drawing text.
285
286 - System fonts and colors are now used by default for Qt widgets.
287
288 - configure.cmd now generates the main Makefile to simplify building of Qt.
289
290 - corelib: QProcess: Implemented child termination detection.
291
292 - corelib: QProcess: Implemented redirection to another QProcess.
293
294 - corelib: QProcess now uses native pipes for stream redirection. This fixes
295 various issues like 'Socket operation on non-socket' errors during
296 parent-child communication.
297
298 - corelib: QProcess: Make sure that the directory containing the executable
299 file is always searched (first) for DLLs needed by this executable. This
300 makes it unnecessary to change the current directory to the executable's
301 directory or add it to LIBPATH before starting the Qt application.
302
303 - corelib: QProcess can now start applications of different type (e.g. PM
304 applications from text-mode applications) directly.
305 QProcess::startDetached() also works.
306
307 - qmake: In debug_and_release mode, 'release-(all|clean|distclean|install|
308 uninstall)' and 'debug-(all|clean|distclean|install|uninstall)' make
309 targets are now available.
310
311 Fixes:
312
313 - Doing 'make clean' could result into a hang due to CMD.EXE command line
314 length limitation.
315
316 - corelib: Fixed: QProcess: Lost data during stream redirection.
317
318 - corelib: QSettings could sometimes distort data when saving it to the
319 registry (by replacing some characters with codes 0x80 and above with '?').
320
321Beta 2 (17-09-2009)
322
323 Improvements:
324
325 - Ported the network module (QtNetwork4.dll) and added to the default build.
326
327 - Added modules sql, svg, xmlpatterns, scripttools, plugins to the default
328 build.
329
330 - gui: Added recognition of dead keys which makes it possible to type
331 umlauts and other accented characters that require composition.
332
333 - gui: Implemented standard cursor shapes in Qt applications.
334
335 Fixes:
336
337 - qmake: Fixed the trailing slash problem which caused qmake to generate
338 incorrect makefiles and fail to build the Qt library on some platforms.
339
340 - configure.cmd: Return to the root source tree directory after building
341 qmake.
342
343 - qmake: Automatically use different link flags when linking qmake with WLINK.
344
345 - qmake: Recognize TARGET_SHORT that allows to specify a short DLL name
346 (vital for OS/2 which reqires DLL names to be in 8x3 format).
347
348 - build: Set short DLL names for Qt modules on OS/2 using TARGET_SHORT.
349
350 - corelib: Various fixes to file system classes that deal with the file name
351 case (which should be ignored on OS/2) and forward and back slashes.
352
353 - corelib: Fixed: QMutex could let more than one thread access the protected
354 resource.
355
356 - corelib: Standard stream redirection in QProcess should now work for
357 kLIBC-based child processes. Redirection for all other applications
358 (such as CMD.EXE) will be added later (seems to be a kLIBC bug/feature).
359
360 - gui: Fixed erroneous QFileDialog behavior (duplicate entires in the list,
361 incomplete contents of the root directory of the current drive).
362
363 - gui: Fixed: Ctrl+A..Z should generate characters with codes 0x01-0x1F.
364
365 - gui: Fixed: Close popups when resizing/moving the top level window.
366
367 - gui: Enabled actual enforcing min/max Qt widget constraints for top-level windows.
368
369 - gui: Fixed child widget duplication when resizing top level widgets after
370 showing a popup; moving native child widgets should now work correctly.
371 This also fixed a number of redraw problems (for example, drawing the main
372 menu and tool bars in smplayer, moving tool bars around in other
373 applications such as textedit from the demo folder).
374
375Beta 1 (29-08-2009)
376
377 - First public release.
378
379
380
381CREDITS
382
383Dmitry A. Kuminov (development)
384Silvan Scherrer (management)
385
386netlabs.org (hosting & support)
387
388Nokia Corporation (original Qt library)
389
390We also want to THANK all individuals and organizations who made the donations
391to this project and helped to make it happen. Please visit
392
393 http://qt.netlabs.org/en/site/index.xml
394
395to get the full list of sponsors and to find information on how you can support
396the project.
397
398
399Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
400OS/2 and OS/2 Warp are trademarks of the IBM Corporation and/or its subsidiary(-ies).
401eComStation is a trademark of Serenity Systems International and/or its subsidiary(-ies).
402Etc.
Note: See TracBrowser for help on using the repository browser.