summaryrefslogtreecommitdiffstats
path: root/games/nethack
diff options
context:
space:
mode:
author Wade Nelson2010-05-11 22:53:45 +0200
committer David Somero2010-05-11 22:53:45 +0200
commit312fe0137e058312d5810d5d918ef6d9b5d2857d (patch)
treee41a32b0c6d8d2991c17c2cb3c80e989ec59fecb /games/nethack
parent0d24e30cd5b24b53ec504e0a9f1883fc4a79dc9e (diff)
downloadslackbuilds-312fe0137e058312d5810d5d918ef6d9b5d2857d.tar.gz
games/nethack: Added to 12.1 repository
Diffstat (limited to 'games/nethack')
-rw-r--r--games/nethack/README15
-rw-r--r--games/nethack/doinst.sh4
-rw-r--r--games/nethack/files/Makefile-doc.slack97
-rw-r--r--games/nethack/files/Makefile.src.slack816
-rw-r--r--games/nethack/files/Makefile.top.slack266
-rw-r--r--games/nethack/files/Makefile.utl.slack403
-rw-r--r--games/nethack/files/README18
-rw-r--r--games/nethack/files/config.h.slack358
-rw-r--r--games/nethack/files/nethack-qt3
-rw-r--r--games/nethack/files/nethack-qt.desktop10
-rw-r--r--games/nethack/files/nethack-x113
-rw-r--r--games/nethack/files/nethack-x11.desktop10
-rw-r--r--games/nethack/files/nethack.desktop10
-rw-r--r--games/nethack/files/unixconf.h.slack351
-rw-r--r--games/nethack/nethack.SlackBuild88
-rw-r--r--games/nethack/nethack.info8
-rw-r--r--games/nethack/patches/Makefile_doc.patch28
-rw-r--r--games/nethack/patches/Makefile_src.patch83
-rw-r--r--games/nethack/patches/Makefile_top.patch140
-rw-r--r--games/nethack/patches/Makefile_utl.patch51
-rw-r--r--games/nethack/patches/config_h.patch74
-rw-r--r--games/nethack/patches/unixconf_h.patch43
-rw-r--r--games/nethack/slack-desc19
23 files changed, 2898 insertions, 0 deletions
diff --git a/games/nethack/README b/games/nethack/README
new file mode 100644
index 0000000000..01d17e566d
--- /dev/null
+++ b/games/nethack/README
@@ -0,0 +1,15 @@
+NetHack is a rogue-like game.
+
+This build of NetHack provides the standard console interface as well as the
+X11 and Qt interfaces.
+
+The X11 and Qt interfaces as well as the graphical tileset can be enabled via
+~/.nethackrc and/or ~/.Xdefaults. Menu entries are also provided for desktop
+enironments that support XDG-style menus.
+
+In order to save games, have scores listed in the top scores, and write to the
+nethack logfile, your user must be in the 'games' group.
+
+Additional documentation is provided at /usr/doc/nethack-3.4.3 and via the
+nethack manpage.
+
diff --git a/games/nethack/doinst.sh b/games/nethack/doinst.sh
new file mode 100644
index 0000000000..65fd352418
--- /dev/null
+++ b/games/nethack/doinst.sh
@@ -0,0 +1,4 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database usr/share/applications >/dev/null 2>&1
+fi
+
diff --git a/games/nethack/files/Makefile-doc.slack b/games/nethack/files/Makefile-doc.slack
new file mode 100644
index 0000000000..03b6aabd56
--- /dev/null
+++ b/games/nethack/files/Makefile-doc.slack
@@ -0,0 +1,97 @@
+# NetHack Makefile.
+# SCCS Id: @(#)Makefile.doc 3.4 1996/03/23
+
+# for Atari
+# SHELL=E:/GEMINI2/MUPFEL.TTP
+
+GUIDEBOOK = Guidebook # regular ASCII file
+#GUIDEBOOK = Guidebook.ps # PostScript file
+#GUIDEBOOK = Guidebook.dvi # TeX device-independent file
+
+# Some versions of col need -x to keep them from converting spaces to tabs;
+# some versions of col don't do the conversion by default and don't
+# recognize the option. Sigh.
+COLCMD = col -bx
+#COLCMD = col -b
+
+# The command to use to generate a PostScript file
+# PSCMD = ditroff | psdit
+PSCMD = groff
+
+# Use the "cat" GUIDECMD if nroff and/or tbl and/or col are not installed
+# Not appropriate for creating Guidebook.txt.
+# GUIDECMD = cat Guidebook.txt
+# The following works better with groff-1.18, eg on Linux
+# GUIDECMD = tbl tmac.n Guidebook.mn | nroff -c -Tascii | $(COLCMD)
+GUIDECMD = tbl tmac.n Guidebook.mn | nroff | $(COLCMD)
+
+# the basic guidebook
+Guidebook: Guidebook.mn
+ $(GUIDECMD) > Guidebook
+
+# Fancier output for those with ditroff, psdit and a PostScript printer.
+Guidebook.ps: Guidebook.mn
+ tbl tmac.n Guidebook.mn | $(PSCMD) > Guidebook.ps
+
+# Guidebook.tex is the same as Guidebook.mn but formatted with LaTeX.
+# - The invocation command for LaTeX may vary in different installations.
+# - To print Guidebook.dvi you need to use a suitable dvi-driver.
+Guidebook.dvi: Guidebook.tex
+ latex Guidebook.tex
+
+
+GAME = nethack
+MANDIR = /usr/man/man6
+MANEXT = 6
+
+# manual installation for most BSD-style systems
+MANDIRCREATE = mkdir -p $(DESTDIR)/$(MANDIR)
+GAMEMANCREATE = cp nethack.6
+LEVMANCREATE = cp lev_comp.6
+DGNMANCREATE = cp dgn_comp.6
+RCVRMANCREATE = cp recover.6
+DLBMANCREATE = cp dlb.6
+# manual installation for most SYSV-style systems
+# GAMEMANCREATE = nroff -man nethack.6 >
+# LEVMANCREATE = nroff -man lev_comp.6 >
+# DGNMANCREATE = nroff -man dgn_comp.6 >
+# RCVRMANCREATE = nroff -man recover.6 >
+# DLBMANCREATE = nroff -man dlb.6 >
+
+manpages:
+ -$(MANDIRCREATE)
+ -$(GAMEMANCREATE) $(DESTDIR)/$(MANDIR)/$(GAME).$(MANEXT)
+ -$(LEVMANCREATE) $(DESTDIR)/$(MANDIR)/lev_comp.$(MANEXT)
+ -$(DGNMANCREATE) $(DESTDIR)/$(MANDIR)/dgn_comp.$(MANEXT)
+ -$(RCVRMANCREATE) $(DESTDIR)/$(MANDIR)/recover.$(MANEXT)
+ -$(DLBMANCREATE) $(DESTDIR)/$(MANDIR)/dlb.$(MANEXT)
+
+# manual creation for distribution
+DISTRIB = Guidebook.txt nethack.txt lev_comp.txt dgn_comp.txt recover.txt dlb.txt
+
+distrib: $(DISTRIB)
+ @echo "Plain text documentation is up to date."
+
+Guidebook.txt : Guidebook.mn tmac.n
+ $(GUIDECMD) > Guidebook.txt
+nethack.txt : nethack.6
+ nroff -man nethack.6 | $(COLCMD) > nethack.txt
+lev_comp.txt : lev_comp.6
+ nroff -man lev_comp.6 | $(COLCMD) > lev_comp.txt
+dgn_comp.txt : dgn_comp.6
+ nroff -man dgn_comp.6 | $(COLCMD) > dgn_comp.txt
+recover.txt : recover.6
+ nroff -man recover.6 | $(COLCMD) > recover.txt
+dlb.txt : dlb.6
+ nroff -man dlb.6 | $(COLCMD) > dlb.txt
+
+
+clean:
+ -rm -f Guidebook.aux Guidebook.log
+
+spotless: clean
+ -rm -f Guidebook Guidebook.ps Guidebook.dvi
+
+maintainer-clean: spotless
+ -rm -f $(DISTRIB)
+# -rm -f Makefile
diff --git a/games/nethack/files/Makefile.src.slack b/games/nethack/files/Makefile.src.slack
new file mode 100644
index 0000000000..01a46575ee
--- /dev/null
+++ b/games/nethack/files/Makefile.src.slack
@@ -0,0 +1,816 @@
+# NetHack Makefile.
+# SCCS Id: @(#)Makefile.src 3.4 2002/03/02
+
+# newer makes predefine $(MAKE) to 'make' and do smarter processing of
+# recursive make calls if $(MAKE) is used
+# these makes allow $(MAKE) to be overridden by the environment if someone
+# wants to (or has to) use something other than the standard make, so we do
+# not want to unconditionally set $(MAKE) here
+#
+# unfortunately, some older makes do not predefine $(MAKE); if you have one of
+# these, uncomment the following line
+# (you will know that you have one if you get complaints about being unable
+# to find 'makedefs')
+# MAKE = make
+
+# This makefile replaces the previous Makefile.unix, Makefile.xenix,
+# Makefile.3B2, Makefile.att, and Makefile.tos.
+# Set SYSTEM to one of:
+# 'Sysunix' -- generic UNIX
+# 'Sys3B2' -- AT&T 3B2, 3B5, etc.
+# 'Sysatt' -- AT&T UNIXPC, 7300, 3B1
+# 'SysV-AT' -- Microport 286 UNIX (put -DDUMB in CFLAGS)
+# 'Systos' -- Atari
+# 'SysBe' -- BeOS
+SYSTEM = Sysunix
+
+#
+# Make sure that your bourne shell is specified here, as you have to spawn
+# some of the commands (eg. depend) in bourne shell for them to work.
+#
+# For Systos users compiling on the ST, you'll either need a bourne shell
+# clone or you'll need to do make depend, etc. by hand. In either case,
+# the line below probably needs changing
+SHELL=/bin/sh
+# for Atari
+# SHELL=E:/GEMINI2/MUPFEL.TTP
+
+# Normally, the C compiler driver is used for linking:
+LINK=$(CC)
+
+# Pick the SYSSRC and SYSOBJ lines corresponding to your desired operating
+# system.
+#
+# for UNIX systems
+SYSSRC = ../sys/share/ioctl.c ../sys/share/unixtty.c ../sys/unix/unixmain.c \
+ ../sys/unix/unixunix.c ../sys/unix/unixres.c
+SYSOBJ = ioctl.o unixmain.o unixtty.o unixunix.o unixres.o
+#
+# for Systos
+# SYSSRC = ../sys/atari/tos.c ../sys/share/pcmain.c ../sys/share/pcsys.c \
+# ../sys/share/pctty.c ../sys/share/pcunix.c
+# SYSOBJ = tos.o pcmain.o pcsys.o pctty.o pcunix.o
+#
+# for BeOS
+#SYSSRC = ../sys/be/bemain.c ../sys/share/unixtty.c ../sys/share/ioctl.c
+#SYSOBJ = bemain.o unixtty.o ioctl.o
+
+
+# if you are using gcc as your compiler:
+# uncomment the CC definition below if it's not in your environment
+# if you get setcgtty() warnings during execution, you are feeding gcc
+# a non-ANSI <sys/ioctl.h> -- either run fixincludes on it or use
+# -traditional in CFLAGS
+CC = gcc
+#
+# For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following:
+#
+# CC = gcc -ansi -D_BULL_SOURCE -D_XOPEN_SOURCE -D_POSIX_SOURCE
+#
+# If you are using GCC 2.2.2 or higher on a DPX/2, just use:
+#
+# CC = gcc -ansi
+#
+# For HP/UX 10.20 with GCC:
+# CC = gcc -D_POSIX_SOURCE
+#
+# For cross-compiling, eg. with gcc on Linux (see also CXX further down):
+# CC = arm-linux-gcc
+#
+#
+# if you're debugging and want gcc to check as much as possible, use:
+# CC = gcc -W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN
+
+# flags may have to be changed as required
+# flags for 286 Xenix:
+# CFLAGS = -Ml2t16 -O -LARGE -I../include
+# LFLAGS = -Ml -F 4000 -SEG 512
+
+# flags for 286 Microport SysV-AT
+# CFLAGS = -DDUMB -Ml -I../include
+# LFLAGS = -Ml
+
+# flags for Atari gcc (3.2.1)
+# CFLAGS = -O -I../include
+# LFLAGS = -s
+# flags for Atari gcc (3.3)
+# CFLAGS = -mshort -O2 -fomit-frame-pointer -I../include
+# LFLAGS = -mshort -s
+
+# flags for AIX 3.1 cc on IBM RS/6000 to define
+# a suitable subset of standard libraries
+# (note that there is more info regarding the "-qchars=signed"
+# switch in file Install.unx note 8)
+# CFLAGS = -D_NO_PROTO -D_XOPEN_SOURCE -O -I../include -qchars=signed
+#
+# Some of our subroutines are complex enough that this is required for full
+# optimization under AIX 3.2 (I don't know about 3.1).
+#
+# CFLAGS = -D_NO_PROTO -D_XOPEN_SOURCE -D_ALL_SOURCE -O -I../include -qchars=signed -qmaxmem=5000
+
+# flags for A/UX 2.01 using native cc or c89
+# gcc predefines AUX so that's not needed there
+# Remember to use -lcurses for WINLIB below !
+# CFLAGS = -ZS -D_POSIX_SOURCE -O -I../include -DAUX
+
+# flags for IRIX 4.0.x using native cc
+# The include files are __STDC__, but have bugs involving const
+# CFLAGS = -O -I../include -D__STDC__ -Dconst= -woff 100,293
+# LFLAGS = -s
+
+# flags for BSD/OS 2.0
+# CFLAGS = -O -I../include -I/usr/X11/include
+# LFLAGS = -L/usr/X11/lib
+
+# flags for Linux
+# compile normally
+# CFLAGS = -O2 -fomit-frame-pointer -I../include
+LFLAGS = -L/usr/lib
+# OR compile backwards compatible a.out format
+# CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
+# LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
+
+# flags for BeOS
+# on a Mac/BeBox:
+#CC = mwcc
+#CFLAGS = -r -I../include
+#LINK = mwld
+#LFLAGS = -map nethack.xMAP
+# on Intel:
+#CFLAGS = -O -I../include
+#LINK = gcc
+#LFLAGS = -Xlinker -soname=_APP_
+
+# Only used for the Gnome interface.
+# When including the Gnome interface, you need to include gnome specific
+# directories. The ones given below is the usual spot for linux systems.
+# The paths are for glibconfig.h and gnomesupport.h respectively.
+#
+GNOMEINC=-I/usr/lib/glib/include -I/usr/lib/gnome-libs/include -I../win/gnome
+
+# flags for debugging:
+# CFLAGS = -g -I../include
+
+CFLAGS = -O -I../include
+LFLAGS =
+
+# The Qt and Be window systems are written in C++, while the rest of
+# NetHack is standard C. If using Qt, uncomment the LINK line here to get
+# the C++ libraries linked in.
+CXXFLAGS = $(CFLAGS) -I. -I$(QTDIR)/include
+CXX=g++
+#LINK=g++
+# For cross-compiling, eg. with gcc on Linux (see also CC further up):
+#CXX=arm-linux-g++
+#LINK=arm-linux-gcc
+
+# Set the WINSRC, WINOBJ, and WINLIB lines to correspond to your desired
+# combination of windowing systems. Also set windowing systems in config.h.
+# Note that if you are including multiple tiled window systems, you don't
+# want two copies of tile.o, so comment out all but the first.
+#
+# files for a straight tty port using no native windowing system
+WINTTYSRC = ../win/tty/getline.c ../win/tty/termcap.c ../win/tty/topl.c \
+ ../win/tty/wintty.c
+WINTTYOBJ = getline.o termcap.o topl.o wintty.o
+#
+# files for an X11 port
+# (tile.c is a generated source file)
+WINX11SRC = ../win/X11/Window.c ../win/X11/dialogs.c ../win/X11/winX.c \
+ ../win/X11/winmap.c ../win/X11/winmenu.c ../win/X11/winmesg.c \
+ ../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \
+ ../win/X11/winval.c tile.c
+WINX11OBJ = Window.o dialogs.o winX.o winmap.o winmenu.o winmesg.o \
+ winmisc.o winstat.o wintext.o winval.o tile.o
+#
+# Files for a Qt port
+#
+WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp ../win/Qt/qttableview.cpp
+# WINQTOBJ = qt_win.o qt_clust.o qttableview.o tile.o
+WINQTOBJ = qt_win.o qt_clust.o qttableview.o
+#
+# Files for a Gnome port
+#
+WINGNOMESRC = ../win/gnome/gnaskstr.c ../win/gnome/gnbind.c \
+ ../win/gnome/gnglyph.c ../win/gnome/gnmain.c ../win/gnome/gnmap.c \
+ ../win/gnome/gnmenu.c ../win/gnome/gnmesg.c ../win/gnome/gnopts.c \
+ ../win/gnome/gnplayer.c ../win/gnome/gnsignal.c \
+ ../win/gnome/gnstatus.c ../win/gnome/gntext.c ../win/gnome/gnyesno.c \
+ ../win/gnome/gnworn.c
+WINGNOMEOBJ = gnaskstr.o gnbind.o gnglyph.o gnmain.o gnmap.o gnmenu.o \
+ gnmesg.o gnopts.o gnplayer.o gnsignal.o gnstatus.o gntext.o \
+ gnyesno.o gnworn.o tile.o
+#
+# Files for a Gem port
+WINGEMSRC = ../win/gem/wingem.c ../win/gem/wingem1.c ../win/gem/load_img.c \
+ ../win/gem/gr_rect.c tile.c
+WINGEMOBJ = wingem.o wingem1.o load_img.o gr_rect.o tile.o
+#
+# Files for a BeOS InterfaceKit port -- not ready for prime time
+WINBESRC =
+WINBEOBJ =
+#WINBESRC = ../win/BeOS/winbe.cpp ../win/BeOS/NHWindow.cpp \
+# ../win/BeOS/NHMenuWindow.cpp ../win/BeOS/NHMapWindow.cpp tile.c
+#WINBEOBJ = winbe.o NHWindow.o NHMenuWindow.o NHMapWindow.o tile.o
+
+#
+#
+WINSRC = $(WINTTYSRC) $(WINX11SRC) $(WINQTSRC) $(WINKDESRC)
+WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(WINQTOBJ) $(WINKDEOBJ)
+
+# on some systems the termcap library is in -ltermcap or -lcurses
+# on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
+# Sysatt uses shared library in lieu of this option
+# Systos needs -lcurses16 if you use -mshort
+# AIX 3.1 on RS/6000 likes -lcurses if TERMINFO defined in unixconf.h
+# and -ltermcap otherwise
+# Linux uses -lncurses (newer) or -ltermcap (older)
+# Be uses -ltermcap
+#
+# libraries for tty ports
+# WINTTYLIB = -ltermcap
+# WINTTYLIB = -lcurses
+# WINTTYLIB = -lcurses16
+WINTTYLIB = -lncurses
+# WINTTYLIB = -ltermlib
+#
+# libraries for X11
+# If USE_XPM is defined in config.h, you will also need -lXpm here.
+# WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
+# WINX11LIB = -lXaw -lXmu -lXt -lX11
+# WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 -lm
+# WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0
+WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11
+#
+# libraries for Qt
+WINQTLIB = -L$(QTDIR)/lib -lqt-mt
+#
+# libraries for KDE (with Qt)
+WINKDELIB = -lkdecore -lkdeui -lXext
+#
+# libraries for Gnome
+WINGNOMELIB = -lgnomeui -lgnome -lart_lgpl -lgtk -lgdk -lpopt
+#
+# libraries for Gem port
+WINGEMLIB = -le_gem -lgem
+#
+# libraries for BeOS
+WINBELIB = -lbe
+
+WINLIB = $(WINTTYLIB) $(WINX11LIB) $(WINQTLIB) $(WINKDELIB)
+
+# any other strange libraries your system needs (for Sysunix only -- the more
+# specialized targets should already be right)
+#
+# on HP-UX 8.x, the malloc(3x) routines in libmalloc.a seem to align things
+# better than the malloc(3) ones in libc.a
+# LIBS = -lmalloc
+#
+# DPX/2's also use the malloc(3x) routines. In addition, if you are building
+# for X11, you must include libinet.a.
+# LIBS = -lmalloc -linet
+#
+# Linux NetHack uses some bsd style ioctl functions, thus it is necessary to
+# use the bsd libs. (Only if still compiling as BSD in unixconf.h; recent
+# versions compile fine using SYSV without this.)
+# LIBS = -lbsd
+#
+# for CYGWIN32 aka cygwin 1.1.1
+# LIBS = -lcygwin
+#
+# Solaris 2.x seems to work with the following
+# LIBS = -lsocket -lnsl
+#
+# IRIX 4.0.x needs -lsun if NIS (YP) is being used for passwd file lookup
+# LIBS = -lsun
+#
+LIBS =
+
+# make NetHack
+GAME = nethack
+# GAME = nethack.prg
+
+# if you defined RANDOM in unixconf.h/tosconf.h since your system did not come
+# with a reasonable random number generator
+# RANDOBJ = random.o
+RANDOBJ =
+
+
+# used by `make depend' to reconstruct this Makefile; you shouldn't need this
+AWK = gawk
+
+# ----------------------------------------
+#
+# 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
+
+MAKEDEFS = ../util/makedefs
+
+# timestamp files to reduce `make' overhead and shorten .o dependency lists
+CONFIG_H = ../src/config.h-t
+HACK_H = ../src/hack.h-t
+
+# all .c that are part of the main NetHack program and are not operating- or
+# windowing-system specific
+HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
+ botl.c cmd.c dbridge.c decl.c detect.c dig.c display.c dlb.c do.c \
+ do_name.c do_wear.c dog.c dogmove.c dokick.c dothrow.c drawing.c \
+ dungeon.c eat.c end.c engrave.c exper.c explode.c extralev.c \
+ files.c fountain.c hack.c hacklib.c invent.c light.c lock.c \
+ mail.c makemon.c mapglyph.c mcastu.c mhitm.c mhitu.c minion.c \
+ mklev.c mkmap.c \
+ mkmaze.c mkobj.c mkroom.c mon.c mondata.c monmove.c monst.c \
+ mplayer.c mthrowu.c muse.c music.c o_init.c objects.c objnam.c \
+ options.c pager.c pickup.c pline.c polyself.c potion.c pray.c \
+ priest.c quest.c questpgr.c read.c rect.c region.c restore.c rip.c \
+ rnd.c role.c rumors.c save.c shk.c shknam.c sit.c sounds.c sp_lev.c \
+ spell.c steal.c steed.c teleport.c timeout.c topten.c track.c trap.c \
+ u_init.c uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
+ windows.c wizard.c worm.c worn.c write.c zap.c
+
+# all operating-system-dependent .c (for dependencies and such)
+SYSCSRC = ../sys/atari/tos.c ../sys/share/pcmain.c ../sys/share/pcsys.c \
+ ../sys/share/pctty.c ../sys/share/pcunix.c ../sys/share/random.c \
+ ../sys/share/ioctl.c ../sys/share/unixtty.c ../sys/unix/unixmain.c \
+ ../sys/unix/unixunix.c ../sys/unix/unixres.c ../sys/be/bemain.c
+
+# generated source files (tile.c is handled separately via WINxxxSRC)
+GENCSRC = monstr.c vis_tab.c #tile.c
+
+# all windowing-system-dependent .c (for dependencies and such)
+WINCSRC = $(WINTTYSRC) $(WINX11SRC) $(WINGNOMESRC) $(WINGEMSRC)
+# all windowing-system-dependent .cpp (for dependencies and such)
+WINCXXSRC = $(WINQTSRC) $(WINBESRC)
+
+# .c files for this version (for date.h)
+VERSOURCES = $(HACKCSRC) $(SYSSRC) $(WINSRC) $(GENCSRC)
+
+# .c files for all versions using this Makefile (for lint and tags)
+CSOURCES = $(HACKCSRC) $(SYSSRC) $(WINCSRC) $(GENCSRC)
+
+
+# all .h files except date.h, onames.h, pm.h, and vis_tab.h which would
+# cause dependency loops if run through "make depend"
+# and dgn_comp.h, dgn_file.h, lev_comp.h, special level & dungeon files.
+#
+HACKINCL = align.h amiconf.h artifact.h artilist.h attrib.h beconf.h color.h \
+ config.h config1.h coord.h decl.h def_os2.h display.h dlb.h dungeon.h \
+ edog.h emin.h engrave.h epri.h eshk.h extern.h flag.h func_tab.h \
+ global.h hack.h lev.h macconf.h mfndpos.h micro.h mkroom.h \
+ monattk.h mondata.h monflag.h monst.h monsym.h obj.h objclass.h \
+ os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h region.h rm.h \
+ sp_lev.h spell.h system.h tcap.h timeout.h tosconf.h tradstdc.h \
+ trampoli.h trap.h unixconf.h vault.h vision.h vmsconf.h wintty.h \
+ winX.h winprocs.h wintype.h you.h youprop.h
+
+HSOURCES = $(HACKINCL) date.h onames.h pm.h vis_tab.h\
+ lev_comp.h dgn_comp.h dgn_file.h
+
+# the following .o's _must_ be made before any others (for makedefs)
+FIRSTOBJ = monst.o objects.o
+
+HOBJ = $(FIRSTOBJ) allmain.o alloc.o apply.o artifact.o attrib.o ball.o \
+ bones.o botl.o cmd.o dbridge.o decl.o detect.o dig.o display.o dlb.o \
+ do.o do_name.o do_wear.o dog.o dogmove.o dokick.o dothrow.o \
+ drawing.o dungeon.o eat.o end.o engrave.o exper.o explode.o \
+ extralev.o files.o fountain.o hack.o hacklib.o invent.o light.o \
+ lock.o mail.o makemon.o mapglyph.o mcastu.o mhitm.o mhitu.o \
+ minion.o mklev.o mkmap.o \
+ mkmaze.o mkobj.o mkroom.o mon.o mondata.o monmove.o monstr.o \
+ mplayer.o mthrowu.o muse.o music.o o_init.o objnam.o options.o \
+ pager.o pickup.o pline.o polyself.o potion.o pray.o priest.o \
+ quest.o questpgr.o read.o rect.o region.o restore.o rip.o rnd.o \
+ role.o rumors.o save.o shk.o shknam.o sit.o sounds.o sp_lev.o spell.o \
+ steal.o steed.o teleport.o timeout.o topten.o track.o trap.o u_init.o \
+ uhitm.o vault.o vision.o vis_tab.o weapon.o were.o wield.o windows.o \
+ wizard.o worm.o worn.o write.o zap.o \
+ $(RANDOBJ) $(SYSOBJ) $(WINOBJ) version.o
+# the .o files from the HACKCSRC, SYSSRC, and WINSRC lists
+
+$(GAME): $(SYSTEM)
+ @echo "$(GAME) is up to date."
+
+Sysunix: $(HOBJ) Makefile
+ @echo "Loading ..."
+ $(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
+ @touch Sysunix
+
+Sys3B2: $(HOBJ) Makefile
+ @echo "Loading ..."
+ @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) -lmalloc
+ @touch Sys3B2
+
+Sysatt: $(HOBJ) Makefile
+ @echo "Loading ..."
+ @$(LD) $(LFLAGS) /lib/crt0s.o /lib/shlib.ifile -o $(GAME) $(HOBJ)
+ @touch Sysatt
+
+Systos: $(HOBJ) Makefile
+ @echo "Loading ..."
+ @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
+ @touch Systos
+
+SysV-AT: DUMB.Setup $(HOBJ) Makefile
+ @echo "Loading ..."
+ @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
+ @touch SysV-AT
+
+SysBe: $(HOBJ) Makefile
+ @echo "Loading ..."
+ @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
+ @xres -o $(GAME) ../win/BeOS/nethack.rsrc
+ @mimeset -f $(GAME)
+ @touch SysBe
+
+DUMB.Setup: ../include/extern.h
+ cp ../include/extern.h ../include/extern.h.BAK
+ cat ../include/extern.h | \
+ sed -e '/^E\ int\ /!b' \
+ -e '/[^;/ ]$$/N' \
+ -e '/[(][*]occupation[)]/b' \
+ -e '/[(][*]afternmv[)]/b' \
+ -e '/float_down/b' \
+ -e '/done1/b' \
+ -e '/identify/b' \
+ -e '/Hear_again/b' \
+ -e '/hangup/b' \
+ -e 's/^\(.*\)$$/\/\* \1 \/\*\*\//' | \
+ sed -e '/^E\ void\ /!b' \
+ -e '/[^;/ ]$$/N' \
+ -e 's/^\(.*\)$$/\/\* \1 \/\*\*\//' \
+ >../include/extern.DUMB
+ cp ../include/extern.DUMB ../include/extern.h
+ @touch DUMB.Setup
+
+all: $(GAME)
+
+
+# dependencies for makedefs and its outputs, which the util
+# Makefile is responsible for keeping up to date
+#
+
+# special rules, to force update of makedefs, real dependencies should be
+# below in the 'make depend' output.
+monst.o:
+ $(CC) $(CFLAGS) -c monst.c
+ @rm -f $(MAKEDEFS)
+
+objects.o:
+ $(CC) $(CFLAGS) -c objects.c
+ @rm -f $(MAKEDEFS)
+
+# Qt windowport meta-object-compiler output
+qt_kde0.moc: ../include/qt_kde0.h
+ $(QTDIR)/bin/moc -o qt_kde0.moc ../include/qt_kde0.h
+
+qt_win.moc: ../include/qt_win.h
+ $(QTDIR)/bin/moc -o qt_win.moc ../include/qt_win.h
+
+qttableview.moc: ../include/qttableview.h
+ $(QTDIR)/bin/moc -o qttableview.moc ../include/qttableview.h
+
+$(MAKEDEFS): ../util/makedefs.c $(CONFIG_H) ../include/permonst.h \
+ ../include/objclass.h ../include/monsym.h \
+ ../include/artilist.h ../include/dungeon.h ../include/obj.h \
+ ../include/monst.h ../include/you.h ../include/flag.h \
+ ../include/dlb.h ../include/patchlevel.h ../include/qtext.h
+ @( cd ../util ; $(MAKE) makedefs)
+
+../include/onames.h: $(MAKEDEFS)
+ @( cd ../util ; $(MAKE) ../include/onames.h )
+../include/pm.h: $(MAKEDEFS)
+ @( cd ../util ; $(MAKE) ../include/pm.h )
+monstr.c: $(MAKEDEFS)
+ @( cd ../util ; $(MAKE) ../src/monstr.c )
+../include/vis_tab.h: $(MAKEDEFS)
+ @( cd ../util ; $(MAKE) ../include/vis_tab.h )
+# makedefs -z makes both vis_tab.h and vis_tab.c, but writes the .h first
+vis_tab.c: ../include/vis_tab.h
+tile.c: ../win/share/tilemap.c $(HACK_H)
+ @( cd ../util ; $(MAKE) ../src/tile.c )
+
+../win/gnome/gn_rip.h: ../win/X11/rip.xpm
+ cp ../win/X11/rip.xpm ../win/gnome/gn_rip.h
+
+# date.h should be remade any time any of the source or include code
+# is modified. Unfortunately, this would make the contents of this
+# file far more complex. Since "hack.h" depends on most of the include
+# files, we kludge around this by making date.h dependent on hack.h,
+# even though it doesn't include this file.
+#
+# hack.h depends on makedefs' output, so we know makedefs will be
+# up to date before being executed
+../include/date.h: $(VERSOURCES) $(HACK_H)
+ ../util/makedefs -v
+
+
+lint:
+# lint cannot have -p here because (i) capitals are meaningful:
+# [Ww]izard, (ii) identifiers may coincide in the first six places:
+# doweararm() versus dowearring().
+# _flsbuf comes from <stdio.h>, a bug in the system libraries.
+ @echo lint -axbh -DLINT ...
+ @lint -axbh -I../include -DLINT $(CSOURCES) | sed '/_flsbuf/d'
+
+
+tags: $(CSOURCES)
+ @echo ctags -tw ...
+ @ctags -tw $(CSOURCES)
+ @( cd ../include ; ctags -tw $(HSOURCES) )
+ @( cd ../util ; $(MAKE) tags )
+
+clean:
+ -rm -f *.o $(HACK_H) $(CONFIG_H)
+
+spotless: clean
+ -rm -f a.out core $(GAME) Sys*
+ -rm -f ../include/date.h ../include/onames.h ../include/pm.h
+ -rm -f monstr.c ../include/vis_tab.h vis_tab.c tile.c *.moc
+ -rm -f ../win/gnome/gn_rip.h
+
+
+depend: ../sys/unix/depend.awk \
+ $(SYSCSRC) $(WINCSRC) $(WINCXXSRC) $(GENCSRC) $(HACKCSRC)
+ $(AWK) -f ../sys/unix/depend.awk ../include/*.h \
+ $(SYSCSRC) $(WINCSRC) $(WINCXXSRC) $(GENCSRC) $(HACKCSRC) >makedep
+ @echo '/^# DO NOT DELETE THIS LINE OR CHANGE ANYTHING BEYOND IT/+2,$$d' >eddep
+ @echo '$$r makedep' >>eddep
+ @echo 'w' >>eddep
+ @cp Makefile Makefile.bak
+ ed - Makefile < eddep
+ @rm -f eddep makedep
+ @echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile
+ @echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
+ @echo '# see make depend above' >> Makefile
+ - diff Makefile.bak Makefile
+ @rm -f Makefile.bak
+
+# DO NOT DELETE THIS LINE OR CHANGE ANYTHING BEYOND IT
+
+# config.h timestamp
+$(CONFIG_H): ../include/config.h ../include/config1.h ../include/tradstdc.h \
+ ../include/global.h ../include/coord.h ../include/vmsconf.h \
+ ../include/system.h ../include/unixconf.h ../include/os2conf.h \
+ ../include/micro.h ../include/pcconf.h ../include/tosconf.h \
+ ../include/amiconf.h ../include/macconf.h ../include/beconf.h \
+ ../include/wceconf.h ../include/ntconf.h ../include/nhlan.h
+ touch $(CONFIG_H)
+# hack.h timestamp
+$(HACK_H): ../include/hack.h $(CONFIG_H) ../include/align.h \
+ ../include/dungeon.h ../include/monsym.h ../include/mkroom.h \
+ ../include/objclass.h ../include/youprop.h ../include/prop.h \
+ ../include/permonst.h ../include/monattk.h \
+ ../include/monflag.h ../include/mondata.h ../include/pm.h \
+ ../include/wintype.h ../include/decl.h ../include/quest.h \
+ ../include/spell.h ../include/color.h ../include/obj.h \
+ ../include/you.h ../include/attrib.h ../include/monst.h \
+ ../include/skills.h ../include/onames.h ../include/timeout.h \
+ ../include/trap.h ../include/flag.h ../include/rm.h \
+ ../include/vision.h ../include/display.h ../include/engrave.h \
+ ../include/rect.h ../include/region.h ../include/winprocs.h \
+ ../include/wintty.h ../include/trampoli.h
+ touch $(HACK_H)
+#
+tos.o: ../sys/atari/tos.c $(HACK_H) ../include/tcap.h
+ $(CC) $(CFLAGS) -c ../sys/atari/tos.c
+pcmain.o: ../sys/share/pcmain.c $(HACK_H) ../include/dlb.h \
+ #../include/win32api.h
+ $(CC) $(CFLAGS) -c ../sys/share/pcmain.c
+pcsys.o: ../sys/share/pcsys.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/share/pcsys.c
+pctty.o: ../sys/share/pctty.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/share/pctty.c
+pcunix.o: ../sys/share/pcunix.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/share/pcunix.c
+random.o: ../sys/share/random.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/share/random.c
+ioctl.o: ../sys/share/ioctl.c $(HACK_H) ../include/tcap.h
+ $(CC) $(CFLAGS) -c ../sys/share/ioctl.c
+unixtty.o: ../sys/share/unixtty.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/share/unixtty.c
+unixmain.o: ../sys/unix/unixmain.c $(HACK_H) ../include/dlb.h
+ $(CC) $(CFLAGS) -c ../sys/unix/unixmain.c
+unixunix.o: ../sys/unix/unixunix.c $(HACK_H)
+ $(CC) $(CFLAGS) -c ../sys/unix/unixunix.c
+unixres.o: ../sys/unix/unixres.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../sys/unix/unixres.c
+bemain.o: ../sys/be/bemain.c $(HACK_H) ../include/dlb.h
+ $(CC) $(CFLAGS) -c ../sys/be/bemain.c
+getline.o: ../win/tty/getline.c $(HACK_H) ../include/func_tab.h
+ $(CC) $(CFLAGS) -c ../win/tty/getline.c
+termcap.o: ../win/tty/termcap.c $(HACK_H) ../include/tcap.h
+ $(CC) $(CFLAGS) -c ../win/tty/termcap.c
+topl.o: ../win/tty/topl.c $(HACK_H) ../include/tcap.h
+ $(CC) $(CFLAGS) -c ../win/tty/topl.c
+wintty.o: ../win/tty/wintty.c $(HACK_H) ../include/dlb.h \
+ ../include/patchlevel.h ../include/tcap.h
+ $(CC) $(CFLAGS) -c ../win/tty/wintty.c
+Window.o: ../win/X11/Window.c ../include/xwindowp.h ../include/xwindow.h \
+ $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../win/X11/Window.c
+dialogs.o: ../win/X11/dialogs.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../win/X11/dialogs.c
+winX.o: ../win/X11/winX.c $(HACK_H) ../include/winX.h ../include/dlb.h \
+ ../include/patchlevel.h ../win/X11/nh72icon \
+ ../win/X11/nh56icon ../win/X11/nh32icon
+ $(CC) $(CFLAGS) -c ../win/X11/winX.c
+winmap.o: ../win/X11/winmap.c ../include/xwindow.h $(HACK_H) ../include/dlb.h \
+ ../include/winX.h ../include/tile2x11.h
+ $(CC) $(CFLAGS) -c ../win/X11/winmap.c
+winmenu.o: ../win/X11/winmenu.c $(HACK_H) ../include/winX.h
+ $(CC) $(CFLAGS) -c ../win/X11/winmenu.c
+winmesg.o: ../win/X11/winmesg.c ../include/xwindow.h $(HACK_H) ../include/winX.h
+ $(CC) $(CFLAGS) -c ../win/X11/winmesg.c
+winmisc.o: ../win/X11/winmisc.c $(HACK_H) ../include/func_tab.h \
+ ../include/winX.h
+ $(CC) $(CFLAGS) -c ../win/X11/winmisc.c
+winstat.o: ../win/X11/winstat.c $(HACK_H) ../include/winX.h
+ $(CC) $(CFLAGS) -c ../win/X11/winstat.c
+wintext.o: ../win/X11/wintext.c $(HACK_H) ../include/winX.h ../include/xwindow.h
+ $(CC) $(CFLAGS) -c ../win/X11/wintext.c
+winval.o: ../win/X11/winval.c $(HACK_H) ../include/winX.h
+ $(CC) $(CFLAGS) -c ../win/X11/winval.c
+tile.o: tile.c $(HACK_H)
+gnaskstr.o: ../win/gnome/gnaskstr.c ../win/gnome/gnaskstr.h \
+ ../win/gnome/gnmain.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnaskstr.c
+gnbind.o: ../win/gnome/gnbind.c ../win/gnome/gnbind.h ../win/gnome/gnmain.h \
+ ../win/gnome/gnmenu.h ../win/gnome/gnaskstr.h \
+ ../win/gnome/gnyesno.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnbind.c
+gnglyph.o: ../win/gnome/gnglyph.c ../win/gnome/gnglyph.h ../include/tile2x11.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnglyph.c
+gnmain.o: ../win/gnome/gnmain.c ../win/gnome/gnmain.h ../win/gnome/gnsignal.h \
+ ../win/gnome/gnbind.h ../win/gnome/gnopts.h $(HACK_H) \
+ ../include/date.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmain.c
+gnmap.o: ../win/gnome/gnmap.c ../win/gnome/gnmap.h ../win/gnome/gnglyph.h \
+ ../win/gnome/gnsignal.h $(HACK_H)
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmap.c
+gnmenu.o: ../win/gnome/gnmenu.c ../win/gnome/gnmenu.h ../win/gnome/gnmain.h \
+ ../win/gnome/gnbind.h ../include/func_tab.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmenu.c
+gnmesg.o: ../win/gnome/gnmesg.c ../win/gnome/gnmesg.h ../win/gnome/gnsignal.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmesg.c
+gnopts.o: ../win/gnome/gnopts.c ../win/gnome/gnopts.h ../win/gnome/gnglyph.h \
+ ../win/gnome/gnmain.h ../win/gnome/gnmap.h $(HACK_H)
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnopts.c
+gnplayer.o: ../win/gnome/gnplayer.c ../win/gnome/gnplayer.h \
+ ../win/gnome/gnmain.h $(HACK_H)
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnplayer.c
+gnsignal.o: ../win/gnome/gnsignal.c ../win/gnome/gnsignal.h \
+ ../win/gnome/gnmain.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnsignal.c
+gnstatus.o: ../win/gnome/gnstatus.c ../win/gnome/gnstatus.h \
+ ../win/gnome/gnsignal.h ../win/gnome/gn_xpms.h \
+ ../win/gnome/gnomeprv.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnstatus.c
+gntext.o: ../win/gnome/gntext.c ../win/gnome/gntext.h ../win/gnome/gnmain.h \
+ ../win/gnome/gn_rip.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gntext.c
+gnyesno.o: ../win/gnome/gnyesno.c ../win/gnome/gnbind.h ../win/gnome/gnyesno.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnyesno.c
+gnworn.o: ../win/gnome/gnworn.c ../win/gnome/gnworn.h ../win/gnome/gnglyph.h \
+ ../win/gnome/gnsignal.h ../win/gnome/gnomeprv.h
+ $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnworn.c
+wingem.o: ../win/gem/wingem.c $(HACK_H) ../include/func_tab.h ../include/dlb.h \
+ ../include/patchlevel.h ../include/wingem.h
+ $(CC) $(CFLAGS) -c ../win/gem/wingem.c
+wingem1.o: ../win/gem/wingem1.c ../include/gem_rsc.h ../include/load_img.h \
+ ../include/gr_rect.h ../include/wintype.h ../include/wingem.h
+ $(CC) $(CFLAGS) -c ../win/gem/wingem1.c
+load_img.o: ../win/gem/load_img.c ../include/load_img.h
+ $(CC) $(CFLAGS) -c ../win/gem/load_img.c
+gr_rect.o: ../win/gem/gr_rect.c ../include/gr_rect.h
+ $(CC) $(CFLAGS) -c ../win/gem/gr_rect.c
+tile.o: tile.c $(HACK_H)
+qt_win.o: ../win/Qt/qt_win.cpp $(HACK_H) ../include/func_tab.h \
+ ../include/dlb.h ../include/patchlevel.h ../include/tile2x11.h \
+ ../include/qt_win.h ../include/qt_clust.h ../include/qt_kde0.h \
+ ../include/qt_xpms.h qt_win.moc qt_kde0.moc qttableview.moc
+ $(CXX) $(CXXFLAGS) -c ../win/Qt/qt_win.cpp
+qt_clust.o: ../win/Qt/qt_clust.cpp ../include/qt_clust.h
+ $(CXX) $(CXXFLAGS) -c ../win/Qt/qt_clust.cpp
+qttableview.o: ../win/Qt/qttableview.cpp ../include/qttableview.h
+ $(CXX) $(CXXFLAGS) -c ../win/Qt/qttableview.cpp
+monstr.o: monstr.c $(CONFIG_H)
+vis_tab.o: vis_tab.c $(CONFIG_H) ../include/vis_tab.h
+allmain.o: allmain.c $(HACK_H)
+alloc.o: alloc.c $(CONFIG_H)
+apply.o: apply.c $(HACK_H) ../include/edog.h
+artifact.o: artifact.c $(HACK_H) ../include/artifact.h ../include/artilist.h
+attrib.o: attrib.c $(HACK_H)
+ball.o: ball.c $(HACK_H)
+bones.o: bones.c $(HACK_H) ../include/lev.h
+botl.o: botl.c $(HACK_H)
+cmd.o: cmd.c $(HACK_H) ../include/func_tab.h
+dbridge.o: dbridge.c $(HACK_H)
+decl.o: decl.c $(HACK_H)
+detect.o: detect.c $(HACK_H) ../include/artifact.h
+dig.o: dig.c $(HACK_H) ../include/edog.h
+display.o: display.c $(HACK_H)
+dlb.o: dlb.c $(CONFIG_H) ../include/dlb.h
+do.o: do.c $(HACK_H) ../include/lev.h
+do_name.o: do_name.c $(HACK_H)
+do_wear.o: do_wear.c $(HACK_H)
+dog.o: dog.c $(HACK_H) ../include/edog.h
+dogmove.o: dogmove.c $(HACK_H) ../include/mfndpos.h ../include/edog.h
+dokick.o: dokick.c $(HACK_H) ../include/eshk.h
+dothrow.o: dothrow.c $(HACK_H) ../include/edog.h
+drawing.o: drawing.c $(HACK_H) ../include/tcap.h
+dungeon.o: dungeon.c $(HACK_H) ../include/dgn_file.h ../include/dlb.h
+eat.o: eat.c $(HACK_H)
+end.o: end.c $(HACK_H) ../include/eshk.h ../include/dlb.h
+engrave.o: engrave.c $(HACK_H) ../include/lev.h
+exper.o: exper.c $(HACK_H)
+explode.o: explode.c $(HACK_H)
+extralev.o: extralev.c $(HACK_H)
+files.o: files.c $(HACK_H) ../include/dlb.h
+fountain.o: fountain.c $(HACK_H)
+hack.o: hack.c $(HACK_H)
+hacklib.o: hacklib.c $(HACK_H)
+invent.o: invent.c $(HACK_H)
+light.o: light.c $(HACK_H) ../include/lev.h
+lock.o: lock.c $(HACK_H)
+mail.o: mail.c $(HACK_H) ../include/mail.h
+makemon.o: makemon.c $(HACK_H) ../include/epri.h ../include/emin.h \
+ ../include/edog.h
+mapglyph.o: mapglyph.c $(HACK_H)
+mcastu.o: mcastu.c $(HACK_H)
+mhitm.o: mhitm.c $(HACK_H) ../include/artifact.h ../include/edog.h
+mhitu.o: mhitu.c $(HACK_H) ../include/artifact.h ../include/edog.h
+minion.o: minion.c $(HACK_H) ../include/emin.h ../include/epri.h
+mklev.o: mklev.c $(HACK_H)
+mkmap.o: mkmap.c $(HACK_H) ../include/sp_lev.h
+mkmaze.o: mkmaze.c $(HACK_H) ../include/sp_lev.h ../include/lev.h
+mkobj.o: mkobj.c $(HACK_H)
+mkroom.o: mkroom.c $(HACK_H)
+mon.o: mon.c $(HACK_H) ../include/mfndpos.h ../include/edog.h
+mondata.o: mondata.c $(HACK_H) ../include/eshk.h ../include/epri.h
+monmove.o: monmove.c $(HACK_H) ../include/mfndpos.h ../include/artifact.h \
+ ../include/epri.h
+monst.o: monst.c $(CONFIG_H) ../include/permonst.h ../include/align.h \
+ ../include/monattk.h ../include/monflag.h ../include/monsym.h \
+ ../include/dungeon.h ../include/eshk.h ../include/vault.h \
+ ../include/epri.h ../include/color.h
+mplayer.o: mplayer.c $(HACK_H)
+mthrowu.o: mthrowu.c $(HACK_H)
+muse.o: muse.c $(HACK_H) ../include/edog.h
+music.o: music.c $(HACK_H) #interp.c
+o_init.o: o_init.c $(HACK_H) ../include/lev.h
+objects.o: objects.c $(CONFIG_H) ../include/obj.h ../include/objclass.h \
+ ../include/prop.h ../include/skills.h ../include/color.h
+objnam.o: objnam.c $(HACK_H)
+options.o: options.c $(CONFIG_H) ../include/objclass.h ../include/flag.h \
+ $(HACK_H) ../include/tcap.h
+pager.o: pager.c $(HACK_H) ../include/dlb.h
+pickup.o: pickup.c $(HACK_H)
+pline.o: pline.c $(HACK_H) ../include/epri.h ../include/edog.h
+polyself.o: polyself.c $(HACK_H)
+potion.o: potion.c $(HACK_H)
+pray.o: pray.c $(HACK_H) ../include/epri.h
+priest.o: priest.c $(HACK_H) ../include/mfndpos.h ../include/eshk.h \
+ ../include/epri.h ../include/emin.h
+quest.o: quest.c $(HACK_H) ../include/qtext.h
+questpgr.o: questpgr.c $(HACK_H) ../include/dlb.h ../include/qtext.h
+read.o: read.c $(HACK_H)
+rect.o: rect.c $(HACK_H)
+region.o: region.c $(HACK_H) ../include/lev.h
+restore.o: restore.c $(HACK_H) ../include/lev.h ../include/tcap.h
+rip.o: rip.c $(HACK_H)
+rnd.o: rnd.c $(HACK_H)
+role.o: role.c $(HACK_H)
+rumors.o: rumors.c $(HACK_H) ../include/lev.h ../include/dlb.h
+save.o: save.c $(HACK_H) ../include/lev.h
+shk.o: shk.c $(HACK_H) ../include/eshk.h
+shknam.o: shknam.c $(HACK_H) ../include/eshk.h
+sit.o: sit.c $(HACK_H) ../include/artifact.h
+sounds.o: sounds.c $(HACK_H) ../include/edog.h
+sp_lev.o: sp_lev.c $(HACK_H) ../include/dlb.h ../include/sp_lev.h
+spell.o: spell.c $(HACK_H)
+steal.o: steal.c $(HACK_H)
+steed.o: steed.c $(HACK_H)
+teleport.o: teleport.c $(HACK_H)
+timeout.o: timeout.c $(HACK_H) ../include/lev.h
+topten.o: topten.c $(HACK_H) ../include/dlb.h ../include/patchlevel.h
+track.o: track.c $(HACK_H)
+trap.o: trap.c $(HACK_H)
+u_init.o: u_init.c $(HACK_H)
+uhitm.o: uhitm.c $(HACK_H)
+vault.o: vault.c $(HACK_H) ../include/vault.h
+version.o: version.c $(HACK_H) ../include/date.h ../include/patchlevel.h
+vision.o: vision.c $(HACK_H) ../include/vis_tab.h
+weapon.o: weapon.c $(HACK_H)
+were.o: were.c $(HACK_H)
+wield.o: wield.c $(HACK_H)
+windows.o: windows.c $(HACK_H) ../include/wingem.h ../include/winGnome.h
+wizard.o: wizard.c $(HACK_H) ../include/qtext.h ../include/epri.h
+worm.o: worm.c $(HACK_H) ../include/lev.h
+worn.o: worn.c $(HACK_H)
+write.o: write.c $(HACK_H)
+zap.o: zap.c $(HACK_H)
+# DEPENDENCIES MUST END AT END OF FILE
+# IF YOU PUT STUFF HERE IT WILL GO AWAY
+# see make depend above
diff --git a/games/nethack/files/Makefile.top.slack b/games/nethack/files/Makefile.top.slack
new file mode 100644
index 0000000000..705f04e048
--- /dev/null
+++ b/games/nethack/files/Makefile.top.slack
@@ -0,0 +1,266 @@
+# NetHack Makefile.
+# SCCS Id: @(#)Makefile.top 3.4 1995/01/05
+
+# newer makes predefine $(MAKE) to 'make' and do smarter processing of
+# recursive make calls if $(MAKE) is used
+# these makes allow $(MAKE) to be overridden by the environment if someone
+# wants to (or has to) use something other than the standard make, so we do
+# not want to unconditionally set $(MAKE) here
+#
+# unfortunately, some older makes do not predefine $(MAKE); if you have one of
+# these, uncomment the following line
+# (you will know that you have one if you get complaints about unable to
+# execute things like 'data' and 'rumors')
+# MAKE = make
+
+# make NetHack
+PREFIX = /usr
+GAME = nethack
+# GAME = nethack.prg
+GAMEUID = root
+GAMEGRP = games
+
+# Permissions - some places use setgid instead of setuid, for instance
+# See also the option "SECURE" in include/config.h
+GAMEPERM = 02755
+FILEPERM = 0664
+EXEPERM = 0755
+DIRPERM = 0775
+
+# GAMEDIR also appears in config.h as "HACKDIR".
+# VARDIR may also appear in unixconf.h as "VAR_PLAYGROUND" else GAMEDIR
+#
+# note that 'make install' believes in creating a nice tidy GAMEDIR for
+# installation, free of debris from previous NetHack versions --
+# therefore there should not be anything in GAMEDIR that you want to keep
+# (if there is, you'll have to do the installation by hand or modify the
+# instructions)
+GAMEDIR = $(PREFIX)/share/games/nethack
+VARDIR = /var/lib/nethack
+SHELLDIR = $(PREFIX)/bin
+
+# per discussion in Install.X11 and Install.Qt
+# VARDATND =
+# VARDATND = x11tiles NetHack.ad pet_mark.xbm
+VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm nhsplash.xpm
+# for Atari/Gem
+# VARDATND = nh16.img title.img GEM_RSC.RSC rip.img
+# for BeOS
+# VARDATND = beostiles
+# for Gnome
+# VARDATND = x11tiles pet_mark.xbm rip.xpm mapbg.xpm
+
+VARDATD = data oracles options quest.dat rumors
+VARDAT = $(VARDATD) $(VARDATND)
+
+# Some versions of make use the SHELL environment variable as the shell
+# for running commands. We need this to be a Bourne shell.
+# SHELL = /bin/sh
+# for Atari
+# SHELL=E:/GEMINI2/MUPFEL.TTP
+
+# Commands for setting the owner and group on files during installation.
+# Some systems fail with one or the other when installing over NFS or for
+# other permission-related reasons. If that happens, you may want to set the
+# command to "true", which is a no-op. Note that disabling chown or chgrp
+# will only work if setuid (or setgid) behavior is not desired or required.
+CHOWN = chown
+CHGRP = chgrp
+
+#
+# end of configuration
+#
+
+DATHELP = help hh cmdhelp history opthelp wizhelp
+
+SPEC_LEVS = asmodeus.lev baalz.lev bigrm-?.lev castle.lev fakewiz?.lev \
+ juiblex.lev knox.lev medusa-?.lev minend-?.lev minefill.lev \
+ minetn-?.lev oracle.lev orcus.lev sanctum.lev soko?-?.lev \
+ tower?.lev valley.lev wizard?.lev \
+ astral.lev air.lev earth.lev fire.lev water.lev
+QUEST_LEVS = ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev
+
+DATNODLB = $(VARDATND) license
+DATDLB = $(DATHELP) dungeon $(SPEC_LEVS) $(QUEST_LEVS) $(VARDATD)
+DAT = $(DATNODLB) $(DATDLB)
+
+$(GAME):
+ ( cd src ; $(MAKE) )
+
+all: $(GAME) recover Guidebook $(VARDAT) dungeon spec_levs check-dlb
+ @echo "Done."
+
+# Note: many of the dependencies below are here to allow parallel make
+# to generate valid output
+
+Guidebook:
+ ( cd doc ; $(MAKE) Guidebook )
+
+manpages:
+ ( cd doc ; $(MAKE) manpages )
+
+data: $(GAME)
+ ( cd dat ; $(MAKE) data )
+
+rumors: $(GAME)
+ ( cd dat ; $(MAKE) rumors )
+
+oracles: $(GAME)
+ ( cd dat ; $(MAKE) oracles )
+
+# Note: options should have already been made with make, but...
+options: $(GAME)
+ ( cd dat ; $(MAKE) options )
+
+quest.dat: $(GAME)
+ ( cd dat ; $(MAKE) quest.dat )
+
+spec_levs: dungeon
+ ( cd util ; $(MAKE) lev_comp )
+ ( cd dat ; $(MAKE) spec_levs )
+ ( cd dat ; $(MAKE) quest_levs )
+
+dungeon: $(GAME)
+ ( cd util ; $(MAKE) dgn_comp )
+ ( cd dat ; $(MAKE) dungeon )
+
+nhtiles.bmp: $(GAME)
+ ( cd dat ; $(MAKE) nhtiles.bmp )
+
+x11tiles: $(GAME)
+ ( cd util ; $(MAKE) tile2x11 )
+ ( cd dat ; $(MAKE) x11tiles )
+
+beostiles: $(GAME)
+ ( cd util ; $(MAKE) tile2beos )
+ ( cd dat ; $(MAKE) beostiles )
+
+NetHack.ad: $(GAME)
+ ( cd dat ; $(MAKE) NetHack.ad )
+
+pet_mark.xbm:
+ ( cd dat ; $(MAKE) pet_mark.xbm )
+
+rip.xpm:
+ ( cd dat ; $(MAKE) rip.xpm )
+
+mapbg.xpm:
+ (cd dat ; $(MAKE) mapbg.xpm )
+
+nhsplash.xpm:
+ ( cd dat ; $(MAKE) nhsplash.xpm )
+
+nh16.img: $(GAME)
+ ( cd util ; $(MAKE) tile2img.ttp )
+ ( cd dat ; $(MAKE) nh16.img )
+
+rip.img:
+ ( cd util ; $(MAKE) xpm2img.ttp )
+ ( cd dat ; $(MAKE) rip.img )
+GEM_RSC.RSC:
+ ( cd dat ; $(MAKE) GEM_RSC.RSC )
+
+title.img:
+ ( cd dat ; $(MAKE) title.img )
+
+check-dlb: options
+ @if egrep -s librarian dat/options ; then $(MAKE) dlb ; else true ; fi
+
+dlb:
+ ( cd util ; $(MAKE) dlb )
+ ( cd dat ; ../util/dlb cf nhdat $(DATDLB) )
+
+# recover can be used when INSURANCE is defined in include/config.h
+# and the checkpoint option is true
+recover: $(GAME)
+ ( cd util ; $(MAKE) recover )
+
+dofiles:
+ target=`sed -n \
+ -e '/librarian/{' \
+ -e 's/.*/dlb/p' \
+ -e 'q' \
+ -e '}' \
+ -e '$$s/.*/nodlb/p' < dat/options` ; \
+ $(MAKE) dofiles-$${target-nodlb}
+ cp src/$(GAME) $(DESTDIR)/$(GAMEDIR)
+ cp util/recover $(DESTDIR)/$(GAMEDIR)
+ -rm -f $(DESTDIR)/$(SHELLDIR)/$(GAME)
+ sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
+ -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
+ < sys/unix/nethack.sh \
+ > $(DESTDIR)/$(SHELLDIR)/$(GAME)
+# set up their permissions
+ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \
+ $(CHGRP) $(GAMEGRP) $(GAME) recover )
+ chmod $(GAMEPERM) $(DESTDIR)/$(GAMEDIR)/$(GAME)
+ chmod $(EXEPERM) $(DESTDIR)/$(GAMEDIR)/recover
+ -$(CHOWN) $(GAMEUID) $(DESTDIR)/$(SHELLDIR)/$(GAME)
+ $(CHGRP) $(GAMEGRP) $(DESTDIR)/$(SHELLDIR)/$(GAME)
+ chmod $(EXEPERM) $(DESTDIR)/$(SHELLDIR)/$(GAME)
+
+dofiles-dlb: check-dlb
+ ( cd dat ; cp nhdat $(DATNODLB) $(DESTDIR)/$(GAMEDIR) )
+# set up their permissions
+ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \
+ $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \
+ chmod $(FILEPERM) nhdat $(DATNODLB) )
+
+dofiles-nodlb:
+# copy over the game files
+ ( cd dat ; cp $(DAT) $(DESTDIR)/$(GAMEDIR) )
+# set up their permissions
+ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \
+ $(CHGRP) $(GAMEGRP) $(DAT) ; \
+ chmod $(FILEPERM) $(DAT) )
+
+update: $(GAME) recover $(VARDAT) dungeon spec_levs
+# (don't yank the old version out from under people who're playing it)
+ -mv $(DESTDIR)/$(GAMEDIR)/$(GAME) $(DESTDIR)/$(GAMEDIR)/$(GAME).old
+# quest.dat is also kept open and has the same problems over NFS
+# (quest.dat may be inside nhdat if dlb is in use)
+ -mv $(DESTDIR)/$(GAMEDIR)/quest.dat $(DESTDIR)/$(GAMEDIR)/quest.dat.old
+ -mv $(DESTDIR)/$(GAMEDIR)/nhdat $(DESTDIR)/$(GAMEDIR)/nhdat.old
+# set up new versions of the game files
+ ( $(MAKE) dofiles )
+# touch time-sensitive files
+ -touch -c $(DESTDIR)/$(VARDIR)/bones* $(DESTDIR)/$(VARDIR)/?lock* $(DESTDIR)/$(VARDIR)/wizard*
+ -touch -c $(DESTDIR)/$(VARDIR)/save/*
+ touch $(DESTDIR)/$(VARDIR)/perm $(DESTDIR)/$(VARDIR)/record
+# and a reminder
+ @echo You may also want to install the man pages via the doc Makefile.
+
+install: $(GAME) recover $(VARDAT) dungeon spec_levs
+# set up the directories
+# not all mkdirs have -p; those that don't will create a -p directory
+ -mkdir -p $(DESTDIR)/$(SHELLDIR)
+ -rm -rf $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR)
+ -mkdir -p $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+ -rmdir ./-p
+ -$(CHOWN) $(GAMEUID) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+ $(CHGRP) $(GAMEGRP) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+ chmod $(DIRPERM) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+# set up the game files
+ ( $(MAKE) dofiles )
+# set up some additional files
+ touch $(DESTDIR)/$(VARDIR)/perm $(DESTDIR)/$(VARDIR)/record $(DESTDIR)/$(VARDIR)/logfile
+ -( cd $(DESTDIR)/$(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile ; \
+ $(CHGRP) $(GAMEGRP) perm record logfile ; \
+ chmod $(FILEPERM) perm record logfile )
+# and a reminder
+ @echo You may also want to reinstall the man pages via the doc Makefile.
+
+
+# 'make clean' removes all the .o files, but leaves around all the executables
+# and compiled data files
+clean:
+ ( cd src ; $(MAKE) clean )
+ ( cd util ; $(MAKE) clean )
+
+# 'make spotless' returns the source tree to near-distribution condition.
+# it removes .o files, executables, and compiled data files
+spotless:
+ ( cd src ; $(MAKE) spotless )
+ ( cd util ; $(MAKE) spotless )
+ ( cd dat ; $(MAKE) spotless )
+ ( cd doc ; $(MAKE) spotless )
diff --git a/games/nethack/files/Makefile.utl.slack b/games/nethack/files/Makefile.utl.slack
new file mode 100644
index 0000000000..b259cfc2b6
--- /dev/null
+++ b/games/nethack/files/Makefile.utl.slack
@@ -0,0 +1,403 @@
+# Makefile for NetHack's utility programs.
+# SCCS Id: @(#)Makefile.utl 3.4 1997/04/19
+
+# newer makes predefine $(MAKE) to 'make' and do smarter processing of
+# recursive make calls if $(MAKE) is used
+# these makes allow $(MAKE) to be overridden by the environment if someone
+# wants to (or has to) use something other than the standard make, so we do
+# not want to unconditionally set $(MAKE) here
+#
+# unfortunately, some older makes do not predefine $(MAKE); if you have one of
+# these, uncomment the following line
+# (you will know that you have one if you get complaints about unable to
+# execute things like 'foo.o')
+# MAKE = make
+
+# if you are using gcc as your compiler,
+# uncomment the CC definition below if it's not in your environment
+CC = gcc
+#
+# For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following:
+#
+# CC = gcc -ansi -D_BULL_SOURCE -D_XOPEN_SOURCE -D_POSIX_SOURCE
+#
+# If you are using GCC 2.2.2 or higher on a DPX/2, just use:
+#
+# CC = gcc -ansi
+#
+# For HP/UX 10.20 with GCC:
+# CC = gcc -D_POSIX_SOURCE
+#
+# if your make doesn't define a default SHELL properly, you may need
+# the line below (Atari users will need a bourne work-alike)
+# SHELL = /bin/sh
+# for Atari
+# SHELL=E:/GEMINI2/MUPFEL.TTP
+
+# flags may have to be changed as required
+# flags for 286 Xenix:
+# CFLAGS = -Ml2t16 -O -LARGE -I../include
+# LFLAGS = -Ml -F 4000 -SEG 512
+
+# flags for 286 Microport SysV-AT
+# CFLAGS = -DDUMB -Ml -I../include
+# LFLAGS = -Ml
+
+# flags for Atari GCC (3.2.1)
+# CFLAGS = -O -I../include
+# LFLAGS = -s
+# flags for Atari GCC (3.3)
+# CFLAGS = -mshort -O2 -I../include
+# LFLAGS = -mshort -s
+
+# flags for Apollos using their native cc
+# (as long as it claims to be __STDC__ but isn't)
+# CFLAGS = -DAPOLLO -O -I../include
+
+# flags for AIX 3.1 cc on IBM RS/6000 to define
+# a suitable subset of standard libraries
+# (note that there is more info regarding the "-qchars=signed"
+# switch in file Install.unx note 8)
+# CFLAGS = -D_NO_PROTO -D_XOPEN_SOURCE -O -I../include -qchars=signed
+# and for AIX 3.2:
+# CFLAGS = -D_NO_PROTO -D_XOPEN_SOURCE -D_ALL_SOURCE -O -I../include -qchars=signed
+
+# flags for A/UX 2.01 using native cc or c89
+# gcc predefines AUX so that's not needed there
+# CFLAGS = -ZS -D_POSIX_SOURCE -O -I../include -DAUX
+
+# flags for IRIX 4.0.x using native cc
+# SGI cc 3.10 will fail to compile makedefs with -O
+# CFLAGS = -I../include -D__STDC__ -woff 100,293
+
+# flags for Linux
+# compile normally
+# CFLAGS = -O2 -fomit-frame-pointer -I../include
+LFLAGS = -L/usr/lib
+# OR compile backwards compatible a.out format
+# CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
+# LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
+
+# flags for BeOS using the command line
+# remember to uncomment flex and bison below
+# BeOS on a Mac/BeBox:
+#CC = mwcc
+#CFLAGS = -I../include
+# BeOS on Intel:
+# the default values are fine
+
+# flags for debugging:
+# CFLAGS = -g -I../include
+
+CFLAGS = -O -I../include
+# LFLAGS =
+
+LIBS =
+
+# If you are cross-compiling, you must use this:
+#OBJDIR = .
+# otherwise, you can save a little bit of disk space with this:
+OBJDIR = ../src
+
+# yacc/lex programs to use to generate *_comp.h, *_lex.c, and *_yacc.c.
+# if, instead of yacc/lex you have bison/flex, comment/uncomment the following.
+# YACC = yacc
+# LEX = lex
+YACC = bison -y
+# YACC = byacc
+LEX = flex
+
+# these are the names of the output files from YACC/LEX. Under MS-DOS
+# and similar systems, they may differ
+YTABC = y.tab.c
+YTABH = y.tab.h
+LEXYYC = lex.yy.c
+# YTABC = y_tab.c
+# YTABH = y_tab.h
+# LEXYYC = lexyy.c
+
+
+
+# ----------------------------------------
+#
+# Nothing below this line should have to be changed.
+
+# timestamps for primary header files, matching src/Makefile
+CONFIG_H = ../src/config.h-t
+HACK_H = ../src/hack.h-t
+
+# utility .c files
+MAKESRC = makedefs.c
+SPLEVSRC = lev_yacc.c lev_lex.c lev_main.c
+DGNCOMPSRC = dgn_yacc.c dgn_lex.c dgn_main.c
+RECOVSRC = recover.c
+DLBSRC = dlb_main.c
+UTILSRCS = $(MAKESRC) panic.c $(SPLEVSRC) $(DGNCOMPSRC) $(RECOVSRC) $(DLBSRC)
+
+# files that define all monsters and objects
+CMONOBJ = ../src/monst.c ../src/objects.c
+OMONOBJ = $(OBJDIR)/monst.o $(OBJDIR)/objects.o
+# files that provide access to NetHack's names
+CNAMING = ../src/drawing.c ../src/decl.c $(CMONOBJ)
+ONAMING = $(OBJDIR)/drawing.o $(OBJDIR)/decl.o $(OMONOBJ)
+# dynamic memory allocation
+CALLOC = ../src/alloc.c panic.c
+OALLOC = $(OBJDIR)/alloc.o panic.o
+
+# object files for makedefs
+MAKEOBJS = makedefs.o $(OMONOBJ)
+
+# object files for special levels compiler
+SPLEVOBJS = lev_yacc.o lev_lex.o lev_main.o $(OALLOC) $(ONAMING)
+
+# object files for dungeon compiler
+DGNCOMPOBJS = dgn_yacc.o dgn_lex.o dgn_main.o $(OALLOC)
+
+# object files for recovery utility
+RECOVOBJS = recover.o
+
+# object files for the data librarian
+DLBOBJS = dlb_main.o $(OBJDIR)/dlb.o $(OALLOC)
+
+# flags for creating distribution versions of sys/share/*_lex.c, using
+# a more portable flex skeleton, which is not included in the distribution.
+# hopefully keeping this out of the section to be edited will keep too
+# many people from being confused by it...
+# FLEXDIST = -L -S../sys/share/flexhack.skl
+FLEXDIST =
+#
+# flags for creating distribution versions of sys/share/*_yacc.c, without
+# line numbers so patches from version to version are practical
+# YACCDIST = -l
+YACCDIST =
+
+
+# dependencies for makedefs
+#
+makedefs: $(MAKEOBJS)
+ $(CC) $(LFLAGS) -o makedefs $(MAKEOBJS)
+
+makedefs.o: makedefs.c $(CONFIG_H) ../include/permonst.h \
+ ../include/objclass.h ../include/monsym.h \
+ ../include/artilist.h ../include/dungeon.h ../include/obj.h \
+ ../include/monst.h ../include/you.h ../include/flag.h \
+ ../include/dlb.h ../include/patchlevel.h ../include/qtext.h
+
+../include/onames.h: makedefs
+ ./makedefs -o
+../include/pm.h: makedefs
+ ./makedefs -p
+../src/monstr.c: makedefs
+ ./makedefs -m
+../include/vis_tab.h: makedefs
+ ./makedefs -z
+# makedefs -z makes both vis_tab.h and vis_tab.c, but writes the .h first
+../src/vis_tab.c: ../include/vis_tab.h
+
+lintdefs:
+ @lint -axbh -I../include -DLINT $(MAKESRC) $(CMONOBJ) | sed '/_flsbuf/d'
+
+
+# we defer this makedefs call to the src Makefile, since it knows all about
+# the main src and include files date.h is a timestamp for
+../include/date.h::
+ @( cd ../src ; $(MAKE) ../include/date.h )
+
+# support code used by several of the utility programs (but not makedefs)
+panic.o: panic.c $(CONFIG_H)
+
+
+# dependencies for lev_comp
+#
+lev_comp: $(SPLEVOBJS)
+ $(CC) $(LFLAGS) -o lev_comp $(SPLEVOBJS) $(LIBS)
+
+lev_yacc.o: lev_yacc.c $(HACK_H) ../include/sp_lev.h
+lev_main.o: lev_main.c $(HACK_H) ../include/sp_lev.h ../include/tcap.h \
+ ../include/date.h
+
+# see lev_comp.l for WEIRD_LEX discussion
+# egrep will return failure if it doesn't find anything, but we know there
+# is one "_cplusplus" inside a comment
+lev_lex.o: lev_lex.c $(HACK_H) ../include/lev_comp.h ../include/sp_lev.h
+ @echo $(CC) -c $(CFLAGS) lev_lex.c
+ @$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus lev_lex.c` lev_lex.c
+
+../include/lev_comp.h: lev_yacc.c
+
+lev_yacc.c: lev_comp.y
+ $(YACC) $(YACCDIST) -d lev_comp.y
+ mv $(YTABC) lev_yacc.c
+ mv $(YTABH) ../include/lev_comp.h
+
+lev_lex.c: lev_comp.l
+ $(LEX) $(FLEXDIST) lev_comp.l
+ mv $(LEXYYC) lev_lex.c
+
+# with all of extern.h's functions to complain about, we drown in
+# 'defined but not used' without -u
+lintlev:
+ @lint -axhu -I../include -DLINT $(SPLEVSRC) $(CALLOC) $(CNAMING) | sed '/_flsbuf/d'
+
+
+# dependencies for dgn_comp
+#
+dgn_comp: $(DGNCOMPOBJS)
+ $(CC) $(LFLAGS) -o dgn_comp $(DGNCOMPOBJS) $(LIBS)
+
+dgn_yacc.o: dgn_yacc.c $(CONFIG_H) ../include/dgn_file.h ../include/date.h
+dgn_main.o: dgn_main.c $(CONFIG_H) ../include/dlb.h
+
+# see dgn_comp.l for WEIRD_LEX discussion
+dgn_lex.o: dgn_lex.c $(CONFIG.H) ../include/dgn_comp.h ../include/dgn_file.h
+ @echo $(CC) -c $(CFLAGS) dgn_lex.c
+ @$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus dgn_lex.c` dgn_lex.c
+
+
+../include/dgn_comp.h: dgn_yacc.c
+
+dgn_yacc.c: dgn_comp.y
+ $(YACC) $(YACCDIST) -d dgn_comp.y
+ mv $(YTABC) dgn_yacc.c
+ mv $(YTABH) ../include/dgn_comp.h
+
+dgn_lex.c: dgn_comp.l
+ $(LEX) $(FLEXDIST) dgn_comp.l
+ mv $(LEXYYC) dgn_lex.c
+
+# with all of extern.h's functions to complain about, we drown in
+# 'defined but not used' without -u
+lintdgn:
+ @lint -axhu -I../include -DLINT $(DGNCOMPSRC) $(CALLOC) | sed '/_flsbuf/d'
+
+
+# dependencies for recover
+#
+recover: $(RECOVOBJS)
+ $(CC) $(LFLAGS) -o recover $(RECOVOBJS) $(LIBS)
+
+recover.o: recover.c $(CONFIG_H) ../include/date.h
+
+
+# dependencies for dlb
+#
+dlb: $(DLBOBJS)
+ $(CC) $(LFLAGS) -o dlb $(DLBOBJS) $(LIBS)
+
+dlb_main.o: dlb_main.c $(CONFIG_H) ../include/dlb.h ../include/date.h
+ $(CC) $(CFLAGS) -c dlb_main.c
+
+
+
+# dependencies for tile utilities
+#
+TEXT_IO = tiletext.o tiletxt.o $(ONAMING)
+GIFREADERS = gifread.o $(OALLOC)
+PPMWRITERS = ppmwrite.o $(OALLOC)
+
+tileutils: tilemap gif2txt txt2ppm tile2x11
+
+gif2txt: $(GIFREADERS) $(TEXT_IO)
+ $(CC) $(LFLAGS) -o gif2txt $(GIFREADERS) $(TEXT_IO) $(LIBS)
+txt2ppm: $(PPMWRITERS) $(TEXT_IO)
+ $(CC) $(LFLAGS) -o txt2ppm $(PPMWRITERS) $(TEXT_IO) $(LIBS)
+
+tile2x11: tile2x11.o $(TEXT_IO)
+ $(CC) $(LFLAGS) -o tile2x11 tile2x11.o $(TEXT_IO) $(LIBS)
+
+tile2img.ttp: tile2img.o bitmfile.o $(TEXT_IO)
+ $(CC) $(LFLAGS) -o tile2img.ttp tile2img.o bitmfile.o $(TEXT_IO) $(LIBS)
+
+tile2bmp: tile2bmp.o $(TEXT_IO)
+ $(CC) $(LFLAGS) -o tile2bmp tile2bmp.o $(TEXT_IO)
+
+xpm2img.ttp: xpm2img.o bitmfile.o
+ $(CC) $(LFLAGS) -o xpm2img.ttp xpm2img.o bitmfile.o $(LIBS)
+
+tile2beos: tile2beos.o $(TEXT_IO)
+ $(CC) $(LFLAGS) -o tile2beos tile2beos.o $(TEXT_IO) -lbe
+
+tilemap: ../win/share/tilemap.c $(HACK_H)
+ $(CC) $(CFLAGS) $(LFLAGS) -o tilemap ../win/share/tilemap.c $(LIBS)
+../src/tile.c: tilemap
+ ./tilemap
+
+../include/tile.h: ../win/share/tile.h
+ cp ../win/share/tile.h ../include/tile.h
+tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../include/tile.h
+ $(CC) $(CFLAGS) -c ../win/share/tiletext.c
+tiletxt.o: ../win/share/tilemap.c $(HACK_H)
+ $(CC) $(CFLAGS) -c -DTILETEXT ../win/share/tilemap.c
+ mv tilemap.o tiletxt.o
+
+gifread.o: ../win/share/gifread.c $(CONFIG_H) ../include/tile.h
+ $(CC) $(CFLAGS) -c ../win/share/gifread.c
+ppmwrite.o: ../win/share/ppmwrite.c $(CONFIG_H) ../include/tile.h
+ $(CC) $(CFLAGS) -c ../win/share/ppmwrite.c
+
+tile2bmp.o: ../win/share/tile2bmp.c $(HACK_H) ../include/tile.h
+ $(CC) $(CFLAGS) -c ../win/share/tile2bmp.c
+
+tile2x11.o: ../win/X11/tile2x11.c $(HACK_H) ../include/tile.h \
+ ../include/tile2x11.h
+ $(CC) $(CFLAGS) -c ../win/X11/tile2x11.c
+
+tile2img.o: ../win/gem/tile2img.c $(HACK_H) ../include/tile.h \
+ ../include/bitmfile.h
+ $(CC) $(CFLAGS) -c ../win/gem/tile2img.c
+xpm2img.o: ../win/gem/xpm2img.c $(HACK_H) ../include/bitmfile.h
+ $(CC) $(CFLAGS) -c ../win/gem/xpm2img.c
+bitmfile.o: ../win/gem/bitmfile.c ../include/bitmfile.h
+ $(CC) $(CFLAGS) -c ../win/gem/bitmfile.c
+
+tile2beos.o: ../win/BeOS/tile2beos.cpp $(HACK_H) ../include/tile.h
+ $(CXX) $(CFLAGS) -c ../win/BeOS/tile2beos.cpp
+
+# using dependencies like
+# ../src/foo::
+# @( cd ../src ; $(MAKE) foo )
+# would always force foo to be up-to-date according to the src Makefile
+# when it's needed here. unfortunately, some makes believe this syntax
+# means foo always changes, instead of foo should always be checked.
+# therefore, approximate via config.h dependencies, and hope that anybody
+# changing anything other than basic configuration also knows when not
+# to improvise things not in the instructions, like 'make makedefs' here
+# in util...
+
+# make sure object files from src are available when needed
+#
+$(OBJDIR)/alloc.o: ../src/alloc.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../src/alloc.c -o $@
+$(OBJDIR)/drawing.o: ../src/drawing.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../src/drawing.c -o $@
+$(OBJDIR)/decl.o: ../src/decl.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../src/decl.c -o $@
+$(OBJDIR)/monst.o: ../src/monst.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../src/monst.c -o $@
+$(OBJDIR)/objects.o: ../src/objects.c $(CONFIG_H)
+ $(CC) $(CFLAGS) -c ../src/objects.c -o $@
+$(OBJDIR)/dlb.o: ../src/dlb.c $(HACK_H) ../include/dlb.h
+ $(CC) $(CFLAGS) -c ../src/dlb.c -o $@
+
+# make sure hack.h dependencies get transitive information
+$(HACK_H): $(CONFIG_H)
+ @( cd ../src ; $(MAKE) $(HACK_H) )
+$(CONFIG_H): ../include/config.h
+ @( cd ../src ; $(MAKE) $(CONFIG_H) )
+
+tags: $(UTILSRCS)
+ @ctags -tw $(UTILSRCS)
+
+clean:
+ -rm -f *.o
+
+spotless: clean
+ -rm -f lev_lex.c lev_yacc.c dgn_lex.c dgn_yacc.c
+ -rm -f ../include/lev_comp.h ../include/dgn_comp.h
+ -rm -f ../include/tile.h
+ -rm -f makedefs lev_comp dgn_comp recover dlb
+ -rm -f gif2txt txt2ppm tile2x11 tile2img.ttp xpm2img.ttp tilemap
+
+tileedit: tileedit.cpp $(TEXT_IO)
+ $(QTDIR)/bin/moc -o tileedit.moc tileedit.h
+ $(CC) -o tileedit -I../include -I$(QTDIR)/include -L$(QTDIR)/lib tileedit.cpp $(TEXT_IO) -lqt-mt
diff --git a/games/nethack/files/README b/games/nethack/files/README
new file mode 100644
index 0000000000..970a73f022
--- /dev/null
+++ b/games/nethack/files/README
@@ -0,0 +1,18 @@
+These files are the edited files from which the contents of the "patches"
+directry were generated.
+
+Makefile.src.slack corresponds to nethack-3.4.3/sys/unix/Makefile.src
+Makefile.top.slack corresponds to nethack-3.4.3/sys/unix/Makefile.top
+Makefile.utl.slack corresponds to nethack-3.4.3/sys/unix/Makefile.utl
+
+config.h.slack corresponds to nethack-3.4.3/include/config.h
+unixconf.h.slack corresponds to nethack-3.4.3/include/unixconf.h
+
+Makefile-doc.slack corresponds to nethack-3.4.3/doc/Makefile.
+nethack-3.4.3/doc/Makefile is generated by the setup.sh script in the
+nethack-3.4.3/sys/unix directory. It is not present when the nethack-3.4.3
+source tarball is initall unpacked.
+
+For more information about these files, read the documentation contained
+in the nethack-3.4.3 source tarball.
+
diff --git a/games/nethack/files/config.h.slack b/games/nethack/files/config.h.slack
new file mode 100644
index 0000000000..936a0b60f7
--- /dev/null
+++ b/games/nethack/files/config.h.slack
@@ -0,0 +1,358 @@
+/* SCCS Id: @(#)config.h 3.4 2003/12/06 */
+/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/* NetHack may be freely redistributed. See license for details. */
+
+#ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
+#define CONFIG_H
+
+
+/*
+ * Section 1: Operating and window systems selection.
+ * Select the version of the OS you are using.
+ * For "UNIX" select BSD, ULTRIX, SYSV, or HPUX in unixconf.h.
+ * A "VMS" option is not needed since the VMS C-compilers
+ * provide it (no need to change sec#1, vmsconf.h handles it).
+ */
+
+#define UNIX /* delete if no fork(), exec() available */
+
+/* #define MSDOS */ /* in case it's not auto-detected */
+
+/* #define OS2 */ /* define for OS/2 */
+
+/* #define TOS */ /* define for Atari ST/TT */
+
+/* #define STUPID */ /* avoid some complicated expressions if
+ your C compiler chokes on them */
+/* #define MINIMAL_TERM */
+ /* if a terminal handles highlighting or tabs poorly,
+ try this define, used in pager.c and termcap.c */
+/* #define ULTRIX_CC20 */
+ /* define only if using cc v2.0 on a DECstation */
+/* #define ULTRIX_PROTO */
+ /* define for Ultrix 4.0 (or higher) on a DECstation;
+ * if you get compiler errors, don't define this. */
+ /* Hint: if you're not developing code, don't define
+ ULTRIX_PROTO. */
+
+#include "config1.h" /* should auto-detect MSDOS, MAC, AMIGA, and WIN32 */
+
+
+/* Windowing systems...
+ * Define all of those you want supported in your binary.
+ * Some combinations make no sense. See the installation document.
+ */
+#define TTY_GRAPHICS /* good old tty based graphics */
+#define X11_GRAPHICS /* X11 interface */
+#define QT_GRAPHICS /* Qt interface */
+/* #define GNOME_GRAPHICS */ /* Gnome interface */
+/* #define MSWIN_GRAPHICS */ /* Windows NT, CE, Graphics */
+
+/*
+ * Define the default window system. This should be one that is compiled
+ * into your system (see defines above). Known window systems are:
+ *
+ * tty, X11, mac, amii, BeOS, Qt, Gem, Gnome
+ */
+
+/* MAC also means MAC windows */
+#ifdef MAC
+# ifndef AUX
+# define DEFAULT_WINDOW_SYS "mac"
+# endif
+#endif
+
+/* Amiga supports AMII_GRAPHICS and/or TTY_GRAPHICS */
+#ifdef AMIGA
+# define AMII_GRAPHICS /* (optional) */
+# define DEFAULT_WINDOW_SYS "amii" /* "amii", "amitile" or "tty" */
+#endif
+
+/* Atari supports GEM_GRAPHICS and/or TTY_GRAPHICS */
+#ifdef TOS
+# define GEM_GRAPHICS /* Atari GEM interface (optional) */
+# define DEFAULT_WINDOW_SYS "Gem" /* "Gem" or "tty" */
+#endif
+
+#ifdef __BEOS__
+#define BEOS_GRAPHICS /* (optional) */
+#define DEFAULT_WINDOW_SYS "BeOS" /* "tty" */
+#ifndef HACKDIR /* override the default hackdir below */
+# define HACKDIR "/boot/apps/NetHack"
+#endif
+#endif
+
+#ifdef QT_GRAPHICS
+# define DEFAULT_WC_TILED_MAP /* Default to tiles if users doesn't say wc_ascii_map */
+# define USER_SOUNDS /* Use sounds */
+# ifndef __APPLE__
+# define USER_SOUNDS_REGEX
+# endif
+# define USE_XPM /* Use XPM format for images (required) */
+# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */
+# ifndef DEFAULT_WINDOW_SYS
+# define DEFAULT_WINDOW_SYS "tty"
+# endif
+#endif
+
+#ifdef GNOME_GRAPHICS
+# define USE_XPM /* Use XPM format for images (required) */
+# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */
+# ifndef DEFAULT_WINDOW_SYS
+# define DEFAULT_WINDOW_SYS "Gnome"
+# endif
+#endif
+
+#ifdef MSWIN_GRAPHICS
+# ifdef TTY_GRAPHICS
+# undef TTY_GRAPHICS
+# endif
+# ifndef DEFAULT_WINDOW_SYS
+# define DEFAULT_WINDOW_SYS "mswin"
+# endif
+# define HACKDIR "\\nethack"
+#endif
+
+#ifndef DEFAULT_WINDOW_SYS
+# define DEFAULT_WINDOW_SYS "tty"
+#endif
+
+#ifdef X11_GRAPHICS
+/*
+ * There are two ways that X11 tiles may be defined. (1) using a custom
+ * format loaded by NetHack code, or (2) using the XPM format loaded by
+ * the free XPM library. The second option allows you to then use other
+ * programs to generate tiles files. For example, the PBMPlus tools
+ * would allow:
+ * xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
+ */
+# define USE_XPM /* Disable if you do not have the XPM library */
+# ifdef USE_XPM
+# define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */
+# endif
+#endif
+
+
+/*
+ * Section 2: Some global parameters and filenames.
+ * Commenting out WIZARD, LOGFILE, NEWS or PANICLOG removes that
+ * feature from the game; otherwise set the appropriate wizard
+ * name. LOGFILE, NEWS and PANICLOG refer to files in the
+ * playground.
+ */
+
+#ifndef WIZARD /* allow for compile-time or Makefile changes */
+# ifndef KR1ED
+# define WIZARD "wizard" /* the person allowed to use the -D option */
+# else
+# define WIZARD
+# define WIZARD_NAME "wizard"
+# endif
+#endif
+
+#define LOGFILE "logfile" /* larger file for debugging purposes */
+#define NEWS "news" /* the file containing the latest hack news */
+#define PANICLOG "paniclog" /* log of panic and impossible events */
+
+/*
+ * If COMPRESS is defined, it should contain the full path name of your
+ * 'compress' program. Defining INTERNAL_COMP causes NetHack to do
+ * simpler byte-stream compression internally. Both COMPRESS and
+ * INTERNAL_COMP create smaller bones/level/save files, but require
+ * additional code and time. Currently, only UNIX fully implements
+ * COMPRESS; other ports should be able to uncompress save files a
+ * la unixmain.c if so inclined.
+ * If you define COMPRESS, you must also define COMPRESS_EXTENSION
+ * as the extension your compressor appends to filenames after
+ * compression.
+ */
+
+#ifdef UNIX
+/* path and file name extension for compression program */
+/* #define COMPRESS "/usr/bin/compress" */ /* Lempel-Ziv compression */
+/* #define COMPRESS_EXTENSION ".Z" */ /* compress's extension */
+/* An example of one alternative you might want to use: */
+#define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
+#define COMPRESS_EXTENSION ".gz" /* normal gzip extension */
+#endif
+
+#ifndef COMPRESS
+# define INTERNAL_COMP /* control use of NetHack's compression routines */
+#endif
+
+/*
+ * Data librarian. Defining DLB places most of the support files into
+ * a tar-like file, thus making a neater installation. See *conf.h
+ * for detailed configuration.
+ */
+#define DLB /* not supported on all platforms */
+
+/*
+ * Defining INSURANCE slows down level changes, but allows games that
+ * died due to program or system crashes to be resumed from the point
+ * of the last level change, after running a utility program.
+ */
+#define INSURANCE /* allow crashed game recovery */
+
+#ifndef MAC
+# define CHDIR /* delete if no chdir() available */
+#endif
+
+#ifdef CHDIR
+/*
+ * If you define HACKDIR, then this will be the default playground;
+ * otherwise it will be the current directory.
+ */
+# ifndef HACKDIR
+# define HACKDIR "/usr/share/games/nethack"
+# endif
+
+/*
+ * Some system administrators are stupid enough to make Hack suid root
+ * or suid daemon, where daemon has other powers besides that of reading or
+ * writing Hack files. In such cases one should be careful with chdir's
+ * since the user might create files in a directory of his choice.
+ * Of course SECURE is meaningful only if HACKDIR is defined.
+ */
+/* #define SECURE */ /* do setuid(getuid()) after chdir() */
+
+/*
+ * If it is desirable to limit the number of people that can play Hack
+ * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
+ * #define MAX_NR_OF_PLAYERS 6
+ */
+#endif /* CHDIR */
+
+
+
+/*
+ * Section 3: Definitions that may vary with system type.
+ * For example, both schar and uchar should be short ints on
+ * the AT&T 3B2/3B5/etc. family.
+ */
+
+/*
+ * Uncomment the following line if your compiler doesn't understand the
+ * 'void' type (and thus would give all sorts of compile errors without
+ * this definition).
+ */
+/* #define NOVOID */ /* define if no "void" data type. */
+
+/*
+ * Uncomment the following line if your compiler falsely claims to be
+ * a standard C compiler (i.e., defines __STDC__ without cause).
+ * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
+ */
+/* #define NOTSTDC */ /* define for lying compilers */
+
+#include "tradstdc.h"
+
+/*
+ * type schar: small signed integers (8 bits suffice) (eg. TOS)
+ *
+ * typedef char schar;
+ *
+ * will do when you have signed characters; otherwise use
+ *
+ * typedef short int schar;
+ */
+#ifdef AZTEC
+# define schar char
+#else
+typedef signed char schar;
+#endif
+
+/*
+ * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
+ *
+ * typedef unsigned char uchar;
+ *
+ * will be satisfactory if you have an "unsigned char" type;
+ * otherwise use
+ *
+ * typedef unsigned short int uchar;
+ */
+#ifndef _AIX32 /* identical typedef in system file causes trouble */
+typedef unsigned char uchar;
+#endif
+
+/*
+ * Various structures have the option of using bitfields to save space.
+ * If your C compiler handles bitfields well (e.g., it can initialize structs
+ * containing bitfields), you can define BITFIELDS. Otherwise, the game will
+ * allocate a separate character for each bitfield. (The bitfields used never
+ * have more than 7 bits, and most are only 1 bit.)
+ */
+#define BITFIELDS /* Good bitfield handling */
+
+/* #define STRNCMPI */ /* compiler/library has the strncmpi function */
+
+/*
+ * There are various choices for the NetHack vision system. There is a
+ * choice of two algorithms with the same behavior. Defining VISION_TABLES
+ * creates huge (60K) tables at compile time, drastically increasing data
+ * size, but runs slightly faster than the alternate algorithm. (MSDOS in
+ * particular cannot tolerate the increase in data size; other systems can
+ * flip a coin weighted to local conditions.)
+ *
+ * If VISION_TABLES is not defined, things will be faster if you can use
+ * MACRO_CPATH. Some cpps, however, cannot deal with the size of the
+ * functions that have been macroized.
+ */
+
+/* #define VISION_TABLES */ /* use vision tables generated at compile time */
+#ifndef VISION_TABLES
+# ifndef NO_MACRO_CPATH
+# define MACRO_CPATH /* use clear_path macros instead of functions */
+# endif
+#endif
+
+/*
+ * Section 4: THE FUN STUFF!!!
+ *
+ * Conditional compilation of special options are controlled here.
+ * If you define the following flags, you will add not only to the
+ * complexity of the game but also to the size of the load module.
+ */
+
+/* dungeon features */
+#define SINKS /* Kitchen sinks - Janet Walz */
+/* dungeon levels */
+#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
+#define REINCARNATION /* Special Rogue-like levels */
+/* monsters & objects */
+#define KOPS /* Keystone Kops by Scott R. Turner */
+#define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */
+#define STEED /* Riding steeds */
+#define TOURIST /* Tourist players with cameras and Hawaiian shirts */
+/* difficulty */
+#define ELBERETH /* Engraving the E-word repels monsters */
+/* I/O */
+#define REDO /* support for redoing last command - DGK */
+#if !defined(MAC)
+# define CLIPPING /* allow smaller screens -- ERS */
+#endif
+
+#ifdef REDO
+# define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
+#endif
+
+#define EXP_ON_BOTL /* Show experience on bottom line */
+/* #define SCORE_ON_BOTL */ /* added by Gary Erickson (erickson@ucivax) */
+
+/*
+ * Section 5: EXPERIMENTAL STUFF
+ *
+ * Conditional compilation of new or experimental options are controlled here.
+ * Enable any of these at your own risk -- there are almost certainly
+ * bugs left here.
+ */
+
+/*#define GOLDOBJ */ /* Gold is kept on obj chains - Helge Hafting */
+#define AUTOPICKUP_EXCEPTIONS /* exceptions to autopickup */
+
+/* End of Section 5 */
+
+#include "global.h" /* Define everything else according to choices above */
+
+#endif /* CONFIG_H */
diff --git a/games/nethack/files/nethack-qt b/games/nethack/files/nethack-qt
new file mode 100644
index 0000000000..f4c865abc7
--- /dev/null
+++ b/games/nethack/files/nethack-qt
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+NETHACKOPTIONS="windowtype:Qt" nethack
diff --git a/games/nethack/files/nethack-qt.desktop b/games/nethack/files/nethack-qt.desktop
new file mode 100644
index 0000000000..a11ff9bf45
--- /dev/null
+++ b/games/nethack/files/nethack-qt.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=NetHack (Qt)
+GenericName=Rogue-like Game
+Comment=Graphical NetHack client
+Exec=nethack-qt
+Icon=nethack.xpm
+Terminal=false
+Type=Application
+Categories=Application;Game;StrategyGame;
diff --git a/games/nethack/files/nethack-x11 b/games/nethack/files/nethack-x11
new file mode 100644
index 0000000000..182aed08c8
--- /dev/null
+++ b/games/nethack/files/nethack-x11
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+NETHACKOPTIONS="windowtype:x11" nethack
diff --git a/games/nethack/files/nethack-x11.desktop b/games/nethack/files/nethack-x11.desktop
new file mode 100644
index 0000000000..b8a78bf95f
--- /dev/null
+++ b/games/nethack/files/nethack-x11.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=NetHack (X11)
+GenericName=Rogue-like Game
+Comment=Graphical NetHack client
+Exec=nethack-x11
+Icon=nethack.xpm
+Terminal=false
+Type=Application
+Categories=Application;Game;StrategyGame;
diff --git a/games/nethack/files/nethack.desktop b/games/nethack/files/nethack.desktop
new file mode 100644
index 0000000000..40fa656dde
--- /dev/null
+++ b/games/nethack/files/nethack.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=NetHack
+GenericName=Rogue-like Game
+Comment=Standard NetHack client
+Exec=nethack
+Icon=nethack.xpm
+Terminal=true
+Type=Application
+Categories=Application;Game;StrategyGame;
diff --git a/games/nethack/files/unixconf.h.slack b/games/nethack/files/unixconf.h.slack
new file mode 100644
index 0000000000..1402bb36b1
--- /dev/null
+++ b/games/nethack/files/unixconf.h.slack
@@ -0,0 +1,351 @@
+/* SCCS Id: @(#)unixconf.h 3.4 1999/07/02 */
+/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/* NetHack may be freely redistributed. See license for details. */
+
+#ifdef UNIX
+#ifndef UNIXCONF_H
+#define UNIXCONF_H
+
+/*
+ * Some include files are in a different place under SYSV
+ * BSD SYSV
+ * <sys/time.h> <time.h>
+ * <sgtty.h> <termio.h>
+ *
+ * Some routines are called differently
+ * index strchr
+ * rindex strrchr
+ *
+ */
+
+/* define exactly one of the following four choices */
+/* #define BSD 1 */ /* define for 4.n/Free/Open/Net BSD */
+ /* also for relatives like SunOS 4.x, DG/UX, and */
+ /* older versions of Linux */
+/* #define ULTRIX */ /* define for Ultrix v3.0 or higher (but not lower) */
+ /* Use BSD for < v3.0 */
+ /* "ULTRIX" not to be confused with "ultrix" */
+/* #define SYSV */ /* define for System V, Solaris 2.x, newer versions */
+ /* of Linux */
+/* #define HPUX */ /* Hewlett-Packard's Unix, version 6.5 or higher */
+ /* use SYSV for < v6.5 */
+
+
+/* define any of the following that are appropriate */
+/* #define SVR4 */ /* use in addition to SYSV for System V Release 4 */
+ /* including Solaris 2+ */
+#define NETWORK /* if running on a networked system */
+ /* e.g. Suns sharing a playground through NFS */
+/* #define SUNOS4 */ /* SunOS 4.x */
+#define LINUX /* Another Unix clone */
+/* #define CYGWIN32 */ /* Unix on Win32 -- use with case sensitive defines */
+/* #define GENIX */ /* Yet Another Unix Clone */
+/* #define HISX */ /* Bull Unix for XPS Machines */
+/* #define BOS */ /* Bull Open Software - Unix for DPX/2 Machines */
+/* #define UNIXPC */ /* use in addition to SYSV for AT&T 7300/3B1 */
+/* #define AIX_31 */ /* In AIX 3.1 (IBM RS/6000) use BSD ioctl's to gain
+ * job control (note that AIX is SYSV otherwise)
+ * Also define this for AIX 3.2 */
+
+#define TERMINFO /* uses terminfo rather than termcap */
+ /* Should be defined for most SYSV, SVR4 (including
+ * Solaris 2+), HPUX, and Linux systems. In
+ * particular, it should NOT be defined for the UNIXPC
+ * unless you remove the use of the shared library in
+ * the Makefile */
+#define TEXTCOLOR /* Use System V r3.2 terminfo color support */
+ /* and/or ANSI color support on termcap systems */
+ /* and/or X11 color */
+#define POSIX_JOB_CONTROL /* use System V / Solaris 2.x / POSIX job control */
+ /* (e.g., VSUSP) */
+#define POSIX_TYPES /* use POSIX types for system calls and termios */
+ /* Define for many recent OS releases, including
+ * those with specific defines (since types are
+ * changing toward the standard from earlier chaos).
+ * For example, platforms using the GNU libraries,
+ * Linux, Solaris 2.x
+ */
+
+/* #define OPENWINBUG */ /* avoid a problem using OpenWindows 3.0 for
+ X11 on SunOS 4.1.x, x>= 2. Do not define
+ for other X11 implementations. */
+/* #define PYRAMID_BUG */ /* avoid a bug on the Pyramid */
+/* #define BSD_43_BUG */ /* for real 4.3BSD cc's without schain botch fix */
+/* #define MICROPORT_BUG */ /* problems with large arrays in structs */
+/* #define MICROPORT_286_BUG */ /* changes needed in termcap.c to get it to
+ run with Microport Sys V/AT version 2.4.
+ By Jay Maynard */
+/* #define AIXPS_2BUG */ /* avoid a problem with little_to_big() optimization */
+
+/* #define RANDOM */ /* if neither random/srandom nor lrand48/srand48
+ is available from your system */
+
+/* see sys/unix/snd86unx.shr for more information on these */
+/* #define UNIX386MUSIC */ /* play real music through speaker on systems
+ with music driver installed */
+/* #define VPIX_MUSIC */ /* play real music through speaker on systems
+ with built-in VPIX support */
+
+
+/*
+ * The next two defines are intended mainly for the Andrew File System,
+ * which does not allow hard links. If NO_FILE_LINKS is defined, lock files
+ * will be created in LOCKDIR using open() instead of in the playground using
+ * link().
+ * Ralf Brown, 7/26/89 (from v2.3 hack of 10/10/88)
+ */
+
+/* #define NO_FILE_LINKS */ /* if no hard links */
+/* #define LOCKDIR "/usr/games/lib/nethackdir" */ /* where to put locks */
+
+/*
+ * If you want the static parts of your playground on a read-only file
+ * system, define VAR_PLAYGROUND to be where the variable parts are kept.
+ */
+#define VAR_PLAYGROUND "/var/lib/nethack"
+
+
+/*
+ * Define DEF_PAGER as your default pager, e.g. "/bin/cat" or "/usr/ucb/more"
+ * If defined, it can be overridden by the environment variable PAGER.
+ * Hack will use its internal pager if DEF_PAGER is not defined.
+ * (This might be preferable for security reasons.)
+ * #define DEF_PAGER ".../mydir/mypager"
+ */
+
+
+
+/*
+ * Define PORT_HELP to be the name of the port-specfic help file.
+ * This file is found in HACKDIR.
+ * Normally, you shouldn't need to change this.
+ * There is currently no port-specific help for Unix systems.
+ */
+/* #define PORT_HELP "Unixhelp" */
+
+#ifdef TTY_GRAPHICS
+/*
+ * To enable the `timed_delay' option for using a timer rather than extra
+ * screen output when pausing for display effect. Requires that `msleep'
+ * function be available (with time argument specified in milliseconds).
+ * Various output devices can produce wildly varying delays when the
+ * "extra output" method is used, but not all systems provide access to
+ * a fine-grained timer.
+ */
+#define TIMED_DELAY /* usleep() */
+#endif
+
+/*
+ * If you define MAIL, then the player will be notified of new mail
+ * when it arrives. If you also define DEF_MAILREADER then this will
+ * be the default mail reader, and can be overridden by the environment
+ * variable MAILREADER; otherwise an internal pager will be used.
+ * A stat system call is done on the mailbox every MAILCKFREQ moves.
+ */
+
+#define MAIL /* Deliver mail during the game */
+
+/* The Andrew Message System does mail a little differently from normal
+ * UNIX. Mail is deposited in the user's own directory in ~/Mailbox
+ * (another directory). MAILBOX is the element that will be added on to
+ * the user's home directory path to generate the Mailbox path - just in
+ * case other Andrew sites do it differently from CMU.
+ *
+ * dan lovinger
+ * dl2n+@andrew.cmu.edu (dec 19 1989)
+ */
+
+/* #define AMS */ /* use Andrew message system for mail */
+
+/* NO_MAILREADER is for kerberos authenticating filesystems where it is
+ * essentially impossible to securely exec child processes, like mail
+ * readers, when the game is running under a special token.
+ *
+ * dan
+ */
+
+/* #define NO_MAILREADER */ /* have mail daemon just tell player of mail */
+
+#ifdef MAIL
+# if defined(BSD) || defined(ULTRIX)
+# ifdef AMS
+#define AMS_MAILBOX "/Mailbox"
+# else
+# if defined(__FreeBSD__) || defined(__OpenBSD__)
+#define DEF_MAILREADER "/usr/bin/mail"
+# else
+#define DEF_MAILREADER "/usr/ucb/Mail"
+# endif
+# endif
+#else
+# if (defined(SYSV) || defined(DGUX) || defined(HPUX)) && !defined(LINUX)
+# if defined(M_XENIX)
+#define DEF_MAILREADER "/usr/bin/mail"
+# else
+# ifdef __sgi
+#define DEF_MAILREADER "/usr/sbin/Mail"
+# else
+#define DEF_MAILREADER "/usr/bin/mailx"
+# endif
+# endif
+# else
+#define DEF_MAILREADER "/bin/mail"
+# endif
+#endif
+
+#define MAILCKFREQ 50
+#endif /* MAIL */
+
+
+
+#ifdef COMPRESS
+/* Some implementations of compress need a 'quiet' option.
+ * If you've got one of these versions, put -q here.
+ * You can also include any other strange options your compress needs.
+ * If you have a normal compress, just leave it commented out.
+ */
+/* #define COMPRESS_OPTIONS "-q" */
+#endif
+
+#define FCMASK 0660 /* file creation mask */
+
+
+/*
+ * The remainder of the file should not need to be changed.
+ */
+
+#ifdef _AUX_SOURCE
+# ifdef AUX /* gcc ? */
+# define _SYSV_SOURCE
+# define _BSD_SOURCE
+#else
+# define AUX
+# endif
+#endif /* _AUX_SOURCE */
+
+#if defined(LINUX) || defined(bsdi)
+# ifndef POSIX_TYPES
+# define POSIX_TYPES
+# endif
+# ifndef POSIX_JOB_CONTROL
+# define POSIX_JOB_CONTROL
+# endif
+#endif
+
+/*
+ * BSD/ULTRIX systems are normally the only ones that can suspend processes.
+ * Suspending NetHack processes cleanly should be easy to add to other systems
+ * that have SIGTSTP in the Berkeley sense. Currently the only such systems
+ * known to work are HPUX and AIX 3.1; other systems will probably require
+ * tweaks to unixtty.c and ioctl.c.
+ *
+ * POSIX defines a slightly different type of job control, which should be
+ * equivalent for NetHack's purposes. POSIX_JOB_CONTROL should work on
+ * various recent SYSV versions (with possibly tweaks to unixtty.c again).
+ */
+#ifndef POSIX_JOB_CONTROL
+# if defined(BSD) || defined(ULTRIX) || defined(HPUX) || defined(AIX_31)
+# define BSD_JOB_CONTROL
+# else
+# if defined(SVR4)
+# define POSIX_JOB_CONTROL
+# endif
+# endif
+#endif
+#if defined(BSD_JOB_CONTROL) || defined(POSIX_JOB_CONTROL) || defined(AUX)
+#define SUSPEND /* let ^Z suspend the game */
+#endif
+
+
+#if defined(BSD) || defined(ULTRIX)
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+
+#define HLOCK "perm" /* an empty file used for locking purposes */
+
+#ifndef REDO
+#define Getchar nhgetch
+#endif
+#define tgetch getchar
+
+#define SHELL /* do not delete the '!' command */
+
+#include "system.h"
+
+#if defined(POSIX_TYPES) || defined(__GNUC__)
+#include <stdlib.h>
+#include <unistd.h>
+#endif
+
+#if defined(POSIX_TYPES) || defined(__GNUC__) || defined(BSD) || defined(ULTRIX)
+#include <sys/wait.h>
+#endif
+
+#if defined(BSD) || defined(ULTRIX)
+# if !defined(DGUX) && !defined(SUNOS4)
+#define memcpy(d, s, n) bcopy(s, d, n)
+#define memcmp(s1, s2, n) bcmp(s2, s1, n)
+# endif
+# ifdef SUNOS4
+#include <memory.h>
+# endif
+#else /* therefore SYSV */
+# ifndef index /* some systems seem to do this for you */
+#define index strchr
+# endif
+# ifndef rindex
+#define rindex strrchr
+# endif
+#endif
+
+/* Use the high quality random number routines. */
+#if defined(BSD) || defined(LINUX) || defined(ULTRIX) || defined(CYGWIN32) || defined(RANDOM) || defined(__APPLE__)
+#define Rand() random()
+#else
+#define Rand() lrand48()
+#endif
+
+#ifdef TIMED_DELAY
+# if defined(SUNOS4) || defined(LINUX) || (defined(BSD) && !defined(ULTRIX))
+# define msleep(k) usleep((k)*1000)
+# endif
+# ifdef ULTRIX
+# define msleep(k) napms(k)
+# endif
+#endif
+
+#ifdef hc /* older versions of the MetaWare High-C compiler define this */
+# ifdef __HC__
+# undef __HC__
+# endif
+# define __HC__ hc
+# undef hc
+#endif
+
+#if defined(GNOME_GRAPHICS)
+#if defined(LINUX)
+# include <linux/unistd.h>
+# if defined(__NR_getresuid) && defined(__NR_getresgid) /* ie., >= v2.1.44 */
+# define GETRES_SUPPORT
+# endif
+#else
+# if defined(BSD) || defined(SVR4)
+/*
+ * [ALI] We assume that SVR4 means we can safely include syscall.h
+ * (although it's really a BSDism). This is certainly true for Solaris 2.5,
+ * Solaris 7, Solaris 8 and Compaq Tru64 5.1
+ * Later BSD systems will have the getresid system calls.
+ */
+# include <sys/syscall.h>
+# if (defined (SYS_getuid) || defined(SYS_getresuid)) && \
+ (defined(SYS_getgid) || defined(SYS_getresgid))
+# define GETRES_SUPPORT
+# endif
+# endif /* BSD || SVR4 */
+#endif /* LINUX */
+#endif /* GNOME_GRAPHICS */
+
+#endif /* UNIXCONF_H */
+#endif /* UNIX */
diff --git a/games/nethack/nethack.SlackBuild b/games/nethack/nethack.SlackBuild
new file mode 100644
index 0000000000..0aeea1dda5
--- /dev/null
+++ b/games/nethack/nethack.SlackBuild
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+# Slackware build script for nethack
+
+# Written by (Wade Nelson) (wade.nels@gmail.com)
+
+PRGNAM=nethack
+VERSION=${VERSION:-3.4.3}
+SRCSUFFIX=343-src
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$SRCSUFFIX.tgz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# build configuration
+patch -p0 < $CWD/patches/config_h.patch
+patch -p0 < $CWD/patches/unixconf_h.patch
+patch -p0 < $CWD/patches/Makefile_src.patch
+patch -p0 < $CWD/patches/Makefile_top.patch
+patch -p0 < $CWD/patches/Makefile_utl.patch
+cd sys/unix/ && sh setup.sh && cd ../../
+patch -p0 < $CWD/patches/Makefile_doc.patch
+
+# build & install
+make all
+make install DESTDIR=$PKG
+make manpages DESTDIR=$PKG
+
+# launchers & menu entries
+mkdir -v -p $PKG/usr/share/{applications,pixmaps}
+cat $CWD/files/nethack-qt > $PKG/usr/bin/nethack-qt
+cat $CWD/files/nethack-x11 > $PKG/usr/bin/nethack-x11
+chmod a+x $PKG/usr/bin/nethack{-qt,-x11}
+cp -v win/X11/nh_icon.xpm $PKG/usr/share/pixmaps/nethack.xpm
+cat $CWD/files/nethack.desktop > $PKG/usr/share/applications/nethack.desktop
+cat $CWD/files/nethack-qt.desktop > $PKG/usr/share/applications/nethack-qt.desktop
+cat $CWD/files/nethack-x11.desktop > $PKG/usr/share/applications/nethack-x11.desktop
+
+# documentation
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp README doc/{Guidebook,dgn_comp,dlb,lev_comp,nethack,recover}.txt \
+ sys/unix/README.linux win/Qt/Install.Qt win/X11/Install.X11 \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/games/nethack/nethack.info b/games/nethack/nethack.info
new file mode 100644
index 0000000000..490c61361c
--- /dev/null
+++ b/games/nethack/nethack.info
@@ -0,0 +1,8 @@
+PRGNAM="nethack"
+VERSION="3.4.3"
+HOMEPAGE="http://www.nethack.org"
+DOWNLOAD="http://downloads.sourceforge.net/nethack/nethack-343-src.tgz"
+MD5SUM="21479c95990eefe7650df582426457f9"
+MAINTAINER="Wade Nelson"
+EMAIL="wade.nels@gmail.com"
+APPROVED="David Somero"
diff --git a/games/nethack/patches/Makefile_doc.patch b/games/nethack/patches/Makefile_doc.patch
new file mode 100644
index 0000000000..f0347b8adc
--- /dev/null
+++ b/games/nethack/patches/Makefile_doc.patch
@@ -0,0 +1,28 @@
+--- doc/Makefile 2008-05-15 15:33:13.000000000 -0500
++++ doc/Makefile-doc.slack 2008-05-15 15:29:34.000000000 -0500
+@@ -45,6 +45,7 @@
+ MANEXT = 6
+
+ # manual installation for most BSD-style systems
++MANDIRCREATE = mkdir -p $(DESTDIR)/$(MANDIR)
+ GAMEMANCREATE = cp nethack.6
+ LEVMANCREATE = cp lev_comp.6
+ DGNMANCREATE = cp dgn_comp.6
+@@ -58,11 +59,12 @@
+ # DLBMANCREATE = nroff -man dlb.6 >
+
+ manpages:
+- -$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
+- -$(LEVMANCREATE) $(MANDIR)/lev_comp.$(MANEXT)
+- -$(DGNMANCREATE) $(MANDIR)/dgn_comp.$(MANEXT)
+- -$(RCVRMANCREATE) $(MANDIR)/recover.$(MANEXT)
+- -$(DLBMANCREATE) $(MANDIR)/dlb.$(MANEXT)
++ -$(MANDIRCREATE)
++ -$(GAMEMANCREATE) $(DESTDIR)/$(MANDIR)/$(GAME).$(MANEXT)
++ -$(LEVMANCREATE) $(DESTDIR)/$(MANDIR)/lev_comp.$(MANEXT)
++ -$(DGNMANCREATE) $(DESTDIR)/$(MANDIR)/dgn_comp.$(MANEXT)
++ -$(RCVRMANCREATE) $(DESTDIR)/$(MANDIR)/recover.$(MANEXT)
++ -$(DLBMANCREATE) $(DESTDIR)/$(MANDIR)/dlb.$(MANEXT)
+
+ # manual creation for distribution
+ DISTRIB = Guidebook.txt nethack.txt lev_comp.txt dgn_comp.txt recover.txt dlb.txt
diff --git a/games/nethack/patches/Makefile_src.patch b/games/nethack/patches/Makefile_src.patch
new file mode 100644
index 0000000000..1e304a2427
--- /dev/null
+++ b/games/nethack/patches/Makefile_src.patch
@@ -0,0 +1,83 @@
+--- sys/unix/Makefile.src 2003-12-07 17:39:13.000000000 -0600
++++ sys/unix/Makefile.src.slack 2008-05-15 15:29:14.000000000 -0500
+@@ -61,7 +61,7 @@
+ # if you get setcgtty() warnings during execution, you are feeding gcc
+ # a non-ANSI <sys/ioctl.h> -- either run fixincludes on it or use
+ # -traditional in CFLAGS
+-# CC = gcc
++CC = gcc
+ #
+ # For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following:
+ #
+@@ -125,7 +125,7 @@
+ # flags for Linux
+ # compile normally
+ # CFLAGS = -O2 -fomit-frame-pointer -I../include
+-# LFLAGS = -L/usr/X11R6/lib
++LFLAGS = -L/usr/lib
+ # OR compile backwards compatible a.out format
+ # CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
+ # LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
+@@ -186,7 +186,8 @@
+ # Files for a Qt port
+ #
+ WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp ../win/Qt/qttableview.cpp
+-WINQTOBJ = qt_win.o qt_clust.o qttableview.o tile.o
++# WINQTOBJ = qt_win.o qt_clust.o qttableview.o tile.o
++WINQTOBJ = qt_win.o qt_clust.o qttableview.o
+ #
+ # Files for a Gnome port
+ #
+@@ -214,8 +215,8 @@
+
+ #
+ #
+-WINSRC = $(WINTTYSRC)
+-WINOBJ = $(WINTTYOBJ)
++WINSRC = $(WINTTYSRC) $(WINX11SRC) $(WINQTSRC) $(WINKDESRC)
++WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(WINQTOBJ) $(WINKDEOBJ)
+
+ # on some systems the termcap library is in -ltermcap or -lcurses
+ # on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
+@@ -230,18 +231,19 @@
+ # WINTTYLIB = -ltermcap
+ # WINTTYLIB = -lcurses
+ # WINTTYLIB = -lcurses16
+-# WINTTYLIB = -lncurses
+-WINTTYLIB = -ltermlib
++WINTTYLIB = -lncurses
++# WINTTYLIB = -ltermlib
+ #
+ # libraries for X11
+ # If USE_XPM is defined in config.h, you will also need -lXpm here.
+-WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
++# WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
+ # WINX11LIB = -lXaw -lXmu -lXt -lX11
+ # WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 -lm
+ # WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0
++WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11
+ #
+ # libraries for Qt
+-WINQTLIB = -L$(QTDIR)/lib -lqt
++WINQTLIB = -L$(QTDIR)/lib -lqt-mt
+ #
+ # libraries for KDE (with Qt)
+ WINKDELIB = -lkdecore -lkdeui -lXext
+@@ -255,7 +257,7 @@
+ # libraries for BeOS
+ WINBELIB = -lbe
+
+-WINLIB = $(WINTTYLIB)
++WINLIB = $(WINTTYLIB) $(WINX11LIB) $(WINQTLIB) $(WINKDELIB)
+
+ # any other strange libraries your system needs (for Sysunix only -- the more
+ # specialized targets should already be right)
+@@ -295,7 +297,7 @@
+
+
+ # used by `make depend' to reconstruct this Makefile; you shouldn't need this
+-AWK = nawk
++AWK = gawk
+
+ # ----------------------------------------
+ #
diff --git a/games/nethack/patches/Makefile_top.patch b/games/nethack/patches/Makefile_top.patch
new file mode 100644
index 0000000000..27ef3b7da0
--- /dev/null
+++ b/games/nethack/patches/Makefile_top.patch
@@ -0,0 +1,140 @@
+--- sys/unix/Makefile.top 2003-12-07 17:39:13.000000000 -0600
++++ sys/unix/Makefile.top.slack 2008-05-15 15:29:20.000000000 -0500
+@@ -17,15 +17,15 @@
+ PREFIX = /usr
+ GAME = nethack
+ # GAME = nethack.prg
+-GAMEUID = games
+-GAMEGRP = bin
++GAMEUID = root
++GAMEGRP = games
+
+ # Permissions - some places use setgid instead of setuid, for instance
+ # See also the option "SECURE" in include/config.h
+-GAMEPERM = 04755
+-FILEPERM = 0644
++GAMEPERM = 02755
++FILEPERM = 0664
+ EXEPERM = 0755
+-DIRPERM = 0755
++DIRPERM = 0775
+
+ # GAMEDIR also appears in config.h as "HACKDIR".
+ # VARDIR may also appear in unixconf.h as "VAR_PLAYGROUND" else GAMEDIR
+@@ -35,14 +35,14 @@
+ # therefore there should not be anything in GAMEDIR that you want to keep
+ # (if there is, you'll have to do the installation by hand or modify the
+ # instructions)
+-GAMEDIR = $(PREFIX)/games/lib/$(GAME)dir
+-VARDIR = $(GAMEDIR)
+-SHELLDIR = $(PREFIX)/games
++GAMEDIR = $(PREFIX)/share/games/nethack
++VARDIR = /var/lib/nethack
++SHELLDIR = $(PREFIX)/bin
+
+ # per discussion in Install.X11 and Install.Qt
+-VARDATND =
++# VARDATND =
+ # VARDATND = x11tiles NetHack.ad pet_mark.xbm
+-# VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm
++VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm nhsplash.xpm
+ # for Atari/Gem
+ # VARDATND = nh16.img title.img GEM_RSC.RSC rip.img
+ # for BeOS
+@@ -183,68 +183,68 @@
+ -e '}' \
+ -e '$$s/.*/nodlb/p' < dat/options` ; \
+ $(MAKE) dofiles-$${target-nodlb}
+- cp src/$(GAME) $(GAMEDIR)
+- cp util/recover $(GAMEDIR)
+- -rm -f $(SHELLDIR)/$(GAME)
++ cp src/$(GAME) $(DESTDIR)/$(GAMEDIR)
++ cp util/recover $(DESTDIR)/$(GAMEDIR)
++ -rm -f $(DESTDIR)/$(SHELLDIR)/$(GAME)
+ sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
+ -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
+ < sys/unix/nethack.sh \
+- > $(SHELLDIR)/$(GAME)
++ > $(DESTDIR)/$(SHELLDIR)/$(GAME)
+ # set up their permissions
+- -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \
++ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \
+ $(CHGRP) $(GAMEGRP) $(GAME) recover )
+- chmod $(GAMEPERM) $(GAMEDIR)/$(GAME)
+- chmod $(EXEPERM) $(GAMEDIR)/recover
+- -$(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME)
+- $(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME)
+- chmod $(EXEPERM) $(SHELLDIR)/$(GAME)
++ chmod $(GAMEPERM) $(DESTDIR)/$(GAMEDIR)/$(GAME)
++ chmod $(EXEPERM) $(DESTDIR)/$(GAMEDIR)/recover
++ -$(CHOWN) $(GAMEUID) $(DESTDIR)/$(SHELLDIR)/$(GAME)
++ $(CHGRP) $(GAMEGRP) $(DESTDIR)/$(SHELLDIR)/$(GAME)
++ chmod $(EXEPERM) $(DESTDIR)/$(SHELLDIR)/$(GAME)
+
+ dofiles-dlb: check-dlb
+- ( cd dat ; cp nhdat $(DATNODLB) $(GAMEDIR) )
++ ( cd dat ; cp nhdat $(DATNODLB) $(DESTDIR)/$(GAMEDIR) )
+ # set up their permissions
+- -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \
++ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \
+ $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \
+ chmod $(FILEPERM) nhdat $(DATNODLB) )
+
+ dofiles-nodlb:
+ # copy over the game files
+- ( cd dat ; cp $(DAT) $(GAMEDIR) )
++ ( cd dat ; cp $(DAT) $(DESTDIR)/$(GAMEDIR) )
+ # set up their permissions
+- -( cd $(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \
++ -( cd $(DESTDIR)/$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \
+ $(CHGRP) $(GAMEGRP) $(DAT) ; \
+ chmod $(FILEPERM) $(DAT) )
+
+ update: $(GAME) recover $(VARDAT) dungeon spec_levs
+ # (don't yank the old version out from under people who're playing it)
+- -mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
++ -mv $(DESTDIR)/$(GAMEDIR)/$(GAME) $(DESTDIR)/$(GAMEDIR)/$(GAME).old
+ # quest.dat is also kept open and has the same problems over NFS
+ # (quest.dat may be inside nhdat if dlb is in use)
+- -mv $(GAMEDIR)/quest.dat $(GAMEDIR)/quest.dat.old
+- -mv $(GAMEDIR)/nhdat $(GAMEDIR)/nhdat.old
++ -mv $(DESTDIR)/$(GAMEDIR)/quest.dat $(DESTDIR)/$(GAMEDIR)/quest.dat.old
++ -mv $(DESTDIR)/$(GAMEDIR)/nhdat $(DESTDIR)/$(GAMEDIR)/nhdat.old
+ # set up new versions of the game files
+ ( $(MAKE) dofiles )
+ # touch time-sensitive files
+- -touch -c $(VARDIR)/bones* $(VARDIR)/?lock* $(VARDIR)/wizard*
+- -touch -c $(VARDIR)/save/*
+- touch $(VARDIR)/perm $(VARDIR)/record
++ -touch -c $(DESTDIR)/$(VARDIR)/bones* $(DESTDIR)/$(VARDIR)/?lock* $(DESTDIR)/$(VARDIR)/wizard*
++ -touch -c $(DESTDIR)/$(VARDIR)/save/*
++ touch $(DESTDIR)/$(VARDIR)/perm $(DESTDIR)/$(VARDIR)/record
+ # and a reminder
+ @echo You may also want to install the man pages via the doc Makefile.
+
+ install: $(GAME) recover $(VARDAT) dungeon spec_levs
+ # set up the directories
+ # not all mkdirs have -p; those that don't will create a -p directory
+- -mkdir -p $(SHELLDIR)
+- -rm -rf $(GAMEDIR) $(VARDIR)
+- -mkdir -p $(GAMEDIR) $(VARDIR) $(VARDIR)/save
++ -mkdir -p $(DESTDIR)/$(SHELLDIR)
++ -rm -rf $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR)
++ -mkdir -p $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+ -rmdir ./-p
+- -$(CHOWN) $(GAMEUID) $(GAMEDIR) $(VARDIR) $(VARDIR)/save
+- $(CHGRP) $(GAMEGRP) $(GAMEDIR) $(VARDIR) $(VARDIR)/save
+- chmod $(DIRPERM) $(GAMEDIR) $(VARDIR) $(VARDIR)/save
++ -$(CHOWN) $(GAMEUID) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
++ $(CHGRP) $(GAMEGRP) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
++ chmod $(DIRPERM) $(DESTDIR)/$(GAMEDIR) $(DESTDIR)/$(VARDIR) $(DESTDIR)/$(VARDIR)/save
+ # set up the game files
+ ( $(MAKE) dofiles )
+ # set up some additional files
+- touch $(VARDIR)/perm $(VARDIR)/record $(VARDIR)/logfile
+- -( cd $(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile ; \
++ touch $(DESTDIR)/$(VARDIR)/perm $(DESTDIR)/$(VARDIR)/record $(DESTDIR)/$(VARDIR)/logfile
++ -( cd $(DESTDIR)/$(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile ; \
+ $(CHGRP) $(GAMEGRP) perm record logfile ; \
+ chmod $(FILEPERM) perm record logfile )
+ # and a reminder
diff --git a/games/nethack/patches/Makefile_utl.patch b/games/nethack/patches/Makefile_utl.patch
new file mode 100644
index 0000000000..6a5c4d34cd
--- /dev/null
+++ b/games/nethack/patches/Makefile_utl.patch
@@ -0,0 +1,51 @@
+--- sys/unix/Makefile.utl 2003-12-07 17:39:13.000000000 -0600
++++ sys/unix/Makefile.utl.slack 2008-05-15 15:29:29.000000000 -0500
+@@ -15,7 +15,7 @@
+
+ # if you are using gcc as your compiler,
+ # uncomment the CC definition below if it's not in your environment
+-# CC = gcc
++CC = gcc
+ #
+ # For Bull DPX/2 systems at B.O.S. 2.0 or higher use the following:
+ #
+@@ -73,7 +73,7 @@
+ # flags for Linux
+ # compile normally
+ # CFLAGS = -O2 -fomit-frame-pointer -I../include
+-# LFLAGS = -L/usr/X11R6/lib
++LFLAGS = -L/usr/lib
+ # OR compile backwards compatible a.out format
+ # CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
+ # LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
+@@ -90,7 +90,7 @@
+ # CFLAGS = -g -I../include
+
+ CFLAGS = -O -I../include
+-LFLAGS =
++# LFLAGS =
+
+ LIBS =
+
+@@ -101,11 +101,11 @@
+
+ # yacc/lex programs to use to generate *_comp.h, *_lex.c, and *_yacc.c.
+ # if, instead of yacc/lex you have bison/flex, comment/uncomment the following.
+-YACC = yacc
+-LEX = lex
+-# YACC = bison -y
++# YACC = yacc
++# LEX = lex
++YACC = bison -y
+ # YACC = byacc
+-# LEX = flex
++LEX = flex
+
+ # these are the names of the output files from YACC/LEX. Under MS-DOS
+ # and similar systems, they may differ
+@@ -400,4 +400,4 @@
+
+ tileedit: tileedit.cpp $(TEXT_IO)
+ $(QTDIR)/bin/moc -o tileedit.moc tileedit.h
+- $(CC) -o tileedit -I../include -I$(QTDIR)/include -L$(QTDIR)/lib tileedit.cpp $(TEXT_IO) -lqt
++ $(CC) -o tileedit -I../include -I$(QTDIR)/include -L$(QTDIR)/lib tileedit.cpp $(TEXT_IO) -lqt-mt
diff --git a/games/nethack/patches/config_h.patch b/games/nethack/patches/config_h.patch
new file mode 100644
index 0000000000..caf35fc180
--- /dev/null
+++ b/games/nethack/patches/config_h.patch
@@ -0,0 +1,74 @@
+--- include/config.h 2003-12-07 17:39:13.000000000 -0600
++++ include/config.h.slack 2008-05-15 16:52:38.000000000 -0500
+@@ -43,8 +43,8 @@
+ * Some combinations make no sense. See the installation document.
+ */
+ #define TTY_GRAPHICS /* good old tty based graphics */
+-/* #define X11_GRAPHICS */ /* X11 interface */
+-/* #define QT_GRAPHICS */ /* Qt interface */
++#define X11_GRAPHICS /* X11 interface */
++#define QT_GRAPHICS /* Qt interface */
+ /* #define GNOME_GRAPHICS */ /* Gnome interface */
+ /* #define MSWIN_GRAPHICS */ /* Windows NT, CE, Graphics */
+
+@@ -91,7 +91,7 @@
+ # define USE_XPM /* Use XPM format for images (required) */
+ # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */
+ # ifndef DEFAULT_WINDOW_SYS
+-# define DEFAULT_WINDOW_SYS "Qt"
++# define DEFAULT_WINDOW_SYS "tty"
+ # endif
+ #endif
+
+@@ -126,7 +126,7 @@
+ * would allow:
+ * xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
+ */
+-/* # define USE_XPM */ /* Disable if you do not have the XPM library */
++# define USE_XPM /* Disable if you do not have the XPM library */
+ # ifdef USE_XPM
+ # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */
+ # endif
+@@ -169,11 +169,11 @@
+
+ #ifdef UNIX
+ /* path and file name extension for compression program */
+-#define COMPRESS "/usr/bin/compress" /* Lempel-Ziv compression */
+-#define COMPRESS_EXTENSION ".Z" /* compress's extension */
++/* #define COMPRESS "/usr/bin/compress" */ /* Lempel-Ziv compression */
++/* #define COMPRESS_EXTENSION ".Z" */ /* compress's extension */
+ /* An example of one alternative you might want to use: */
+-/* #define COMPRESS "/usr/local/bin/gzip" */ /* FSF gzip compression */
+-/* #define COMPRESS_EXTENSION ".gz" */ /* normal gzip extension */
++#define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
++#define COMPRESS_EXTENSION ".gz" /* normal gzip extension */
+ #endif
+
+ #ifndef COMPRESS
+@@ -185,7 +185,7 @@
+ * a tar-like file, thus making a neater installation. See *conf.h
+ * for detailed configuration.
+ */
+-/* #define DLB */ /* not supported on all platforms */
++#define DLB /* not supported on all platforms */
+
+ /*
+ * Defining INSURANCE slows down level changes, but allows games that
+@@ -204,7 +204,7 @@
+ * otherwise it will be the current directory.
+ */
+ # ifndef HACKDIR
+-# define HACKDIR "/usr/games/lib/nethackdir"
++# define HACKDIR "/usr/share/games/nethack"
+ # endif
+
+ /*
+@@ -349,7 +349,7 @@
+ */
+
+ /*#define GOLDOBJ */ /* Gold is kept on obj chains - Helge Hafting */
+-/*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
++#define AUTOPICKUP_EXCEPTIONS /* exceptions to autopickup */
+
+ /* End of Section 5 */
+
diff --git a/games/nethack/patches/unixconf_h.patch b/games/nethack/patches/unixconf_h.patch
new file mode 100644
index 0000000000..9b32de5b55
--- /dev/null
+++ b/games/nethack/patches/unixconf_h.patch
@@ -0,0 +1,43 @@
+--- include/unixconf.h 2003-12-07 17:39:13.000000000 -0600
++++ include/unixconf.h.slack 2008-05-15 15:29:04.000000000 -0500
+@@ -25,19 +25,19 @@
+ /* #define ULTRIX */ /* define for Ultrix v3.0 or higher (but not lower) */
+ /* Use BSD for < v3.0 */
+ /* "ULTRIX" not to be confused with "ultrix" */
+-#define SYSV /* define for System V, Solaris 2.x, newer versions */
++/* #define SYSV */ /* define for System V, Solaris 2.x, newer versions */
+ /* of Linux */
+ /* #define HPUX */ /* Hewlett-Packard's Unix, version 6.5 or higher */
+ /* use SYSV for < v6.5 */
+
+
+ /* define any of the following that are appropriate */
+-#define SVR4 /* use in addition to SYSV for System V Release 4 */
++/* #define SVR4 */ /* use in addition to SYSV for System V Release 4 */
+ /* including Solaris 2+ */
+ #define NETWORK /* if running on a networked system */
+ /* e.g. Suns sharing a playground through NFS */
+ /* #define SUNOS4 */ /* SunOS 4.x */
+-/* #define LINUX */ /* Another Unix clone */
++#define LINUX /* Another Unix clone */
+ /* #define CYGWIN32 */ /* Unix on Win32 -- use with case sensitive defines */
+ /* #define GENIX */ /* Yet Another Unix Clone */
+ /* #define HISX */ /* Bull Unix for XPS Machines */
+@@ -102,7 +102,7 @@
+ * If you want the static parts of your playground on a read-only file
+ * system, define VAR_PLAYGROUND to be where the variable parts are kept.
+ */
+-/* #define VAR_PLAYGROUND "/var/lib/games/nethack" */
++#define VAR_PLAYGROUND "/var/lib/nethack"
+
+
+ /*
+@@ -132,7 +132,7 @@
+ * "extra output" method is used, but not all systems provide access to
+ * a fine-grained timer.
+ */
+-/* #define TIMED_DELAY */ /* usleep() */
++#define TIMED_DELAY /* usleep() */
+ #endif
+
+ /*
diff --git a/games/nethack/slack-desc b/games/nethack/slack-desc
new file mode 100644
index 0000000000..8d98b05e4b
--- /dev/null
+++ b/games/nethack/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+nethack: nethack (a rogue-like game)
+nethack:
+nethack: NetHack is a popular rogue-like game. This build provides the
+nethack: standard console interface as well as the X11 and Qt interfaces.
+nethack:
+nethack:
+nethack:
+nethack:
+nethack:
+nethack:
+nethack: