Merge branch 'NetHack-5.0' into twitch-interact

This commit is contained in:
2026-09-22 08:36:33 -07:00
740 changed files with 16584 additions and 14546 deletions
+7 -7
View File
@@ -1,4 +1,4 @@
Instructions for installing NetHack 3.7
Instructions for installing NetHack 5.0
on a UNIX system
=======================================
NB: We are gradually replacing this process with the process documented in
@@ -109,7 +109,7 @@ the file NewInstall.unx.
Notes:
1. Save files and bones files from previous versions will not work with
NetHack 3.7. Don't bother trying to keep them.
NetHack 5.0. Don't bother trying to keep them.
2. To install an update of this version of NetHack after changing something,
type 'make update' from the main directory. If you created the new
@@ -246,11 +246,11 @@ Notes:
13. If you get a compiler warning about 'get_colors()' being implicitly
declared, try uncommenting NEED_GET_COLORS_DECL in unixconf.h.
If you get a compiler complaint about tparmdecl() having conflicting
declarations, add '#define NOTPARMDECL' to unixconf.h or '-DNOTPARMDECL'
to CFLAGS in src/Makefile. (The hints files for Mac OSX already do the
latter.)
If you get a compiler warning about tparm() being implicitly
declared, add '#define TPARM_WORKAROUND' to unixconf.h or
'-DTPARM_WORKAROUND' to CFLAGS. (This should not be needed
on any modern system.)
# NetHack 3.7 Install.unx $NHDT-Date: 1577568915 2019/12/28 21:35:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $
# NetHack 5.0 Install.unx $NHDT-Date: 1577568915 2019/12/28 21:35:15 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.14 $
# Copyright (c) 2012 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
+2 -2
View File
@@ -1,4 +1,4 @@
# NetHack 3.7 Makefile.check $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-3.7
# NetHack 5.0 Makefile.check $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-5.0
SUPATH := sys/unix/
MKHINTSPATH := $(SUPATH)hints/
@@ -8,7 +8,7 @@ MKINCLPATH := $(SUPATH)hints/include/
# Expectations:
#
# HINTSFILE and HINTSINCLFILES are passed from the calling Makefile
# which is the case with the hints/*.370 and hints/include/*.370
# which is the case with the hints/*.500 and hints/include/*.500
# set.
#
ifneq ("$(HINTSFILE)","")
+7 -3
View File
@@ -1,4 +1,4 @@
# NetHack Datafiles Makefile.dat $NHDT-Date: 1596486993 2020/08/03 20:36:33 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.32 $
# NetHack Datafiles Makefile.dat $NHDT-Date: 1596486993 2020/08/03 20:36:33 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.32 $
# Copyright (c) 2018 by Pasi Kallinen
# NetHack may be freely redistributed. See license for details.
@@ -27,10 +27,12 @@ all: $(VARDAT) spec_levs quest_levs
x11tiles: ../util/tile2x11 ../win/share/monsters.txt ../win/share/objects.txt \
../win/share/other.txt \
../win/share/monsters.txt
../win/share/monsters.txt \
../win/share/decals.txt
../util/tile2x11 ../win/share/monsters.txt ../win/share/objects.txt \
../win/share/other.txt \
-grayscale ../win/share/monsters.txt
-grayscale ../win/share/monsters.txt \
../win/share/decals.txt
beostiles: ../util/tile2beos ../win/share/monsters.txt \
../win/share/objects.txt \
@@ -93,6 +95,8 @@ GEM_RSC.RSC:
# cp ../win/gem/GEM_RSC.RSC GEM_RSC.RSC
$(UUDECODE) ../win/gem/gem_rsc.uu
nhdat: $(DATDLB)
( LC_ALL=C ; ../util/dlb cf nhdat $(DATDLB) )
data: data.base ../util/makedefs
../util/makedefs -d
+43 -36
View File
@@ -1,5 +1,5 @@
# NetHack Documentation Makefile.
# NetHack 3.7 Makefile.doc $NHDT-Date: 1700788000 2023/11/24 01:06:40 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.28 $
# NetHack 5.0 Makefile.doc $NHDT-Date: 1700788000 2023/11/24 01:06:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.28 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
@@ -9,14 +9,24 @@ NHSROOT=..
# for Atari
# SHELL=E:/GEMINI2/MUPFEL.TTP
MAKEDEFS = ../util/makedefs
MAKEDEFS ?= ../util/makedefs
# Only generate output for the current configuration:
NHGREP ?= $(MAKEDEFS) --grep --input - --output -
NEEDMAKEDEFS ?= $(MAKEDEFS)
# Generate output for all configurations:
#NHGREP ?= $(MAKEDEFS) --grep --input - --output - --grep-define ALLDOCS
#NEEDMAKEDEFS ?= $(MAKEDEFS)
# Fallback:
#NHGREP ?= cat
#NEEDMAKEDEFS ?=
#STRIPBS ?= ../util/stripbs
NROFF ?= nroff
# NROFF_FLAGS comes from a hints file, or is empty
# Which version do we want to build? (XXX These are not used anywhere.)
GUIDEBOOK = Guidebook # regular ASCII file
#GUIDEBOOK = Guidebook.ps # PostScript file
#GUIDEBOOK = Guidebook.dvi # TeX device-independent file
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
@@ -28,39 +38,34 @@ COLCMD ?= col -bx
#COLCMD ?= $(STRIPBS)
# The command to use to generate a PostScript file
# PSCMD = ditroff | psdit
PSCMD = groff
# PSCMD ?= ditroff | psdit
PSCMD ?= groff
GUIDEBOOK_MN_SRC ?= Guidebook.mn
GUIDEBOOK_MN ?= $(GUIDEBOOK_MN_SRC)
GUIDE_PREFORMAT ?= cat $(GUIDEBOOK_MN) | $(NHGREP) | tbl tmac.n -
# for Guidebook.dat, unpaginated version of Guidebook.txt
ONEPAGE_PREFORMAT ?= cat Gbk-1pg-pfx.mn $(GUIDEBOOK_MN) Gbk-1pg-sfx.mn \
| $(NHGREP) | tbl tmac.n -
ONEPAGECMD ?= $(ONEPAGE_PREFORMAT) | $(NROFF) -c -Tascii $(NROFF_FLAGS) | $(COLCMD)
# 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
# GUIDECMD ?= cat Guidebook.txt
#
# Single page. Might need adjustment to .pl value
# GUIDECMD= $(GUIDE_PREFORMAT) | perl -pe 's/^(.mt)$$/.pl 4720v\n.in 0\n.po 8\n.ll 64m\n$$1/' | nroff -c -Tascii | $(COLCMD)
# PLVALUE='s/^(.mt)$$/.pl 4720v\n.in 0\n.po 8\n.ll 64m\n$$1/'
# GUIDECMD ?= $(GUIDE_PREFORMAT) | perl -pe $(PLVALUE) | $(NROFF) -c -Tascii | $(COLCMD)
#
GUIDECMD = $(GUIDE_PREFORMAT) | nroff -c -Tascii $(NROFF_FLAGS) | $(COLCMD)
ONEPAGECMD = $(ONEPAGE_PREFORMAT) | nroff -c -Tascii $(NROFF_FLAGS) | $(COLCMD)
GUIDECMD ?= $(GUIDE_PREFORMAT) | $(NROFF) -c -Tascii $(NROFF_FLAGS) | $(COLCMD)
GUIDEBOOK_TEX_SRC ?= Guidebook.tex
GUIDEBOOK_TEX ?= $(GUIDEBOOK_TEX_SRC)
# Only generate output for the current configuration:
NHGREP = $(MAKEDEFS) --grep --input - --output -
NEEDMAKEDEFS = $(MAKEDEFS)
# Generate output for all configurations:
#NHGREP = $(MAKEDEFS) --grep --input - --output - --grep-define ALLDOCS
#NEEDMAKEDEFS = $(MAKEDEFS)
# Fallback:
#NHGREP = cat
#NEEDMAKEDEFS =
GUIDEBOOK_MN_SRC = Guidebook.mn
GUIDEBOOK_MN = $(GUIDEBOOK_MN_SRC)
GUIDEBOOK_TEX_SRC = Guidebook.tex
GUIDEBOOK_TEX = $(GUIDEBOOK_TEX_SRC)
GUIDE_PREFORMAT = cat $(GUIDEBOOK_MN) | $(NHGREP) | tbl tmac.n -
# for Guidebook.dat, unpaginated version of Guidebook.txt
ONEPAGE_PREFORMAT = cat Gbk-1pg-pfx.mn $(GUIDEBOOK_MN) Gbk-1pg-sfx.mn \
| $(NHGREP) | tbl tmac.n -
#STRIPBS ?= ../util/stripbs
# STRIPBS often comes from a hints file, or is empty
# targets
#
# the basic guidebook
Guidebook : $(GUIDEBOOK_MN) tmac.n tmac.nh $(NEEDMAKEDEFS) $(STRIPBS)
-$(GUIDECMD) > Guidebook
@@ -91,20 +96,22 @@ $(MAKEDEFS) : ../util/makedefs.c ../include/config.h ../src/mdlib.c \
GAME = nethack
MANDIR ?= /usr/man/man6
MANEXT = 6
NROFF ?= nroff
MANDIRPREP ?= true
# manual installation for most BSD-style systems
GAMEMANCREATE = cat nethack.6 | $(NHGREP) >
RCVRMANCREATE = cat recover.6 | $(NHGREP) >
DLBMANCREATE = cat dlb.6 | $(NHGREP) >
MDMANCREATE = cat makedefs.6 | $(NHGREP) >
# manual installation for most SYSV-style systems
# GAMEMANCREATE = cat nethack.6 | $(NHGREP) | nroff -man - >
# RCVRMANCREATE = cat recover.6 | $(NHGREP) | nroff -man - >
# DLBMANCREATE = cat dlb.6 | $(NHGREP) | nroff -man - >
# MDMANCREATE = cat makedefs.6 | $(NHGREP) | nroff -man - >
# GAMEMANCREATE = cat nethack.6 | $(NHGREP) | $(NROFF) -man - >
# RCVRMANCREATE = cat recover.6 | $(NHGREP) | $(NROFF) -man - >
# DLBMANCREATE = cat dlb.6 | $(NHGREP) | $(NROFF) -man - >
# MDMANCREATE = cat makedefs.6 | $(NHGREP) | $(NROFF) -man - >
manpages: $(PREMANPAGES)
-$(MANDIRPREP)
-$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
-$(RCVRMANCREATE) $(MANDIR)/recover.$(MANEXT)
-$(DLBMANCREATE) $(MANDIR)/dlb.$(MANEXT)
+190 -158
View File
@@ -1,10 +1,11 @@
# NetHack Makefile.
# NetHack 3.7 Makefile.src $NHDT-Date: 1697316523 2023/10/14 20:48:43 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.164 $
# NetHack 5.0 Makefile.src $NHDT-Date: 1697316523 2023/10/14 20:48:43 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.164 $
# Copyright (c) 2018 by Pasi Kallinen
# NetHack may be freely redistributed. See license for details.
# Root of source tree:
NHSROOT=..
NHSROOT ?=..
SRCDIR = $(NHSROOT)/src
# newer makes predefine $(MAKE) to 'make' and do smarter processing of
# recursive make calls if $(MAKE) is used
@@ -41,37 +42,37 @@ SHELL=/bin/sh
# SHELL=E:/GEMINI2/MUPFEL.TTP
# Usually, the C compiler driver is used for linking:
#LINK=$(CC)
#LINK ?=$(CC)
# If we're cross-compiling, a hints file will override this
# to a unique target directory, but otherwise it just goes in
# ../src
TARGETPFX=
TARGETPFX ?=
# 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 \
SYSSRC ?= ../sys/share/ioctl.c ../sys/share/unixtty.c ../sys/unix/unixmain.c \
../sys/unix/unixunix.c ../sys/unix/unixres.c
SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty.o \
SYSOBJ ?= $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty.o \
$(TARGETPFX)unixunix.o $(TARGETPFX)unixres.o
#
# for Systos
# SYSSRC = ../sys/atari/tos.c ../sys/share/pcmain.c ../sys/share/pcsys.c \
# SYSSRC ?= ../sys/atari/tos.c ../sys/share/pcmain.c ../sys/share/pcsys.c \
# ../sys/share/pctty.c ../sys/share/pcunix.c
# SYSOBJ = $(TARGETPFX)tos.o $(TARGETPFX)pcmain.o $(TARGETPFX)pcsys.o \
# SYSOBJ ?= $(TARGETPFX)tos.o $(TARGETPFX)pcmain.o $(TARGETPFX)pcsys.o \
# $(TARGETPFX)pctty.o $(TARGETPFX)pcunix.o
#
# for BeOS
#SYSSRC = ../sys/be/bemain.c ../sys/share/unixtty.c ../sys/share/ioctl.c
#SYSOBJ = $(TARGETPFX)bemain.o $(TARGETPFX)unixtty.o $(TARGETPFX)ioctl.o
#SYSSRC ?= ../sys/be/bemain.c ../sys/share/unixtty.c ../sys/share/ioctl.c
#SYSOBJ ?= $(TARGETPFX)bemain.o $(TARGETPFX)unixtty.o $(TARGETPFX)ioctl.o
# NetHack 3.7 began introducing C99 code.
# NetHack 5.0 began introducing C99 code.
#
# If your compiler needs an appropriate switch to accept C99 code.
# CSTD = -std=c99
# CSTD ?= -std=c99
# if you are using gcc as your compiler:
# uncomment the CC definition below if it's not in your environment
@@ -152,7 +153,7 @@ SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty.o \
# flags for Linux
# compile normally
# CFLAGS = -O2 -fomit-frame-pointer -I../include
# LFLAGS = -L/usr/X11R6/lib
# LFLAGS = -L/usr/lib64
# 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
@@ -192,8 +193,8 @@ SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty.o \
CFLAGS ?= -I../include
LINK ?= $(CC)
AR = ar
ARFLAGS = rcs
AR ?= ar
ARFLAGS ?= rcs
# 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
@@ -210,15 +211,15 @@ MOCPATH ?= $(QTDIR)/bin/$(MOC)
# The default is for the TARGET_* variables to match the defaults.
# If we're cross-compiling these will get overridden elsewhere, likely via
# a hints file. TARGETPFX was set above earlier.
TARGET_CC = $(CC)
TARGET_CFLAGS = $(CFLAGS) $(CSTD)
TARGET_LINK = $(LINK)
TARGET_LFLAGS = $(LFLAGS)
TARGET_CXX = $(CXX)
TARGET_CXXFLAGS = $(CXXFLAGS)
TARGET_LIBS = $(LIBS)
TARGET_AR = $(AR)
TARGET_ARFLAGS = $(ARFLAGS)
TARGET_CC ?= $(CC)
TARGET_CFLAGS ?= $(CFLAGS) $(CSTD)
TARGET_LINK ?= $(LINK)
TARGET_LFLAGS ?= $(LFLAGS)
TARGET_CXX ?= $(CXX)
TARGET_CXXFLAGS ?= $(CXXFLAGS)
TARGET_LIBS ?= $(LIBS)
TARGET_AR ?= $(AR)
TARGET_ARFLAGS ?= $(ARFLAGS)
# we specify C preprocessor flags via CFLAGS; files built with default rules
# might include $(CPPFLAGS) which could get a value from user's environment;
@@ -227,50 +228,53 @@ CPPFLAGS =
# file for regular expression matching
REGEXOBJ ?= $(TARGETPFX)posixregex.o
#REGEXOBJ = $(TARGETPFX)pmatchregex.o
#REGEXOBJ = $(TARGETPFX)cppregex.o
#REGEXOBJ ?= $(TARGETPFX)pmatchregex.o
#REGEXOBJ ?= $(TARGETPFX)cppregex.o
GENTILECFILE = $(SRCDIR)/tile.c
GENTILEOFILE ?=
# Set the WINSRC, WINOBJ, and WINLIB lines to correspond to your desired
# combination of windowing systems. Also set matching USE_x_GRAPHICS in
# config.h. Note that if you are building for any window system which
# uses tiles, uncomment '#$(TARGETPFX)tile.o' (by removing the '#') in that
# system's WINxOBJ (WINX11OBJ or WINQTOBJ or WINQT3OBJ). If you are building
# nethack with support for multiple window systems, only uncomment that for
# one of them to avoid duplicate tile.o.
# config.h.
#
# files for a straight tty port using no native windowing system
WINTTYSRC = ../win/tty/getline.c ../win/tty/termcap.c ../win/tty/topl.c \
WINTTYSRC ?= ../win/tty/getline.c ../win/tty/termcap.c ../win/tty/topl.c \
../win/tty/wintty.c
WINTTYOBJ = $(TARGETPFX)getline.o $(TARGETPFX)termcap.o $(TARGETPFX)topl.o \
WINTTYOBJ ?= $(TARGETPFX)getline.o $(TARGETPFX)termcap.o $(TARGETPFX)topl.o \
$(TARGETPFX)wintty.o
#
# Files for curses interface
WINCURSESSRC = ../win/curses/cursmain.c ../win/curses/curswins.c \
WINCURSESSRC ?= ../win/curses/cursmain.c ../win/curses/curswins.c \
../win/curses/cursmisc.c ../win/curses/cursdial.c \
../win/curses/cursstat.c ../win/curses/cursinit.c \
../win/curses/cursmesg.c ../win/curses/cursinvt.c
WINCURSESOBJ = $(TARGETPFX)cursmain.o $(TARGETPFX)curswins.o \
WINCURSESOBJ ?= $(TARGETPFX)cursmain.o $(TARGETPFX)curswins.o \
$(TARGETPFX)cursmisc.o $(TARGETPFX)cursdial.o \
$(TARGETPFX)cursstat.o $(TARGETPFX)cursinit.o \
$(TARGETPFX)cursmesg.o $(TARGETPFX)cursinvt.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 \
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 = $(TARGETPFX)Window.o $(TARGETPFX)dialogs.o $(TARGETPFX)winX.o \
../win/X11/winval.c ../win/X11/winlabel.c \
../win/share/tileset.c ../win/share/bmptiles.c ../win/share/giftiles.c \
../win/share/pngtiles.c $(GENTILECFILE)
WINX11OBJ ?= $(TARGETPFX)Window.o $(TARGETPFX)dialogs.o $(TARGETPFX)winX.o \
$(TARGETPFX)winmap.o $(TARGETPFX)winmenu.o $(TARGETPFX)winmesg.o \
$(TARGETPFX)winmisc.o $(TARGETPFX)winstat.o $(TARGETPFX)wintext.o \
$(TARGETPFX)winval.o #$(TARGETPFX)tile.o
$(TARGETPFX)winval.o $(TARGETPFX)winlabel.o \
$(TARGETPFX)tileset.o $(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
$(TARGETPFX)pngtiles.o
#
# Files for a Qt 3 interface (renamed since nethack 3.6.x)
#
#WINQT3SRC = ../win/Qt3/qt3_win.cpp ../win/Qt3/qt3_clust.cpp \
# ../win/Qt3/qt3tableview.cpp
#WINQT3OBJ = $(TARGETPFX)qt3_win.o $(TARGETPFX)qt3_clust.o \
# $(TARGETPFX)qt3tableview.o #$(TARGETPFX)tile.o
# $(TARGETPFX)qt3tableview.o
# empty values for 'make depend'
WINQT3SRC =
WINQT3OBJ =
@@ -280,9 +284,9 @@ WINQT3OBJ =
#
# generated source files made by Qt's 'moc' program from ../win/Qt/qt_*.h;
# appended to WINQTSRC for use by 'make depend'
WINQTMOC = qt_kde0.moc qt_main.moc qt_map.moc qt_menu.moc qt_msg.moc \
WINQTMOC ?= qt_kde0.moc qt_main.moc qt_map.moc qt_menu.moc qt_msg.moc \
qt_plsel.moc qt_set.moc qt_stat.moc qt_xcmd.moc qt_yndlg.moc
WINQTSRC = ../win/Qt/qt_bind.cpp ../win/Qt/qt_click.cpp \
WINQTSRC ?= ../win/Qt/qt_bind.cpp ../win/Qt/qt_click.cpp \
../win/Qt/qt_clust.cpp ../win/Qt/qt_delay.cpp \
../win/Qt/qt_glyph.cpp ../win/Qt/qt_icon.cpp ../win/Qt/qt_inv.cpp \
../win/Qt/qt_key.cpp ../win/Qt/qt_line.cpp ../win/Qt/qt_main.cpp \
@@ -290,8 +294,8 @@ WINQTSRC = ../win/Qt/qt_bind.cpp ../win/Qt/qt_click.cpp \
../win/Qt/qt_plsel.cpp ../win/Qt/qt_rip.cpp ../win/Qt/qt_set.cpp \
../win/Qt/qt_stat.cpp ../win/Qt/qt_str.cpp ../win/Qt/qt_streq.cpp \
../win/Qt/qt_svsel.cpp ../win/Qt/qt_win.cpp ../win/Qt/qt_xcmd.cpp \
../win/Qt/qt_yndlg.cpp $(WINQTMOC) tile.c
WINQTOBJ = $(TARGETPFX)qt_bind.o $(TARGETPFX)qt_click.o \
../win/Qt/qt_yndlg.cpp $(WINQTMOC) $(GENTILECFILE)
WINQTOBJ ?= $(TARGETPFX)qt_bind.o $(TARGETPFX)qt_click.o \
$(TARGETPFX)qt_clust.o $(TARGETPFX)qt_delay.o \
$(TARGETPFX)qt_glyph.o $(TARGETPFX)qt_icon.o \
$(TARGETPFX)qt_inv.o $(TARGETPFX)qt_key.o $(TARGETPFX)qt_line.o \
@@ -299,23 +303,22 @@ WINQTOBJ = $(TARGETPFX)qt_bind.o $(TARGETPFX)qt_click.o \
$(TARGETPFX)qt_msg.o $(TARGETPFX)qt_plsel.o $(TARGETPFX)qt_rip.o \
$(TARGETPFX)qt_set.o $(TARGETPFX)qt_stat.o $(TARGETPFX)qt_str.o \
$(TARGETPFX)qt_streq.o $(TARGETPFX)qt_svsel.o $(TARGETPFX)qt_win.o \
$(TARGETPFX)qt_xcmd.o $(TARGETPFX)qt_yndlg.o #$(TARGETPFX)tile.o
$(TARGETPFX)qt_xcmd.o $(TARGETPFX)qt_yndlg.o
# Files for Shim windowing interface for libnh -- doesn't do anything,
# just passes along the API calls to the library
#
WINSHIMSRC = ../win/shim/winshim.c
WINSHIMOBJ = winshim.o
WINSHIMSRC ?= ../win/shim/winshim.c
WINSHIMOBJ ?= winshim.o
#
# Files for a BeOS InterfaceKit port -- not ready for prime time
WINBESRC =
WINBEOBJ =
WINBESRC ?=
WINBEOBJ ?=
#WINBESRC = ../win/BeOS/winbe.cpp ../win/BeOS/NHWindow.cpp \
# ../win/BeOS/NHMenuWindow.cpp ../win/BeOS/NHMapWindow.cpp tile.c
# ../win/BeOS/NHMenuWindow.cpp ../win/BeOS/NHMapWindow.cpp $(GENTILECFILE)
#WINBEOBJ = $(TARGETPFX)winbe.o $(TARGETPFX)NHWindow.o \
# $(TARGETPFX)NHMenuWindow.o $(TARGETPFX)NHMapWindow.o \
# $(TARGETPFX)tile.o
# $(TARGETPFX)NHMenuWindow.o $(TARGETPFX)NHMapWindow.o
#
#
#WINSRC = $(WINTTYSRC)
@@ -353,20 +356,20 @@ WINBEOBJ =
WINQT3LIB = -L$(QTDIR)/lib -lqt
#
# libraries for Qt 4
WINQT4LIB = `pkg-config QtGui --libs`
WINQT4LIB ?= `pkg-config QtGui --libs`
#
# libraries for Qt 5 (use with WINQTSRC and WINQTOBJ)
WINQT5LIB = `pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs`
WINQT5LIB ?= `pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs`
#
# libraries for KDE (with Qt)
WINKDELIB = -lkdecore -lkdeui -lXext
WINKDELIB ?= -lkdecore -lkdeui -lXext
#
# libraries for BeOS
WINBELIB = -lbe
WINBELIB ?= -lbe
#
# libraries for curses port
# link with ncurses
WINCURSESLIB = -lncurses
WINCURSESLIB ?= -lncurses
# link with pdcurses for SDL, installed in a separate directory
#WINCURSESLIB = -L/usr/local/lib/pdcurses -lpdcurses -lSDL
# same as above, for XCurses
@@ -415,18 +418,18 @@ WINOBJ ?= $(WINTTYOBJ)
WINLIB ?= $(WINTTYLIB) -lncurses
# make NetHack
GAME = nethack
GAME ?= nethack
# GAME = nethack.prg
GAMEBIN = $(GAME)
GAMEBIN ?= $(GAME)
# if you defined RANDOM in unixconf.h since your system did not come
# with a reasonable random number generator
# RANDOBJ = $(TARGETPFX)random.o
RANDOBJ =
RANDOBJ ?=
# used by `make depend' to reconstruct this Makefile; you shouldn't need this
# at all but can override with 'make AWK=nawk' or 'make AWK=gawk' if necessary
AWK = awk
AWK ?= awk
# when using 'makedefs -v', also force dat/gitinfo.txt to be up to date;
# changing this to 0 will change the behavior to only make that file if
@@ -491,22 +494,22 @@ AT = $(AT_V$(QUIETCC))
# verbosity-adjacent; these will already have 'real' values if hints have
# set up cross-compiling, in which case these assignments will be no-ops
PREGAME=@true
PACKAGE=@true
PREGAME ?=@true
PACKAGE ?=@true
HACKLIBSRC = hacklib.c
HACKLIBOBJS = hacklib.o
HACKLIB = hacklib.a
TARGET_HACKLIB = $(TARGETPFX)hacklib.a
HACKLIBSRC ?= hacklib.c
HACKLIBOBJS ?= hacklib.o
HACKLIB ?= hacklib.a
TARGET_HACKLIB ?= $(TARGETPFX)hacklib.a
MAKEDEFS = ../util/makedefs
MAKEDEFS ?= ../util/makedefs
# -lm required by lua
LUA_VERSION ?=5.4.8
LUABASE = liblua-$(LUA_VERSION).a
LUALIB = ../lib/lua/$(LUABASE)
LUALIBS = $(LUALIB) -lm $(DLLIB)
LUAHEADERS = lib/lua-$(LUA_VERSION)/src
LUABASE ?= liblua-$(LUA_VERSION).a
LUALIB ?= ../lib/lua/$(LUABASE)
LUALIBS ?= $(LUALIB) -lm $(DLLIB)
LUAHEADERS ?= lib/lua-$(LUA_VERSION)/src
# timestamp files to reduce `make' overhead and shorten .o dependency lists
CONFIG_H = ../src/config.h-t
@@ -514,82 +517,81 @@ HACK_H = ../src/hack.h-t
# all .c that are part of the main NetHack program and are not operating- or
# windowing-system specific. Do not include date.c in this list.
HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
botl.c calendar.c cmd.c coloratt.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 earlyarg.c eat.c end.c engrave.c exper.c explode.c \
extralev.c files.c fountain.c hack.c hacklib.c \
HACKCSRC ?= allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
botl.c calendar.c cmd.c coloratt.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 earlyarg.c eat.c end.c engrave.c \
exper.c explode.c extralev.c files.c fountain.c hack.c hacklib.c \
getpos.c glyphs.c iactions.c insight.c invent.c isaac64.c light.c \
lock.c mail.c makemon.c mcastu.c mdlib.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 \
nhlua.c nhlsel.c nhlobj.c nhmd4.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 report.c restore.c \
rip.c rnd.c role.c rumors.c save.c selvar.c sfbase.c sfstruct.c \
shk.c shknam.c sit.c sounds.c sp_lev.c spell.c stairs.c steal.c steed.c \
strutil.c symbols.c sys.c teleport.c timeout.c \
topten.c track.c trap.c twitch.c u_init.c utf8map.c \
uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
windows.c wizard.c wizcmds.c worm.c worn.c write.c zap.c
priest.c quest.c questpgr.c read.c rect.c region.c report.c \
restore.c revision.c rip.c rnd.c role.c rumors.c save.c selvar.c \
sfbase.c sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c \
spell.c stairs.c steal.c steed.c strutil.c symbols.c sys.c \
teleport.c timeout.c topten.c track.c trap.c twitch.c \
u_init.c utf8map.c uhitm.c vault.c version.c vision.c weapon.c \
were.c wield.c windows.c wizard.c wizcmds.c worm.c worn.c write.c zap.c
# all operating-system-dependent .c (for dependencies and such)
SYSCSRC = ../sys/share/pcmain.c ../sys/share/pcsys.c \
SYSCSRC ?= ../sys/share/pcmain.c ../sys/share/pcsys.c \
../sys/share/pctty.c ../sys/share/pcunix.c \
../sys/share/pmatchregex.c ../sys/share/posixregex.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
SYSCXXSRC = ../sys/share/cppregex.cpp
# generated source files (tile.c is handled separately via WINxxxSRC)
GENCSRC = #tile.c
SYSCXXSRC ?= ../sys/share/cppregex.cpp
# all windowing-system-dependent .c (for dependencies and such)
WINCSRC = $(WINTTYSRC) $(WINCURSESSRC) $(WINX11SRC) $(WINSHIMSRC)
WINCSRC ?= $(WINTTYSRC) $(WINCURSESSRC) $(WINX11SRC) $(WINSHIMSRC)
# all windowing-system-dependent .cpp (for dependencies and such)
WINCXXSRC = $(WINQTSRC) $(WINQT3SRC) $(WINBESRC)
WINCXXSRC ?= $(WINQTSRC) $(WINQT3SRC) $(WINBESRC)
# Files for window system chaining. Requires SYSCF; include via HINTSRC/HINTOBJ
CHAINSRC = ../win/chain/wc_chainin.c ../win/chain/wc_chainout.c \
CHAINSRC ?= ../win/chain/wc_chainin.c ../win/chain/wc_chainout.c \
../win/chain/wc_trace.c
CHAINOBJ = $(TARGETPFX)wc_chainin.o $(TARGETPFX)wc_chainout.o \
CHAINOBJ ?= $(TARGETPFX)wc_chainin.o $(TARGETPFX)wc_chainout.o \
$(TARGETPFX)wc_trace.o
# .c files for this version (for date.h)
VERSOURCES = $(HACKCSRC) $(HACKLIBSRC) $(SYSSRC) $(WINSRC) $(CHAINSRC) $(GENCSRC)
VERSOURCES ?= $(HACKCSRC) $(HACKLIBSRC) $(SYSSRC) $(WINSRC) $(CHAINSRC)
# .c files for all versions using this Makefile (for lint and tags)
CSOURCES = $(HACKCSRC) $(HACKLIBSRC) $(SYSCSRC) $(WINCSRC) $(CHAINSRC) $(GENCSRC)
CSOURCES ?= $(HACKCSRC) $(HACKLIBSRC) $(SYSCSRC) $(WINCSRC) $(CHAINSRC)
# all .h files except date.h, which would
# cause dependency loops if run through "make depend"
# and dgn_file.h, special level & dungeon files.
#
HACKINCL = align.h artifact.h artilist.h attrib.h botl.h \
HACKINCL ?= align.h artifact.h artilist.h attrib.h botl.h \
color.h config.h config1.h context.h coord.h cstd.h decl.h \
defsym.h display.h dlb.h dungeon.h engrave.h extern.h flag.h \
fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \
mcastu.h \
micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h monst.h \
monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \
pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \
rm.h sp_lev.h spell.h sndprocs.h seffects.h stairs.h sys.h \
tcap.h timeout.h tradstdc.h trap.h unixconf.h vision.h vmsconf.h \
wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h \
weight.h
mcastu.h micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h \
monst.h monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h \
patchlevel.h pcconf.h permonst.h prop.h rect.h region.h revision.h \
savefile.h selvar.h sym.h rm.h sp_lev.h spell.h sndprocs.h \
seffects.h stairs.h sys.h tcap.h timeout.h tradstdc.h trap.h \
unixconf.h vision.h vmsconf.h wintty.h wincurs.h winX.h winprocs.h \
wintype.h you.h youprop.h weight.h
HSOURCES = $(HACKINCL) dgn_file.h
HSOURCES ?= $(HACKINCL) dgn_file.h
# the following .o's _must_ be made before any others (for makedefs)
FIRSTOBJ = monst.o objects.o
HOSTOBJ = $(FIRSTOBJ) alloc.o drawing.o
FIRSTOBJ ?= monst.o objects.o
HOSTOBJ ?= $(FIRSTOBJ) alloc.o drawing.o
#$(info WINOBJ=$(WINOBJ))
#$(info GENTILEOFILE=$(GENTILEOFILE))
#
# $(TARGETPFX)date.o is not included in this list
#
HOBJ = $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
HOBJ ?= $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
$(TARGETPFX)apply.o $(TARGETPFX)artifact.o $(TARGETPFX)attrib.o \
$(TARGETPFX)ball.o $(TARGETPFX)bones.o $(TARGETPFX)botl.o \
$(TARGETPFX)calendar.o $(TARGETPFX)cfgfiles.o $(TARGETPFX)cmd.o \
@@ -618,21 +620,23 @@ HOBJ = $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \
$(TARGETPFX)potion.o $(TARGETPFX)pray.o $(TARGETPFX)priest.o \
$(TARGETPFX)quest.o $(TARGETPFX)questpgr.o $(TARGETPFX)read.o \
$(TARGETPFX)rect.o $(TARGETPFX)region.o $(TARGETPFX)report.o \
$(TARGETPFX)restore.o $(TARGETPFX)rip.o $(TARGETPFX)rnd.o \
$(TARGETPFX)role.o $(TARGETPFX)rumors.o $(TARGETPFX)save.o \
$(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o $(TARGETPFX)sfstruct.o \
$(TARGETPFX)shk.o $(TARGETPFX)shknam.o $(TARGETPFX)sit.o \
$(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o $(TARGETPFX)spell.o \
$(TARGETPFX)stairs.o $(TARGETPFX)symbols.o $(TARGETPFX)sys.o \
$(TARGETPFX)steal.o $(TARGETPFX)steed.o $(TARGETPFX)strutil.o \
$(TARGETPFX)teleport.o $(TARGETPFX)timeout.o $(TARGETPFX)topten.o \
$(TARGETPFX)track.o $(TARGETPFX)trap.o $(TARGETPFX)twitch.o \
$(TARGETPFX)u_init.o $(TARGETPFX)uhitm.o $(TARGETPFX)utf8map.o \
$(TARGETPFX)vault.o $(TARGETPFX)vision.o $(TARGETPFX)weapon.o \
$(TARGETPFX)were.o $(TARGETPFX)wield.o $(TARGETPFX)windows.o \
$(TARGETPFX)wizard.o $(TARGETPFX)wizcmds.o $(TARGETPFX)worm.o \
$(TARGETPFX)worn.o $(TARGETPFX)write.o $(TARGETPFX)zap.o \
$(REGEXOBJ) $(RANDOBJ) $(SYSOBJ) $(WINOBJ) $(HINTOBJ) $(SNDLIBOBJ) \
$(TARGETPFX)restore.o $(TARGETPFX)revision.o $(TARGETPFX)rip.o \
$(TARGETPFX)rnd.o $(TARGETPFX)role.o $(TARGETPFX)rumors.o \
$(TARGETPFX)save.o $(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o \
$(TARGETPFX)sfstruct.o $(TARGETPFX)shk.o $(TARGETPFX)shknam.o \
$(TARGETPFX)sit.o $(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o \
$(TARGETPFX)spell.o $(TARGETPFX)stairs.o $(TARGETPFX)symbols.o \
$(TARGETPFX)sys.o $(TARGETPFX)steal.o $(TARGETPFX)steed.o \
$(TARGETPFX)strutil.o $(TARGETPFX)teleport.o $(TARGETPFX)timeout.o \
$(TARGETPFX)topten.o $(TARGETPFX)track.o $(TARGETPFX)trap.o \
$(TARGETPFX)twitch.o $(TARGETPFX)u_init.o $(TARGETPFX)uhitm.o \
$(TARGETPFX)utf8map.o $(TARGETPFX)vault.o $(TARGETPFX)vision.o \
$(TARGETPFX)weapon.o $(TARGETPFX)were.o $(TARGETPFX)wield.o \
$(TARGETPFX)windows.o $(TARGETPFX)wizard.o $(TARGETPFX)wizcmds.o \
$(TARGETPFX)worm.o $(TARGETPFX)worn.o $(TARGETPFX)write.o \
$(TARGETPFX)zap.o \
$(REGEXOBJ) $(RANDOBJ) $(SYSOBJ) $(WINOBJ) \
$(HINTOBJ) $(SNDLIBOBJ) $(UUIDOBJ) \
$(TARGETPFX)version.o
DATE_O = $(TARGETPFX)date.o
@@ -643,8 +647,10 @@ DATE_O = $(TARGETPFX)date.o
all: $(GAME)
@echo ""
create_responsefiles:
../src/nethack_cc.rsp:
echo $(CC_COMPILER_SWITCHES) >$(CC_RESPONSEFILE)
../src/nethack_cxx.rsp:
echo $(CXX_COMPILER_SWITCHES) >$(CXX_RESPONSEFILE)
pregame: $(RESPONSEFILES)
@@ -653,45 +659,55 @@ pregame: $(RESPONSEFILES)
$(GAME): pregame $(MAKEDEFS) $(LUALIB) $(WAVS) $(SYSTEM)
@echo "$(GAME) is up to date."
Sysunix: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
#$(info DATE_O=$(DATE_O))
#$(info GENTILEOFILE=$(GENTILEOFILE))
Sysunix: $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Linking $(GAME)."
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
$(HOBJ) $(DATE_O) $(TARGET_HACKLIB) $(WINLIB) \
$(HOBJ) $(DATE_O) $(GENTILEOFILE) \
$(TARGET_HACKLIB) $(WINLIB) \
$(TARGET_LIBS) $(LUALIBS) $(AUTOLIBS)
@touch Sysunix
Sys3B2: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
Sys3B2: $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Linking $(GAME)."
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
$(HOBJ) $(DATE_O) $(TARGET_HACKLIB) $(WINLIB) \
$(LUALIBS) -lmalloc
$(HOBJ) $(DATE_O) $(GENTILEOFILE) \
$(TARGET_HACKLIB) $(WINLIB) $(LUALIBS) -lmalloc
@touch Sys3B2
Sysatt: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
Sysatt: $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Loading $(GAME)."
$(AT)$(LD) $(TARGET_LFLAGS) /lib/crt0s.o /lib/shlib.ifile \
-o $(GAMEBIN) $(HOSTOBJ) $(HOBJ) $(DATE_O) $(TARGET_HACKLIB) \
$(LUALIBS)
-o $(GAMEBIN) $(HOSTOBJ) $(HOBJ) \
$(DATE_O) $(GENTILEOFILE) $(TARGET_HACKLIB) $(LUALIBS)
@touch Sysatt
Systos: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
Systos: $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Linking $(GAME)."
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
$(HOBJ) $(DATE_O) $(TARGET_HACKLIB) \
$(HOBJ) $(DATE_O) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(WINLIB) $(LUALIBS)
@touch Systos
SysV-AT: DUMB.Setup $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
SysV-AT: DUMB.Setup $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Linking $(GAME)."
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAMEBIN) \
$(HOBJ) $(DATE_O) $(TARGET_HACKLIB) \
$(HOBJ) $(DATE_O) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(WINLIB) $(LUALIBS)
@touch SysV-AT
SysBe: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(DATE_O) $(BUILDMORE) Makefile
SysBe: $(HOSTOBJ) $(HOBJ) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(DATE_O) $(BUILDMORE) Makefile
@echo "Linking $(GAME)."
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) -o $(GAME) \
$(HOBJ) $(DATE_O) $(TARGET_HACKLIB) \
$(HOBJ) $(DATE_O) $(GENTILEOFILE) $(TARGET_HACKLIB) \
$(WINLIB) $(TARGET_LIBS) $(LUALIBS)
@xres -o $(GAME) ../win/BeOS/nethack.rsrc
@mimeset -f $(GAME)
@@ -743,7 +759,7 @@ qt3tableview.moc: ../win/Qt3/qt3tableview.h
$(QTDIR)/bin/moc -o qt3tableview.moc ../win/Qt3/qt3tableview.h
# build monst.o and objects.o before executing '$(MAKE) makedefs'
$(MAKEDEFS): $(FIRSTOBJ) \
$(MAKEDEFS): $(RESPONSEFILES) $(FIRSTOBJ) \
../util/makedefs.c ../src/mdlib.c $(CONFIG_H) \
../include/permonst.h ../include/monsters.h \
../include/objclass.h ../include/objects.h ../include/sym.h \
@@ -761,7 +777,7 @@ $(MAKEDEFS): $(FIRSTOBJ) \
@( cd ../util ; $(MAKE) ../include/pm.h )
# Created at build time for configurations which support tiles,
# but not by makedefs so not connected to the others.
tile.c: ../win/share/tilemap.c $(HACK_H)
../src/tile.c: $(RESPONSEFILES) ../win/share/tilemap.c $(HACK_H)
@( cd ../util ; $(MAKE) ../src/tile.c )
#
@@ -779,7 +795,7 @@ $(TARGETPFX)sfbase.o: sfbase.c $(HACK_H) ../include/sfprocs.h ../include/sfmacro
# date.c should be recompiled any time any of the source or include code
# is modified.
DATECFLAGS = $(TARGET_CFLAGS) $(GITHASH) $(GITBRANCH) $(GITPREFIX)
$(TARGETPFX)date.o: date.c $(HACK_H) $(HACKCSRC) $(HOBJ) $(TARGET_HACKLIB)
$(TARGETPFX)date.o: date.c $(GENTILECFILE) $(HACK_H) $(HACKCSRC) $(HOBJ) $(TARGET_HACKLIB)
$(TARGET_CC) $(DATECFLAGS) -c -o $@ date.c
# date.h should be remade any time any of the source or include code
@@ -790,7 +806,7 @@ $(TARGETPFX)date.o: date.c $(HACK_H) $(HACKCSRC) $(HOBJ) $(TARGET_HACKLIB)
# Do NOT include ../dat/gitinfo.txt as either a prerequisite or target.
# 'makedefs -v' processes it when present and ignores it if not.
#
../include/date.h: ../util/makedefs $(VERSOURCES) $(HACK_H)
../include/date.h: $(RESPONSEFILES) ../util/makedefs $(VERSOURCES) $(HACK_H)
-$(SHELL) ../sys/unix/gitinfo.sh $(GITINFO) #before 'makedefs -v'
../util/makedefs -v
@@ -820,7 +836,7 @@ spotless: clean
-rm -f ../include/nhlua.h
-rm -f ../include/date.h #created but no longer used, at least by core
-rm -f ../include/onames.h ../include/pm.h #obsolete generated files
-rm -f tile.c *.moc Qt*.h-t
-rm -f $(GENTILECFILE) *.moc Qt*.h-t
-rm -f ../win/gnome/gn_rip.h
package:
@@ -852,7 +868,7 @@ updatedepend-setup:
echo '#include "../$(LUAHEADERS)/lualib.h"' >> $$HFILE && \
echo '#include "../$(LUAHEADERS)/lauxlib.h"' >> $$HFILE && \
echo '/*nhlua.h*/' >> $$HFILE )
@echo "Generating bogus src/tile.c"
@echo "Generating bogus $(GENTILECFILE)"
@echo '#error bogus include/nhlua.h' > ../../src/tile.c
@echo "#include \"hack.h\"" >> ../../src/tile.c
@@ -877,7 +893,8 @@ depend2: $(WINQTMOC)
@echo '# see make depend above' >> $(MAKEFILE_NAME)
- diff Makefile.bak $(MAKEFILE_NAME)
@rm -f Makefile.bak
@rm -f ../include/nhlua.h tile.c
@rm -f ../include/nhlua.h $(GENTILECFILE)
# DO NOT DELETE THIS LINE OR CHANGE ANYTHING BEYOND IT
@@ -896,19 +913,19 @@ $(HACK_H): $(CONFIG_H) ../include/align.h ../include/artilist.h \
../include/decl.h ../include/defsym.h ../include/display.h \
../include/dungeon.h ../include/engrave.h ../include/flag.h \
../include/hack.h ../include/lint.h ../include/mextra.h \
../include/mcastu.h \
../include/mkroom.h ../include/monattk.h ../include/mondata.h \
../include/monflag.h ../include/monst.h ../include/monsters.h \
../include/nhlua.h ../include/obj.h ../include/objclass.h \
../include/objects.h ../include/permonst.h ../include/prop.h \
../include/quest.h ../include/rect.h ../include/region.h \
../include/mcastu.h ../include/mkroom.h ../include/monattk.h \
../include/mondata.h ../include/monflag.h ../include/monst.h \
../include/monsters.h ../include/nhlua.h ../include/obj.h \
../include/objclass.h ../include/objects.h \
../include/permonst.h ../include/prop.h ../include/quest.h \
../include/rect.h ../include/region.h ../include/revision.h \
../include/rm.h ../include/savefile.h ../include/sfprocs.h \
../include/seffects.h ../include/selvar.h \
../include/skills.h ../include/sndprocs.h ../include/spell.h \
../include/stairs.h ../include/sym.h ../include/sys.h \
../include/timeout.h ../include/trap.h ../include/vision.h \
../include/weight.h ../include/winprocs.h \
../include/wintype.h ../include/you.h ../include/youprop.h
../include/seffects.h ../include/selvar.h ../include/skills.h \
../include/sndprocs.h ../include/spell.h ../include/stairs.h \
../include/sym.h ../include/sys.h ../include/timeout.h \
../include/trap.h ../include/vision.h ../include/weight.h \
../include/winprocs.h ../include/wintype.h ../include/you.h \
../include/youprop.h
touch $(HACK_H)
#
$(TARGETPFX)cppregex.o: ../sys/share/cppregex.cpp $(CONFIG_H)
@@ -1070,6 +1087,8 @@ $(TARGETPFX)winX.o: ../win/X11/winX.c $(HACK_H) ../include/dlb.h \
../include/winX.h ../include/xwindow.h ../win/X11/nh32icon \
../win/X11/nh56icon ../win/X11/nh72icon
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winX.c
$(TARGETPFX)winlabel.o: ../win/X11/winlabel.c $(HACK_H) ../include/winX.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winlabel.c
$(TARGETPFX)winmap.o: ../win/X11/winmap.c $(HACK_H) ../include/dlb.h \
../include/tile2x11.h ../include/winX.h ../include/xwindow.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winmap.c
@@ -1089,6 +1108,18 @@ $(TARGETPFX)wintext.o: ../win/X11/wintext.c $(HACK_H) ../include/winX.h \
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/wintext.c
$(TARGETPFX)winval.o: ../win/X11/winval.c $(HACK_H) ../include/winX.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winval.c
$(TARGETPFX)tileset.o: ../win/share/tileset.c $(CONFIG_H) \
../include/objclass.h ../include/flag.h ../include/tileset.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/share/tileset.c
$(TARGETPFX)bmptiles.o: ../win/share/bmptiles.c $(CONFIG_H) \
../include/objclass.h ../include/tileset.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/share/bmptiles.c
$(TARGETPFX)giftiles.o: ../win/share/giftiles.c $(CONFIG_H) \
../include/objclass.h ../include/tileset.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/share/giftiles.c
$(TARGETPFX)pngtiles.o: ../win/share/pngtiles.c $(CONFIG_H) \
../include/objclass.h ../include/tileset.h
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) -c -o $@ ../win/share/pngtiles.c
$(TARGETPFX)wc_chainin.o: ../win/chain/wc_chainin.c $(HACK_H)
$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ ../win/chain/wc_chainin.c
$(TARGETPFX)wc_chainout.o: ../win/chain/wc_chainout.c $(HACK_H)
@@ -1245,6 +1276,7 @@ $(TARGETPFX)rect.o: rect.c $(HACK_H)
$(TARGETPFX)region.o: region.c $(HACK_H)
$(TARGETPFX)report.o: report.c $(HACK_H) ../include/dlb.h ../include/nhmd4.h
$(TARGETPFX)restore.o: restore.c $(HACK_H) ../include/tcap.h
$(TARGETPFX)revision.o: revision.c $(HACK_H)
$(TARGETPFX)rip.o: rip.c $(HACK_H)
$(TARGETPFX)rnd.o: rnd.c $(HACK_H) ../include/isaac64.h
$(TARGETPFX)role.o: role.c $(HACK_H)
@@ -1265,7 +1297,7 @@ $(TARGETPFX)strutil.o: strutil.c $(HACK_H)
$(TARGETPFX)symbols.o: symbols.c $(HACK_H) ../include/tcap.h
$(TARGETPFX)sys.o: sys.c $(HACK_H)
$(TARGETPFX)teleport.o: teleport.c $(HACK_H)
$(TARGETPFX)tile.o: tile.c $(HACK_H)
$(TARGETPFX)tile.o: $(SRCDIR)/tile.c $(HACK_H)
$(TARGETPFX)timeout.o: timeout.c $(HACK_H)
$(TARGETPFX)topten.o: topten.c $(HACK_H) ../include/dlb.h
$(TARGETPFX)track.o: track.c $(HACK_H)
+90 -43
View File
@@ -1,5 +1,5 @@
# NetHack Top-level Makefile.
# NetHack 3.7 Makefile.top $NHDT-Date: 1722119081 2024/07/27 22:24:41 $ $NHDT-Branch: keni-fetchlua $:$NHDT-Revision: 1.109 $
# NetHack 5.0 Makefile.top $NHDT-Date: 1722119081 2024/07/27 22:24:41 $ $NHDT-Branch: keni-fetchlua $:$NHDT-Revision: 1.109 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
@@ -27,6 +27,7 @@ GAME = nethack
# GAME = nethack.prg
#GAMEUID = games
#GAMEGRP = bin
TARGET_CC ?= $(CC)
# Permissions - some places use setgid instead of setuid, for instance.
# See also the option "SECURE" in include/config.h.
@@ -121,13 +122,15 @@ DAT = $(DATNODLB) $(DATDLB)
RECOVERBIN = recover
# Lua
LUAHEADERS = lib/lua-$(LUA_VERSION)/src
LUATESTTARGET = $(LUAHEADERS)/lua.h
LUAHEADERS ?= lib/lua-$(LUA_VERSION)/src
LUATESTTARGET ?= $(LUAHEADERS)/lua.h
LUATOP = $(LUAHEADERS)
LUAMAKEFLAGS = CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)'
LUA2NHTOP = ../../..
LUABASELIB = liblua-$(LUA_VERSION).a
TOPLUALIB = lib/lua/$(LUABASELIB)
LUAMAKEFLAGS ?= CC='$(TARGET_CC)' SYSCFLAGS='$(SYSCFLAGS)'
LUA2NHTOP ?= ../../..
LUABASELIB ?= liblua-$(LUA_VERSION).a
LUATOPLIB ?= lib/lua/$(LUABASELIB)
LUAHPREFIX ?= ../
LUALIBBUILT ?= $(LUATOP)/liblua.a
ALLDEP = $(PRECHECK) $(GAME) recover Guidebook $(VARDAT) spec_levs check-dlb
@@ -143,18 +146,18 @@ lua_support: include/nhlua.h
@true
$(LUATOP)/liblua.a: $(LUAHEADERS)/lua.h
( cd $(LUATOP) && make $(LUAMAKEFLAGS) a )
$(TOPLUALIB): $(LUATOP)/liblua.a
lib/lua/$(LUABASELIB): $(LUALIBBUILT)
@( if test -d lib/lua ; then true ; else mkdir -p lib/lua ; fi )
cp $(LUATOP)/liblua.a $@
include/nhlua.h: $(TOPLUALIB)
include/nhlua.h: $(LUATOPLIB)
echo '/* nhlua.h - generated by top Makefile */' > $@
@echo '#include "../$(LUAHEADERS)/lua.h"' >> $@
@echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lua.h"' >> $@
@sed -e '/(lua_error)/!d' \
-e '/(lua_error)/s/LUA_API/ATTRNORETURN LUA_API/1' \
-e '/(lua_error)/s/;/ NORETURN;/1' < $(LUAHEADERS)/lua.h >> $@
@echo '#include "../$(LUAHEADERS)/lualib.h"' >> $@
@echo '#include "../$(LUAHEADERS)/lauxlib.h"' >> $@
@echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lualib.h"' >> $@
@echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lauxlib.h"' >> $@
@echo '/*nhlua.h*/' >> $@
# LUATESTTARGET is this by default
lib/lua-$(LUA_VERSION)/src/lua.h:
@@ -275,7 +278,7 @@ check-dlb: options
dlb:
( cd util ; $(MAKE) dlb )
( cd dat ; LC_ALL=C ; ../util/dlb cf nhdat $(DATDLB) )
( cd dat ; $(MAKE) DATDLB="$(DATDLB)" nhdat )
wasm:
( cd src ; $(MAKE) CROSS_TO_WASM=1 ../targets/wasm/nethack.js )
@@ -342,7 +345,15 @@ LUA_URL :=www.lua.org/ftp
LUA_URL_MIRROR :=www.tecgraf.puc-rio.br/lua/mirror/ftp
LUA_URL_NHD :=www.nethack.org/download/thirdparty
LUA_URL_list:=$(LUA_URL) $(LUA_URL_MIRROR) $(LUA_URL_NHD)
#
#CURL := curl
#ask curl to return a failure code if error 404 is encountered
CURL := curl -q --fail --no-progress-meter
# Set this to 1 to bypass checksum verification. _Highly_ discouraged.
#NOCHKSUM=1
#debugging targets
fetch-lua-mirror: LUA_URL_list:=$(LUA_URL_MIRROR)
fetch-lua-mirror: fetch-Lua
@true
@@ -351,54 +362,90 @@ fetch-lua-nhd: LUA_URL_list:=$(LUA_URL_NHD)
fetch-lua-nhd: fetch-Lua
@true
# normal entry point
fetch-lua: fetch-Lua
@true
fetch-Lua:
@( \
shac1=`command -v shasum`; \
shac2=`command -v sha256sum`; \
if [ ! -z $$shac1 ]; then \
shac="$$shac1 -a 256"; elif [ ! -z $$shac2 ]; then \
shac=$$shac2; else echo "CAUTION: no way to check integrity"; \
fi; \
set -- DUMMY $(LUA_URL_list); \
luafile=lua-$(LUA_VERSION).tar.gz; \
export curlstatus=1; \
mkdir -p lib && cd lib && \
while [ $$# -gt 0 ]; do \
`: $1 = file to check`; \
chksum_or_fail(){ \
local shac shac1 shac2; \
shac1=`command -v shasum`; \
shac2=`command -v sha256sum`; \
if [ ! -z $$shac1 ]; then \
shac="$$shac1 -a 256"; \
elif [ ! -z $$shac2 ]; then \
shac=$$shac2; \
else \
echo "CAUTION: no way to check integrity"; \
echo "Rerun with 'NOCHKSUM=1' to skip this check"; \
exit 1; \
fi; \
echo "Checking integrity of $$1 with $$shac"; \
$$shac -w --ignore-missing -c $$CHKSUMSTMP < $$1; \
if [ $$? -ne 0 ]; then \
echo "Integrity check FAILED - STOPPING"; \
exit 1; \
fi; \
echo "Integrity check passed"; \
}; \
`: $1 = name of tarfile`; \
untar_and_cleanup(){ \
echo "Unpacking $$1"; \
tar zxf $$1; \
if [ $$? -eq '0' ]; then \
rm -f $$1; \
echo "Unpacked successfully into `pwd`"; \
return 0; \
else \
echo "tar failed to extract $$1 - trying next source"; \
return 1; \
fi; \
}; \
`: main`; \
set -- $(LUA_URL_list); \
luafile=lua-$(LUA_VERSION).tar.gz; \
mkdir -p lib; \
cd lib || { \
echo "Unable to find lib directory"; \
exit 1; \
}; \
while [ $$# -gt 0 ]; do \
iter=$$1; \
shift; \
if [ $$curlstatus -ne 0 ]; then \
luaurl=https://$$1/$$luafile; \
echo Trying $$luaurl; \
curl -R -O $$luaurl; \
curlstatus=$$?; \
if [ $$curlstatus -eq 0 ]; then \
if [ ! -z "$$shac" ]; then \
luaurl=https://$$iter/$$luafile; \
echo "Fetching $$luaurl"; \
if $(CURL) -R -O $$luaurl ; then \
if [ -z $(NOCHKSUM) ]; then \
echo "Searching for known checksum"; \
CHKSUMS=../submodules/CHKSUMS; \
CHKSUMSTMP=../submodules/CHKSUMS.tmp; \
fgrep $$luafile < $$CHKSUMS > $$CHKSUMSTMP; \
if [ -z $$CHKSUMSTMP ]; then \
echo "Cannot check $$luafile - no checksum known"; \
echo "Cannot check $$luafile - no checksum known"; \
echo "Rerun with 'NOCHKSUM=1' to skip this check"; \
exit 1; \
else \
echo Checking integrity of $$luafile with $$shac; \
$$shac -w --ignore-missing -c $$CHKSUMSTMP < $$luafile; \
echo "Checksum found"; \
chksum_or_fail $$luafile; \
fi; \
fi; \
tar zxf $$luafile && \
rm -f $$luafile; \
fi; \
fi; \
`: If we can unpack it, we are done.`; \
untar_and_cleanup $$luafile && exit 0; \
`: fallthrough to next source `; \
fi; \
done; \
true )
done; \
echo "Unable to find a valid source - STOPPING" \
exit 1; \
)
# remove include/nhlua.h in case it was created for some other Lua version
@( if test -f include/nhlua.h ; then \
rm -f include/nhlua.h && echo 'rm include/nhlua.h' ; fi )
rm -f include/nhlua.h && echo 'rm include/nhlua.h' ; fi )
fetch-lua-http:
( mkdir -p lib && cd lib && \
curl -R -O http://$(LUA_URL)/lua-$(LUA_VERSION).tar.gz && \
$(CURL) -R -O http://$(LUA_URL)/lua-$(LUA_VERSION).tar.gz && \
tar zxf lua-$(LUA_VERSION).tar.gz && \
rm -f lua-$(LUA_VERSION).tar.gz )
+46 -41
View File
@@ -1,15 +1,16 @@
# Makefile for NetHack's utility programs.
# NetHack 3.7 Makefile.utl $NHDT-Date: 1693334279 2023/08/29 18:37:59 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.68 $
# NetHack 5.0 Makefile.utl $NHDT-Date: 1693334279 2023/08/29 18:37:59 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.68 $
# Copyright (c) 2018 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
#
# Note: as of nethack 3.7, 'lev_comp' and 'dgn_comp' are no longer present
# Note: as of NetHack 5.0, 'lev_comp' and 'dgn_comp' are no longer present
# so use of yacc and lex to build them is no longer required.
#
# Root of source tree:
NHSROOT=..
SRCDIR = $(NHSROOT)/src
# newer makes predefine $(MAKE) to 'make' and do smarter processing of
# recursive make calls if $(MAKE) is used
@@ -23,7 +24,7 @@ NHSROOT=..
# execute things like 'foo.o')
# MAKE = make
# NetHack 3.7 began introducing C99 code.
# NetHack 5.0 began introducing C99 code.
#
# If your compiler needs an appropriate switch to accept C99 code.
# CSTD = -std=c99
@@ -88,7 +89,7 @@ NHSROOT=..
# flags for Linux
# compile normally
# CFLAGS = -O2 -fomit-frame-pointer -I../include
# LFLAGS = -L/usr/X11R6/lib
# LFLAGS = -L/usr/lib64
# 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
@@ -143,6 +144,8 @@ QUIETCC=0
CLINK=$(CC)
CXXLINK=$(CXX)
CCRESP=$(CC_RESPONSEFILE)
# ----------------------------------------
#
# Nothing below this line should have to be changed.
@@ -222,18 +225,18 @@ DLBOBJS = dlb_main.o $(OBJDIR)/dlb.o $(OALLOC)
# files or on the command line.
TARGETPFX=
TARGET_CC = $(CC)
TARGET_CFLAGS = $(CFLAGS) $(CSTD)
TARGET_CLINK = $(CLINK)
TARGET_LFLAGS = $(LFLAGS)
TARGET_CXX = $(CXX)
TARGET_CXXFLAGS = $(CXXFLAGS)
TARGET_AR = $(AR)
TARGET_CC ?= $(CC)
TARGET_CFLAGS ?= $(CFLAGS) $(CSTD)
TARGET_CLINK ?= $(CLINK)
TARGET_LFLAGS ?= $(LFLAGS)
TARGET_CXX ?= $(CXX)
TARGET_CXXFLAGS ?= $(CXXFLAGS)
TARGET_AR ?= $(AR)
#
# dependencies for makedefs
#
makedefs: $(HACKLIB) $(MAKEOBJS) mdgrep.h
makedefs: $(CCRESP) $(HACKLIB) $(MAKEOBJS) mdgrep.h
$(CLINK) $(LFLAGS) -o makedefs $(MAKEOBJS) $(HACKLIB)
@@ -275,9 +278,11 @@ $(HACKLIB): $(CONFIG_H) $(HACKLIBSRC) panic.o
@( cd ../src ; $(MAKE) hacklib.a )
# support code used by several of the utility programs (but not makedefs)
panic.o: panic.c $(CONFIG_H)
panic.o: $(CCRESP) panic.c $(CONFIG_H)
$(CC) $(CFLAGS) $(CSTD) -c panic.c -o $@
../src/nethack_cc.rsp:
( cd ../src; $(MAKE) ../src/nethack_cc.rsp )
# with all of extern.h's functions to complain about, we drown in
# 'defined but not used' without -u
@@ -288,7 +293,7 @@ lintdgn:
# dependencies for recover
#
recover: $(RECOVOBJS) $(HACKLIB)
recover: $(CCRESP) $(RECOVOBJS) $(HACKLIB)
$(CLINK) $(LFLAGS) -o recover \
$(RECOVOBJS) $(HACKLIB) $(LIBS)
@@ -324,7 +329,7 @@ SFCTOOLBIN = sfctool
SFFLAGS=-DSFCTOOL -DNOPANICTRACE -DNOCRASHREPORT -DNO_CHRONICLE
sfutil: $(SFCTOOLBIN)
@echo '$(SFCTOOLBIN) is up to date.'
$(SFCTOOLBIN): $(SFCTOOLOBJS) $(HACKLIB)
$(SFCTOOLBIN): $(CCRESP) $(SFCTOOLOBJS) $(HACKLIB)
$(TARGET_CLINK) $(TARGET_LFLAGS) -o $@ $(SFCTOOLOBJS) $(HACKLIB) $(TARGET_LIBS)
$(TARGETPFX)sfctool.o: sfctool.c $(HACK_H) ../include/sfprocs.h
$(TARGET_CC) $(TARGET_CFLAGS) $(SFFLAGS) -o $@ -c sfctool.c
@@ -398,7 +403,7 @@ sftags: sftags.o $(HACKLIB) $(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o
$(CLINK) $(LFLAGS) -o $@ sftags.o \
$(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o \
$(HACKLIB) $(LIBS)
sftags.o: sftags.c $(HACK_H)
sftags.o: $(CCRESP) sftags.c $(HACK_H)
$(CC) $(CFLAGS) -c sftags.c
../include/sfproto.h: sf.tags sftags
./sftags
@@ -467,13 +472,13 @@ sf.tags: $(CTAGDEP)
dlb: $(DLBOBJS) $(HACKLIB)
$(CLINK) $(LFLAGS) -o dlb $(DLBOBJS) $(HACKLIB) $(LIBS)
dlb_main.o: dlb_main.c $(CONFIG_H) ../include/dlb.h
dlb_main.o: $(CCRESP) dlb_main.c $(CONFIG_H) ../include/dlb.h
$(CC) $(CFLAGS) $(CSTD) -c dlb_main.c -o $@
stripbs: stripbs.o
$(CC) $(LFLAGS) -o stripbs stripbs.o
stripbs.o: stripbs.c
stripbs.o: $(CCRESP) stripbs.c
$(CC) $(CFLAGS) -c stripbs.c
# dependencies for tile utilities
@@ -520,38 +525,38 @@ tilemap: tilemap.o $(OBJDIR)/objects.o $(OBJDIR)/monst.o $(OBJDIR)/drawing.o \
../src/tile.c: tilemap
./tilemap
tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../win/share/tile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/share/tiletext.c -o $@
tiletxt.o: ../win/share/tiletxt.c ../win/share/tilemap.c $(HACK_H)
tiletext.o: $(CCRESP) ../win/share/tiletext.c $(CONFIG_H) ../win/share/tile.h
$(CC) $(CFLAGS) $(NO_WARN_DISCARDED_QUALIFIERS) $(CSTD) -I../win/share -c ../win/share/tiletext.c -o $@
tiletxt.o: $(CCRESP) ../win/share/tiletxt.c ../win/share/tilemap.c $(HACK_H)
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/share/tiletxt.c -o $@
tilemap.o: ../win/share/tilemap.c $(HACK_H)
tilemap.o: $(CCRESP) ../win/share/tilemap.c $(HACK_H)
$(CC) $(CFLAGS) $(CSTD) -c ../win/share/tilemap.c -o $@
gifread.o: ../win/share/gifread.c $(CONFIG_H) ../win/share/tile.h
gifread.o: $(CCRESP) ../win/share/gifread.c $(CONFIG_H) ../win/share/tile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/share/gifread.c -o $@
ppmwrite.o: ../win/share/ppmwrite.c $(CONFIG_H) ../win/share/tile.h
ppmwrite.o: $(CCRESP) ../win/share/ppmwrite.c $(CONFIG_H) ../win/share/tile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/share/ppmwrite.c -o $@
tile2bmp.o: ../win/share/tile2bmp.c $(HACK_H) ../win/share/tile.h
tile2bmp.o: $(CCRESP) ../win/share/tile2bmp.c $(HACK_H) ../win/share/tile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/share/tile2bmp.c -o $@
tile2x11.o: ../win/X11/tile2x11.c $(HACK_H) ../win/share/tile.h \
tile2x11.o: $(CCRESP) ../win/X11/tile2x11.c $(HACK_H) ../win/share/tile.h \
../include/tile2x11.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/X11/tile2x11.c -o $@
tile2img.o: ../win/gem/tile2img.c $(HACK_H) ../win/share/tile.h \
tile2img.o: $(CCRESP) ../win/gem/tile2img.c $(HACK_H) ../win/share/tile.h \
../include/bitmfile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/gem/tile2img.c -o $@
xpm2img.o: ../win/gem/xpm2img.c $(HACK_H) ../include/bitmfile.h
xpm2img.o: $(CCRESP) ../win/gem/xpm2img.c $(HACK_H) ../include/bitmfile.h
$(CC) $(CFLAGS) $(CSTD) -c ../win/gem/xpm2img.c -o $@
bitmfile.o: ../win/gem/bitmfile.c ../include/bitmfile.h
bitmfile.o: $(CCRESP) ../win/gem/bitmfile.c ../include/bitmfile.h
$(CC) $(CFLAGS) $(CSTD) -c ../win/gem/bitmfile.c -o $@
tile2beos.o: ../win/BeOS/tile2beos.cpp $(HACK_H) ../win/share/tile.h
tile2beos.o: $(CCRESP) ../win/BeOS/tile2beos.cpp $(HACK_H) ../win/share/tile.h
$(CXX) $(CFLAGS) $(CSTD) -I../win/share -c ../win/BeOS/tile2beos.cpp -o $@
# note: tileedit.cpp was developed for Qt2 and will not compile using Qt5
tileedit.o: ../win/Qt/tileedit.cpp
tileedit.o: $(CCRESP) ../win/Qt/tileedit.cpp
$(CXX) -I../include -I$(QTDIR)/include ../win/Qt/tileedit.cpp
tileedit: tileedit.o $(TEXT_IO)
$(QTDIR)/bin/moc -o tileedit.moc tileedit.h
@@ -559,7 +564,7 @@ tileedit: tileedit.o $(TEXT_IO)
uudecode: uudecode.o
$(CLINK) $(LFLAGS) -o uudecode uudecode.o $(LIBS)
uudecode.o: ../sys/share/uudecode.c
uudecode.o: $(CCRESP) ../sys/share/uudecode.c
$(CC) $(CFLAGS) $(CSTD) -c -o uudecode.o ../sys/share/uudecode.c
# using dependencies like
@@ -576,27 +581,27 @@ uudecode.o: ../sys/share/uudecode.c
# make sure host object files from src are available when needed
# (note: these dependencies have been copied from Makefile.src so only come
# indirectly from 'make depend', hence are subject to bit rot as src changes)
$(OBJDIR)/alloc.o: ../src/alloc.c $(CONFIG_H) ../include/nhlua.h
$(OBJDIR)/alloc.o: $(CCRESP) ../src/alloc.c $(CONFIG_H) ../include/nhlua.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/alloc.c -o $@
$(OBJDIR)/drawing.o: ../src/drawing.c $(CONFIG_H) ../include/color.h \
$(OBJDIR)/drawing.o: $(CCRESP) ../src/drawing.c $(CONFIG_H) ../include/color.h \
../include/rm.h ../include/objclass.h ../include/defsym.h \
../include/objects.h ../include/sym.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/drawing.c -o $@
$(OBJDIR)/decl.o: ../src/decl.c $(HACK_H)
$(OBJDIR)/decl.o: $(CCRESP) ../src/decl.c $(HACK_H)
$(CC) $(CFLAGS) $(CSTD) -c ../src/decl.c -o $@
$(OBJDIR)/monst.o: ../src/monst.c $(CONFIG_H) ../include/permonst.h \
$(OBJDIR)/monst.o: $(CCRESP) ../src/monst.c $(CONFIG_H) ../include/permonst.h \
../include/align.h ../include/monattk.h ../include/monflag.h \
../include/monsters.h ../include/wintype.h ../include/sym.h \
../include/defsym.h ../include/color.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/monst.c -o $@
$(OBJDIR)/objects.o: ../src/objects.c $(CONFIG_H) ../include/obj.h \
$(OBJDIR)/objects.o: $(CCRESP) ../src/objects.c $(CONFIG_H) ../include/obj.h \
../include/prop.h ../include/skills.h ../include/color.h \
../include/objclass.h ../include/defsym.h ../include/objects.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/objects.c -o $@
$(OBJDIR)/dlb.o: ../src/dlb.c $(CONFIG_H) ../include/dlb.h
$(OBJDIR)/dlb.o: $(CCRESP) ../src/dlb.c $(CONFIG_H) ../include/dlb.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/dlb.c -o $@
# this differs substantially from what Makefile.src specifies
$(OBJDIR)/date.o: ../src/date.c $(CONFIG_H)
$(OBJDIR)/date.o: $(CCRESP) ../src/date.c $(CONFIG_H)
$(CC) $(CFLAGS) $(CSTD) -c ../src/date.c -o $@
../include/nhlua.h:
@( cd .. ; $(MAKE) lua_support )
@@ -612,10 +617,10 @@ tags: $(UTILSRCS)
@ctags -tw $(UTILSRCS)
# note: 3.6 copied tile.h from win/share/ to include/ and if someone
# switches branches from 3.6 to 3.7 without executing 'make spotless'
# switches branches from 3.6 to 5.0 without executing 'make spotless'
# first, the old tile.h sticks around and gets found during compile
# instead of current one; various tile utilities won't build in that
# mis-configuration so allow 'make clean' and 'make spotless' in 3.7
# mis-configuration so allow 'make clean' and 'make spotless' in 5.0
# to fix things up by deleting the out of date file (if present)
clean-fixup:
-rm -f ../include/tile.h
+10 -8
View File
@@ -209,6 +209,7 @@
F5857AA22DED026700A8CB4F /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 31B8A32721A238010055BD01 /* version.c */; };
F5857AA42DED032D00A8CB4F /* cfgfiles.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA32DED032C00A8CB4F /* cfgfiles.c */; };
F5857AA62DED03BB00A8CB4F /* sfbase.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA52DED03BB00A8CB4F /* sfbase.c */; };
F5E1A4CF2FA2F74C0014D115 /* macuuid.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E1A4CE2FA2F74C0014D115 /* macuuid.m */; };
F5E66A222F7D4B30000E30B7 /* earlyarg.c in Sources */ = {isa = PBXBuildFile; fileRef = F5E66A212F7D4B30000E30B7 /* earlyarg.c */; };
/* End PBXBuildFile section */
@@ -635,6 +636,7 @@
F54C1AE42E43D22A006CAA8E /* sfprocs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sfprocs.h; path = ../../include/include/sfprocs.h; sourceTree = "<group>"; };
F5857AA32DED032C00A8CB4F /* cfgfiles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cfgfiles.c; path = ../../src/cfgfiles.c; sourceTree = "<group>"; };
F5857AA52DED03BB00A8CB4F /* sfbase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = sfbase.c; path = ../../src/sfbase.c; sourceTree = "<group>"; };
F5E1A4CE2FA2F74C0014D115 /* macuuid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = macuuid.m; sourceTree = "<group>"; };
F5E66A212F7D4B30000E30B7 /* earlyarg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = earlyarg.c; path = ../../src/earlyarg.c; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -695,6 +697,7 @@
3189576821A1FCC100FB2ABE = {
isa = PBXGroup;
children = (
F5E1A4CE2FA2F74C0014D115 /* macuuid.m */,
F5E66A212F7D4B30000E30B7 /* earlyarg.c */,
F50818302F6F564300D2AAFA /* iactions.c */,
F515A73B2DED0B47006E1F63 /* hacklib.c */,
@@ -1883,6 +1886,7 @@
31B8A38621A238060055BD01 /* mondata.c in Sources */,
31B8A41921A244940055BD01 /* objects.c in Sources */,
31B8A3AA21A238060055BD01 /* wizard.c in Sources */,
F5E1A4CF2FA2F74C0014D115 /* macuuid.m in Sources */,
31B8A3D021A238060055BD01 /* explode.c in Sources */,
31B8A3DE21A238060055BD01 /* sys.c in Sources */,
31B8A38021A238060055BD01 /* sit.c in Sources */,
@@ -2190,6 +2194,7 @@
"DEBUG=1",
"$(inherited)",
);
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "NHUUID=1";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_PEDANTIC = YES;
@@ -2214,7 +2219,6 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = (
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2296,7 +2300,6 @@
NH_UTIL_DIR = "$(NH_ROOT_DIR)/util";
OTHER_CFLAGS = (
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2318,12 +2321,15 @@
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5J8MP36Y73;
GCC_C_LANGUAGE_STANDARD = c99;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = (
"DEBUG=1",
"$(inherited)",
);
INSTALL_PATH = "$(NH_INSTALL_DIR)";
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
OTHER_CFLAGS = (
"-Wno-ambiguous-macro",
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2351,12 +2357,12 @@
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5J8MP36Y73;
GCC_C_LANGUAGE_STANDARD = c99;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "NHUUID=1";
INSTALL_PATH = "$(NH_INSTALL_DIR)";
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
OTHER_CFLAGS = (
"-Wno-ambiguous-macro",
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2405,7 +2411,6 @@
OTHER_CFLAGS = (
"-DMINIMAL_FOR_RECOVER",
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2432,7 +2437,6 @@
OTHER_CFLAGS = (
"-DMINIMAL_FOR_RECOVER",
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2488,7 +2492,6 @@
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
OTHER_CFLAGS = (
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
@@ -2525,7 +2528,6 @@
MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
OTHER_CFLAGS = (
"-DNOMAIL",
"-DNOTPARMDECL",
"-DDEFAULT_WINDOW_SYS=\\\"tty\\\"",
"-DDLB",
"-DGREPPATH=\\\"/usr/bin/grep\\\"",
+77 -73
View File
@@ -1,5 +1,5 @@
Instructions for installing NetHack 3.7
Instructions for installing NetHack 5.0
using the new hints system
=======================================
@@ -83,78 +83,82 @@ Note that curses, X11, and Qt will almost certainly require the installation
of prerequisite packages in order to successfully build with support for
additional interfaces. See below.
+----------+-------+-----------------+--------------------------------------+
| Platform |Interf.| Build Variable | Prerequisite package |
|----------+-------+-----------------+--------------------------------------|
| MacOS | tty | WANT_WIN_TTY | none |
|----------+-------+-----------------+--------------------------------------|
| MacOS | curses| WANT_WIN_CURSES | ncurses development libraries |
|----------+-------+-----------------+--------------------------------------|
| MacOS | X11 | WANT_WIN_X11 | You will need to obtain and |
| | | | install XQuartz if you want X11 |
| | | | support in your build. |
| | | | (Attempting to run X11.app will |
| | | | describe where to get it) |
| | | | |
| | | | One possible way: |
| | | | brew install xquartz |
|----------+-------+-----------------+--------------------------------------|
| MacOS | Qt | WANT_WIN_QT | You will need to obtain and |
| | | | install Qt if you want Qt |
| | | | support in your build. |
| | | | |
| | | | One possible way: |
| | | | brew install pkg-config |
| | | | brew install Qt6 |
|----------+-------+-----------------+--------------------------------------|
| Linux | tty | WANT_WIN_TTY | |
| (Ubuntu) | | | |
|----------+-------+-----------------+--------------------------------------|
| Linux | curses|WANT_WIN_CURSES=1| If it isn't already included |
| (Ubuntu) | | | in your distribution, here is one |
| | | | possible way: |
| | | | |
| | | | sudo apt-get install libncurses-dev |
|----------+-------+-----------------+--------------------------------------|
| Linux | X11 | WANT_WIN_X11=1 | Here is one possible way to obtain |
| (Ubuntu) | | | the required packages: |
| | | | |
| | | |sudo apt-get install libx11-dev |
| | | |sudo apt-get install libmotif-dev |
| | | |sudo apt-get install libxaw7-dev |
| | | |sudo apt install xfonts-utils |
| | | |(That last one is for bdftopcf and |
| | | | mkfontdir utils) |
| | | | |
|----------+-------+-----------------+--------------------------------------|
| Linux | Qt5 | WANT_WIN_QT=1 | Here is one possible way to obtain |
| (Ubuntu) | | | the required packages: |
| | | | |
| | | |sudo apt-get install qtbase5-dev |
| | | |sudo apt-get install qtmultimedia5-dev|
| | | | |
| | | |Another odd note about Qt on Linux is |
| | | |that if you find you are getting the |
| | | |following error trying to run NetHack |
| | | |after you build it with Qt support: |
| | | |"error while loading shared |
| | | |libraries: libQt5Core.so.5: cannot |
| | | |open shared object file: No such file |
| | | |or directory", |
| | | |you may have to fix that (one-time) |
| | | |by issuing the command below: |
| | | | |
| sudo strip \ |
| --remove-section=.note.ABI-tag/usr/lib/x86_64-linux-gnu/libQt5Core.so.5 |
|----------+-------+-----------------+--------------------------------------|
| Linux | Qt6 | WANT_WIN_QT6=1 | Here is one possible way to obtain |
| (Ubuntu) | | | the required packages: |
| | | | |
| | | |sudo apt-get install qt6-base-dev |
| | | |sudo apt-get install \ |
| | | | qt6-multimedia-dev |
+----------+-------+-----------------+--------------------------------------+
+----------+-------+------------------+-------------------------------------+
| Platform |Interf.| make variable | Prerequisite package |
|----------+-------+------------------+-------------------------------------|
| MacOS | tty | WANT_WIN_TTY=1 | none |
|----------+-------+------------------+-------------------------------------|
| MacOS | curses| WANT_WIN_CURSES=1| ncurses development libraries |
|----------+-------+------------------+-------------------------------------|
| MacOS | X11 | WANT_WIN_X11=1 | You will need to obtain and |
| | | | install XQuartz if you want X11 |
| | | | support in your build. |
| | | | (Attempting to run X11.app will |
| | | | describe where to get it) |
| | | | |
| | | | One possible way: |
| | | | brew install xquartz |
| | | | brew install libxft |
| | | | brew install fontconfig |
| | | | brew install freetype |
|----------+-------+------------------+-------------------------------------|
| MacOS | Qt | WANT_WIN_QT=1 | You will need to obtain and |
| | | | install Qt if you want Qt |
| | | | support in your build. |
| | | | |
| | | | One possible way: |
| | | | brew install pkg-config |
| | | | brew install Qt6 |
|----------+-------+------------------+-------------------------------------|
| Linux | tty | WANT_WIN_TTY=1 | sudo apt install libncurses-dev |
| (Ubuntu) | | | |
|----------+-------+------------------+-------------------------------------|
| Linux | tty | WANT_WIN_TTY=1 | sudo dnf install make gcc g++ |
| (Fedora) | | | sudo dnf install ncurses-devel |
|----------+-------+------------------+-------------------------------------|
| Linux | curses|WANT_WIN_CURSES=1 | If it isn't already included |
| (Ubuntu) | | | in your distribution, here is one |
| | | | possible way: |
| | | | |
| | | | sudo apt install libncurses-dev |
|----------+-------+------------------+-------------------------------------|
| Linux | X11 | WANT_WIN_X11=1 | Here is one possible way to obtain |
| (Ubuntu) | | | the required packages: |
| | | | |
| | | | sudo apt install libx11-dev |
| | | | sudo apt install libmotif-dev |
| | | | sudo apt install libxaw7-dev |
| | | | sudo apt install xfonts-utils |
| | | | (That last one is for bdftopcf |
| | | | and mkfontdir utils) |
| | | | |
|----------+-------+------------------+-------------------------------------|
| Linux | X11 | WANT_WIN_X11=1 | Here is a possible way to obtain |
|(Fedora) | | | all prerequisite packages required |
| | | | (in addition to those needed for |
| | | | tty above) on a fresh installation |
| | | | of Fedora 44 workstation: |
| | | | |
| | | | sudo dnf install libX11-devel |
| | | | sudo dnf install libXt-devel |
| | | | sudo dnf install libXaw |
| | | | sudo dnf install libXaw-devel |
| | | | sudo dnf install libXft-devel |
| | | | sudo dnf install xorg-x11-font-utils|
| | | | sudo dnf install mkfontscale |
| | | | |
|----------+-------+------------------+-------------------------------------|
| Linux | Qt | WANT_WIN_QT6=1 | Here is one possible way to obtain |
| (Ubuntu) | | | the required packages: |
| | | | |
| | | |sudo apt install qt6-base-dev |
| | | |sudo apt install qt6-multimedia-dev |
+----------+-------+------------------+-------------------------------------+
# NetHack 3.7 NewInstall.unx $NHDT-Date: 1652276817 2022/05/11 13:46:57 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.11 $
There are other hints file options that are meant to impact your NetHack build
in various other ways too. A reference list can be found in
sys/unix/README.hints.
# NetHack 5.0 NewInstall.unx $NHDT-Date: 1652276817 2022/05/11 13:46:57 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.11 $
# Copyright (c) 2009 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
+23 -11
View File
@@ -5,18 +5,18 @@ The sys/unix/hints/include subfolder contains Makefile content that
is included in the distributed Makefiles.
[.370 hints]
[.500 hints]
There are two .370 series hints files provided with NetHack:
linux.370 for use on Linux
macOS.370 for use on macOS
There are two .500 series hints files provided with NetHack:
linux.500 for use on Linux
macOS.500 for use on macOS
Those will also pull in content from sys/unix/hints/include/*.370,
that is shared between the linux.370 and macOS.370 hints files.
Those will also pull in content from sys/unix/hints/include/*.500,
that is shared between the linux.500 and macOS.500 hints files.
[.370 make build options]
[.500 make build options]
Here are some options that can be specified on the make command
@@ -49,6 +49,8 @@ make musl=1 Build with settings appropriate for linking with
musl libc, instead of glibc. This causes
NOCRASHREPORT to be defined, and avoids the use
of 'col' during the build.
make WANT_SYSTEM_LUA=1 Attempt to use an existing Lua package already
on the system (initially for Alpine Linux).
make resp=1 Place the majority of the compiler switches into
a response file to de-clutter the build compiler
command lines and eliminate some of the
@@ -57,9 +59,9 @@ make CROSS_TO_MSDOS=1 package Cross-compile for an MSDOS target package.
make CROSS_TO_WASM=1 Cross-compile for a WASM target.
make CROSS_TO_MIPS=1 Cross-compile for a mips target.
make WANT_BUNDLE=1 For macOS.370 only, place the build results into
make WANT_BUNDLE=1 For macOS.500 only, place the build results into
a macOS bundle layout.
make WANT_MACSOUND=1 For macOS.370, include support for built-in macOS
make WANT_MACSOUND=1 For macOS.500, include support for built-in macOS
sound libraries.
make WANT_SPEECH=1 If one of the sound libraries was included, also
include speech synthesis support (Recent macOS
@@ -71,13 +73,23 @@ make WANT_ASAN=1 Include support for the address sanitizer in the
make WANT_UBSAN=1 Include support for the undefined behaviour
sanitizer in the build.
make WANT_SHARE_INSTALL=1 Place the results of the install/update portion
make WANT_SHARED_INSTALL=1 Place the results of the install/update portion
of the build into a shared area on a multiuser
system.
make WANT_SOURCE_INSTALL=1 Place the results of the install/update portion
of the build into a subfolder of the source
tree, rather than in a system-wide shared area.
(This is now the default if WANT_SHARED_INSTALL=1
wasn't specified)
make WANT_NHUUID=1 Include support for a unique game identifier.
On Linux, libuuid and its headers must be installed
and available for this to build and link correctly.
sudo apt install uuid-dev on Debian/Ubuntu
or
sudo dnf install libuuid-devel on Fedora
make VIEWDEPRECATIONS=1 Turn off the suppression of -Wdeprecated and
-Wdeprecated-declarations warnings
+2 -2
View File
@@ -1,6 +1,6 @@
# depend.awk -- awk script used to construct makefile dependencies
# for nethack's source files (`make depend' support for Makefile.src).
# $NHDT-Date: 1709577497 2024/03/04 18:38:17 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.18 $
# $NHDT-Date: 1709577497 2024/03/04 18:38:17 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.18 $
#
# usage:
# awk -f depend.awk ../include/*.h list-of-.c/.cpp-files
@@ -54,7 +54,7 @@ FNR == 1 { output_dep() #finish previous file
#[3.4.0: gnomehack headers currently aren't in include]
#[3.6.2: Qt4 headers aren't in include either]
#[3.6.2: curses headers likewise]
#[3.7.0: Qt headers have moved; process 'moc' files]
#[NetHack 5.0.0: Qt headers have moved; process 'moc' files]
if (incl ~ /[.]h$/) {
if (incl ~ "curses[.]h")
incl = "" # skip "curses.h"; it should be <curses.h>
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# NetHack 3.7 gitinfo.sh $NHDT-Date: 1596498289 2020/08/03 23:44:49 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
# NetHack 5.0 gitinfo.sh $NHDT-Date: 1596498289 2020/08/03 23:44:49 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
# Copyright (c) 2018 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
+87
View File
@@ -0,0 +1,87 @@
#
# NetHack 5.0 unix $NHDT-Date: 1778708083 2026/05/13 21:34:43 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.0 $
# Copyright 2026 by Anthony C Howe.
# NetHack may be freely redistributed. See license for details.
#
# This is a contributed file. The NetHack Development Team makes this
# file available so that others may benefit, but may not be able to
# support or maintain it. Use at your own risk.
#
#-PRE
# unix hints file
# This hints file provides the legacy configuration that NetHack has shipped
# with historically - this means you will most likely need to hand edit .h
# and Makefiles.
#
# note: '#-INCLUDE' is not just a comment. setup.sh inserts the contents of
# a file found in sys/unix/hints/include
#-INCLUDE whichbsd.500
PREFIX=/usr/local
# Binaries and supporting data.
HACKDIR=$(PREFIX)/libexec/nethackdir
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Careful, this directory is deleted on install.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
INSTDIR=$(HACKDIR)
# Save games
VARDIR=/var/games/nethackdir
# Home for nethask.sh wrapper. If undefined, no wrapper installed.
# Suggest leaving /usr/games as-is from bsdgames.tgz.
SHELLDIR=$(PREFIX)/bin
CFLAGS=-O -I../include -USYSV -DBSD -DHACKDIR='"$(HACKDIR)"' -DVAR_PLAYGROUND='"$(VARDIR)"'
LINK=$(CC)
WINSRC = $(WINTTYSRC)
WINOBJ = $(WINTTYOBJ)
WINLIB = $(WINTTYLIB)
WINTTYLIB=-ltermcap
CHOWN=chown
CHGRP=chgrp
GAMEUID = games
GAMEGRP = games
GAMEPERM = 04755
VARFILEPERM = 0644
VARDIRPERM = 0755
.ifdef MAKEFILE_DOC
MAKEDEFS = ../util/makedefs
NEEDMAKEDEFS = $(MAKEDEFS)
.if ${WHICHBSD} == "NETBSD"
.if exists (/usr/pkg/bin/groff)
NROFF = /usr/pkg/bin/groff
.else
NROFF = groff
.endif # ? Is NROFF groff or /usr/pkg/bin/groff
.else # WHICHBSD is not NETBSD
NROFF = groff
.endif # WHICHBSD
# NROFF_FLAGS comes from a hints file
GUIDEBOOK = Guidebook # regular ASCII file
COLCMD = col -bx
PSCMD = $(NROFF)
NHGREP = $(MAKEDEFS) --grep --input - --output -
GUIDEBOOK_MN_SRC = Guidebook.mn
GUIDEBOOK_MN = $(GUIDEBOOK_MN_SRC)
GUIDE_PREFORMAT = cat $(GUIDEBOOK_MN) | $(NHGREP) | tbl tmac.n -
ONEPAGE_PREFORMAT = cat Gbk-1pg-pfx.mn $(GUIDEBOOK_MN) Gbk-1pg-sfx.mn \
| $(NHGREP) | tbl tmac.n -
ONEPAGECMD = $(ONEPAGE_PREFORMAT) | $(NROFF) -c -Tascii $(NROFF_FLAGS) \
| $(COLCMD)
GUIDECMD = export GROFF_NO_SGR=1; \
$(GUIDE_PREFORMAT) | $(NROFF) -c -Tascii $(NROFF_FLAGS) \
| $(COLCMD)
GUIDEBOOK_TEX_SRC = Guidebook.tex
GUIDEBOOK_TEX = $(GUIDEBOOK_TEX_SRC)
.endif # MAKEFILE_DOC
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# NetHack 3.7 compiler.370 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 compiler.500 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-5.0 $
# compiler flags: CCFLAGS is used to construct a value for CFLAGS with
# various -I, -D, and -W settings appended below;
@@ -49,7 +49,7 @@ endif
#CC= clang
#CXX=clang++ -std=gnu++11
CFLAGS=$(CCFLAGS) -I../include -DNOTPARMDECL
CFLAGS=$(CCFLAGS) -I../include
CFLAGS+=-Wall -Wextra \
-Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings
CFLAGS+=-pedantic
@@ -89,7 +89,7 @@ CXX=g++ -std=gnu++11
GCCGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9)
GCCGTEQ11 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 11)
GCCGTEQ12 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 12)
GCCGTEQ14 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 14)
GCCGTEQ16 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 16)
ifeq "$(GCCGTEQ9)" "1"
# flags present in gcc version greater than or equal to 9 can go here
CFLAGS+=-Wformat-overflow
@@ -100,7 +100,8 @@ CFLAGS+=-Wimplicit-fallthrough
#endif
#ifeq "$(GCCGTEQ12)" "1"
#endif
#ifeq "$(GCCGTEQ14)" "1"
#ifeq "$(GCCGTEQ16)" "1"
NO_WARN_DISCARDED_QUALIFIERS=-Wno-discarded-qualifiers
#endif
# end of gcc-specific
else # gcc or clang?
@@ -109,6 +110,7 @@ CXX=clang++ -std=gnu++11
CLANGGTEQ12 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 12)
CLANGGTEQ14 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 14)
CLANGGTEQ21 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 21)
CLANGGTEQ22 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 22)
ifeq "$(CLANGGTEQ12)" "1"
CFLAGS+=-Wimplicit-fallthrough
endif
@@ -123,12 +125,15 @@ endif
ifeq "$(CLANGGTEQ21)" "1"
CFLAGS+=-Wno-deprecated-octal-literals
endif
ifeq "$(CLANGGTEQ22)" "1"
NO_WARN_DISCARDED_QUALIFIERS=-Wno-incompatible-pointer-types-discards-qualifiers
endif
# none
endif # clang-specific ends here
ifdef MAKEFILE_SRC
ifdef CPLUSPLUS_NEEDED
CCXXFLAGS = -g -I../include -DNOTPARMDECL
CCXXFLAGS = -g -I../include
CCXXFLAGS+=-Wall -Wextra -Wno-missing-field-initializers \
-Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings
CCXXFLAGS+=-pedantic
@@ -171,6 +176,9 @@ else # g++ version greater than or equal to 9? (no follows)
CCXX=g++ -std=c++17
endif # g++ version greater than or equal to 9
endif # CPLUSPLUS_NEED20
ifdef ADDITIONAL_NO_WARN_GPPCCX
CCXXFLAGS+=$(ADDITIONAL_NO_WARN_GPPCCX)
endif
else # g++ or clang++ ?
@@ -211,6 +219,9 @@ ifeq "$(CLANGPPGTEQ17)" "1"
CCXX=clang++ -std=c++20
endif # clang++ greater than or equal to 17
endif # CPLUSPLUS_NEED20
ifdef ADDITIONAL_NO_WARN_CLANGCCX
CCXXFLAGS+=$(ADDITIONAL_NO_WARN_CLANGCCX)
endif
endif # end of clang++-specific section
CXX=$(CCXX)
endif # CPLUSPLUS_NEEDED
@@ -262,5 +273,5 @@ ifneq "$(HAVECSTD)" ""
CSTD = -std=$(HAVECSTD)
endif
#end of compiler.370
#end of compiler.500
#------------------------------------------------------------------------------
@@ -1,10 +1,14 @@
#===============-=================================================
# NetHack 3.7 include/cross-post $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 include/cross-post $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
#
# Cross-compiling -POST section
ifdef CROSS_TO_MSDOS
#
.PHONY: tilemap
tilemap: ../util/tilemap.o $(SRCDIR)/objects.o $(SRCDIR)/monst.o $(SRCDIR)/drawing.o $(HACKLIB)
../util/tilemap.o : ../win/share/tilemap.c
(cd ../util ; make tilemap.o ; cd ../src )
$(TARGETPFX)msdos.o : ../sys/msdos/msdos.c $(HACK_H)
$(TARGETPFX)font.o : ../sys/msdos/font.c ../sys/msdos/font.h $(HACK_H)
$(TARGETPFX)pckeys.o : ../sys/msdos/pckeys.c $(HACK_H)
@@ -18,13 +22,15 @@ $(TARGETPFX)vidvesa.o : ../sys/msdos/vidvesa.c ../sys/msdos/portio.h \
../win/share/tile.h ../include/tileset.h ../sys/msdos/font.h $(HACK_H)
$(TARGETPFX)vidstub.o : ../sys/msdos/vidvesa.c ../sys/msdos/portio.h \
$(HACK_H)
$(TARGETPFX)tile.o : tile.c
$(TARGETPFX)tile.o : $(SRCDIR)/tile.c
$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $(SRCDIR)/tile.c
$(SRCDIR)/tile.c : tilemap
$(TARGETPFX)exceptn.o : ../lib/djgpp/djgpp-patch/src/libc/go32/exceptn.S
$(TARGET_CC) -c -o $@ ../lib/djgpp/djgpp-patch/src/libc/go32/exceptn.S
$(TARGET_AR) ru ../lib/djgpp/i586-pc-msdosdjgpp/lib/libc.a $(TARGETPFX)exceptn.o
$(GAMEBIN) : $(HOBJ) $(TARGETPFX)date.o $(TARGET_HACKLIB) $(LUACROSSLIB)
$(TARGET_LINK) $(TARGET_LFLAGS) -o $@ \
$(HOBJ) $(TARGET_HACKLIB) $(WINLIB) $(TARGET_LIBS)
$(HOBJ) $(DATE_O) $(GENTILEOFILE) $(TARGET_HACKLIB) $(WINLIB) $(TARGET_LIBS)
$(DOSFONT)/ter-u16b.psf: $(FONTTOP)/ter-u16b.bdf $(DOSFONT)/nh-u16b.bdf $(DOSFONT)/makefont.lua $(LUABIN)
$(LUABIN) $(DOSFONT)/makefont.lua $(FONTTOP)/ter-u16b.bdf $(DOSFONT)/nh-u16b.bdf $@
$(DOSFONT)/ter-u16v.psf: $(FONTTOP)/ter-u16v.bdf $(DOSFONT)/nh-u16v.bdf $(DOSFONT)/makefont.lua $(LUABIN)
@@ -44,7 +50,7 @@ $(DOSFONT)/ter-u32b.psf: $(FONTTOP)/ter-u32b.bdf $(DOSFONT)/nh-u32b.bdf $(DOSFON
#
.PHONY: dodata dospkg dosfonts
dosfonts: $(FONTTARGETS)
dospkg: dodata dosfonts $(GAMEBIN) $(TARGETPFX)recover.exe ../dat/nhtiles.bmp
dospkg: dodata dosfonts $(GAMEBIN) $(TARGETPFX)recover.exe $(NHTILES)
$(TARGET_STUBEDIT) $(GAMEBIN) minstack=2048K
mkdir -p $(TARGETPFX)pkg
cp $(GAMEBIN) $(TARGETPFX)pkg/NETHACK.EXE
@@ -52,7 +58,7 @@ dospkg: dodata dosfonts $(GAMEBIN) $(TARGETPFX)recover.exe ../dat/nhtiles.bmp
-cp $(SFCTOOLBIN) $(TARGETPFX)pkg/SFCTOOL.EXE
cp ../dat/nhdat $(TARGETPFX)pkg/NHDAT
cp ../dat/license $(TARGETPFX)pkg/LICENSE
cp ../dat/nhtiles.bmp $(TARGETPFX)pkg/NHTILES.BMP
-cp ../dat/nhtiles.bmp $(TARGETPFX)pkg/NHTILES.BMP
cp ../dat/symbols $(TARGETPFX)pkg/SYMBOLS
cp ../sys/share/NetHack.cnf $(TARGETPFX)pkg/NETHACK.CNF
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/SYSCONF
@@ -90,8 +96,8 @@ else
fi; )
endif
-touch $(TARGETPFX)pkg/RECORD
cd $(TARGETPFX)pkg ; zip -9 ../NH370DOS.ZIP * ; cd ../../..
@echo msdos package zip file $(TARGETPFX)NH370DOS.ZIP
cd $(TARGETPFX)pkg ; zip -9 ../NH$(NHV)DOS.ZIP * ; cd ../../..
@echo msdos package zip file $(TARGETPFX)NH$(NHV)DOS.ZIP
$(LUABIN):
( cd .. && make luabin && cd src)
@@ -105,14 +111,14 @@ deploy-to-dosbox:
endif
.PHONY: deploytodosbox
deploytodosbox: $(TARGETPFX)NH370DOS.ZIP $(dosboxnhfolder) $(dosboxnhsrc) \
deploytodosbox: $(TARGETPFX)NH$(NHV)DOS.ZIP $(dosboxnhfolder) $(dosboxnhsrc) \
$(dosboxnhsrc)/src $(dosboxnhsrc)/include \
$(dosboxnhsrc)/sys/msdos $(dosboxnhsrc)/sys/share \
$(dosboxnhsrc)/win/share $(dosboxnhsrc)/win/curses \
$(dosboxnhsrc)/win/tty $(dosboxnhsrc)/util \
$(dosboxnhfolder)/NETHACK.EXE
@echo DOS NetHack deployed to dosbox at $(dosboxnhfolder)
$(TARGETPFX)NH370DOS.ZIP: dospkg
$(TARGETPFX)NH$(NHV)DOS.ZIP: dospkg
$(dosboxnhfolder):
mkdir -p $@
$(dosboxnhsrc): $(dosboxnhfolder)
@@ -144,8 +150,8 @@ $(dosboxnhsrc)/util: $(dosboxnhsrc)
mkdir -p $@
cp --preserve=timestamps $(FLDR)util/*.c $(dosboxnhsrc)/util
cp --preserve=timestamps $(FLDR)util/*.h $(dosboxnhsrc)/util
$(dosboxnhfolder)/NETHACK.EXE: $(TARGETPFX)NH370DOS.ZIP
unzip -o $(TARGETPFX)NH370DOS.ZIP -d $(dosboxnhfolder)
$(dosboxnhfolder)/NETHACK.EXE: $(TARGETPFX)NH$(NHV)DOS.ZIP
unzip -o $(TARGETPFX)NH$(NHV)DOS.ZIP -d $(dosboxnhfolder)
find $(dosboxnhfolder) -type f -name "$(dosboxconfigfile)" \
| xargs sed -i 's/#OPTIONS=video:autodetect/OPTIONS=video:autodetect/g'
endif # dosbox
@@ -225,21 +231,19 @@ mipspkg: dodata $(GAMEBIN) $(TARGETPFX)recover
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/sysconf
cp ../doc/nethack.txt $(TARGETPFX)pkg/nethack.txt
-touch $(TARGETPFX)pkg/record
cd $(TARGETPFX)pkg ; zip -9 ../nh370mips.zip * ; cd ../../..
@echo MIPS package zip file $(TARGETPFX)nh370mips.zip
cd $(TARGETPFX)pkg ; zip -9 ../nh$(NHV)mips.zip * ; cd ../../..
@echo MIPS package zip file $(TARGETPFX)nh$(NHV)mips.zip
endif # CROSS_TO_MIPS
ifdef CROSS_TO_AMIGA
$(TARGETPFX)amidos.o : ../sys/amiga/amidos.c $(HACK_H)
$(TARGETPFX)amigst.o : ../sys/amiga/amigst.c $(HACK_H)
$(TARGETPFX)amirip.o : ../sys/amiga/amirip.c $(HACK_H)
$(TARGETPFX)amistack.o : ../sys/amiga/amistack.c $(HACK_H)
$(TARGETPFX)amitty.o : ../sys/amiga/amitty.c $(HACK_H)
$(TARGETPFX)amiwind.o : ../sys/amiga/amiwind.c \
../sys/amiga/amimenu.c $(HACK_H)
$(TARGETPFX)winami.o : ../sys/amiga/winami.c $(HACK_H)
$(TARGETPFX)winchar.o : ../sys/amiga/winchar.c tile.c $(HACK_H)
$(TARGETPFX)winchar.o : ../sys/amiga/winchar.c $(SRCDIR)/tile.c $(HACK_H)
$(TARGETPFX)winfuncs.o : ../sys/amiga/winfuncs.c $(HACK_H)
$(TARGETPFX)winkey.o : ../sys/amiga/winkey.c $(HACK_H)
$(TARGETPFX)winamenu.o : ../sys/amiga/winamenu.c $(HACK_H)
@@ -309,31 +313,30 @@ UUDECODE = ../util/uudecode
../util/uudecode: ../sys/share/uudecode.c
$(CC) $(CFLAGS) -o $@ $<
amigapkg: $(AMITILES) ../util/uudecode
mkdir -p $(TARGETPFX)pkg/tiles $(TARGETPFX)pkg/hack
cp $(GAMEBIN) $(TARGETPFX)pkg/nethack
cp ../dat/nhdat $(TARGETPFX)pkg/nhdat
cp ../dat/license $(TARGETPFX)pkg/license
cp ../dat/symbols $(TARGETPFX)pkg/symbols
cp $(TARGETPFX)tiles16.iff $(TARGETPFX)pkg/tiles/tiles16.iff
cp $(TARGETPFX)tiles32.iff $(TARGETPFX)pkg/tiles/tiles32.iff
cp $(TARGETPFX)tomb.iff $(TARGETPFX)pkg/tomb.iff
cp ../sys/msdos/sysconf $(TARGETPFX)pkg/sysconf
cp ../doc/nethack.txt $(TARGETPFX)pkg/nethack.txt
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont8.uu && mv 8 hack/8 )
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/amifont.uu )
cp $(AMISRC)/nethack.cnf $(TARGETPFX)pkg/nethack.cnf
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/dflticon.uu && \
../../../util/uudecode ../../../sys/amiga/dflticon.uu )
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NHinfo.uu && \
../../../util/uudecode ../../../sys/amiga/NHinfo.uu )
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/NewGame.uu && \
../../../util/uudecode ../../../sys/amiga/NewGame.uu )
-( cd $(TARGETPFX)pkg && test -f ../../../sys/amiga/HackWB.uu && \
../../../util/uudecode ../../../sys/amiga/HackWB.uu )
touch $(TARGETPFX)pkg/record
( cd $(TARGETPFX)pkg && zip -9r ../NH370AMI.ZIP * )
@echo amiga package zip file $(TARGETPFX)NH370AMI.ZIP
amigapkg: $(GAMEBIN) $(AMITILES) ../util/uudecode
mkdir -p $(TARGETPFX)pkg/NetHack/tiles $(TARGETPFX)pkg/NetHack/hack
cp $(GAMEBIN) $(TARGETPFX)pkg/NetHack/nethack
cp ../dat/nhdat $(TARGETPFX)pkg/NetHack/nhdat
cp ../dat/license $(TARGETPFX)pkg/NetHack/license
cp ../dat/symbols $(TARGETPFX)pkg/NetHack/symbols
cp $(TARGETPFX)tiles16.iff $(TARGETPFX)pkg/NetHack/tiles/tiles16.iff
cp $(TARGETPFX)tiles32.iff $(TARGETPFX)pkg/NetHack/tiles/tiles32.iff
cp $(TARGETPFX)tomb.iff $(TARGETPFX)pkg/NetHack/tomb.iff
cp ../doc/nethack.txt $(TARGETPFX)pkg/NetHack/nethack.txt
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/amifont8.uu && mv 8 hack/8 )
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/amifont.uu )
cp $(AMISRC)/nethack.cnf $(TARGETPFX)pkg/NetHack/nethack.cnf
cp $(AMISRC)/README.amiga $(TARGETPFX)pkg/NetHack/README.amiga
cp $(AMISRC)/amii.hlp $(TARGETPFX)pkg/NetHack/amii.hlp
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/NHinfo.uu )
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/cnf-info.uu )
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/license-info.uu )
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/txt-info.uu )
( cd $(TARGETPFX)pkg/NetHack && ../../../../util/uudecode ../../../../sys/amiga/readme-info.uu )
( cd $(TARGETPFX)pkg && ../../../util/uudecode ../../../sys/amiga/drawer-info.uu )
touch $(TARGETPFX)pkg/NetHack/record
( cd $(TARGETPFX)pkg && zip -9r ../NH$(NHV)AMI$(AMIPKGSEQ).ZIP NetHack NetHack.info )
@echo amiga package zip file $(TARGETPFX)NH$(NHV)AMI$(AMIPKGSEQ).ZIP
endif # CROSS_TO_AMIGA
ifdef CROSS_SHARED
@@ -348,11 +351,15 @@ $(TARGETPFX)giftiles.o : ../win/share/giftiles.c
endif # CROSS_SHARED
#
ifdef CROSS
ifdef MAKEFILE_TOP
# top-level liblua.a is a host-side build; keep TARGET_CC out of it
LUAMAKEFLAGS = CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)'
endif # MAKEFILE_TOP
$(TARGETPFX)hacklib.a: $(TARGETPFX)hacklib.o
$(TARGET_AR) $(TARGET_ARFLAGS) $@ $(TARGETPFX)hacklib.o
ifdef MAKEFILE_UTL
$(TARGETPFX)recover.o: recover.c $(CONFIG_H)
$(TARGET_CC) $(TARGET_CFLAGS) $(CSTD) -c recover.c -o $@
$(TARGET_CC) $(TARGET_CFLAGS) -c recover.c -o $@
ifdef CROSS_TO_MSDOS
$(TARGETPFX)recover.exe : $(TARGETPFX)recover.o $(TARGETPFX)rversion.o $(TARGETPFX)hacklib.a
$(TARGET_LINK) $(TARGET_LFLAGS) \
@@ -363,7 +370,7 @@ $(TARGETPFX)recover : $(TARGETPFX)recover.o $(TARGETPFX)rversion.o $(TARGETPFX)h
$(TARGETPFX)recover.o $(TARGETPFX)rversion.o $(TARGETPFX)hacklib.a -o $@
endif
$(TARGETPFX)rversion.o: ../src/version.c $(HACK_H)
$(TARGET_CC) $(TARGET_CFLAGS) -DMINIMAL_FOR_RECOVER $(CSTD) -c ../src/version.c -o $@
$(TARGET_CC) $(TARGET_CFLAGS) -DMINIMAL_FOR_RECOVER -c ../src/version.c -o $@
endif # MAKEFILE_UTL
endif # CROSS
@@ -478,7 +485,11 @@ $(TARGETPFX)slk.o : $(PDCTOP)/pdcurses/slk.c
$(TARGETPFX)termattr.o : $(PDCTOP)/pdcurses/termattr.c
$(TARGETPFX)touch.o : $(PDCTOP)/pdcurses/touch.c
$(TARGETPFX)util.o : $(PDCTOP)/pdcurses/util.c
# We need an explicit recipe for the creation of $(TARGETPFX)window.o
# because it will try and use the X11 version of window.c otherwise
$(TARGETPFX)window.o : $(PDCTOP)/pdcurses/window.c
$(TARGET_CC) $(PDCINCL) $(PDC_TARGET_CFLAGS) \
-Wno-sign-compare -o$@ $(PDCTOP)/pdcurses/window.c
$(TARGETPFX)debug.o : $(PDCTOP)/pdcurses/debug.c
$(TARGETPFX)pdcclip.o : $(PDCPORT)/pdcclip.c
$(TARGETPFX)pdcdisp.o : $(PDCPORT)/pdcdisp.c
@@ -1,5 +1,5 @@
#===============-=================================================
# NetHack 3.7 include/cross-pre1. $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 include/cross-pre1. $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
#
# Cross-compiling -PRE section 1
#
@@ -42,6 +42,7 @@ ifdef CROSS_TO_AMIGA
CROSS=1
BUILD_TARGET_LUA=1
CROSS_SHARED=1
HACKDIR=NetHack:
override TARGET = amiga
override TARGETDIR=../targets/$(TARGET)
override TARGETPFX = $(TARGETDIR)/
@@ -49,6 +50,7 @@ override TARGET_LIBS=
endif
ifdef CROSS
CROSSCOMPILE=1
override PREGAME=
override BUILDMORE=
override CLEANMORE=
@@ -1,5 +1,5 @@
#===============-=================================================
# NetHack 3.7 include/cross-pre2 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 include/cross-pre2 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
#
# Cross-compiling -PRE section 2
#
@@ -134,6 +134,8 @@ override TARGET_CC = $(TOOLTOP1)/i586-pc-msdosdjgpp-gcc
override TARGET_CXX = $(TOOLTOP1)/i586-pc-msdosdjgpp-g++
override TARGET_AR = $(TOOLTOP1)/i586-pc-msdosdjgpp-gcc-ar
override TARGET_STUBEDIT = ../lib/djgpp/i586-pc-msdosdjgpp/bin/stubedit
override GENTILEOFILE = $(TARGETPFX)tile.o
override UUIDOBJ =
ifdef MAKEFILE_SRC
FLDR=../
endif
@@ -146,7 +148,7 @@ ifdef DOSBOX
dosbox=$(DOSBOX)
endif
ifdef dosbox
dosboxgameid=NH370
dosboxgameid=NH$(NHV)
dosboxtop=$(dosbox)
dosboxnhfolder=$(dosboxtop)/$(dosboxgameid)
dosboxnhsrc=$(dosboxnhfolder)/NHSRC
@@ -175,8 +177,31 @@ MSDOS_GPP_CFLAGS = -Wall -Wextra -Wno-missing-field-initializers -Wreturn-type \
-Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings -pedantic \
-Wmissing-declarations -Wformat-nonliteral -Wunreachable-code \
-Wno-maybe-uninitialized
ifndef WANT_WIN_TTY
# A Curses-only configuration
MSDOS_GRAPH_CONFIG = -DNOTTYGRAPHICS
SKIP_TILES = 1
ifndef WANT_DOSVGA
SKIP_FONTS = 1
endif
SKIP_FONT_C = 1
else ifdef NO_GRAPHICS
MSDOS_GRAPH_CONFIG = -DSUPPRESS_GRAPHICS
# Curses will need the fonts, but not font.c
ifndef WANT_DOSVGA
SKIP_FONTS = 1
endif
SKIP_FONT_C = 1
SKIP_TILES = 1
else ifdef NO_TILES
MSDOS_GRAPH_CONFIG =
# without SKIP_FONT_C; if ENHANCED_SYMBOLS is set, we'll need the fonts
SKIP_TILES = 1
else
MSDOS_GRAPH_CONFIG = -DTILES_IN_GLYPHMAP
endif
MSDOS_TARGET_CFLAGS = -c -O $(DBGFLAGS) -I../include -I../sys/msdos -I../win/share \
$(LUAINCL) -DDLB $(PDCURSESDEF) -DTILES_IN_GLYPHMAP \
$(LUAINCL) -DDLB $(PDCURSESDEF) $(MSDOS_GRAPH_CONFIG) \
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_MSDOS \
-D_NAIVE_DOS_REGS \
$(MSDOS_GCC_CFLAGS) $(SNDCFLAGS)
@@ -188,7 +213,11 @@ MSDOS_TARGET_CXXFLAGS = -c -O $(DBGFLAGS) -I../include -I../sys/msdos -I../win/s
PDCINCL += -I$(PDCPORT)
PDC_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS) -Wno-unused-parameter \
-Wno-missing-prototypes
ifndef SKIP_FONTS_IN_CI
ifdef SKIP_FONTS_IN_CI
FONTTARGETS=
else ifdef SKIP_FONTS
FONTTARGETS=
else
FONTVER = terminus-font-4.49.1
FONTTOP = ../lib/$(FONTVER)
DOSFONT = ../sys/msdos/fonts
@@ -196,8 +225,6 @@ FONTTARGETS = $(DOSFONT)/ter-u16b.psf $(DOSFONT)/ter-u16v.psf \
$(DOSFONT)/ter-u18b.psf $(DOSFONT)/ter-u20b.psf \
$(DOSFONT)/ter-u22b.psf $(DOSFONT)/ter-u24b.psf \
$(DOSFONT)/ter-u28b.psf $(DOSFONT)/ter-u32b.psf
else
FONTTARGETS=
endif
LUABIN = ../lib/lua-$(LUA_VERSION)/src/lua
LUA_TARGET_CFLAGS = $(MSDOS_TARGET_CFLAGS)
@@ -214,22 +241,27 @@ override SYSSRC = ../sys/share/pcmain.c ../sys/msdos/msdos.c \
../sys/share/pcsys.c ../sys/share/pctty.c \
../sys/share/pcunix.c ../sys/msdos/video.c \
../sys/msdos/vidtxt.c ../sys/msdos/pckeys.c \
../sys/msdos/vidvga.c ../sys/msdos/vidvesa.c \
../sys/msdos/font.c \
../win/share/bmptiles.c ../win/share/giftiles.c \
../win/share/tileset.c
../sys/msdos/vidvga.c ../sys/msdos/vidvesa.c
override SYSOBJ= $(TARGETPFX)pcmain.o $(TARGETPFX)msdos.o \
$(TARGETPFX)pcsys.o $(TARGETPFX)pctty.o \
$(TARGETPFX)pcunix.o $(TARGETPFX)video.o \
$(TARGETPFX)vidtxt.o $(TARGETPFX)pckeys.o \
$(TARGETPFX)vidvga.o $(TARGETPFX)vidvesa.o \
$(TARGETPFX)font.o \
$(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
$(TARGETPFX)tileset.o $(TARGETPFX)tile.o
$(TARGETPFX)vidvga.o $(TARGETPFX)vidvesa.o
ifndef SKIP_FONT_C
override SYSSRC += ../sys/msdos/font.c
override SYSOBJ += $(TARGETPFX)font.o
endif
ifndef SKIP_TILES
override SYSSRC += ../win/share/bmptiles.c ../win/share/giftiles.c \
../win/share/tileset.c
override SYSOBJ += $(TARGETPFX)bmptiles.o $(TARGETPFX)giftiles.o \
$(TARGETPFX)tileset.o
endif
override WINLIB=
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override WINX11OBJ=
override GAMEBIN = $(TARGETPFX)nethack.exe
override RECOVERBIN = $(TARGETPFX)recover.exe
override SFCTOOLBIN = $(TARGETPFX)sfctool.exe
@@ -247,7 +279,12 @@ GDBEXE=
GDBBAT=
GDBCMDLINE=
endif
ifndef SKIP_TILES
VARDATND += nhtiles.bmp
NHTILES = ../dat/nhtiles.bmp
else
NHTILES =
endif
#
ifdef WANT_WIN_CURSES
# rules for pdcurses dos-specific files
@@ -258,6 +295,11 @@ endif # WANT_WIN_CURSES
# Rule for files in sys/msdos
$(TARGETPFX)%.o : ../sys/msdos/%.c
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
#
# Rule for files in util
$(TARGETPFX)%.o : ../util/%.c
$(TARGET_CC) $(TARGET_CFLAGS) -o$@ $<
endif # CROSS_TO_MSDOS
#=================================================================
@@ -267,6 +309,7 @@ ifdef CROSS_TO_WASM
# WASM
# originally from https://github.com/NetHack/NetHack/pull/385
#===============-=================================================
#also set a make variable flagging this as a crosscompile
#
#WASM_DEBUG = 1
WASM_DATA_DIR = $(TARGETPFX)wasm-data
@@ -328,10 +371,10 @@ WASM_CFLAGS += -Wshadow
# WASM_CFLAGS += -Wwrite-strings
# WASM_CFLAGS += -Werror
# Nethack C flags
WASM_CFLAGS += $(WINCFLAGS) #WINCFLAGS set from multiw-2.370
WASM_CFLAGS += -DSYSCF -DSYSCF_FILE=\"/sysconf\" -DSECURE
#WASM_CFLAGS += -g -I../include -DNOTPARMDECL
WASM_CFLAGS += -I../include -DNOTPARMDECL
WASM_CFLAGS += $(WINCFLAGS) #WINCFLAGS set from multiw-2.500
WASM_CFLAGS += -DSYSCF -DSYSCF_FILE=\"/sysconf\" -DSECURE -DNHUUID
#WASM_CFLAGS += -g -I../include
WASM_CFLAGS += -I../include
# NetHack sources control
WASM_CFLAGS += -DDLB
WASM_CFLAGS += -DHACKDIR=\"$(HACKDIR)\"
@@ -360,9 +403,10 @@ override SYSOBJ= $(TARGETPFX)libnhmain.o \
$(TARGETPFX)winshim.o
override WINLIB = emranlib
override LUALIB=
override TOPLUALIB=
override LUATOPLIB=
override REGEXOBJ = $(TARGETPFX)posixregex.o
override WINOBJ=
override UUIDOBJ=
# don't bother Making regular NetHack executable
override GAME=
# the real VARDAT hasn't been defined yet for use in ALLDEP override
@@ -442,7 +486,7 @@ override SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty
override WINLIB = $(NCURSESLIB)
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override GAMEBIN=$(MIPS_TARGET)
override RECOVERBIN = $(TARGETPFX)recover
override PACKAGE = mipspkg
@@ -470,7 +514,7 @@ ifdef CROSS_TO_AMIGA
#
# Cross-compiler: https://franke.ms/git/bebbo/amiga-gcc
# Install to /opt/amiga, then:
# sys/unix/setup.sh sys/unix/hints/linux.370
# sys/unix/setup.sh sys/unix/hints/linux.500
# make fetch-lua
# make CROSS_TO_AMIGA=1 fetch-regex
# make CROSS_TO_AMIGA=1 all
@@ -499,8 +543,9 @@ override TARGET_CFLAGS = -c -O2 -noixemul $(TOOLARCH) \
$(LUAINCL) -DAMIGA -DNOTTYGRAPHICS -DNO_TERMS -DNO_SIGNAL \
-DTILES_IN_GLYPHMAP $(PDCURSESDEF) \
-DCROSSCOMPILE -DCROSSCOMPILE_TARGET -DCROSS_TO_AMIGA \
-DAMIGA_VERSION_STRING=\""VER: NetHack 3.7.0"\"
-DAMIGA_VERSION_STRING=\""VER: NetHack 5.0.0"\"
override TARGET_CXXFLAGS = $(TARGET_CFLAGS)
override GENTILEOFILE = $(TARGETPFX)tile.o
LUA_TARGET_CFLAGS = $(TARGET_CFLAGS)
ifeq "$(REGEXOBJ)" "$(TARGETPFX)cppregex.o"
override TARGET_LINK = $(TARGET_CXX)
@@ -510,9 +555,9 @@ endif
override TARGET_LFLAGS= $(TOOLARCH) -noixemul -Wl,--allow-multiple-definition
override TARGET_LIBS += $(LIBLM)
VARDATND += nhtiles.bmp
override SYSSRC = ../sys/amiga/amidos.c ../sys/amiga/amigst.c \
override SYSSRC = ../sys/amiga/amidos.c \
../sys/amiga/amimenu.c ../sys/amiga/amirip.c \
../sys/amiga/amistack.c ../sys/amiga/amitty.c \
../sys/amiga/amistack.c \
../sys/amiga/amiwind.c ../sys/amiga/clipwin.c \
../sys/amiga/colorwin.c \
../sys/amiga/winami.c ../sys/amiga/winchar.c \
@@ -521,9 +566,9 @@ override SYSSRC = ../sys/amiga/amidos.c ../sys/amiga/amigst.c \
../sys/amiga/winstr.c ../sys/share/pcmain.c \
../win/share/bmptiles.c ../win/share/giftiles.c \
../win/share/tileset.c
override SYSOBJ = $(TARGETPFX)amidos.o $(TARGETPFX)amigst.o \
override SYSOBJ = $(TARGETPFX)amidos.o \
$(TARGETPFX)amirip.o $(TARGETPFX)amistack.o \
$(TARGETPFX)amitty.o $(TARGETPFX)amiwind.o \
$(TARGETPFX)amiwind.o \
$(TARGETPFX)winami.o $(TARGETPFX)winchar.o \
$(TARGETPFX)winfuncs.o $(TARGETPFX)winkey.o \
$(TARGETPFX)winamenu.o $(TARGETPFX)winreq.o \
@@ -534,7 +579,7 @@ override SYSOBJ = $(TARGETPFX)amidos.o $(TARGETPFX)amigst.o \
override WINLIB=
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override DLLIB=
override WINOBJ=
override GAMEBIN = $(TARGETPFX)nethack
+123
View File
@@ -0,0 +1,123 @@
#------------------------------------------------------------------------------
# NetHack 5.0 directories.500 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-5.0 $
ifndef WANT_SHARED_INSTALL
PREFIX=$(abspath $(NHSROOT))
SOURCEINSTALL=1
# -----------------------------------------
# This is for the Linux source tree install
# -----------------------------------------
ifeq "$(WHICH_OS)" "Linux"
HACKDIR ?=$(PREFIX)/playground
INSTDIR ?=$(HACKDIR)
VARDIR ?=$(HACKDIR)
GAMEPERM ?= 0700
VARFILEPERM ?= 0600
VARDIRPERM ?= 0700
else # macOS
#
# -----------------------------------------
# This is for the macOS source tree install
# -----------------------------------------
#
# The macOS setup sets things up two different
# ways, depending on whether an explicit
# WANT_SOURCE_INSTALL=1 was given, or not.
ifdef WANT_SOURCE_INSTALL
HACKDIR ?=$(PREFIX)/playground
CHOWN ?=/usr/bin/true
CHGRP ?=/usr/bin/true
GAMEPERM ?= 0700
VARFILEPERM ?= 0600
VARDIRPERM ?= 0700
else # WANT_SOURCE_INSTALL not expressed
PREFIX:=$(wildcard ~)
SHELLDIR ?=$(PREFIX)/bin
HACKDIR ?=$(PREFIX)/nethackdir
CHOWN ?=/usr/bin/true
CHGRP ?=/usr/bin/true
GAMEPERM ?= 0700
VARFILEPERM ?= 0600
VARDIRPERM ?= 0700
endif # WANT_SOURCE_INSTALL
INSTDIR ?=$(HACKDIR)
VARDIR ?=$(HACKDIR)
endif # macOS
endif # not WANT_SHARED_INSTALL
ifneq "$(SOURCEINSTALL)" "1"
ifdef WANT_SHARED_INSTALL
ifeq "$(WHICH_OS)" "Linux"
# -----------------------------------------
# This is for the Linux system-wide install
# -----------------------------------------
PREFIX ?=$(wildcard ~)/nh/install
HACKDIR ?=$(PREFIX)/games/lib/nethackdir
SHELLDIR ?= $(PREFIX)/games
INSTDIR ?=$(HACKDIR)
VARDIR ?=$(HACKDIR)
MANDIR ?=/usr/share/man/man6
VARDIRPERM ?= 0755
VARFILEPERM ?= 0600
GAMEPERM ?= 0755
# ----------------------------------
# End of Linux system-wide install
# ----------------------------------
else # macOS
# ------------------------------------------------
# This is for the macOS system-wide shared install
# ------------------------------------------------
# if $GAMEUID is root, we install into roughly
# proper Mac locations, otherwise we install
# into ~/nethackdir
ifeq ($(GAMEUID),root)
PREFIX:=/Library/NetHack
SHELLDIR ?=/usr/local/bin
HACKDIR ?=$(PREFIX)/nethackdir
MANDIR ?=/usr/local/share/man/man6
CHOWN ?=chown
CHGRP ?=chgrp
# We run sgid so the game has access to both HACKDIR
# and user preferences
GAMEPERM ?=02755
else # ! root
PREFIX:=/Users/$(GAMEUID)
SHELLDIR ?=$(PREFIX)/bin
HACKDIR ?=$(PREFIX)/Library/NetHack/nethackdir
CHOWN ?=/usr/bin/true
CHGRP ?=/usr/bin/true
GAMEPERM ?= 0500
endif # ! root
INSTDIR ?=$(HACKDIR)
VARDIR ?=$(HACKDIR)
VARFILEPERM ?= 0664
VARDIRPERM ?= 0775
# ---------------------------------------
# End of macOS system-wide shared install
# --------------------------------------
endif # WHICH_OS?
endif # WANT_SHARED_INSTALL
endif # SOURCEINSTALL != 1
#end of dirs-perms.500
#--------------------------------------
@@ -1,4 +1,4 @@
# NetHack 3.7 gbdates-post.370 $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.11 $
# NetHack 5.0 gbdates-post.500 $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.11 $
ifdef MAKEFILE_DOC
ifdef GB_DATESTAMP
Guidebook.dated.mn: $(GUIDEBOOK_MN_SRC)
@@ -1,4 +1,4 @@
# NetHack 3.7 gbdates-pre.370 $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.11 $
# NetHack 5.0 gbdates-pre.500 $NHDT-Date: 1599687610 2020/09/09 21:40:10 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.11 $
ifdef MAKEFILE_DOC
ifneq "$(GIT)" "0"
+25
View File
@@ -0,0 +1,25 @@
# ----- linuxdistro.500 --------
LINUX_DISTRO=
OS_ID := $(shell grep -E '^ID=' /etc/os-release 2>/dev/null | cut -d= -f2)
#$(info OS_ID=$(OS_ID))
ifeq ($(OS_ID),alpine)
LINUX_DISTRO=alpine
USE_SYSTEM_LUA=1
CURSPKG = ncurses
endif
ifeq ($(OS_ID),debian)
LINUX_DISTRO=debian
USE_SYSTEM_LUA=1
endif
ifeq ($(OS_ID),ubuntu)
LINUX_DISTRO=ubuntu
USE_SYSTEM_LUA=1
endif
ifeq ($(OS_ID),fedora)
LINUX_DISTRO=fedora
USE_SYSTEM_LUA=1
endif
#$(info LINUX_DIST=$(LINUX_DISTRO))
# ----- end of linuxdistro.500 --------
@@ -1,11 +1,11 @@
#------------------------------------------------------------------------------
# NetHack 3.7 misc.370 $NHDT-Date: 1668359836 2022/11/13 17:17:16 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 misc.500 $NHDT-Date: 1668359836 2022/11/13 17:17:16 $ $NHDT-Branch: NetHack-5.0 $
#
# Further set-up for miscellaneous odds and ends (after compiler.370)
# Further set-up for miscellaneous odds and ends (after compiler.500)
#
# Included from:
# hints/linux.370
# hints/macOS.370
# hints/linux.500
# hints/macOS.500
#
# This ensures that .moc files are compatible with the version of Qt chosen.
@@ -21,7 +21,7 @@ ifdef WANT_WIN_QT6
# Qt 6 builds and runs (with a couple of warnings) but needs more testing
QTn_H = Qt6.h-t
else
# Qt 5 is currently the default version for nethack 3.7.x's Qt interface
# Qt 5 is currently the default version for nethack NetHack 5.0.x's Qt interface
QTn_H = Qt5.h-t
endif
$(QTn_H) ::
@@ -105,6 +105,6 @@ endif # end groff less than 1.23
endif # end groff-specific
endif # not USE_MANDOC
#end of hints/include/misc.370
#end of hints/include/misc.500
#------------------------------------------------------------------------------
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# NetHack 3.7 multisnd-post.370 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 multisnd-post.500 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
ifeq "$(HAVE_SNDLIB)" "1"
# note: one possible value for $(SNDLIBSRC) is 'macsound.m' which is written
@@ -21,6 +21,6 @@ $(WAVDIR)/%.wav: ../util/uudecode $(WAVDIR)/%.uu
endif # NEEDS_WAV
endif # HAVE_SNDLIB
# end of multisnd-post.370
# end of multisnd-post.500
#------------------------------------------------------------------------------
@@ -1,9 +1,9 @@
#------------------------------------------------------------------------------
# NetHack 3.7 multisnd1-pre.370 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 multisnd1-pre.500 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
#
# If it's cross-platform it belongs in this file.
# If it's macOS-only, it belongs in macOS.370.
# If it's linux-only, it belongs in linux.370.
# If it's macOS-only, it belongs in macOS.500.
# If it's linux-only, it belongs in linux.500.
#
#ifdef WANT_TESTSOUND
@@ -26,8 +26,8 @@ endif # HAVE_SNDLIB
# HAVE_SNDLIB or NEEDS_SND_USERSOUNDS or NEEDS_SND_SEAUTOMAP
# would have to be set prior to this. Any of them could have
# been set just above, or they could have been set in
# multiw-2 for Qt, or they could have been set in macOS.370
# or linux.370 for something platform-specific.
# multiw-2 for Qt, or they could have been set in macOS.500
# or linux.500 for something platform-specific.
# Regardless, if one of those is set, the related preprocessor
# defines need to be added to SNDCFLAGS here.
#
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# NetHack 3.7 multisnd2-pre.370 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 multisnd2-pre.500 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
#
ifdef NEEDS_WAV
@@ -27,6 +27,6 @@ SNDWAVS = se_squeak_A se_squeak_B se_squeak_B_flat se_squeak_C se_squeak_D \
WAVS = $(addprefix $(WAVDIR)/, $(addsuffix .wav, $(SNDWAVS)))
endif # NEEDS_WAV
# end of multisnd2-pre.370
# end of multisnd2-pre.500
#------------------------------------------------------------------------------
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# NetHack 3.7 multiw-1.370 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 multiw-1.500 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-5.0 $
# 1. Which windowing interface(s) should be included in this binary?
# One or more of these can be manually uncommented and/or can be specified
@@ -19,5 +19,9 @@
#WANT_DEFAULT=Qt
#WANT_DEFAULT=X11
#end of multiw-1.370
# Based on the NetHack version 5.0.0
# Used to build some filenames subsequently in other include files
NHV=500
#end of multiw-1.500
#------------------------------------------------------------------------------
@@ -1,11 +1,11 @@
#------------------------------------------------------------------------------
# NetHack 3.7 multiw-2.370 $NHDT-Date: 1599337709 2020/09/05 20:28:29 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 multiw-2.500 $NHDT-Date: 1599337709 2020/09/05 20:28:29 $ $NHDT-Branch: NetHack-5.0 $
#
# Sorts out support for multiple window ports (interfaces) to included in the build.
#
# Included from:
# hints/linux.370
# hints/macOS.370
# hints/linux.500
# hints/macOS.500
#
# The following will be set appropriately following this:
# - WANT_WIN_XXX (at least one will be set; default is TTY)
@@ -79,8 +79,6 @@ WINCFLAGS=
WINSRC =
WINOBJ0 =
SND_CFLAGS=
XTRASRC =
XTRAOBJ =
ifdef WANT_WIN_TTY
WINSRC += $(WINTTYSRC)
@@ -104,8 +102,7 @@ ifdef WANT_WIN_X11
WINCFLAGS += -DX11_GRAPHICS
WINSRC += $(WIINX11SRC)
WINOBJ0 += $(WINX11OBJ)
XTRASRC += tile.c
XTRAOBJ += $(TARGETPFX)tile.o
GENTILECFILE = $(SRCDIR)/tile.c
endif
ifndef WANT_WIN_QT
@@ -156,8 +153,7 @@ endif #! WANT_WIN_QT4
HAVE_SNDLIB = 1
NEEDS_SND_USERSOUNDS = 1
NEEDS_SND_SEAUTOMAP = 1
XTRASRC += tile.c
XTRAOBJ += $(TARGETPFX)tile.o
GENTILECFILE = $(SRCDIR)/tile.c
#
ifndef CPLUSPLUS_NEEDED
CPLUSPLUS_NEEDED = 1
@@ -213,6 +209,6 @@ ifeq "$(NOCRASHREPORT)" "1"
WINCFLAGS += -DNOCRASHREPORT
endif
#end of hints/include/multiw-2.370
#end of hints/include/multiw-2.500
#------------------------------------------------------------------------------
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# NetHack 3.7 response.370 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-3.7 $
# NetHack 5.0 response.500 $NHDT-Date: 1668359835 2022/11/13 17:17:15 $ $NHDT-Branch: NetHack-5.0 $
ifeq "$(RESP)" "1"
USE_RESPONSEFILE=1
@@ -15,7 +15,6 @@ USE_RESPONSEFILE=1
endif
ifeq "$(USE_RESPONSEFILE)" "1"
RESPONSEFILES=create_responsefiles
CXXFLAGS = $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS)
CC_COMPILER_SWITCHES := $(subst \,\\,$(CFLAGS))
CC_COMPILER_SWITCHES := $(subst ",\",$(CC_COMPILER_SWITCHES))
@@ -23,11 +22,12 @@ CXX_COMPILER_SWITCHES := $(subst \,\\,$(CXXFLAGS))
CXX_COMPILER_SWITCHES := $(subst ",\",$(CXX_COMPILER_SWITCHES))
CC_RESPONSEFILE=../src/nethack_cc.rsp
CXX_RESPONSEFILE=../src/nethack_cxx.rsp
RESPONSEFILES=$(CC_RESPONSEFILE) $(CXX_RESPONSEFILE)
CFLAGS=@$(CC_RESPONSEFILE)
CXXFLAGS=@$(CXX_RESPONSEFILE)
CLEAN_CC_RESPONSEFILE=rm -f $(CC_RESPONSEFILE);
CLEAN_CXX_RESPONSEFILE=rm -f $(CXX_RESPONSEFILE);
endif
#end of response.370
#end of response.500
#------------------------------------------------------------------------------
+23
View File
@@ -0,0 +1,23 @@
#=================================================================
# NetHack 5.0 include/whichbsd.500 $NHDT-Date: 1778861905 2026/05/15 16:18:25 $ $NHDT-Branch: NetHack-5.0 $
#
#
.ifdef WHICHBSD
.undef WHICHBSD
.endif
OS!=uname -s
.if ${OS} == "FreeBSD"
WHICHBSD=FREEBSD
.elif ${OS} == "OpenBSD"
WHICHBSD=OPENBSD
.elif ${OS} == "NetBSD"
WHICHBSD=NETBSD
.else
WHICHBSD=OTHERBSD
.endif
# End of whichbsd.500 -PRE section
#=================================================================
+1 -1
View File
@@ -1,5 +1,5 @@
#
# NetHack 3.7 linux $NHDT-Date: 1596498416 2020/08/03 23:46:56 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
# NetHack 5.0 linux $NHDT-Date: 1596498416 2020/08/03 23:46:56 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
# Copyright (c) Patric Mueller
# NetHack may be freely redistributed. See license for details.
#
@@ -1,4 +1,4 @@
# NetHack 3.7 linux.370 $NHDT-Date: 1693519390 2023/08/31 22:03:10 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.61 $
# NetHack 5.0 linux.500 $NHDT-Date: 1693519390 2023/08/31 22:03:10 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.61 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
#
@@ -12,29 +12,41 @@
# And let us know about it.
#
#-PRE
# linux.370 hints file provides a single-user build for Linux (such
# as Ubuntu focal).
#-PRE xxxx
# note: '#-INCLUDE' is not just a comment
# multiw-1.370 contains sections 1 to 2
#-INCLUDE multiw-1.370
HINTSVERSION := 370
WHICH_OS=Linux
HINTSVERSION := 500
ifdef MAKEFILE_TOP
LUA_VERSION=5.4.8
ifeq ($(MAKELEVEL),0)
PRECHECK+=checkmakefiles
# all files included from this hints file get listed
# in HINTSINCLNAMES (without suffix and without a path)
HINTSINCLNAMES := compiler cross-pre1 cross-pre2 cross-post \
HINTSINCLNAMES := dirs-perms \
compiler cross-pre1 cross-pre2 cross-post \
gbdates-pre gbdates-post \
linuxdistro \
multiw-1 multiw-2 misc \
multisnd1-pre multisnd2-pre multisnd-post
multisnd1-pre multisnd2-pre multisnd-post \
response
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
endif
endif
# linux.500 hints file provides a single-user build for Linux (such
# as Ubuntu focal).
# note: '#-INCLUDE' is not just a comment
# multiw-1.500 contains sections 1 to 2
#-INCLUDE multiw-1.500
# note: '#-INCLUDE' is not just a comment
# it pulls in the contents of dirs-perms.500
#-INCLUDE dirs-perms.500
#-INCLUDE linuxdistro.500
ifndef LIBXPM
LIBXPM= -L/opt/X11/lib -lXpm
endif
@@ -52,7 +64,7 @@ USE_NOSTATICFN = 1
#USE_NONOSTATICFN = 1
#-----------------------------------------------------------------------------
#-INCLUDE cross-pre1.370
#-INCLUDE cross-pre1.500
#-----------------------------------------------------------------------------
@@ -60,12 +72,123 @@ USE_NOSTATICFN = 1
# you're reading this in Makefile augmented by hints, that may not be true).
#
#-INCLUDE multiw-2.370
#-INCLUDE multiw-2.500
# compiler.370 contains compiler detection and adjustments common
#QT6 prior to compiler include
ifdef WANT_WIN_QT6
CPLUSPLUS_NEED20=1
ADDITIONAL_NO_WARN_GPPCCX=-Wno-sfinae-incomplete
ADDITIONAL_NO_WARN_CLANGCCX=-Wno-c++26-extensions
endif # WANT_WIN_QT6
# compiler.500 contains compiler detection and adjustments common
# to both linux and macOS
#-INCLUDE compiler.370
#-INCLUDE compiler.500
ifdef WANT_SYSTEM_LUA
ifndef LUA_VERSION
LUA_VERSION := 5.4.8
endif
LUASUBDELIM := $(subst ., ,$(LUA_VERSION))
LUASHVER := $(word 1, $(LUASUBDELIM)).$(word 2, $(LUASUBDELIM))
ifeq ($(LINUX_DISTRO),alpine)
# prereq: doas apk add lua5.4-dev
# doas apk add linux-headers
# doas apk add musl-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
CURSPKG = ncurses
#
else ifeq ($(LINUX_DISTRO),debian)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),ubuntu)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=dpkg
LUAPKGNAME = lua$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),fedora)
# prereq: sudo dnf install lua lua-devel
USE_SYSTEM_LUA=1
SHELLPKG :=rpm
LUAPKGNAME = lua-devel
#
else
USE_SYSTEM_LUA=0
SHELLPKG :=
endif # LINUX_DISTRO
ifeq ($(USE_SYSTEM_LUA),1)
ifneq "$(SHELLPKG)" ""
#
# Two requirements must now pass:
# 1. We need to be able to check if Lua package
# is installed. We do that here.
# 2. The lua.h header file needs to be present
# where expected. We set LUATESTTARGET here,
# but the check is done later on in the top
# Makefile.
#
# Try to confirm package presence
ifeq ($(SHELLPKG),pkg-config)
PKG_EXISTS := $(shell pkg-config --exists $(LUAPKGNAME) \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),dpkg)
PKG_EXISTS := $(shell dpkg -s $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),rpm)
PKG_EXISTS := $(shell rpm -q $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else
PKG_EXISTS=no
$(info Existance of package $(LUAPKGNAME) could not be verified)
endif
ifeq ($(PKG_EXISTS),yes)
$(info Existance of package $(LUAPKGNAME) verified)
#
ifeq ($(LINUX_DISTRO),fedora)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
#
else ifeq ($(LINUX_DISTRO),ubuntu)
LUACFLAGS := -I/usr/include/lua$(LUASHVER)
LUALIBS := -llua$(LUASHVER) -lm -ldl
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
#
else ifeq ($(SHELLPKG),pkg-config)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
endif
#
LUAHPREFIX=
#LUATOP=
#LUAMAKEFLAGS=
#LUA2NHTOP=
#LUABASELIB=
LUATOPLIB=
LUALIBBUILT=
LUALIB=
CFLAGS += $(LUACFLAGS)
endif # PKG_EXISTS?
endif # SHELLPKG has a value
endif # USE_SYSTEM_LUA
endif # WANT_SYSTEM_LUA
ifdef WANT_WIN_QT
ifdef WANT_WIN_QT5
@@ -80,10 +203,10 @@ endif # g++ greater than or equal to 14
endif # WANT_WIN_QT6
endif # WANT_WIN_QT
# misc.370 must come after compiler.370
# misc.500 must come after compiler.500
# and after QTDIR is defined.
#
#-INCLUDE misc.370
#-INCLUDE misc.500
ifeq "$(USE_ASAN)" "1"
CFLAGS+=-fsanitize=address
@@ -96,6 +219,7 @@ LFLAGS+=-fsanitize=undefined
endif
ifeq "$(USE_CURSESLIB)" "1"
CURSPKG ?= ncursesw
# default
CURSESLIB = -lncurses -ltinfo
# If CURSES_UNICODE is defined, we need ncursesw.
@@ -103,8 +227,8 @@ CURSESLIB = -lncurses -ltinfo
# CURSESLIB = -lncurses -ltinfo
ifdef MAKEFILE_SRC
comma:=,
NCURSES_LFLAGS = $(shell pkg-config ncursesw --libs)
NCURSES_CFLAGS = $(shell pkg-config ncursesw --cflags)
NCURSES_LFLAGS = $(shell pkg-config $(CURSPKG) --libs)
NCURSES_CFLAGS = $(shell pkg-config $(CURSPKG) --cflags)
ifeq (,$(findstring ncursesw, $(NCURSES_LFLAGS)))
ifeq (,$(findstring ncurses, $(NCURSES_LFLAGS)))
#this indicates that pkg-config itself was unavailable
@@ -177,7 +301,7 @@ NHCFLAGS+=-DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\"
#NHCFLAGS+=-DLIVELOG
#NHCFLAGS+=-DCHANGE_COLOR
NHCFLAGS+=-DSELF_RECOVER
ifdef WANT_WIN_CURSES
ifeq "$(USE_CURSESLIB)" "1"
NHCFLAGS+=$(NCURSES_CFLAGS)
ifeq "$(HAVE_NCURSESW)" "1"
NHCFLAGS+=-DCURSES_UNICODE
@@ -186,10 +310,10 @@ ifdef MAKEFILE_SRC
$(info Attention: CURSES_UNICODE is not being defined without ncursesw)
endif #MAKEFILE_SRC
endif #HAVE_NCURSESW
endif #WANT_WIN_CURSES
endif #USE_CURSESLIB
#
#-INCLUDE multisnd1-pre.370
#-INCLUDE multisnd1-pre.500
#
ifeq "$(CCISCLANG)" "1"
@@ -197,19 +321,22 @@ ifeq "$(CCISCLANG)" "1"
# clang-specific ends
else
# gcc-specific starts
ifndef MUSL
# __sighandler_t does not exist in musl
LIBCFLAGS+=-DSIG_RET_TYPE=__sighandler_t
endif
# gcc-specific ends
endif
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CFLAGS+= $(WINCFLAGS)
CFLAGS+= $(SNDCFLAGS)
CFLAGS+= $(NHCFLAGS)
CFLAGS+= $(LIBCFLAGS)
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CCXXFLAGS+= $(WINCFLAGS)
CCXXFLAGS+= $(SNDCFLAGS)
CCXXFLAGS+= $(NHCFLAGS)
@@ -227,90 +354,106 @@ ifdef MAKEFILE_SRC
ifdef CURSESLIB
WINLIB += $(CURSESLIB)
endif #CURSESLIB
endif #MAKEFILE_SRC
ifneq "$(NO_NHUUID)" "1"
UUID_LIB_CHECK := $(shell echo `/sbin/ldconfig -p | grep libuuid`)
#$(info UUID_LIB_CHECK=$(UUID_LIB_CHECK))
ifneq "$(UUID_LIB_CHECK)" ""
UUID_LIB=1
else
UUID_LIB=0
endif
#$(info UUID_LIB=$(UUID_LIB))
#
# check for uuid development headers
UUID_HEADERS_CHECK := $(wildcard /usr/include/uuid/uuid.h)
#$(info UUID_HEADERS_CHECK=$(UUID_HEADERS_CHECK))
ifneq "$(UUID_HEADERS_CHECK)" ""
UUID_HEADERS = 1
else
UUID_HEADERS = 0
endif
#$(info UUID_HEADERS=$(UUID_HEADERS))
ifeq "$(UUID_LIB)" "1"
ifeq "$(UUID_HEADERS)" "1"
ifndef WANT_NHUUID
WANT_NHUUID=1
endif
endif
endif
else # NO_NHUUID
WANT_NHUUID=0
endif # NO_NHUUID
ifeq "$(WANT_NHUUID)" "1"
#$(info NHUUID support will be included)
CFLAGS+= -DNHUUID
LIBS+=-luuid
else # WANT_NHUUID
$(info Attention - No NHUUID support will be included)
endif # WANT_NHUUID
endif # MAKEFILE_SRC
ifdef WANT_WIN_X11
USE_XPM=1
USE_XFT=1
USE_PNG=1
WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
VARDATND0 += x11tiles NetHack.ad pet_mark.xbm pilemark.xbm
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
# -x: if built without dlb, some versions of mkfontdir think *.lev are fonts
POSTINSTALL += bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; ( cd $(HACKDIR); mkfontdir -x .lev );
# separate from CFLAGS so that we don't pass it to every file
X11CFLAGS = -I/opt/X11/include
# avoid repeated complaints about _X_NONNULL(args...) in <X11/Xfuncproto.h>
X11CFLAGS += -Wno-variadic-macros
ifdef USE_XFT
CFLAGS += -DUSE_XFT
X11CFLAGS += $(shell pkg-config --cflags xft fontconfig)
WINX11LIB += $(shell pkg-config --libs xft fontconfig)
endif
ifdef USE_XPM
CFLAGS += -DUSE_XPM
WINX11LIB += -lXpm
VARDATND0 += rip.xpm
endif
ifdef USE_PNG
CFLAGS += -DUSE_PNG
WINX11LIB += -lpng
endif
WINLIB += $(WINX11LIB)
LFLAGS+=-L/opt/X11/lib
endif # WANT_WIN_X11
ifdef WANT_WIN_QT
LINK = $(CXX)
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
# QT4
ifdef WANT_WIN_QT4
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config QtGui --cflags)) -DQT_NO_SOUND=1
WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config QtGui --libs)
endif # WANT_WIN_QT4
#QT5
ifdef WANT_WIN_QT5
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --cflags))
WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs)
endif # WANT_WIN_QT5
#QT6
ifdef WANT_WIN_QT6
ifdef QT6MANUAL
# Try some likely spots for a self-built Qt6.
# You'll have to change these manually before using the hints file
# if they don't match the installed location on your system.
ifneq "$(HOSTTYPE)" ""
QTHOST=$(HOSTTYPE)
else
QTHOST=x86_64
endif
QTTOP=/usr/include/$(HOSTTYPE)-linux-gnu/qt6
ifneq ($(wildcard $(QTTOP)/*),)
#we don't set QTLOCATED=1 for this
QTINCDIR=/usr/include/$(QTHOST)-linux-gnu/qt6
QTLIBDIR=/usr/lib/$(QTHOST)-linux.gnu
QTCXXFLAGS += -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB
QTCXXFLAGS += -I$(QTINCDIR)/QtWidgets -I$(QTINCDIR) -I$(QTINCDIR)/QtMultimedia
QTCXXFLAGS += -I$(QTINCDIR)/QtNetwork -I$(QTINCDIR)/QtGui -I$(QTINCDIR)/QtCore
WINLIB += -L$(QTLIBDIR) -lQt6Widgets -lQt6Multimedia -lQt6Network -lQt6Gui -lQt6Core
MOCPATH = /usr/lib/qt6/libexec/moc
#/usr/lib/x86_64-linux-gnu/libQt6EglFSDeviceIntegration.so
endif # QTTOP/*
ifndef QTINCDIR
ifneq ($(wildcard /usr/local/Qt6/*),)
QTDIR=/usr/local/Qt6
QTLOCATED=1
endif # wildcard /usr/local/Qt6
ifneq ($(wildcard /usr/local/qt6/*),)
QTDIR=/usr/local/qt6
QTLOCATED=1
endif # wildcard /usr/local/qt6
endif # !QTINCDIR
ifdef QTLOCATED
QTCXXFLAGS += -I$(QTDIR)/include/QtCore
QTCXXFLAGS += -I$(QTDIR)/include/QtGui
QTCXXFLAGS += -I$(QTDIR)/include/QtMultimedia
QTCXXFLAGS += -I$(QTDIR)/include/QtWidgets
MOCPATH = $(QTDIR)/libexec/moc
WINLIB += -L$(QTDIR)/lib -lQt6Widgets -lQt6Multimedia -lQt6Network -lQt6Gui -lQt6Core
endif # QTLOCATED
else # !QT6MANUAL
MOCDIR = $(shell pkg-config Qt6Gui --variable=libexecdir)
ifneq ($(wildcard $(MOCDIR)/*),)
MOCPATH = $(MOCDIR)/moc
else
MOCPATH = /usr/lib/qt6/libexec/moc
endif # MOCDIR
QTCXXFLAGS += $(sort $(shell pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --cflags))
WINLIB += $(shell pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --libs)
endif # QT6MANUAL
QTCXXFLAGS += $(shell pkg-config --cflags Qt6Multimedia)
WINLIB += $(shell pkg-config --libs Qt6Core Qt6Gui Qt6Widgets Qt6Multimedia)
MOCPATH = $(shell pkg-config --variable=libexecdir Qt6Core)/moc
endif # WANT_WIN_QT6
ifndef QTDIR
ifndef WANT_WIN_QT6
$(error QTDIR not defined in the environment or Makefile)
endif # not WANT_WIN_QT6
endif # QTDIR
# XXX if /Developer/qt exists and QTDIR not set, use that
# XXX make sure QTDIR points to something reasonable
@@ -323,7 +466,7 @@ LINK = $(CC)
endif # !WANT_WIN_QT
# prevent duplicate tile.o in WINOBJ
WINOBJ = $(WINOBJ0) $(sort $(XTRAOBJ))
WINOBJ = $(WINOBJ0)
# prevent duplicates in VARDATND if both X11 and Qt are being supported
VARDATND += $(sort $(VARDATND0))
@@ -369,27 +512,10 @@ SYSCONFENSURE = (if ! test -f $(INSTDIR)/sysconf ; then \
chmod $(VARFILEPERM) $(INSTDIR)/sysconf; fi );
ifdef WANT_SOURCE_INSTALL
PREFIX=$(abspath $(NHSROOT))
#SHELLDIR=
HACKDIR=$(PREFIX)/playground
GAMEPERM = 0700
VARFILEPERM = 0600
VARDIRPERM = 0700
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
MOREALL=$(MAKE) install
else #!WANT_SOURCE_INSTALL
#PREFIX=/usr
PREFIX=$(wildcard ~)/nh/install
HACKDIR=$(PREFIX)/games/lib/nethackdir
SHELLDIR = $(PREFIX)/games
VARDIRPERM = 0755
VARFILEPERM = 0600
GAMEPERM = 0755
endif #?WANT_SOURCE_INSTALL
INSTDIR=$(HACKDIR)
VARDIR = $(HACKDIR)
ifdef MAKEFILE_TOP
TESTGDBPATH=/usr/bin/gdb
POSTINSTALL+= test -f $(TESTGDBPATH) || \
@@ -430,7 +556,7 @@ LFLAGS+=-rdynamic
# if TTY_TILES_ESCCODES
#WINSRC += tile.c
#WINOBJ += tile.o
#GENTILEOFILE = $(SRCDIR)/tile.o
# endif
CHOWN=true
@@ -439,28 +565,28 @@ CHGRP=true
# manpages directory
MANDIR=/usr/share/man/man6
#
#-INCLUDE cross-pre2.370
#-INCLUDE cross-pre2.500
#
#
#-INCLUDE gbdates-pre.370
#-INCLUDE gbdates-pre.500
#
#
#-INCLUDE multisnd2-pre.370
#-INCLUDE multisnd2-pre.500
#
#
#-INCLUDE response.370
#-INCLUDE response.500
#
#-POST
#
#-INCLUDE gbdates-post.370
#-INCLUDE gbdates-post.500
#
#
#-INCLUDE multisnd-post.370
#-INCLUDE multisnd-post.500
#
ifdef MAKEFILE_TOP
@@ -484,6 +610,6 @@ $(TARGETPFX)libnhmain.o : ../sys/libnh/libnhmain.c $(HACK_H)
endif # WANT_LIBNH
#
#-INCLUDE cross-post.370
#-INCLUDE cross-post.500
#
@@ -1,4 +1,4 @@
# NetHack 3.7 macOS.370 $NHDT-Date: 1693359574 2023/08/30 01:39:34 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.138 $
# NetHack 5.0 macOS.500 $NHDT-Date: 1693359574 2023/08/30 01:39:34 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.138 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015.
# NetHack may be freely redistributed. See license for details.
#
@@ -17,24 +17,32 @@
# macOS hints file
#
# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 2
#-INCLUDE multiw-1.370
HINTSVERSION := 370
WHICH_OS=macOS
HINTSVERSION := 500
ifdef MAKEFILE_TOP
LUA_VERSION=5.4.8
ifeq ($(MAKELEVEL),0)
PRECHECK+=checkmakefiles
# all files included from this hints file get listed
# in HINTSINCLNAMES (without suffix and without a path)
HINTSINCLNAMES := compiler cross-pre1 cross-pre2 cross-post \
HINTSINCLNAMES := dirs-perms \
compiler cross-pre1 cross-pre2 cross-post \
gbdates-pre gbdates-post \
multiw-1 multiw-2 misc \
multisnd1-pre multisnd2-pre multisnd-post
multisnd1-pre multisnd2-pre multisnd-post \
response
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
endif
endif
# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 2
#-INCLUDE multiw-1.500
# note: '#-INCLUDE' is not just a comment
# it pulls in the contents of dirs-perms.500
#-INCLUDE dirs-perms.500
ifneq "$(USEMACPORTS)" "1"
HAVE_HOMEBREW := $(shell expr `which -s brew; echo $$?` = 0)
endif
@@ -55,14 +63,14 @@ endif
# you're reading this in Makefile augmented by hints, that may not be true).
#
#-INCLUDE cross-pre1.370
#-INCLUDE cross-pre1.500
#-INCLUDE multiw-2.370
#-INCLUDE multiw-2.500
# compiler.370 contains compiler detection and adjustments common
# compiler.500 contains compiler detection and adjustments common
# to both linux and macOS
#-INCLUDE compiler.370
#-INCLUDE compiler.500
ifdef WANT_WIN_QT
ifeq "$(HAVE_HOMEBREW)" "1"
@@ -94,10 +102,10 @@ CCXXFLAGS +=-Wno-c++20-attribute-extensions
endif
endif
# misc.370 must come after compiler.370
# misc.500 must come after compiler.500
# and after QTDIR is defined
#-INCLUDE misc.370
#-INCLUDE misc.500
# manpages directory
MANDIR=/usr/local/share/man/man6
@@ -113,7 +121,8 @@ NHCFLAGS+=-DDLB
NHCFLAGS+=-DHACKDIR=\"$(HACKDIR)\"
NHCFLAGS+=-DDEFAULT_WINDOW_SYS=\"$(WANT_DEFAULT)\"
NHCFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
#NHCFLAGS+=-DTIMED_DELAY
#define this after X11 timed_delay fix
NHCFLAGS+=-DTIMED_DELAY
#NHCFLAGS+=-DDUMPLOG
#NHCFLAGS+=-DCONFIG_ERROR_SECURE=FALSE
NHCFLAGS+=-DGREPPATH=\"/usr/bin/grep\"
@@ -176,8 +185,8 @@ HAVE_HOMEBREW_NCURSES := $(shell expr `brew ls --versions ncurses > /dev/null; e
ifeq "$(HAVE_HOMEBREW_NCURSES)" "1"
# Newer versions of ncurses are commonly installed via homebrew, but intentionally unlinked.
HOMEBREW_LFLAGS := -L$(shell brew --prefix)/opt/ncurses/lib
HOMEBREW_WINLIB := -I$(shell brew --prefix)/opt/ncurses/include
HOMEBREW_CFLAGS =
HOMEBREW_WINLIB :=
HOMEBREW_CFLAGS = -I$(shell brew --prefix)/opt/ncurses/include
endif #HAVE_HOMEBREW_NCURSES
endif #HAVE_HOMEBREW
ifeq "$(HAVE_MACPORTS)" "1"
@@ -215,12 +224,27 @@ LFLAGS += -framework AVFoundation
#endif
endif
ifdef MAKEFILE_SRC
ifndef NO_NHUUID
# macOS doesn't need any extra prerequisite libraries
# so do this unconditionally, unless NO_NHUUID=1 is
# passed on the Make command line.
WANT_NHUUID=1
endif #NO_NHUUID
ifdef WANT_NHUUID
CFLAGS += -DNHUUID
UUIDOBJ = macuuid.o
LFLAGS += -framework Foundation
endif
endif #MAKEFILE_SRC
#
#-INCLUDE multisnd1-pre.370
#-INCLUDE multisnd1-pre.500
#
# although not currently doing anything for macOS, this is
# kept in for consistency with layout of linux.370
# kept in for consistency with layout of linux.500
ifeq "$(CCISCLANG)" "1"
# clang-specific starts
# clang-specific ends
@@ -230,15 +254,15 @@ else
# gcc-specific ends
endif
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CFLAGS+= $(PKGCFLAGS) $(WINCFLAGS)
CFLAGS+= $(SNDCFLAGS)
CFLAGS+= $(NHCFLAGS)
CFLAGS+= $(LIBCFLAGS)
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CCXXFLAGS+= $(WINCFLAGS)
CCXXFLAGS+= $(SNDCFLAGS)
CCXXFLAGS+= $(NHCFLAGS)
@@ -253,26 +277,43 @@ HINTOBJ=$(CHAINOBJ)
endif # WANT_WIN_CHAIN
ifdef WANT_WIN_X11
USE_XFT=1
USE_XPM=1
USE_PNG=1
WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
VARDATND0 += x11tiles NetHack.ad pet_mark.xbm pilemark.xbm
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
# -x: if built without dodlb, some versions of mkfontdir think *.lev are fonts
POSTINSTALL += bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; ( cd $(HACKDIR); mkfontdir -x .lev );
# separate from CFLAGS so that we don't pass it to every file
X11CFLAGS = -I/opt/X11/include
# avoid repeated complaints about _X_NONNULL(args...) in <X11/Xfuncproto.h>
X11CFLAGS += -Wno-variadic-macros
ifdef USE_XFT
CFLAGS += -DUSE_XFT
X11CFLAGS += $(shell pkg-config --cflags xft fontconfig freetype2)
WINX11LIB += $(shell pkg-config --libs xft fontconfig freetype2)
endif
ifdef USE_XPM
CFLAGS += -DUSE_XPM
WINX11LIB += -lXpm
VARDATND0 += rip.xpm
endif
ifdef USE_PNG
CFLAGS += -DUSE_PNG
WINX11LIB += -lpng
endif
WINLIB += $(WINX11LIB)
LFLAGS += -L/opt/X11/lib
endif # WANT_WIN_X11
ifdef WANT_WIN_QT
LINK = $(CXX)
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
ifdef WANT_WIN_QT5
# Qt5 requires C++11
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig \
@@ -298,8 +339,7 @@ else # !WANT_WIN_QT
LINK=$(CC)
endif # !WANT_WIN_QT
# prevent duplicate tile.o in WINOBJ
WINOBJ = $(WINOBJ0) $(sort $(XTRAOBJ))
WINOBJ = $(WINOBJ0)
# prevent duplicates in VARDATND if both X11 and Qt are being supported
VARDATND += $(sort $(VARDATND0))
@@ -330,6 +370,12 @@ LIBNHSYSOBJ = $(TARGETPFX)libnhmain.o $(TARGETPFX)ioctl.o \
#without winshim
override GAME=
MOREALL += ( cd src ; $(MAKE) pregame ; $(MAKE) $(TARGETPFX)libnh.a )
# With $(GAME) empty, the regular `recover: $(GAME)` chain no longer
# triggers lua_support, but recover.c still pulls in hack.h -> nhlua.h
# transitively. Make recover depend on lua_support explicitly.
ifdef MAKEFILE_TOP
recover: lua_support
endif
endif # WANT_LIBNH
# Lua
@@ -347,31 +393,11 @@ override LUA2NHTOP = ../..
override LUAMAKEFLAGS=$(LUAFLAGS)
endif # GITSUBMODULES
ifdef WANT_SHARE_INSTALL
ifdef WANT_SHARED_INSTALL
#ifdef MAKEFILE_SRC
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
#endif
# if $GAMEUID is root, we install into roughly proper Mac locations, otherwise
# we install into ~/nethackdir
ifeq ($(GAMEUID),root)
PREFIX:=/Library/NetHack
SHELLDIR=/usr/local/bin
HACKDIR=$(PREFIX)/nethackdir
CHOWN=chown
CHGRP=chgrp
# We run sgid so the game has access to both HACKDIR and user preferences.
GAMEPERM = 02755
else # ! root
PREFIX:=/Users/$(GAMEUID)
SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/Library/NetHack/nethackdir
CHOWN=/usr/bin/true
CHGRP=/usr/bin/true
GAMEPERM = 0500
endif # ! root
VARFILEPERM = 0664
VARDIRPERM = 0775
ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1)
# XXX it's nice we don't write over sysconf, but we've already erased it
# make sure we have group GAMEUID and group GAMEGRP
@@ -388,17 +414,8 @@ PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); \
else ifdef WANT_SOURCE_INSTALL
#ifdef MAKEFILE_SRC
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
#endif
PREFIX=$(abspath $(NHSROOT))
# suppress nethack.sh
#SHELLDIR=
HACKDIR=$(PREFIX)/playground
CHOWN=/usr/bin/true
CHGRP=/usr/bin/true
GAMEPERM = 0700
VARFILEPERM = 0600
VARDIRPERM = 0700
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf;
# We can use "make all" to build the whole thing - but it misses some things:
@@ -408,17 +425,8 @@ CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
else # !WANT_SOURCE_INSTALL
#ifdef MAKEFILE_SRC
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARED_INSTALL = $(WANT_SHARED_INSTALL))
#endif
PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir
CHOWN=/usr/bin/true
CHGRP=/usr/bin/true
GAMEPERM = 0700
VARFILEPERM = 0600
VARDIRPERM = 0700
ifdef ($(WANT_DEFAULT),X11)
# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
PREINSTALL+= cp -n win/X11/nethack.rc ~/.nethackrc || true;
@@ -430,10 +438,7 @@ POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/s
$(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; \
chmod $(VARFILEPERM) $(HACKDIR)/sysconf;
endif # !WANT_SHARE_INSTALL
INSTDIR=$(HACKDIR)
VARDIR=$(HACKDIR)
endif # !WANT_SHARED_INSTALL
SYSCONFCREATE = sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf
SYSCONFINSTALL = $(SYSCONFCREATE) && \
@@ -453,16 +458,16 @@ SYSCONFENSURE = (if ! test -f $(INSTDIR)/sysconf ; then \
# Install.Qt mentions a patch for macos - it's not there (it seems to be in the Qt binary
# package under the docs directory).
#
#-INCLUDE cross-pre2.370
#-INCLUDE cross-pre2.500
#
#
#-INCLUDE gbdates-pre.370
#-INCLUDE gbdates-pre.500
#
#
#-INCLUDE multisnd2-pre.370
#-INCLUDE multisnd2-pre.500
#
#
#-INCLUDE response.370
#-INCLUDE response.500
#
ifdef MAKEFILE_TOP
@@ -532,10 +537,10 @@ endif # MAKEFILE_SRC
#-POST
#
#-INCLUDE gbdates-post.370
#-INCLUDE gbdates-post.500
#
#
#-INCLUDE multisnd-post.370
#-INCLUDE multisnd-post.500
#
ifdef MAKEFILE_TOP
@@ -547,9 +552,26 @@ checkmakefiles:
endif
endif
ifdef WANT_NHUUID
$(TARGETPFX)macuuid.o: ../sys/unix/macuuid.m
$(CC) $(CFLAGS) -c -o$@ $<
endif
ifdef WANT_LIBNH
$(TARGETPFX)libnh.a: $(HOBJ) $(LIBNHSYSOBJ) ../lib/lua/liblua-$(LUA_VERSION).a
$(AR) rcs $@ $(HOBJ) $(LIBNHSYSOBJ) ../lib/lua/liblua-$(LUA_VERSION).a
# Build libnh.a by merging the engine objects, the shim windowport,
# date.o (separate from $(HOBJ) per Makefile.src), hacklib.a, and Lua's
# static archive. Use libtool -static rather than ar so hacklib.a and
# liblua-$(LUA_VERSION).a have their members merged in -- ar would archive
# them as opaque .a members and macOS ld can't dereference those.
# Depending on $(LUALIB) triggers the lua_support build (which generates
# include/nhlua.h); without it, $(HOBJ) won't compile.
# filter-out drops $(SYSOBJ) (which carries unixmain.o) and $(WINOBJ) (the
# tty windowport) from $(HOBJ); $(LIBNHSYSOBJ) supplies libnhmain.o and
# winshim.o in their place.
$(TARGETPFX)libnh.a: $(LUALIB) $(HOBJ) $(LIBNHSYSOBJ) $(DATE_O) $(TARGET_HACKLIB)
libtool -static -o $@ \
$(filter-out $(SYSOBJ) $(WINOBJ),$(HOBJ)) \
$(LIBNHSYSOBJ) $(DATE_O) $(TARGET_HACKLIB) $(LUALIB)
@echo "$@ built."
$(TARGETPFX)libnhmain.o : ../sys/libnh/libnhmain.c $(HACK_H)
$(CC) $(CFLAGS) -c -o$@ $<
@@ -637,7 +659,7 @@ $(BUNDLE_INFOPLIST):
@echo '<key>CFBundlePackageType</key>' >>$@
@echo '<string>APPL</string>' >>$@
@echo '<key>CFBundleGetInfoString</key>' >>$@
@echo '<string>$(BUNDLE_GAMENAME) 3.7 for MacOS</string>' >>$@
@echo '<string>$(BUNDLE_GAMENAME) 5.0 for MacOS</string>' >>$@
@echo '<key>CFBundleIdentifier</key>' >>$@
@echo '<string>org.nethack.macos</string>' >>$@
@echo '<key>CFBundleExecutable</key>' >>$@
@@ -649,11 +671,11 @@ $(BUNDLE_INFOPLIST):
@echo '<key>CFBundleName</key>' >>$@
@echo '<string>$(BUNDLE_NAME)</string>' >>$@
@echo '<key>CFBundleVersion</key>' >>$@
@echo '<string>3.7.0b73</string>' >>$@
@echo '<string>NetHack 5.0.0b73</string>' >>$@
@echo '<key>CFBundleShortVersionString</key>' >>$@
@echo '<string>3.7.0</string>' >>$@
@echo '<string>NetHack 5.0.0</string>' >>$@
@echo '<key>NSHumanReadableCopyright</key>' >>$@
@echo '<string>©By Stichting Mathematisch Centrum and M. Stephenson 1985-2023</string>' >>$@
@echo '<string>©By Stichting Mathematisch Centrum and M. Stephenson 1985-2026</string>' >>$@
@echo '<key>LSApplicationCategoryType</key>' >>$@
@echo '<string>public.app-category.adventure-games</string>' >>$@
@echo '</dict>' >>$@
@@ -690,7 +712,7 @@ endif # WANT_BUNDLE
# --- end of bundle ---
#
#
#-INCLUDE cross-post.370
#-INCLUDE cross-post.500
#
ifdef MAKEFILE_TOP
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# NetHack 3.7 macosx.sh $NHDT-Date: 1597332920 2020/08/13 15:35:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.24 $
# NetHack 5.0 macosx.sh $NHDT-Date: 1597332920 2020/08/13 15:35:20 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.24 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
#
+1 -1
View File
@@ -1,5 +1,5 @@
#
# NetHack 3.7 unix $NHDT-Date: 1596498426 2020/08/03 23:47:06 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
# NetHack 5.0 unix $NHDT-Date: 1596498426 2020/08/03 23:47:06 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.0 $
# Copyright (c) Kevin Smolkowski "Snivik", Elgin Oregon 2019.
# NetHack may be freely redistributed. See license for details.
#
+1 -1
View File
@@ -1,5 +1,5 @@
#
# NetHack 3.7 unix $NHDT-Date: 1596498427 2020/08/03 23:47:07 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
# NetHack 5.0 unix $NHDT-Date: 1596498427 2020/08/03 23:47:07 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.0 $
# Copyright (c) Kevin Smolkowski "Snivik", Elgin Oregon 2019.
# NetHack may be freely redistributed. See license for details.
#
+230 -105
View File
@@ -1,4 +1,4 @@
# NetHack 3.7 linux.370 $NHDT-Date: 1693519390 2023/08/31 22:03:10 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.61 $
# NetHack 5.0 linux.500 $NHDT-Date: 1693519390 2023/08/31 22:03:10 $ $NHDT-Branch: keni-crashweb2 $:$NHDT-Revision: 1.61 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
#
@@ -12,29 +12,41 @@
# And let us know about it.
#
#-PRE
# linux.370 hints file provides a single-user build for Linux (such
# as Ubuntu focal).
#-PRE xxxx
# note: '#-INCLUDE' is not just a comment
# multiw-1.370 contains sections 1 to 2
#-INCLUDE multiw-1.370
HINTSVERSION := 370
WHICH_OS=Linux
HINTSVERSION := 500
ifdef MAKEFILE_TOP
LUA_VERSION=5.4.8
ifeq ($(MAKELEVEL),0)
PRECHECK+=checkmakefiles
# all files included from this hints file get listed
# in HINTSINCLNAMES (without suffix and without a path)
HINTSINCLNAMES := compiler cross-pre1 cross-pre2 cross-post \
HINTSINCLNAMES := dirs-perms \
compiler cross-pre1 cross-pre2 cross-post \
gbdates-pre gbdates-post \
linuxdistro \
multiw-1 multiw-2 misc \
multisnd1-pre multisnd2-pre multisnd-post
multisnd1-pre multisnd2-pre multisnd-post \
response
HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
endif
endif
# linux.500 hints file provides a single-user build for Linux (such
# as Ubuntu focal).
# note: '#-INCLUDE' is not just a comment
# multiw-1.500 contains sections 1 to 2
#-INCLUDE multiw-1.500
# note: '#-INCLUDE' is not just a comment
# it pulls in the contents of dirs-perms.500
#-INCLUDE dirs-perms.500
#-INCLUDE linuxdistro.500
ifndef LIBXPM
LIBXPM= -L/opt/X11/lib -lXpm
endif
@@ -52,7 +64,7 @@ USE_NOSTATICFN = 1
#USE_NONOSTATICFN = 1
#-----------------------------------------------------------------------------
#-INCLUDE cross-pre1.370
#-INCLUDE cross-pre1.500
#-----------------------------------------------------------------------------
@@ -60,12 +72,123 @@ USE_NOSTATICFN = 1
# you're reading this in Makefile augmented by hints, that may not be true).
#
#-INCLUDE multiw-2.370
#-INCLUDE multiw-2.500
# compiler.370 contains compiler detection and adjustments common
#QT6 prior to compiler include
ifdef WANT_WIN_QT6
CPLUSPLUS_NEED20=1
ADDITIONAL_NO_WARN_GPPCCX=-Wno-sfinae-incomplete
ADDITIONAL_NO_WARN_CLANGCCX=-Wno-c++26-extensions
endif # WANT_WIN_QT6
# compiler.500 contains compiler detection and adjustments common
# to both linux and macOS
#-INCLUDE compiler.370
#-INCLUDE compiler.500
ifdef WANT_SYSTEM_LUA
ifndef LUA_VERSION
LUA_VERSION := 5.4.8
endif
LUASUBDELIM := $(subst ., ,$(LUA_VERSION))
LUASHVER := $(word 1, $(LUASUBDELIM)).$(word 2, $(LUASUBDELIM))
ifeq ($(LINUX_DISTRO),alpine)
# prereq: doas apk add lua5.4-dev
# doas apk add linux-headers
# doas apk add musl-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
CURSPKG = ncurses
#
else ifeq ($(LINUX_DISTRO),debian)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),ubuntu)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=dpkg
LUAPKGNAME = lua$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),fedora)
# prereq: sudo dnf install lua lua-devel
USE_SYSTEM_LUA=1
SHELLPKG :=rpm
LUAPKGNAME = lua-devel
#
else
USE_SYSTEM_LUA=0
SHELLPKG :=
endif # LINUX_DISTRO
ifeq ($(USE_SYSTEM_LUA),1)
ifneq "$(SHELLPKG)" ""
#
# Two requirements must now pass:
# 1. We need to be able to check if Lua package
# is installed. We do that here.
# 2. The lua.h header file needs to be present
# where expected. We set LUATESTTARGET here,
# but the check is done later on in the top
# Makefile.
#
# Try to confirm package presence
ifeq ($(SHELLPKG),pkg-config)
PKG_EXISTS := $(shell pkg-config --exists $(LUAPKGNAME) \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),dpkg)
PKG_EXISTS := $(shell dpkg -s $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),rpm)
PKG_EXISTS := $(shell rpm -q $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else
PKG_EXISTS=no
$(info Existance of package $(LUAPKGNAME) could not be verified)
endif
ifeq ($(PKG_EXISTS),yes)
$(info Existance of package $(LUAPKGNAME) verified)
#
ifeq ($(LINUX_DISTRO),fedora)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
#
else ifeq ($(LINUX_DISTRO),ubuntu)
LUACFLAGS := -I/usr/include/lua$(LUASHVER)
LUALIBS := -llua$(LUASHVER) -lm -ldl
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
#
else ifeq ($(SHELLPKG),pkg-config)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
endif
#
LUAHPREFIX=
#LUATOP=
#LUAMAKEFLAGS=
#LUA2NHTOP=
#LUABASELIB=
LUATOPLIB=
LUALIBBUILT=
LUALIB=
CFLAGS += $(LUACFLAGS)
endif # PKG_EXISTS?
endif # SHELLPKG has a value
endif # USE_SYSTEM_LUA
endif # WANT_SYSTEM_LUA
ifdef WANT_WIN_QT
ifdef WANT_WIN_QT5
@@ -80,10 +203,10 @@ endif # g++ greater than or equal to 14
endif # WANT_WIN_QT6
endif # WANT_WIN_QT
# misc.370 must come after compiler.370
# misc.500 must come after compiler.500
# and after QTDIR is defined.
#
#-INCLUDE misc.370
#-INCLUDE misc.500
ifeq "$(USE_ASAN)" "1"
CFLAGS+=-fsanitize=address
@@ -96,6 +219,7 @@ LFLAGS+=-fsanitize=undefined
endif
ifeq "$(USE_CURSESLIB)" "1"
CURSPKG ?= ncursesw
# default
CURSESLIB = -lncurses -ltinfo
# If CURSES_UNICODE is defined, we need ncursesw.
@@ -103,8 +227,8 @@ CURSESLIB = -lncurses -ltinfo
# CURSESLIB = -lncurses -ltinfo
ifdef MAKEFILE_SRC
comma:=,
NCURSES_LFLAGS = $(shell pkg-config ncursesw --libs)
NCURSES_CFLAGS = $(shell pkg-config ncursesw --cflags)
NCURSES_LFLAGS = $(shell pkg-config $(CURSPKG) --libs)
NCURSES_CFLAGS = $(shell pkg-config $(CURSPKG) --cflags)
ifeq (,$(findstring ncursesw, $(NCURSES_LFLAGS)))
ifeq (,$(findstring ncurses, $(NCURSES_LFLAGS)))
#this indicates that pkg-config itself was unavailable
@@ -175,12 +299,11 @@ NHCFLAGS+=-DTTY_TILES_ESCCODES
#NHCFLAGS+=-DTTY_SOUND_ESCCODES
#NHCFLAGS+=-DNO_CHRONICLE
#NHCFLAGS+=-DLIVELOG
NHCFLAGS+=-DDUMPLOG
#NHCFLAGS+=-DCHANGE_COLOR
NHCFLAGS+=-DDUMPHTML
NHCFLAGS+=-DUSE_GENERAL_ALTAR_COLORS
#NHCFLAGS+=-DCHANGE_COLOR
NHCFLAGS+=-DSELF_RECOVER
ifdef WANT_WIN_CURSES
ifeq "$(USE_CURSESLIB)" "1"
NHCFLAGS+=$(NCURSES_CFLAGS)
ifeq "$(HAVE_NCURSESW)" "1"
NHCFLAGS+=-DCURSES_UNICODE
@@ -189,10 +312,10 @@ ifdef MAKEFILE_SRC
$(info Attention: CURSES_UNICODE is not being defined without ncursesw)
endif #MAKEFILE_SRC
endif #HAVE_NCURSESW
endif #WANT_WIN_CURSES
endif #USE_CURSESLIB
#
#-INCLUDE multisnd1-pre.370
#-INCLUDE multisnd1-pre.500
#
ifeq "$(CCISCLANG)" "1"
@@ -200,19 +323,22 @@ ifeq "$(CCISCLANG)" "1"
# clang-specific ends
else
# gcc-specific starts
ifndef MUSL
# __sighandler_t does not exist in musl
LIBCFLAGS+=-DSIG_RET_TYPE=__sighandler_t
endif
# gcc-specific ends
endif
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CFLAGS+= $(WINCFLAGS)
CFLAGS+= $(SNDCFLAGS)
CFLAGS+= $(NHCFLAGS)
CFLAGS+= $(LIBCFLAGS)
# WINCFLAGS set from multiw-2.370
# SNDCFLAGS set from multisnd-pre.370
# WINCFLAGS set from multiw-2.500
# SNDCFLAGS set from multisnd-pre.500
CCXXFLAGS+= $(WINCFLAGS)
CCXXFLAGS+= $(SNDCFLAGS)
CCXXFLAGS+= $(NHCFLAGS)
@@ -230,90 +356,106 @@ ifdef MAKEFILE_SRC
ifdef CURSESLIB
WINLIB += $(CURSESLIB)
endif #CURSESLIB
endif #MAKEFILE_SRC
ifneq "$(NO_NHUUID)" "1"
UUID_LIB_CHECK := $(shell echo `/sbin/ldconfig -p | grep libuuid`)
#$(info UUID_LIB_CHECK=$(UUID_LIB_CHECK))
ifneq "$(UUID_LIB_CHECK)" ""
UUID_LIB=1
else
UUID_LIB=0
endif
#$(info UUID_LIB=$(UUID_LIB))
#
# check for uuid development headers
UUID_HEADERS_CHECK := $(wildcard /usr/include/uuid/uuid.h)
#$(info UUID_HEADERS_CHECK=$(UUID_HEADERS_CHECK))
ifneq "$(UUID_HEADERS_CHECK)" ""
UUID_HEADERS = 1
else
UUID_HEADERS = 0
endif
#$(info UUID_HEADERS=$(UUID_HEADERS))
ifeq "$(UUID_LIB)" "1"
ifeq "$(UUID_HEADERS)" "1"
ifndef WANT_NHUUID
WANT_NHUUID=1
endif
endif
endif
else # NO_NHUUID
WANT_NHUUID=0
endif # NO_NHUUID
ifeq "$(WANT_NHUUID)" "1"
#$(info NHUUID support will be included)
CFLAGS+= -DNHUUID
LIBS+=-luuid
else # WANT_NHUUID
$(info Attention - No NHUUID support will be included)
endif # WANT_NHUUID
endif # MAKEFILE_SRC
ifdef WANT_WIN_X11
USE_XPM=1
USE_XFT=1
USE_PNG=1
WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
VARDATND0 += x11tiles NetHack.ad pet_mark.xbm pilemark.xbm
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
# -x: if built without dlb, some versions of mkfontdir think *.lev are fonts
POSTINSTALL += bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; ( cd $(HACKDIR); mkfontdir -x .lev );
# separate from CFLAGS so that we don't pass it to every file
X11CFLAGS = -I/opt/X11/include
# avoid repeated complaints about _X_NONNULL(args...) in <X11/Xfuncproto.h>
X11CFLAGS += -Wno-variadic-macros
ifdef USE_XFT
CFLAGS += -DUSE_XFT
X11CFLAGS += $(shell pkg-config --cflags xft fontconfig)
WINX11LIB += $(shell pkg-config --libs xft fontconfig)
endif
ifdef USE_XPM
CFLAGS += -DUSE_XPM
WINX11LIB += -lXpm
VARDATND0 += rip.xpm
endif
ifdef USE_PNG
CFLAGS += -DUSE_PNG
WINX11LIB += -lpng
endif
WINLIB += $(WINX11LIB)
LFLAGS+=-L/opt/X11/lib
endif # WANT_WIN_X11
ifdef WANT_WIN_QT
LINK = $(CXX)
ifndef CROSSCOMPILE
GENTILEOFILE = $(SRCDIR)/tile.o
endif
# QT4
ifdef WANT_WIN_QT4
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config QtGui --cflags)) -DQT_NO_SOUND=1
WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config QtGui --libs)
endif # WANT_WIN_QT4
#QT5
ifdef WANT_WIN_QT5
QTCXXFLAGS += $(sort $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --cflags))
WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs)
endif # WANT_WIN_QT5
#QT6
ifdef WANT_WIN_QT6
ifdef QT6MANUAL
# Try some likely spots for a self-built Qt6.
# You'll have to change these manually before using the hints file
# if they don't match the installed location on your system.
ifneq "$(HOSTTYPE)" ""
QTHOST=$(HOSTTYPE)
else
QTHOST=x86_64
endif
QTTOP=/usr/include/$(HOSTTYPE)-linux-gnu/qt6
ifneq ($(wildcard $(QTTOP)/*),)
#we don't set QTLOCATED=1 for this
QTINCDIR=/usr/include/$(QTHOST)-linux-gnu/qt6
QTLIBDIR=/usr/lib/$(QTHOST)-linux.gnu
QTCXXFLAGS += -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB
QTCXXFLAGS += -I$(QTINCDIR)/QtWidgets -I$(QTINCDIR) -I$(QTINCDIR)/QtMultimedia
QTCXXFLAGS += -I$(QTINCDIR)/QtNetwork -I$(QTINCDIR)/QtGui -I$(QTINCDIR)/QtCore
WINLIB += -L$(QTLIBDIR) -lQt6Widgets -lQt6Multimedia -lQt6Network -lQt6Gui -lQt6Core
MOCPATH = /usr/lib/qt6/libexec/moc
#/usr/lib/x86_64-linux-gnu/libQt6EglFSDeviceIntegration.so
endif # QTTOP/*
ifndef QTINCDIR
ifneq ($(wildcard /usr/local/Qt6/*),)
QTDIR=/usr/local/Qt6
QTLOCATED=1
endif # wildcard /usr/local/Qt6
ifneq ($(wildcard /usr/local/qt6/*),)
QTDIR=/usr/local/qt6
QTLOCATED=1
endif # wildcard /usr/local/qt6
endif # !QTINCDIR
ifdef QTLOCATED
QTCXXFLAGS += -I$(QTDIR)/include/QtCore
QTCXXFLAGS += -I$(QTDIR)/include/QtGui
QTCXXFLAGS += -I$(QTDIR)/include/QtMultimedia
QTCXXFLAGS += -I$(QTDIR)/include/QtWidgets
MOCPATH = $(QTDIR)/libexec/moc
WINLIB += -L$(QTDIR)/lib -lQt6Widgets -lQt6Multimedia -lQt6Network -lQt6Gui -lQt6Core
endif # QTLOCATED
else # !QT6MANUAL
MOCDIR = $(shell pkg-config Qt6Gui --variable=libexecdir)
ifneq ($(wildcard $(MOCDIR)/*),)
MOCPATH = $(MOCDIR)/moc
else
MOCPATH = /usr/lib/qt6/libexec/moc
endif # MOCDIR
QTCXXFLAGS += $(sort $(shell pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --cflags))
WINLIB += $(shell pkg-config Qt6Gui Qt6Widgets Qt6Multimedia --libs)
endif # QT6MANUAL
QTCXXFLAGS += $(shell pkg-config --cflags Qt6Multimedia)
WINLIB += $(shell pkg-config --libs Qt6Core Qt6Gui Qt6Widgets Qt6Multimedia)
MOCPATH = $(shell pkg-config --variable=libexecdir Qt6Core)/moc
endif # WANT_WIN_QT6
ifndef QTDIR
ifndef WANT_WIN_QT6
$(error QTDIR not defined in the environment or Makefile)
endif # not WANT_WIN_QT6
endif # QTDIR
# XXX if /Developer/qt exists and QTDIR not set, use that
# XXX make sure QTDIR points to something reasonable
@@ -326,7 +468,7 @@ LINK = $(CC)
endif # !WANT_WIN_QT
# prevent duplicate tile.o in WINOBJ
WINOBJ = $(WINOBJ0) $(sort $(XTRAOBJ))
WINOBJ = $(WINOBJ0)
# prevent duplicates in VARDATND if both X11 and Qt are being supported
VARDATND += $(sort $(VARDATND0))
@@ -372,27 +514,10 @@ SYSCONFENSURE = (if ! test -f $(INSTDIR)/sysconf ; then \
chmod $(VARFILEPERM) $(INSTDIR)/sysconf; fi );
ifdef WANT_SOURCE_INSTALL
PREFIX=$(abspath $(NHSROOT))
#SHELLDIR=
HACKDIR=$(PREFIX)/playground
GAMEPERM = 0700
VARFILEPERM = 0600
VARDIRPERM = 0700
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
MOREALL=$(MAKE) install
else #!WANT_SOURCE_INSTALL
#PREFIX=/usr
PREFIX=$(wildcard ~)/nh/install
HACKDIR=$(PREFIX)/games/lib/nethackdir
SHELLDIR = $(PREFIX)/games
VARDIRPERM = 0755
VARFILEPERM = 0600
GAMEPERM = 0755
endif #?WANT_SOURCE_INSTALL
INSTDIR=$(HACKDIR)
VARDIR = $(HACKDIR)
ifdef MAKEFILE_TOP
TESTGDBPATH=/usr/bin/gdb
POSTINSTALL+= test -f $(TESTGDBPATH) || \
@@ -418,7 +543,7 @@ endif
SYSCFLAGS=-DLUA_USE_LINUX
ifdef GITSUBMODULES
LUAFLAGS=CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)'
ifneq "$(CCISCLANG)" ""
ifeq "$(CCISCLANG)" "1"
# clang
LUAFLAGS +=CWARNGCC=''
endif # clang
@@ -433,7 +558,7 @@ LFLAGS+=-rdynamic
# if TTY_TILES_ESCCODES
WINSRC += tile.c
WINOBJ += tile.o
GENTILEOFILE = $(SRCDIR)/tile.o
# endif
CHOWN=true
@@ -442,28 +567,28 @@ CHGRP=true
# manpages directory
MANDIR=/usr/share/man/man6
#
#-INCLUDE cross-pre2.370
#-INCLUDE cross-pre2.500
#
#
#-INCLUDE gbdates-pre.370
#-INCLUDE gbdates-pre.500
#
#
#-INCLUDE multisnd2-pre.370
#-INCLUDE multisnd2-pre.500
#
#
#-INCLUDE response.370
#-INCLUDE response.500
#
#-POST
#
#-INCLUDE gbdates-post.370
#-INCLUDE gbdates-post.500
#
#
#-INCLUDE multisnd-post.370
#-INCLUDE multisnd-post.500
#
ifdef MAKEFILE_TOP
@@ -487,6 +612,6 @@ $(TARGETPFX)libnhmain.o : ../sys/libnh/libnhmain.c $(HACK_H)
endif # WANT_LIBNH
#
#-INCLUDE cross-post.370
#-INCLUDE cross-post.500
#
+1 -1
View File
@@ -1,5 +1,5 @@
#
# NetHack 3.7 unix $NHDT-Date: 1596498428 2020/08/03 23:47:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $
# NetHack 5.0 unix $NHDT-Date: 1596498428 2020/08/03 23:47:08 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.14 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
#
+36
View File
@@ -0,0 +1,36 @@
/* macuuid.m */
/* Copyright Michael Allison, 2023 */
/* NetHack may be freely redistributed. See license for details. */
#include "hack.h"
void get_macos_uuid(char *);
#ifdef DEBUG
#undef DEBUG
#endif
/* #import <Foundation/Foundation.h> */
#import <AppKit/AppKit.h>
void
get_macos_uuid(char *target)
{
NSString *uuidString = [[NSUUID UUID] UUIDString];
const char *str_uuid;
int i;
/* str_uuid = [uuidString cStringUsingEncoding:NSUTF8StringEncoding]; */
str_uuid = [uuidString cStringUsingEncoding:NSASCIIStringEncoding];
if (str_uuid && target) {
for (i = 0; i < (NHUUIDSZ -1 ); ++i) {
target[i] = str_uuid[i];
}
target[(NHUUIDSZ - 1)] = '\0';
}
return;
}
/* end of macuuid.m */
+33 -1
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# NetHack 3.7 mkmkfile.sh $NHDT-Date: 1597332770 2020/08/13 15:32:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.15 $
# NetHack 5.0 mkmkfile.sh $NHDT-Date: 1597332770 2020/08/13 15:32:50 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.15 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
@@ -10,6 +10,7 @@
# $3 install path
# $4 hints file (path)
# $5 hints file (as given by user)
# $6 gnu or bsd
echo "#" > $3
echo "# This file is generated automatically. Do not edit." >> $3
@@ -20,6 +21,37 @@ echo "" >> $3
echo "HINTSFILE=$5" >> $3
echo "" >> $3
echo "###" >> $3
echo "### add check for builder include file $6-style" >> $3
echo "###" >> $3
echo "" >> $3
BUILDERINCL=make.prefs
echo "" >> $3
case "$6" in
"gnu")
echo "ifdef MAKEFILE_TOP" >> $3
echo "NHSROOT=." >> $3
echo "else" >> $3
echo "NHSROOT=.." >> $3
echo "endif" >> $3
echo "ifneq (\"\$(wildcard \$(NHSROOT)/$BUILDERINCL))\",\"\")" >> $3
echo "-include \$(NHSROOT)/$BUILDERINCL" >> $3
echo "endif" >> $3
;;
"bsd")
echo ".ifdef MAKEFILE_TOP" >> $3
echo "NHSROOT=." >> $3
echo ".else" >> $3
echo "NHSROOT=.." >> $3
echo ".endif" >> $3
echo ".if exists(\$(NHSROOT)/$BUILDERINCL)" >> $3
echo ".include \"\$(NHSROOT)/$BUILDERINCL\"" >> $3
echo ".endif" >> $3
;;
*)
esac
echo "" >> $3
echo "###" >> $3
echo "### Start $5 PRE" >> $3
echo "###" >> $3
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# NetHack 3.7 nethack.sh $NHDT-Date: 1596498294 2020/08/03 23:44:54 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.21 $
# NetHack 5.0 nethack.sh $NHDT-Date: 1596498294 2020/08/03 23:44:54 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.21 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
+13 -6
View File
@@ -1,5 +1,5 @@
#!/bin/sh
# NetHack 3.7 setup.sh $NHDT-Date: 1596498296 2020/08/03 23:44:56 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.17 $
# NetHack 5.0 setup.sh $NHDT-Date: 1596498296 2020/08/03 23:44:56 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.17 $
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2007.
# NetHack may be freely redistributed. See license for details.
#
@@ -31,8 +31,15 @@ x) hints=/dev/null
;;
esac
/bin/sh ./mkmkfile.sh Makefile.top TOP ../../Makefile $hints $hfile
/bin/sh ./mkmkfile.sh Makefile.dat DAT ../../dat/Makefile $hints $hfile
/bin/sh ./mkmkfile.sh Makefile.doc DOC ../../doc/Makefile $hints $hfile
/bin/sh ./mkmkfile.sh Makefile.src SRC ../../src/Makefile $hints $hfile
/bin/sh ./mkmkfile.sh Makefile.utl UTL ../../util/Makefile $hints $hfile
# is make gnu or bsd?
if make --version 2>/dev/null | grep -q "GNU"; then
whichmake=gnu
else
whichmake=bsd
fi
/bin/sh ./mkmkfile.sh Makefile.top TOP ../../Makefile $hints $hfile $whichmake
/bin/sh ./mkmkfile.sh Makefile.dat DAT ../../dat/Makefile $hints $hfile $whichmake
/bin/sh ./mkmkfile.sh Makefile.doc DOC ../../doc/Makefile $hints $hfile $whichmake
/bin/sh ./mkmkfile.sh Makefile.src SRC ../../src/Makefile $hints $hfile $whichmake
/bin/sh ./mkmkfile.sh Makefile.utl UTL ../../util/Makefile $hints $hfile $whichmake
+7 -3
View File
@@ -1,4 +1,4 @@
# NetHack 3.7 sysconf $NHDT-Date: 1704043695 2023/12/31 17:28:15 $ $NHDT-Branch: keni-luabits2 $:$NHDT-Revision: 1.44 $
# NetHack 5.0 sysconf $NHDT-Date: 1777240863 2026/04/26 22:01:03 $ $NHDT-Branch: to500 $:$NHDT-Revision: 1.47 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
#
@@ -55,6 +55,10 @@ GENERICUSERS=play player game games nethack nethacker ec2-user
# letter and "lock" (eg. alock, block, ...)
MAXPLAYERS=10
# Limit the number of rerolls per second when using the reroll option.
# 0 means that there is no limit on how quickly the user can reroll.
MAX_REROLL_RATE=0
# If not null, added to string "To get local support, " in the support
# information help.
#SUPPORT=call Izchak at extension 42.
@@ -130,7 +134,7 @@ MAXPLAYERS=10
# Only available if NetHack was compiled with DUMPLOG
# Allows following placeholders:
# %% literal '%'
# %v version (eg. "3.7.0-0")
# %v version (eg. "NetHack 5.0.0-0")
# %u game UID
# %t game start time, UNIX timestamp format
# %T current time, UNIX timestamp format
@@ -164,7 +168,7 @@ PANICTRACE_GDB=1
PANICTRACE_LIBC=2
# URL loaded for creating reports to the NetHack DevTeam
#CRASHREPORTURL=https://nethack.org/links/cr-37BETA.html
#CRASHREPORTURL=https://nethack.org/links/cr-5.0.0.html
# 'portable_device_paths' is only supported for Windows. Starting with
# 3.6.3, nethack on Windows treats the folder containing nethack.exe and
+50 -19
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 unixmain.c $NHDT-Date: 1711213891 2024/03/23 17:11:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.127 $ */
/* NetHack 5.0 unixmain.c $NHDT-Date: 1711213891 2024/03/23 17:11:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.127 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */
@@ -15,6 +15,13 @@
#include <fcntl.h>
#endif
#ifdef NHUUID
/* for uuid */
#ifdef LINUX
#include <uuid/uuid.h>
#endif
#endif /* NHUUID */
#if !defined(_BULL_SOURCE) && !defined(__sgi) && !defined(_M_UNIX)
#if !defined(SUNOS4) && !(defined(ULTRIX) && defined(__GNUC__))
#if defined(POSIX_TYPES) || defined(SVR4) || defined(HPUX)
@@ -125,7 +132,6 @@ main(int argc, char *argv[])
program_state.early_options = 1;
/* handle -dalthackdir, -s <score stuff>, --version, --showpaths */
early_options(&argc, &argv, &dir);
program_state.early_options = 0;
#ifdef CHDIR
/*
* Change directories before we initialize the window system so
@@ -139,6 +145,7 @@ main(int argc, char *argv[])
#ifdef __linux__
check_linux_console();
#endif
program_state.early_options = 0;
initoptions();
#ifdef PANICTRACE
@@ -321,7 +328,7 @@ main(int argc, char *argv[])
static void
process_options(int argc, char *argv[])
{
char *arg, *origarg;
char *arg, *origarg = 0;
int i, l;
config_error_init(FALSE, "command line", FALSE);
@@ -447,22 +454,8 @@ process_options(int argc, char *argv[])
}
}
if (argc > 1) {
int mxplyrs = atoi(argv[1]);
boolean mx_ok = (mxplyrs > 0);
#ifdef SYSCF
config_error_add("%s%s%s",
mx_ok ? "MAXPLAYERS are set in sysconf file"
: "Expected MAXPLAYERS, found \"",
mx_ok ? "" : argv[1], mx_ok ? "" : "\"");
#else
/* XXX This is deprecated in favor of SYSCF with MAXPLAYERS */
if (mx_ok)
gl.locknum = mxplyrs;
else
config_error_add("Invalid MAXPLAYERS \"%s\"", argv[1]);
#endif
}
if (argc > 1 && origarg)
config_error_add("Unknown option: %.60s", origarg);
#ifdef MAX_NR_OF_PLAYERS
/* limit to compile-time limit */
if (!gl.locknum || gl.locknum > MAX_NR_OF_PLAYERS)
@@ -834,4 +827,42 @@ sys_random_seed(void)
return seed;
}
#if defined(MACOS) && defined(NHUUID)
extern void get_macos_uuid(char *); /* sys/unix/macuuid.m */
#endif
void
get_nhuuid(void)
{
#if defined(NHUUID)
char struuid[NHUUIDSZ] = { 0 };
#if defined(LINUX) && defined(NHUUID)
uuid_t binuuid;
#endif
if (svn.nhuuid[0])
return;
#if defined(MACOS)
get_macos_uuid(&struuid[0]);
#elif defined(LINUX)
uuid_generate_random(binuuid);
uuid_unparse(binuuid, struuid);
#endif /* MACOS || LINUX */
if (struuid[0])
Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuid);
#endif /* NHUUID */
}
void
free_nhuuid(void)
{
int i;
for (i = 0; i < SIZE(svn.nhuuid); i++) {
svn.nhuuid[i] = 0;
}
}
/*unixmain.c*/
+1 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 unixres.c $NHDT-Date: 1596498298 2020/08/03 23:44:58 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.14 $ */
/* NetHack 5.0 unixres.c $NHDT-Date: 1596498298 2020/08/03 23:44:58 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.14 $ */
/* Copyright (c) Slash'EM development team, 2001. */
/* NetHack may be freely redistributed. See license for details. */
+6 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 unixunix.c $NHDT-Date: 1711213894 2024/03/23 17:11:34 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.43 $ */
/* NetHack 5.0 unixunix.c $NHDT-Date: 1778886716 2026/05/15 15:11:56 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.48 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -379,10 +379,14 @@ child(int wt)
linux_mapon();
#endif
if ((f = fork()) == 0) { /* child */
#ifdef CHDIR
const char *home = getenv("HOME");
#endif
(void) setgid(getgid());
(void) setuid(getuid());
#ifdef CHDIR
(void) chdir(getenv("HOME"));
if (home)
(void) chdir(home);
#endif
return 1;
}