[rec.games.hack] NetHack v3.0 Makefile for TurboC MAKE v2.0

chris@iesd.auc.dk (Christian J. Callsen) (09/16/89)

Greetings, GAMERS !

Here I i have posted MY makefile for TurboC v2.0's MAKE.
It is the ordinary makefile supplied with NetHack - with
some minor enchantments !

There are 3 files in this package :

Makefile
nethack.lnk
lev_comp.lnk

Each of them are surrounded by a 

   -- Feed ...

   -- End of

I thought of putting an 'X' in front of every line,
but i could not figure out how to do it..

I hope you are able to compile with this makefile. I encountered
some small errors. A useful hint is, that if you get error messages
about some redeclaration, try and find out which function is concerned,
and comment its line out in the file 'include/extern.c'

IMPORTANT :-)

  Please use :   make -n all > makebat.bat

  , remove the 3 first lines, and then run the batch file. 
  Make gives me some trouble with the embedded DOS commands.

OK, now for the files...

-chris ..

PS: Send any comments to   chris@iesd.auc.dk   or
			   !mcvax!dkuug!auc!iesd!chris
    -chris

Makefile, Here We Go :::
-- Feed this through your..Munch, Munch, gulp burp (sorry) --
#	SCCS Id: @(#)Makefile.tcc	3.0	89/07/07
#	PC NetHack makefile for Turbo C 2.0
#	Perpetrator: Mike Threepoint, 890707
#
#	Some local ENCHANTMENTS made to 'make' it work with Turbo MAKE 2.0
#	Enchanter (NOT wiz) : Chris J Callsen (chris@iesd.auc.dk)
#
# NOTE THIS : NOTE THIS : I (chris) recommend that you start 'make' with
#			  make -n all > makebat.bat
#			  And then execute the batchfile instead !!
#-chris

# Unfortunately, Turbo C's large model has a limit of 64K total global data
MODEL=h
# Wizardly defines
# WIZARD	= -DDEBUG

# Directories (makedefs hardcodes these, don't change them)
INCL	= ..\include
AUX	= ..\auxil
SRC	= ..\src

# Note : We need some of Turbo C's include & lib files, so we provide
# 	 the path to TC. To improve speed, you may place tcc on a small
#	 ramdisk (dont use conventional memory below 640K though..)
#-chris
TURBOC	= e:\turbo\c
TCC	=

# Note : We know where Turbo C is now, so setup the real variables ..
#	 Make sure that ch.lib,c0h.obj and termlib.lib are in $(LIB) !!
#-chris
LIB	= $(TURBOC)\lib
INCLUDE = $(TURBOC)\include
C0	= $(LIB)\c0$(MODEL).obj

# Signed chars, optimize jumps, ANSI compatibility, no register optimizaton,
# no stack frame.
# Note: There is a bug in Turbo C 2.0's -Z.  If you have weird problems,
#	use -Z-.
#
# Note : I use -1 switch ( generates 186/286 code ). Do not worry, "link"
#        can handle it !!. You might want to remove the switch, though..
#-chris
CFLAGS	= -m$(MODEL) -I$(INCL) $(WIZARD) -1 -K- -O -A -Z -k- -w-pia -w-pro
CC	= $(TCC)tcc -I$(INCLUDE)

TARG	= pc

# Optional PC NetHack features (see pcconf.h).  Set to nothing if not used.
#
#	Fish's TERMLIB termcap library.
#
# Note : We stay put with F.Fish's TERMLIB - its good and its in nethack.lnk
#	 If you do no want it, please remove it from nethack.lnk  !!!
#-chris
TERMLIB = $(LIB)\termlib.lib

#
# 	High-quality BSD random number generation routines.
#
# Note : We also stay put with BSD random generator (also in nethack.lnk)
#	 If you do no want it, please remove it from nethack.lnk  !!!
#-chris
RANDOM = o\random.obj

# No need to link in the floating point library
LIBS	= $(LIB)\c$(MODEL)

#
# There is a bug in TLINK and huge model:
#
# TLINK 1.0 treated huge like large, with 64K data limit.
# TLINK 1.1 fixed that, but chokes over huge data segments anyway.
# TLINK 2.0 links and is smaller than LINK /EXEPACK, but for some
# reason with too many objects it produces a file that freaks out
# and hangs the system.
#
# Also note:
#
# Using /EXEPACK with LINK will greatly reduce the size of the
# executable (about 50K), it will also greatly increase the memory
# required to load it (about 20K).
#
TLINK	= tlink
LINK	= link

LFLAGS	= /noi
TLFLAGS = /cxni

# The game name
GAME= nethack

# The game directory
GAMEDIR = \games\$(GAME)

# The game filename
GAMEFILE = $(GAMEDIR)\$(GAME).exe

# object files for makedefs
MAKEOBJS = o\makedefs.obj o\monst.obj o\objects.obj

# object files for special levels compiler
SPLEVOBJS = o\lev_comp.obj o\lev_lex.obj o\lev_main.obj o\monst.obj o\objects.obj

# alloc.c and panic.c are unnecessary for PC NetHack's makedefs.exe
# and lev_comp.exe.

# nothing below this line should have to be changed
#
# other things that have to be reconfigured are in config.h,
# {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h

VOBJS = o\main.obj o\tty.obj o\unix.obj o\hack.obj \
	o\pri.obj o\prisym.obj o\topl.obj o\cmd.obj o\getline.obj \
	o\decl.obj o\monst.obj o\objects.obj o\timeout.obj $(RANDOM) \
	o\mkobj.obj o\makemon.obj o\mon.obj o\monmove.obj o\mondata.obj
VOBJM = o\apply.obj o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj \
	o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj \
	o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj \
	o\exper.obj o\fountain.obj o\invent.obj o\lock.obj \
	o\mcastu.obj o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj \
	o\music.obj o\objnam.obj o\options.obj o\pager.obj o\pickup.obj \
	o\polyself.obj o\potion.obj o\pray.obj o\priest.obj o\read.obj \
	o\restore.obj o\rip.obj o\rnd.obj o\rumors.obj o\save.obj \
	o\search.obj o\shk.obj o\sit.obj o\sounds.obj o\spell.obj \
	o\steal.obj o\termcap.obj o\track.obj o\trap.obj o\uhitm.obj \
	o\vault.obj o\weapon.obj o\were.obj o\wield.obj o\wizard.obj \
	o\worm.obj o\worn.obj o\write.obj o\zap.obj
VOBJL = o\mklev.obj o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj \
	o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj
VOBJ  = $(VOBJS) $(VOBJM) $(VOBJL)
HOBJ  = $(VOBJ) o\version.obj

#
# Weird order, isn't it?  It puts the most often used utility routines
# and the main loop at the start of the file, and the routines that are
# only called at the beginning and end of a game come last.  This
# should improve speed and make overlays work more efficiently.
#
# alloc.c, ioctl.c, and mail.c are unnecessary for PC NetHack.

PCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h
GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
TRAP_H	   = $(INCL)\trap.h
#PCCONF_H  = $(INCL)\system.h $(INCL)\extern.h
PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
YOU_H	   = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
	     $(INCL)\monst.h $(INCL)\youprop.h
#DECL_H	   = $(INCL)\decl.h
DECL_H	   = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h \
	     $(INCL)\pm.h
HACK_H	   = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
	     $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
	     $(INCL)\rm.h
# extern.h, decl.h, and system.h contain only external declarations.
#
# If anything in them changes, all other files involving the changed routines
# should be changed to reflect them.  Including them in their respective
# dependency lists will make sure everything is correct, but causes frequent
# near-total recompiles.  By leaving them out, we allow quicker testing of
# changes, but we presume the wiz knows to be circumspect.
#
# Note : The linker statement should have read like this :
# 	 $(LINK) $(C0) $(HOBJ),$@ /seg:1024,,$(LIBS) $(TERMLIB) $(LFLAGS)
# 	 but as DOS cannot handle command-line-lengths > 128 bytes, we have to
#	 make a nethack.lnk-file. This also goes for lev_comp (lev_comp.exe) !!
#-chris

# The main target
$(GAMEFILE): o $(HOBJ) Makefile
	if exist $@ del $@
	$(LINK) $(LFLAGS) /seg:1024 @nethack.lnk
	echo

$(GAME): $(GAMEFILE)

# Note : Turbo MAKE 2.0 gets stuck on the .c.obj-rule, so we manually have 
# 	 to include it for each and every line of depency (grrr.. :^# )
#
# 	 Turbo MAKE 2.0 does not recognize $@ (I do not either :^), so we 
#	 have to use $&.<ext> instead ...
#-chris

.c.obj:
	$(CC) $(CFLAGS) -c -no $&.c

all:	o $(GAME) auxil
	@echo Done.

o:
	mkdir o

makedefs.exe:  $(MAKEOBJS)
	@$(TLINK) $(TLFLAGS) $(C0) $(MAKEOBJS),makedefs.exe,,$(LIBS);

o\makedefs.obj:  $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
	$(CC) $(CFLAGS) -c -no $&.c

# See argument above $(GAMEFILE) why we cannot have this original line :
#	@$(TLINK) $(TLFLAGS) $(C0) $(SPLEVOBJS),lev_comp.exe,,$(LIBS);
#-chris

lev_comp.exe:  $(SPLEVOBJS)
	@$(TLINK) $(TLFLAGS) @lev_comp.lnk

# Note : Somehow Turbo MAKE cannot handle IDENTICAL redefinition (or any
#	 redefinition at all), so we comment out this line ..
#-chris

# o\lev_comp.obj:  $(HACK_H) $(INCL)\sp_lev.h
o\lev_lex.obj:  $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) -c -no $&.c
o\lev_main.obj:  $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) -c -no $&.c

# If you have yacc or lex programs, and make any changes,
# add some .y.c and .l.c rules to your Make.ini.

lev_comp.c:  lev_comp.y
	$(CC) $(CFLAGS) -c -no $&.c
lev_lex.c:  lev_comp.l
	$(CC) $(CFLAGS) -c -no $&.c

#
#	The following include files depend on makedefs to be created.
#
#	date.h should be remade any time any of the source or include code
#	is modified.
#
$(INCL)\date.h: 	$(VOBJ) makedefs.exe
	.\makedefs -v

$(INCL)\trap.h: 	makedefs.exe
	.\makedefs -t

$(INCL)\onames.h:	makedefs.exe
	.\makedefs -o

$(INCL)\pm.h:		makedefs.exe
	.\makedefs -p

data:	$(AUX)\data.base makedefs.exe
	.\makedefs -d

rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
	.\makedefs -r

#
#	The following programs vary depending on what OS you are using.
#
o\main.obj:	$(HACK_H) $(TARG)main.c
	$(CC) $(CFLAGS) -oo\$&.obj -c $(TARG)main.c

o\tty.obj:	$(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
	$(CC) $(CFLAGS) -oo\$&.obj -c $(TARG)tty.c

o\unix.obj:	$(HACK_H) $(TARG)unix.c
	$(CC) $(CFLAGS) -oo\$&.obj -c $(TARG)unix.c

#
# Secondary targets
#

auxil:	spec_levs
	cd $(AUX)
	xcopy *. $(GAMEDIR)

spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des lev_comp.exe
	lev_comp $(AUX)\castle.des
	lev_comp $(AUX)\endgame.des
	lev_comp $(AUX)\tower.des
	cd $(AUX)
	xcopy castle $(GAMEDIR)
	del castle
	xcopy endgame $(GAMEDIR)
	del endgame
	xcopy tower? $(GAMEDIR)
	del tower?

clean:
	del o\*.obj
	rmdir o

spotless: clean
	cd $(INCL)
	del date.h
	del onames.h
	del pm.h
	touch date.h onames.h pm.h
	cd $(AUX)
	del data
	del rumors
	cd $(SRC)
	del makedefs.exe
	if exist lev_comp.exe del lev_comp.exe

#
# Other dependencies
#

# GO AHEAD, DELETE THIS LINE

o\alloc.obj:  $(CONFIG_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\apply.obj:  $(HACK_H) $(INCL)\edog.h
	$(CC) $(CFLAGS) -c -no $&.c
o\artifact.obj:  $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\attrib.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\bones.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\cmd.obj:  $(HACK_H) $(INCL)\func_tab.h
	$(CC) $(CFLAGS) -c -no $&.c
o\dbridge.obj: $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\decl.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\demon.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\do.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\do_name.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\do_wear.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\dog.obj:  $(HACK_H) $(INCL)\edog.h
	$(CC) $(CFLAGS) -c -no $&.c
o\dogmove.obj:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
	$(CC) $(CFLAGS) -c -no $&.c
o\dokick.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\dothrow.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\eat.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\end.obj:  $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) -c -no $&.c
o\engrave.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\exper.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\extralev.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\fountain.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\getline.obj:  $(HACK_H) $(INCL)\func_tab.h
	$(CC) $(CFLAGS) -c -no $&.c
o\hack.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\invent.obj:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) -c -no $&.c
o\ioctl.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\lev_comp.obj:  $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) -c -no $&.c
o\lock.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\makemon.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mail.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mcastu.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mhitm.obj:  $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\mhitu.obj:  $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
	$(CC) $(CFLAGS) -c -no $&.c
o\mklev.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mkmaze.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mkobj.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mkroom.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\mon.obj:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\mondata.obj:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
	$(CC) $(CFLAGS) -c -no $&.c
o\monmove.obj:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\monst.obj:  $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h
	$(CC) $(CFLAGS) -c -no $&.c
o\msdos.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -A- -oo\$&.obj $&.c
# set ANSI only off; many MS-DOS specific things.
o\mthrowu.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\music.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\o_init.obj:  $(HACK_H) $(INCL)\onames.h
	$(CC) $(CFLAGS) -c -no $&.c
o\objects.obj:	$(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
	$(CC) $(CFLAGS) -c -no $&.c
o\objnam.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\options.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\pager.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\panic.obj:  $(CONFIG_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\pickup.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\polyself.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\potion.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\pray.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\pri.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\priest.obj:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
	$(CC) $(CFLAGS) -c -no $&.c
o\prisym.obj:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) -c -no $&.c
o\random.obj:
	$(CC) $(CFLAGS) -c -no $&.c
o\read.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\restore.obj:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) -c -no $&.c
o\rip.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -d- -c -oo\$&.obj $&.c
# must not merge strings, or the tombstone lines will overlap.
o\rnd.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\rumors.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\save.obj:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
	$(CC) $(CFLAGS) -c -no $&.c
o\search.obj:  $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\shk.obj:  $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) -c -no $&.c
o\shknam.obj:  $(HACK_H) $(INCL)\eshk.h
	$(CC) $(CFLAGS) -c -no $&.c
o\sit.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\sounds.obj:  $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
	$(CC) $(CFLAGS) -c -no $&.c
o\sp_lev.obj:  $(HACK_H) $(INCL)\sp_lev.h
	$(CC) $(CFLAGS) -c -no $&.c
o\spell.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\steal.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\termcap.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\timeout.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\topl.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\topten.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\track.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\trap.obj:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
	$(CC) $(CFLAGS) -c -no $&.c
o\u_init.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\uhitm.obj:  $(HACK_H) $(INCL)\artifact.h
	$(CC) $(CFLAGS) -c -no $&.c
o\vault.obj:  $(HACK_H) $(INCL)\vault.h
	$(CC) $(CFLAGS) -c -no $&.c
o\version.obj:  $(HACK_H) $(INCL)\date.h
	$(CC) $(CFLAGS) -c -no $&.c
o\weapon.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\were.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\wield.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\wizard.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\worm.obj:  $(HACK_H) $(INCL)\wseg.h
	$(CC) $(CFLAGS) -c -no $&.c
o\worn.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\write.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
o\zap.obj:  $(HACK_H)
	$(CC) $(CFLAGS) -c -no $&.c
-- End of Makefile --


nethack.lnk ::

-- Feed this though ..Munch, gulp, burp ! --
e:\turbo\c\lib\c0h.obj o\main.obj o\tty.obj o\unix.obj +
o\hack.obj  o\pri.obj o\prisym.obj o\topl.obj o\cmd.obj+
o\getline.obj  o\decl.obj o\monst.obj o\objects.obj +
o\timeout.obj o\random.obj  o\mkobj.obj o\makemon.obj+ 
o\mon.obj o\monmove.obj o\mondata.obj o\apply.obj +
o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj  +
o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj  +
o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj  +
o\exper.obj o\fountain.obj o\invent.obj o\lock.obj  +
o\mcastu.obj o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj  +
o\music.obj o\objnam.obj o\options.obj o\pager.obj o\pickup.obj  +
o\polyself.obj o\potion.obj o\pray.obj o\priest.obj o\read.obj  +
o\restore.obj o\rip.obj o\rnd.obj o\rumors.obj o\save.obj  +
o\search.obj o\shk.obj o\sit.obj o\sounds.obj o\spell.obj  +
o\steal.obj o\termcap.obj o\track.obj o\trap.obj o\uhitm.obj  +
o\vault.obj o\weapon.obj o\were.obj o\wield.obj o\wizard.obj  +
o\worm.obj o\worn.obj o\write.obj o\zap.obj o\mklev.obj +
o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj  +
o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj +
o\version.obj
nethack.exe

e:\turbo\c\lib\ch e:\turbo\c\lib\termlib.lib
-- End of nethack.lnk --


lev_comp.lnk ::

-- Feed this ..Munch,Munch,Munch --
e:\turbo\c\lib\c0h.obj +
o\lev_comp.obj o\lev_lex.obj o\lev_main.obj o\monst.obj o\objects.obj
lev_comp.exe

e:\turbo\c\lib\ch.lib
-- End of lev_comp.lnk --

OK, that's all folks. Sure hope you enjoy NetHack 3.0 as much as I.
   All greetings to NetHack Programmers : Wow !!!

-- 
    _____________    : Med Venlig Hilsen & Greetings From
   / ennyn durin \   :
  /  aran moria   \  :	Chris J. Callsen	[ chris@iesd.dk ]
 /      . . .      \ :