Compiling XWP

''Please note that this is not the "official" how-to, but just a collection of suggestions an tips harvested from progref.inf file included in the XWP's sources, from Ulrich's page about setting up CVS and from the XWP mailing lists. The "official" how-to remains the progref.inf file included in the XWP's sources.''

Getting sources from CVS
To compile XWP you need to retrieve from Netlabs' CVS server both XWP and XWP helpers sources.

Supposing that you already have a working CVS setup, do this:


 * go in your CVS root folder (e.g. x:\CVS)
 * do

SET CVSROOT=:pserver:guest@www.netlabs.org:/netlabs.cvs/xworkplace


 * create a subdirectory in your CVS root directory named "xworkplace" (e.g. x:\cvs\xworkplace)
 * change to xworkplace directory and do

SET USER=guest


 * from the same directory, do

CVS login

enter "readonly" when you are prompted for password
 * do

cvs checkout -r branch-1-0.

Don't forget the last dot! This last command will retrieve the most updated stuff from CVS.

Now you need the XWorkplace helpers.


 * go again in your CVS root folder (e.g. x:\CVS)
 * do "CVSROOT=:pserver:guest@www.netlabs.org:/netlabs.cvs/xwphelpers"
 * create a subdirectory in your CVS root directory named "xwphelpers" (e.g. x:\cvs\xwphelpers)
 * change to xwphelpers and do "cvs checkout -r branch-1-0 ."

You just downloaded from CVS all what you need to compile the very latest XWP branch stuff. As you sooner or later could like to play with trunk, or to compile a specific XWP version, maybe because you are working on translating it, a good idea is to maintain different sandboxes for trunk and branches. A good directory organization could be:


 * your CVS root folder
 * XWP branch
 * XWP trunk
 * XWP Helpers branch
 * XWP Helpers trunk
 * WarpIn

XWP branch requires the XWP Helpers branch, XWP trunk requires the XWP Helpers trunk and WarpIn, just as a note, requires the XWP Helpers trunk.

If you want to modify (NLS) things, then checkout using the branch tag. You ought to set your own release tags for the NLS stuff when you are done.
 * To checkout the trunk, use no tag, that is: "cvs checkout ."
 * To checkout the branches, use the "branch-1-0" tag: "cvs checkout -r branch-1-0 ."
 * If you want to build latest public version then checkout using the release tags, that is for XWP: "cvs checkout -r pr_0002_1-0-4 ." and for XWP Helpers: "cvs checkout -r pr_0007_xwp1-0-4 ."

The compilation environment

 * IBM VisualAge C++ 3.0 with fixpak 8 is reccomended (and it is also the only environment currently supported.
 * OS/2 Developer's Toolkit for all the SOM header files and the SOM compiler: the ones included in eCS 1.2 CD #2 seems good.

Now, you have on your computer all what is needed to try to compile XWP :-)

You have good change to get an error like:
 * first of all, adjust x:\CVS\xworkplace\config.in to your needs
 * then, from x:\CVS\xworkplace\ run "nmake dep". If you have never built XWorkplace before, "nmake dep" will give you lots of warnings that headers could not be found. This is normal.
 * After that, run either "nmake all" or "nmake really_all". "nmake all" will only rebuild XFLDR.DLL, XWPDAEMN.EXE and XWPHOOK.DLL while "nmake really_all" will produce the full set of XWorkplace executables plus the NLS files.

E:\netlabs_CVS\xworkplace\bin\modules\xwphook.dll => E:\programs\xworkplace\binxwphook.dll SYS0032: Process can't access file...

This means that you have XWorkplace running and you have to UNLOCK the files first if you are copying over your running files. Put XWP_UNLOCK_MODULES = YES in CONFIG.IN - it's down near the bottom. The Unlock utility from the LxLite package is required.

Notes for translators
As told before, we need different "sandboxes" for the different XWP releases. The following one, for example, is the folder structure I use for the Italian translation of XWP:

\Netlabs_CVS \Netlabs_CVS\xwphelpers \Netlabs_CVS\xworkplace_branch \Netlabs_CVS\xworkplace_105 \Netlabs_CVS\xworkplace_106

(to build the NLS package, I don't need "sandboxes" of xwphelpers repository)