]> git.saurik.com Git - wxWidgets.git/blame - docs/os2/install.txt
non-pch build fix
[wxWidgets.git] / docs / os2 / install.txt
CommitLineData
d716e453
JS
1Installing wxWidgets
2--------------------
0deff088 3
d716e453 4This is wxWidgets for IBM OS/2 Warp3 and Warp4. This is an unstable
0deff088
DW
5development release and OS/2 is considered to be in beta.
6
7IMPORTANT NOTE: If you experience problems installing, please
8re-read this instructions and other related files (changes.txt,
9readme.txt, notes on the Web site) carefully before mailing
10wx-users or the author. Preferably, try to fix the problem first and
11then send a patch to the author. Please report bugs using the
fc2171bd 12bug report form on the wxWidgets web site.
0deff088
DW
13
14Unarchiving
15-----------
16
17At this time there is no comprehensive setup.exe type installation program.
fc2171bd 18wxWidgets for OS/2 requires you download various .zip files and unpack them
0deff088 19to your desired location on your system. Pick a location say,
b45ab290 20C:\wx\wxWidgets-2.8.0, copy the .zip files to there and unzip them ensuring you
0deff088
DW
21unzip the subdirectories as well. You will need:
22
fc2171bd 23- All common, generic and OS2-specific wxWidgets source;
0deff088
DW
24- samples;
25- documentation in HTML Help format;
26- makefiles for VisualAge V3.0 (possibly for EMX and Watcom C++);
4726bcc5 27- JPEG, TIFF, PNG, ZLIB, wxSTC, REGEX, EXPAT library sources.
0deff088 28
b45ab290 29All but the documentation is included in wxOS2-2.8.0.zip, documentation
fc2171bd 30must be downloaded separately from the wxWidgets Web site.
1281c5c1 31
0deff088
DW
32
33General installation notes
34--------------------------
35
36After unzipping everything your directory tree should look something like
37this:
38
b45ab290
JS
39x:\wx\wxWidgets-2.8.0\docs (your HTML reference manual)
40x:\wx\wxWidgets-2.8.0\include\wx
41x:\wx\wxWidgets-2.8.0\include\wx\generic
42x:\wx\wxWidgets-2.8.0\include\wx\html
43x:\wx\wxWidgets-2.8.0\include\wx\os2
44x:\wx\wxWidgets-2.8.0\samples\.... (all the sample directories)
45x:\wx\wxWidgets-2.8.0\src
46x:\wx\wxWidgets-2.8.0\src\common
47x:\wx\wxWidgets-2.8.0\src\generic
48x:\wx\wxWidgets-2.8.0\src\html
49x:\wx\wxWidgets-2.8.0\src\jpeg
50x:\wx\wxWidgets-2.8.0\src\os2
51x:\wx\wxWidgets-2.8.0\src\png
52x:\wx\wxWidgets-2.8.0\src\tiff
53x:\wx\wxWidgets-2.8.0\src\zlib
1281c5c1
SN
54
55If you are using VisualAge, you will also need to ensure you have a
b45ab290 56\lib directory as well, x:\wx\wxWidgets-2.8.0\lib
1281c5c1
SN
57and you will have to set a WXWIN environment variable in your
58config.sys,
b45ab290 59SET WXWIN=X:\WX\WXWINDOWS-2.8.0;
0deff088
DW
60
61Compilation
62-----------
63
1281c5c1
SN
64For now, only VisualAge V3.0 FP 8 and EMX-0.9d (with fix4) are supported.
65However, the library has been successfully compiled with Watcom C++ as
66well. As those build environments get a bit more "formalized", I will add
67them here.
68
69Compilation with VisualAge on the one hand and EMX on the other hand are
70rather different, VisualAge is essentially following Windows' way of doing
71it, EMX is following the example of the unix ports.
72
73Compilation with VisualAge
74--------------------------
0deff088 75
4c51a665 76In addition to VisualAge V3.0 Fixpack 8 you will need the following in order
fc2171bd 77to successfully build and use wxWidgets for OS/2:
0deff088
DW
78
791. IBM OS/2 Toolkit Version 4.5 or later
802. IBM TCPIP V4.0 or later
813. You will need the IBMLAN Lan Requester service and UPM if you wish to use
82 network based components of the library (generally a standard part of any
83 Warp Connect 3.0 or Warp 4.0 installation.
844. I strongly suggest that you have the latest IBM fixpacks installed for
85 all your components.
86
87Go to the \src directory and open the file, makeva.env (there should be a
88.env for each supported compiler when they are fully supported), for edit.
89This is where the "make" environment for wxOS2 is set. Locate UMPLIB, NETLIB,
90and TCPIP environment variables about 20 lines down. Set these to match
91your system.
92
93There are number of possible outputs you can produce. There is a static
94lib and a dynamically linked lib, and both can be built in debug or release
95mode. Since wxOS2 is a beta and a rough one at that, I suggest, for now,
96you stick to the debug builds. The resultant linkable binaries will be
97output to the \lib directory as will the .dll files. The statically linked
98lib will be named wx.lib. Each of the third party libs will be there as well,
99including png.lib, jpeg.lib, tiff.lib, and zlib.lib. For DLL builds the
100import libs will have the same name, only with a 'd' appended. Thus the
101import library for the main lib in a dll build is wxd.lib.
102
103Object modules will be output into paths dictated by the build mode. For
104example, for debug static the outputs will be in DebugOS2, for DLLs in
105DebugOS2DLL.
106
107For your first build, you can directly build the library. For subsequent
108builds you will want to "clean" the output paths. To build the static library
109go to \src and execute nmake all -f makefile.va. To clean out the outputs
110execute nmake clean -f makefile.va.
111
112To build the wx.dll execut nmake all -f makefile.va WXMAKINGDLL=1. To clean
113the outputs execute namek clean -f makefile.va WXMAKINGDLL=1. For
114VisualAge 3.0 we use the module definition file method.
115
116If, for some reason you encounter linking problems with your dll build you may
117need to rebuild the module definition file, wx23.def, found in \src\os2. To
118do this you need to have a static version built. Go to the \lib directoy and
119execute CPPFILT /B /P wx.lib>temp.def. Copy this file to \src\os2. Delete
120the temp.def from your \lib directory.
121
122I find the following to be the easiest to reconstruct the .def file. Open
123both the wx23.def and the temp.def file. Copy the header of the wx23.def to
124the clipboard and paste it into the top of the temp.def file. If you have
125a valid SQL database client with its SDK on your system you can skip the next
fc2171bd 126step. wxWidgets included some ODBC and SQL modules. They expect the standard
0deff088
DW
127sql.h and such to available. If you do not have a database client with its
128SDK (such as DB/2) then for the .dll build you need to delete the exports for
129the following three modules from your temp.def file, db.cpp, dbgrid.cpp and
130dbtable.cpp. save you changes to temp.def. Delete wx23.def and rename your
131temp.def to wx23.def and you are ready to go.
132
4c51a665 133I hope to clean up the .dll builds at some point before the library is
0deff088
DW
134a full fledged production caliber product. Fortunately EMX and Watcom can use
135the import and export pragmas successfully negating the need for manual .def
136files. VA 3.0, unfortunately in C++ does not properly export the mangled
137names so we are stuck with the CPPFILT .def file method of .dll builds for
138now.
139
140When building an application that uses the wx.dll you need to build it using
141the WXUSINGDLL=1 macro. For example to build the minimal sample you would
142go to \samples\minimal and execute nmake all -f makefile.va WXUSINGDLL=1.
143
fc2171bd 144I strongly suggest when developing apps using wxWidgets for OS/2 under old
0deff088
DW
145VisualAge 3.0, that you use the dynamically linked library. The library is
146very large and even the most trivial statically linked .exe can be very
147large and take a long time to link. The release builds are much smaller,
148however. Fortunately, EMX seems to build much smaller static executables.
1281c5c1
SN
149
150Compilation using EMX
151---------------------
152
153In addition to EMX-0.9d you will need a rather complete Unix-like
154environment, starting with a shell (e.g. ash) and most of the
155GNU file/text/shell utilities, but also flex, bison, sed, grep, awk
2b5f62a0
VZ
156and GNU make. Particularly note that uname is relevant to get the
157configure script working - the one from GNU shell utilities 1.12
158does work (check that uname -s returns "OS/2" and uname -m returns "i386"
159and you should be mostly fine.
1281c5c1
SN
160
161The first thing to do is to decide on a build directory. You can either
162do in-tree builds or you can do the build in a directory separated from
163the source directory. The later has the advantage, that it is much easier
fc2171bd 164to compile and maintain several ports of wxWidgets on OS/2 - if you are
1281c5c1
SN
165developping cross-platform applications you might want to compile (and
166update) e.g. wxGTK or wxX11 as well.
167
168In the following, let's assume you decided to build in
b45ab290 169\wx\wxWidgets-2.8.0\build\pm. Now we need to set some environment
1fe5e010 170variables, namely MAKESHELL (to a Unix like shell, let's assume ash)
1281c5c1
SN
171and INSTALL (to point to the install script. If you omit this, configure
172might find something like the system's tcpip\pcomos\install.exe which will
173not do the thing you want), e.g.
1fe5e010 174SET MAKESHELL=ash
b45ab290 175SET INSTALL=/wx/wxWidgets-2.8.0/install-sh -c
2b5f62a0 176
1fe5e010
SN
177Be warned that depending on the precise version of your make, the
178variable that needs to be set might be MAKE_SHELL instead of MAKESHELL.
179If you have a really deficient version of GNU make, it might even be
180necessary to set SHELL or even COMSPEC to a unix like shell as well.
1281c5c1
SN
181
182Now run the provided configure script by executing e.g.
183`ash -c "../../configure \
fc2171bd 184 --prefix=directory_where_you_want_wxWidgets_to_be_installed"'
1281c5c1
SN
185from within the build directory (the relative path might be different
186depending on the build directory you selected).
187If you are already running some unix-like shell and not cmd, you may
188of course ommit the `ash -c' part in the above command.
189This will create a whole directory structure containing lib and sample
190directories which each essentially contain a suitable makefile.
191
192Calling `make' now should start a compile run which hopefully ends
193with a library being placed in the lib subdirectory.
194
195Now you can change in the samples subdirectory and call make to compile
196all samples, however currently not all will work on OS/2, so you might
197prefer to change into the directory of a specific sample
198(e.g. samples\minimal) and call make there to just build this one example.
199Essentially, each sample that's not working indicates an area, where help
fc2171bd 200in porting wxWidgets to OS/2 would be appreciated.
1281c5c1 201
fc2171bd 202Finally, you can run `make install' which should install wxWidgets to
1281c5c1
SN
203the desired place.
204Note that we also install the wx-config script which wants to help you
205compiling your own applications, e.g. `wx-config --cxxflags` will emit the
fc2171bd 206flags that are needed for compiling source code which includes wxWidgets
1281c5c1 207headers, `wx-config --libs` will emit the flags needed for linking against
fc2171bd 208wxWidgets (wx-config is assuming you are calling it from a unix-like shell!).
1281c5c1
SN
209
210For building a DLL, the only supported way currently is to first build the
211static library and then use Andrew Zabolotny's dllar.cmd. However, this
212works quite nicely.
213
214Finally, if you also want to build a different port, e.g. wxGTK, you
215essentially have to use the procedure described above, the only difference
216being that you have to pass a switch to configure indicating which port
217to build. If you do not do this in a separate build directory (e.g.
b45ab290 218\wxWidgets-2.8.0\build\gtk), you'll have to do a `make clean' first.
1281c5c1
SN
219The magical switches that have to be passed to configure for the various
220ports are --with-gtk (wxGTK), --with-motif (wxMotif), --with-x11 (wxX11),
221and --disable-gui (wxBase). Note that contrary to the native, PM based
222OS/2 port, all of those ports work slightly better with POSIX/2's cExt
223library. If include and library path include the suitable paths, -lcExt
4726bcc5 224is automatically appended to the linker flags by the configure script.