adjust some Makefile dependencies

Reported by @benknoble in https://github.com/NetHack/NetHack/issues/1669

Some undeclared dependencies could arise when building with make --shuffle

This attempts to resolve those.
This commit is contained in:
nhmall
2026-09-01 13:38:05 -04:00
parent 1b752f0e11
commit cc4768f1c9
4 changed files with 40 additions and 32 deletions
+2
View File
@@ -95,6 +95,8 @@ GEM_RSC.RSC:
# cp ../win/gem/GEM_RSC.RSC GEM_RSC.RSC # cp ../win/gem/GEM_RSC.RSC GEM_RSC.RSC
$(UUDECODE) ../win/gem/gem_rsc.uu $(UUDECODE) ../win/gem/gem_rsc.uu
nhdat: $(DATDLB)
( LC_ALL=C ; ../util/dlb cf nhdat $(DATDLB) )
data: data.base ../util/makedefs data: data.base ../util/makedefs
../util/makedefs -d ../util/makedefs -d
+6 -4
View File
@@ -642,8 +642,10 @@ DATE_O = $(TARGETPFX)date.o
all: $(GAME) all: $(GAME)
@echo "" @echo ""
create_responsefiles: ../src/nethack_cc.rsp:
echo $(CC_COMPILER_SWITCHES) >$(CC_RESPONSEFILE) echo $(CC_COMPILER_SWITCHES) >$(CC_RESPONSEFILE)
../src/nethack_cxx.rsp:
echo $(CXX_COMPILER_SWITCHES) >$(CXX_RESPONSEFILE) echo $(CXX_COMPILER_SWITCHES) >$(CXX_RESPONSEFILE)
pregame: $(RESPONSEFILES) pregame: $(RESPONSEFILES)
@@ -752,7 +754,7 @@ qt3tableview.moc: ../win/Qt3/qt3tableview.h
$(QTDIR)/bin/moc -o 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' # build monst.o and objects.o before executing '$(MAKE) makedefs'
$(MAKEDEFS): $(FIRSTOBJ) \ $(MAKEDEFS): $(RESPONSEFILES) $(FIRSTOBJ) \
../util/makedefs.c ../src/mdlib.c $(CONFIG_H) \ ../util/makedefs.c ../src/mdlib.c $(CONFIG_H) \
../include/permonst.h ../include/monsters.h \ ../include/permonst.h ../include/monsters.h \
../include/objclass.h ../include/objects.h ../include/sym.h \ ../include/objclass.h ../include/objects.h ../include/sym.h \
@@ -770,7 +772,7 @@ $(MAKEDEFS): $(FIRSTOBJ) \
@( cd ../util ; $(MAKE) ../include/pm.h ) @( cd ../util ; $(MAKE) ../include/pm.h )
# Created at build time for configurations which support tiles, # Created at build time for configurations which support tiles,
# but not by makedefs so not connected to the others. # but not by makedefs so not connected to the others.
../src/tile.c: ../win/share/tilemap.c $(HACK_H) ../src/tile.c: $(RESPONSEFILES) ../win/share/tilemap.c $(HACK_H)
@( cd ../util ; $(MAKE) ../src/tile.c ) @( cd ../util ; $(MAKE) ../src/tile.c )
# #
@@ -799,7 +801,7 @@ $(TARGETPFX)date.o: date.c $(GENTILECFILE) $(HACK_H) $(HACKCSRC) $(HOBJ) $(TARG
# Do NOT include ../dat/gitinfo.txt as either a prerequisite or target. # Do NOT include ../dat/gitinfo.txt as either a prerequisite or target.
# 'makedefs -v' processes it when present and ignores it if not. # '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' -$(SHELL) ../sys/unix/gitinfo.sh $(GITINFO) #before 'makedefs -v'
../util/makedefs -v ../util/makedefs -v
+31 -27
View File
@@ -144,6 +144,8 @@ QUIETCC=0
CLINK=$(CC) CLINK=$(CC)
CXXLINK=$(CXX) CXXLINK=$(CXX)
CCRESP=$(CC_RESPONSEFILE)
# ---------------------------------------- # ----------------------------------------
# #
# Nothing below this line should have to be changed. # Nothing below this line should have to be changed.
@@ -234,7 +236,7 @@ TARGET_AR ?= $(AR)
# #
# dependencies for makedefs # dependencies for makedefs
# #
makedefs: $(HACKLIB) $(MAKEOBJS) mdgrep.h makedefs: $(CCRESP) $(HACKLIB) $(MAKEOBJS) mdgrep.h
$(CLINK) $(LFLAGS) -o makedefs $(MAKEOBJS) $(HACKLIB) $(CLINK) $(LFLAGS) -o makedefs $(MAKEOBJS) $(HACKLIB)
@@ -276,9 +278,11 @@ $(HACKLIB): $(CONFIG_H) $(HACKLIBSRC) panic.o
@( cd ../src ; $(MAKE) hacklib.a ) @( cd ../src ; $(MAKE) hacklib.a )
# support code used by several of the utility programs (but not makedefs) # 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 $@ $(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 # with all of extern.h's functions to complain about, we drown in
# 'defined but not used' without -u # 'defined but not used' without -u
@@ -289,7 +293,7 @@ lintdgn:
# dependencies for recover # dependencies for recover
# #
recover: $(RECOVOBJS) $(HACKLIB) recover: $(CCRESP) $(RECOVOBJS) $(HACKLIB)
$(CLINK) $(LFLAGS) -o recover \ $(CLINK) $(LFLAGS) -o recover \
$(RECOVOBJS) $(HACKLIB) $(LIBS) $(RECOVOBJS) $(HACKLIB) $(LIBS)
@@ -325,7 +329,7 @@ SFCTOOLBIN = sfctool
SFFLAGS=-DSFCTOOL -DNOPANICTRACE -DNOCRASHREPORT -DNO_CHRONICLE SFFLAGS=-DSFCTOOL -DNOPANICTRACE -DNOCRASHREPORT -DNO_CHRONICLE
sfutil: $(SFCTOOLBIN) sfutil: $(SFCTOOLBIN)
@echo '$(SFCTOOLBIN) is up to date.' @echo '$(SFCTOOLBIN) is up to date.'
$(SFCTOOLBIN): $(SFCTOOLOBJS) $(HACKLIB) $(SFCTOOLBIN): $(CCRESP) $(SFCTOOLOBJS) $(HACKLIB)
$(TARGET_CLINK) $(TARGET_LFLAGS) -o $@ $(SFCTOOLOBJS) $(HACKLIB) $(TARGET_LIBS) $(TARGET_CLINK) $(TARGET_LFLAGS) -o $@ $(SFCTOOLOBJS) $(HACKLIB) $(TARGET_LIBS)
$(TARGETPFX)sfctool.o: sfctool.c $(HACK_H) ../include/sfprocs.h $(TARGETPFX)sfctool.o: sfctool.c $(HACK_H) ../include/sfprocs.h
$(TARGET_CC) $(TARGET_CFLAGS) $(SFFLAGS) -o $@ -c sfctool.c $(TARGET_CC) $(TARGET_CFLAGS) $(SFFLAGS) -o $@ -c sfctool.c
@@ -399,7 +403,7 @@ sftags: sftags.o $(HACKLIB) $(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o
$(CLINK) $(LFLAGS) -o $@ sftags.o \ $(CLINK) $(LFLAGS) -o $@ sftags.o \
$(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o \ $(TARGETPFX)sf-alloc.o $(TARGETPFX)panic.o \
$(HACKLIB) $(LIBS) $(HACKLIB) $(LIBS)
sftags.o: sftags.c $(HACK_H) sftags.o: $(CCRESP) sftags.c $(HACK_H)
$(CC) $(CFLAGS) -c sftags.c $(CC) $(CFLAGS) -c sftags.c
../include/sfproto.h: sf.tags sftags ../include/sfproto.h: sf.tags sftags
./sftags ./sftags
@@ -468,13 +472,13 @@ sf.tags: $(CTAGDEP)
dlb: $(DLBOBJS) $(HACKLIB) dlb: $(DLBOBJS) $(HACKLIB)
$(CLINK) $(LFLAGS) -o dlb $(DLBOBJS) $(HACKLIB) $(LIBS) $(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 $@ $(CC) $(CFLAGS) $(CSTD) -c dlb_main.c -o $@
stripbs: stripbs.o stripbs: stripbs.o
$(CC) $(LFLAGS) -o stripbs stripbs.o $(CC) $(LFLAGS) -o stripbs stripbs.o
stripbs.o: stripbs.c stripbs.o: $(CCRESP) stripbs.c
$(CC) $(CFLAGS) -c stripbs.c $(CC) $(CFLAGS) -c stripbs.c
# dependencies for tile utilities # dependencies for tile utilities
@@ -521,38 +525,38 @@ tilemap: tilemap.o $(OBJDIR)/objects.o $(OBJDIR)/monst.o $(OBJDIR)/drawing.o \
../src/tile.c: tilemap ../src/tile.c: tilemap
./tilemap ./tilemap
tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../win/share/tile.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 $@ $(CC) $(CFLAGS) $(NO_WARN_DISCARDED_QUALIFIERS) $(CSTD) -I../win/share -c ../win/share/tiletext.c -o $@
tiletxt.o: ../win/share/tiletxt.c ../win/share/tilemap.c $(HACK_H) 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 $@ $(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 $@ $(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 $@ $(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 $@ $(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 $@ $(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 ../include/tile2x11.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/X11/tile2x11.c -o $@ $(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 ../include/bitmfile.h
$(CC) $(CFLAGS) $(CSTD) -I../win/share -c ../win/gem/tile2img.c -o $@ $(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 $@ $(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 $@ $(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 $@ $(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 # 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 $(CXX) -I../include -I$(QTDIR)/include ../win/Qt/tileedit.cpp
tileedit: tileedit.o $(TEXT_IO) tileedit: tileedit.o $(TEXT_IO)
$(QTDIR)/bin/moc -o tileedit.moc tileedit.h $(QTDIR)/bin/moc -o tileedit.moc tileedit.h
@@ -560,7 +564,7 @@ tileedit: tileedit.o $(TEXT_IO)
uudecode: uudecode.o uudecode: uudecode.o
$(CLINK) $(LFLAGS) -o uudecode uudecode.o $(LIBS) $(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 $(CC) $(CFLAGS) $(CSTD) -c -o uudecode.o ../sys/share/uudecode.c
# using dependencies like # using dependencies like
@@ -577,27 +581,27 @@ uudecode.o: ../sys/share/uudecode.c
# make sure host object files from src are available when needed # make sure host object files from src are available when needed
# (note: these dependencies have been copied from Makefile.src so only come # (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) # 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 $@ $(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/rm.h ../include/objclass.h ../include/defsym.h \
../include/objects.h ../include/sym.h ../include/objects.h ../include/sym.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/drawing.c -o $@ $(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 $@ $(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/align.h ../include/monattk.h ../include/monflag.h \
../include/monsters.h ../include/wintype.h ../include/sym.h \ ../include/monsters.h ../include/wintype.h ../include/sym.h \
../include/defsym.h ../include/color.h ../include/defsym.h ../include/color.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/monst.c -o $@ $(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/prop.h ../include/skills.h ../include/color.h \
../include/objclass.h ../include/defsym.h ../include/objects.h ../include/objclass.h ../include/defsym.h ../include/objects.h
$(CC) $(CFLAGS) $(CSTD) -c ../src/objects.c -o $@ $(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 $@ $(CC) $(CFLAGS) $(CSTD) -c ../src/dlb.c -o $@
# this differs substantially from what Makefile.src specifies # 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 $@ $(CC) $(CFLAGS) $(CSTD) -c ../src/date.c -o $@
../include/nhlua.h: ../include/nhlua.h:
@( cd .. ; $(MAKE) lua_support ) @( cd .. ; $(MAKE) lua_support )
+1 -1
View File
@@ -15,7 +15,6 @@ USE_RESPONSEFILE=1
endif endif
ifeq "$(USE_RESPONSEFILE)" "1" ifeq "$(USE_RESPONSEFILE)" "1"
RESPONSEFILES=create_responsefiles
CXXFLAGS = $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS) CXXFLAGS = $(CCXXFLAGS) -I. -I$(QTDIR)/include $(QTCXXFLAGS)
CC_COMPILER_SWITCHES := $(subst \,\\,$(CFLAGS)) CC_COMPILER_SWITCHES := $(subst \,\\,$(CFLAGS))
CC_COMPILER_SWITCHES := $(subst ",\",$(CC_COMPILER_SWITCHES)) CC_COMPILER_SWITCHES := $(subst ",\",$(CC_COMPILER_SWITCHES))
@@ -23,6 +22,7 @@ CXX_COMPILER_SWITCHES := $(subst \,\\,$(CXXFLAGS))
CXX_COMPILER_SWITCHES := $(subst ",\",$(CXX_COMPILER_SWITCHES)) CXX_COMPILER_SWITCHES := $(subst ",\",$(CXX_COMPILER_SWITCHES))
CC_RESPONSEFILE=../src/nethack_cc.rsp CC_RESPONSEFILE=../src/nethack_cc.rsp
CXX_RESPONSEFILE=../src/nethack_cxx.rsp CXX_RESPONSEFILE=../src/nethack_cxx.rsp
RESPONSEFILES=$(CC_RESPONSEFILE) $(CXX_RESPONSEFILE)
CFLAGS=@$(CC_RESPONSEFILE) CFLAGS=@$(CC_RESPONSEFILE)
CXXFLAGS=@$(CXX_RESPONSEFILE) CXXFLAGS=@$(CXX_RESPONSEFILE)
CLEAN_CC_RESPONSEFILE=rm -f $(CC_RESPONSEFILE); CLEAN_CC_RESPONSEFILE=rm -f $(CC_RESPONSEFILE);