$NetBSD: patch-ab,v 1.12 2011/06/01 11:20:29 wiz Exp $

Make configurable.

--- sys/unix/Makefile.top.orig	2003-12-07 23:39:13.000000000 +0000
+++ sys/unix/Makefile.top
@@ -14,18 +14,18 @@
 # MAKE = make
 
 # make NetHack
-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
+GAMEPERM = 2755
 FILEPERM = 0644
+VARFILEPERM = 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,12 +35,12 @@ DIRPERM  = 0755
 # 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/$(GAME)dir340
+VARDIR  ?= /var/games/nethack340
+SHELLDIR = $(PREFIX)/bin
 
 # per discussion in Install.X11 and Install.Qt
-VARDATND = 
+VARDATND =  pet_mark.xbm rip.xpm
 # VARDATND = x11tiles NetHack.ad pet_mark.xbm
 # VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm
 # for Atari/Gem
@@ -64,8 +64,8 @@ VARDAT = $(VARDATD) $(VARDATND)
 # 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
+CHOWN = : # chown
+CHGRP = : # chgrp
 
 #
 # end of configuration
@@ -87,9 +87,12 @@ DAT = $(DATNODLB) $(DATDLB)
 $(GAME):
 	( cd src ; $(MAKE) )
 
-all:	$(GAME) recover Guidebook $(VARDAT) dungeon spec_levs check-dlb
+all:	$(GAME) datastuff
 	@echo "Done."
 
+datastuff: recover Guidebook $(VARDAT) dungeon spec_levs check-dlb
+	@echo "Data Sets Built."
+
 # Note: many of the dependencies below are here to allow parallel make
 # to generate valid output
 
@@ -99,20 +102,20 @@ Guidebook:
 manpages:
 	( cd doc ; $(MAKE) manpages )
 
-data: $(GAME)
+data: # $(GAME)
 	( cd dat ; $(MAKE) data )
 
-rumors: $(GAME)
+rumors: # $(GAME)
 	( cd dat ; $(MAKE) rumors )
 
-oracles: $(GAME)
+oracles: # $(GAME)
 	( cd dat ; $(MAKE) oracles )
 
 #	Note: options should have already been made with make, but...
-options: $(GAME)
+options: # $(GAME)
 	( cd dat ; $(MAKE) options )
 
-quest.dat: $(GAME)
+quest.dat: # $(GAME)
 	( cd dat ; $(MAKE) quest.dat )
 
 spec_levs: dungeon
@@ -120,22 +123,22 @@ spec_levs: dungeon
 	( cd dat ; $(MAKE) spec_levs )
 	( cd dat ; $(MAKE) quest_levs )
 
-dungeon: $(GAME)
+dungeon: # $(GAME)
 	( cd util ; $(MAKE) dgn_comp )
 	( cd dat ; $(MAKE) dungeon )
 
-nhtiles.bmp: $(GAME)
+nhtiles.bmp: # $(GAME)
 	( cd dat ; $(MAKE) nhtiles.bmp )
 
-x11tiles: $(GAME)
+x11tiles: # $(GAME)
 	( cd util ; $(MAKE) tile2x11 )
 	( cd dat ; $(MAKE) x11tiles )
 
-beostiles: $(GAME)
+beostiles: # $(GAME)
 	( cd util ; $(MAKE) tile2beos )
 	( cd dat ; $(MAKE) beostiles )
 
-NetHack.ad: $(GAME)
+NetHack.ad: # $(GAME)
 	( cd dat ; $(MAKE) NetHack.ad )
 
 pet_mark.xbm:
@@ -150,7 +153,7 @@ mapbg.xpm:
 nhsplash.xpm:
 	( cd dat ; $(MAKE) nhsplash.xpm )
 
-nh16.img: $(GAME)
+nh16.img: # $(GAME)
 	( cd util ; $(MAKE) tile2img.ttp )
 	( cd dat ; $(MAKE) nh16.img )
 
@@ -172,7 +175,7 @@ dlb:
 
 # recover can be used when INSURANCE is defined in include/config.h
 # and the checkpoint option is true
-recover: $(GAME)
+recover: # $(GAME)
 	( cd util ; $(MAKE) recover )
 
 dofiles:
@@ -183,34 +186,31 @@ dofiles:
 		-e '}' 					\
 	  	-e '$$s/.*/nodlb/p' < dat/options` ;	\
 	$(MAKE) dofiles-$${target-nodlb}
-	cp src/$(GAME) $(GAMEDIR)
-	cp util/recover $(GAMEDIR)
-	-rm -f $(SHELLDIR)/$(GAME)
-	sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
+	cp util/recover $(DESTDIR)$(PREFIX)/bin
+	-rm -f $(DESTDIR)$(SHELLDIR)/$(GAME)
+	sed -e 's;@GAMEDIR@;$(GAMEDIR);' \
 		-e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
+		-e 's;@PREFIX@;$(PREFIX);' \
 		< sys/unix/nethack.sh \
-		> $(SHELLDIR)/$(GAME)
+		> $(DESTDIR)$(SHELLDIR)/$(GAME)
 # set up their permissions
-	-( cd $(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 $(EXEPERM) $(DESTDIR)$(PREFIX)/bin/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) )
 
@@ -230,26 +230,39 @@ update: $(GAME) recover $(VARDAT) dungeo
 # and a reminder
 	@echo You may also want to install the man pages via the doc Makefile.
 
-install: $(GAME) recover $(VARDAT) dungeon spec_levs
+install-dat: 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)
+	-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) $(DESTDIR)$(GAMEGRP) $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(VARDIR)/save
+	chmod $(DIRPERM) $(DESTDIR)$(GAMEDIR) $(DESTDIR)$(VARDIR)
+	chmod 770 $(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 )
+			chmod $(VARFILEPERM) perm record logfile )
+	-touch -c $(DESTDIR)$(VARDIR)/bones* $(DESTDIR)$(VARDIR)/?lock* $(DESTDIR)$(VARDIR)/wizard*
+	-touch -c $(DESTDIR)$(VARDIR)/save/*
+	-mkdir -p $(DESTDIR)$(PREFIX)/share/doc/nethack
+	cp doc/Guidebook $(DESTDIR)$(PREFIX)/share/doc/nethack
+	$(CHOWN) $(GAMEUID):$(GAMEGRP) $(DESTDIR)$(PREFIX)/share/doc/nethack/Guidebook
+	chmod $(FILEPERM) $(DESTDIR)$(PREFIX)/share/doc/nethack/Guidebook
 # and a reminder
 	@echo You may also want to reinstall the man pages via the doc Makefile.
 
+binfiles: $(GAME)
+	mkdir -p $(DESTDIR)$(SHELLDIR)
+	mkdir -p $(DESTDIR)$(GAMEDIR)
+	cp src/$(GAME) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE)
+	-( cd $(DESTDIR)$(GAMEDIR) ; $(CHOWN) $(GAMEUID) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) ; \
+		$(CHGRP) $(GAMEGRP) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE) )
+	 #chmod $(GAMEPERM) $(DESTDIR)$(SHELLDIR)/$(GAME)$(GTYPE)
 
 # 'make clean' removes all the .o files, but leaves around all the executables
 # and compiled data files
