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