1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
|
=========================================================================
Instructions for compiling and installing NetHack 3.4 on an OS/2 system
=========================================================================
Timo Hakulinen (Last revision: 29 October 1996)
Revised for Slash'EM 0.0.7 by Pekka Rousu (update: 2 September 2003)
---------------
Quick configure
---------------
1. Run "setup.cmd" located in sys\os2.
2. Run "dmake" to compile the game.
--------------------
Detailed explanation
--------------------
0. Read this entire file before starting, and come back to the Notes
below if you have any problems.
1. Make sure all the Slash'EM files are in the appropriate directory
structure. You should have a top directory (e.g. slashem, or
whatever you like) with subdirectories dat, doc, include, src, util,
sys\share, sys\os2, and win\tty. You may have other subdirectories
under sys and win, but they will not affect compilation for an OS/2
system. If you do not follow this structure, the makefile will not
function properly. The .c files for the main program belong in src,
those for utility programs in util, and OS/2-specific ones in
sys\os2. All the .h files belong in include, the documentation in
doc, and assorted data files in dat. There are also some necessary
files in sys\share (pc*.c, random.c, dgn_*.*, lev_*.*). A more
detailed explanation of the directory structure is found in file
Files, which should be in the top directory.
2. The makefile for OS/2, Makefile.os2, is found in directory sys\os2.
Copy it to directory src and rename it Makefile. From now on,
Makefile.os2 will be referred to as "the makefile" in this document.
The makefile supports the following make utilities:
DMAKE a public domain make for DOS and OS/2 by Dennis Vadura
DMAKE is available at major archive sites. The following compilers
are supported:
compiler: runs in: compiles for:
emx 0.9d with GCC 2.8.1 or 3.2.1 OS/2 2.x, Warp OS/2 2.x, Warp
If you're using some other compiler than one listed above, you will
have to adapt the makefile to your needs. In particular, change the
CC, CFLAGS, LINK, and LFLAGS macros to your C compiler's and
linker's liking. See the makefile for more information.
If you are going to be constructing Fred Fish's termcap library,
you'll need Makefile.lib in sys\share (see note 3).
3. Go to the include subdirectory. First edit config.h according to
the comments to match your desired set of features. If your compiler
is ANSI compliant (like practically all OS/2 compilers are), it's
probable that nothing else needs to be configured in config.h.
Next look at os2conf.h. This file shouldn't need much changing. If
you want to use the hardcoded OS/2 system definitions in def_os2.h
instead of the compiler's standard headers, comment out
OS2_USESYSHEADERS. This may become necessary if you are using a
compiler which doesn't come with proper system headers by default.
In this case you may have to edit the definitions there, because
every compiler has its own way of declaring the necessary system
functions and data structures. In general you should prefer the
compiler's offerings, if possible.
If you are using a 32 bit compiler other than GCC emx or C Set/2 in
OS/2 2.x, force OS2_32BITAPI to be defined. Otherwise it is defined
only for the above mentioned compilers.
If you are not going to include random.c, because you are using the
random number generator provided by your compiler, you will need to
comment out RANDOM.
If you want to muck with different termcap settings, uncomment
TERMLIB to enable the use of termcap routines (see note 3). This is
not necessary to create a fully functional game, however.
4. If you are using another compiler than MSC, GCC, or IBM C Set/2, you
may want to look through system.h in the include directory. This
file matches the return and parameter types for system calls and
library routines with various flavors of compilers and operating
systems. Leaving this file alone is unlikely to cause problems, but
if you get compile errors with any functions in the standard
library, it's worth checking the declarations there.
5. If you want to change the high score list behavior, examine the top
of topten.c, in the src directory. You may want to change the
definitions of PERSMAX, POINTSMIN, and ENTRYMAX.
6. Go to the src directory and edit the top of the makefile. Be sure
that the directory you want the game installed to actually exists.
If you want to have X11 support or debug Slash'EM, you need to
change the format to "a.out" and uncomment "with_x11 = yes" and/or
"debug = yes" from the beginning of the makefile.
You'll need nroff and/or TeX/LaTeX to do the files in doc. If you
don't have either of these, you can skip it.
If you elected not to use the high quality BSD random number
routines by commenting out RANDOM in os2conf.h, comment out (or set
equal to nothing) the RANDOM macro in the makefile.
If you elected to use Fred Fish's termcap library (bundled in as
termcap.uu in directory sys\share), you will have to generate
termlib.lib from those sources by typing "make -f makefile.lib
termlib.lib". You must set the TERMLIB option in the makefile to
link the resulting termlib.lib into the game.
If you are recompiling after patching your sources, or if you got
your files from somewhere other than the official distribution,
"touch makedefs.c" to ensure that certain files (onames.h and pm.h)
are remade, lest potentially troublesome time stamps fool make.
If you have lex and yacc programs, or the equivalent flex and bison
programs, you can set up the makefile to generate the appropriate .h
and .c files from their .l and .y counterparts whenever you
recompile. This is done by changing the do_yacc and do_lex targets
in the makefile to depend on targets yacc_act and lex_act instead of
yacc_cpy and lex_cpy. Otherwise the makefile will copy pre-generated
yacc and lex output files dgn_*.* and lev_*.* from directory
sys\share to util and include.
Now, enter "dmake all", and take a siesta; your computer will be
occupied for a fair amount of time. If all goes well, you will get
an executable.
7. All the support data files should have been copied to the game
directory by the make process. Here is the complete list in
alphabetical order of all the files that should have gotten there
during a full build:
Guidebook.txt history.txt LICENSE nhshare nhushare
readme.txt recover.exe slamfaq.txt slashem.cmd slashem.cnf
slashem.exe
It's 11 files for a full featured Slash'EM 0.0.7. If any of the
files are missing, try to rerun make. If that doesn't help, you'll
have to try to decipher the makefile to find out how to manually
create the missing files. These kinds of troubles shouldn't happen
except for two reasons: You've run out of disk space while compiling
or your make utility doesn't understand the makefile properly for
some reason. In either case, you should get some warnings from the
make, though.
If you have old record, logfile, or news files in the game
directory, they are not overwritten. Of course, old records from
Slash'EM 0.0.6 are not worth keeping with 0.0.7, since these games
are really quite different.
Edit file slashem.cnf in the game directory to reflect your
particular setup and personal preferences, following the comments
there. More info about settable options can be found in the file
opthelp and the guidebook.
If you compiled in the TERMLIB feature, also move the
sys\share\termcap file to your game directory.
8. If you'll be running Slash'EM from a different subdirectory, you
will want to "set HACKDIR=c:\games\slashem" (or whatever directory
you want to use). Add it to your config.sys, if you'll be playing
often.
You can also create a special Slash'EM entry in your Presentation
Manager / Workplace Shell desktop. This will use the included
Slash'EM icon. The following is a sample program description for
OS/2 2.0 desktop:
Program title: Slash'EM 0.0.7
Path and file name: c:\games\slashem\slashem.cmd
Parameters:
Working directory: c:\games\slashem
Program type: OS/2 Full screen
Naturally you must fill in your own game directory and parameters if
you want to set any. The program type can be either OS/2 Full
screen or OS/2 Windowed. Note that you should set the executable
path to use the .cmd file generated by the makefile. This file
generates an extra pause after the program exit, because otherwise
you wouldn't get to see the high score list upon quitting due to
PM/WPS automatically closing the program window. When starting
Slash'EM normally from OS/2 command prompt, the command processor
starts slashem.exe instead, so no extra pause is generated.
9. If you want to clear up the temporary files and objects created by
the compilation process, you may issue "make spotless". This will
return your source tree to near-distribution condition. Naturally,
it will not affect your newly built game files in any way.
10. Play Slash'EM. If it works, you're done!
-----
Notes
-----
1) Save-files and bones-files from previous versions will not work with
Slash'EM 0.0.7. Don't bother trying to keep them.
2) To install an update of Slash'EM after changing something, enter
"dmake" from the src directory. If you add, delete, or reorder
monsters or objects, or you change the format of saved level files,
delete any save and bones files. (Trying to use such files
sometimes produces amusing confusions on the game's part, but
usually crashes.)
3) The file sys\share\termcap.uu is the fixed version of the Fred Fish
termcap library. You will need to run a uudecode utility on it to
generate the file termcap.zip. termcap.zip contains several files
of termcap routines. Using them with Slash'EM involves very little
knowledge of the UNIX concept of a termcap database; mostly you need
to know enough to set a TERM environment variable. You can unzip
termcap.zip in the sys\share directory, but if you are going to use
it, it is probably best to unzip a copy in the src directory. That
way you will not miss copying any files over. Wherever you unzip
it, get rid of the included makefile since a better version has been
provided as Makefile.lib. After creating the termcap library file
termlib.lib, copy it to src before compiling the game main source.
|