From 312fe0137e058312d5810d5d918ef6d9b5d2857d Mon Sep 17 00:00:00 2001 From: Wade Nelson Date: Tue, 11 May 2010 22:53:45 +0200 Subject: [PATCH] games/nethack: Added to 12.1 repository --- games/nethack/README | 15 + games/nethack/doinst.sh | 4 + games/nethack/files/Makefile-doc.slack | 97 +++ games/nethack/files/Makefile.src.slack | 816 +++++++++++++++++++++++ games/nethack/files/Makefile.top.slack | 266 ++++++++ games/nethack/files/Makefile.utl.slack | 403 +++++++++++ games/nethack/files/README | 18 + games/nethack/files/config.h.slack | 358 ++++++++++ games/nethack/files/nethack-qt | 3 + games/nethack/files/nethack-qt.desktop | 10 + games/nethack/files/nethack-x11 | 3 + games/nethack/files/nethack-x11.desktop | 10 + games/nethack/files/nethack.desktop | 10 + games/nethack/files/unixconf.h.slack | 351 ++++++++++ games/nethack/nethack.SlackBuild | 88 +++ games/nethack/nethack.info | 8 + games/nethack/patches/Makefile_doc.patch | 28 + games/nethack/patches/Makefile_src.patch | 83 +++ games/nethack/patches/Makefile_top.patch | 140 ++++ games/nethack/patches/Makefile_utl.patch | 51 ++ games/nethack/patches/config_h.patch | 74 ++ games/nethack/patches/unixconf_h.patch | 43 ++ games/nethack/slack-desc | 19 + 23 files changed, 2898 insertions(+) create mode 100644 games/nethack/README create mode 100644 games/nethack/doinst.sh create mode 100644 games/nethack/files/Makefile-doc.slack create mode 100644 games/nethack/files/Makefile.src.slack create mode 100644 games/nethack/files/Makefile.top.slack create mode 100644 games/nethack/files/Makefile.utl.slack create mode 100644 games/nethack/files/README create mode 100644 games/nethack/files/config.h.slack create mode 100644 games/nethack/files/nethack-qt create mode 100644 games/nethack/files/nethack-qt.desktop create mode 100644 games/nethack/files/nethack-x11 create mode 100644 games/nethack/files/nethack-x11.desktop create mode 100644 games/nethack/files/nethack.desktop create mode 100644 games/nethack/files/unixconf.h.slack create mode 100644 games/nethack/nethack.SlackBuild create mode 100644 games/nethack/nethack.info create mode 100644 games/nethack/patches/Makefile_doc.patch create mode 100644 games/nethack/patches/Makefile_src.patch create mode 100644 games/nethack/patches/Makefile_top.patch create mode 100644 games/nethack/patches/Makefile_utl.patch create mode 100644 games/nethack/patches/config_h.patch create mode 100644 games/nethack/patches/unixconf_h.patch create mode 100644 games/nethack/slack-desc 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 -- 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 , 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_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 + * + * + * + * 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 +#else +#include +#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 +#include +#endif + +#if defined(POSIX_TYPES) || defined(__GNUC__) || defined(BSD) || defined(ULTRIX) +#include +#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 +# 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 +# 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 +# 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 -- 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_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: