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
$(UUDECODE) ../win/gem/gem_rsc.uu
nhdat: $(DATDLB)
( LC_ALL=C ; ../util/dlb cf nhdat $(DATDLB) )
data: data.base ../util/makedefs
../util/makedefs -d
+6 -4
View File
@@ -642,8 +642,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)
@@ -752,7 +754,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 \
@@ -770,7 +772,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.
../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 )
#
@@ -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.
# '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
+31 -27
View File
@@ -144,6 +144,8 @@ QUIETCC=0
CLINK=$(CC)
CXXLINK=$(CXX)
CCRESP=$(CC_RESPONSEFILE)
# ----------------------------------------
#
# Nothing below this line should have to be changed.
@@ -234,7 +236,7 @@ TARGET_AR ?= $(AR)
#
# dependencies for makedefs
#
makedefs: $(HACKLIB) $(MAKEOBJS) mdgrep.h
makedefs: $(CCRESP) $(HACKLIB) $(MAKEOBJS) mdgrep.h
$(CLINK) $(LFLAGS) -o makedefs $(MAKEOBJS) $(HACKLIB)
@@ -276,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
@@ -289,7 +293,7 @@ lintdgn:
# dependencies for recover
#
recover: $(RECOVOBJS) $(HACKLIB)
recover: $(CCRESP) $(RECOVOBJS) $(HACKLIB)
$(CLINK) $(LFLAGS) -o recover \
$(RECOVOBJS) $(HACKLIB) $(LIBS)
@@ -325,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
@@ -399,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
@@ -468,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
@@ -521,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
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: ../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 $@
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
@@ -560,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
@@ -577,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 )
+1 -1
View File
@@ -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,6 +22,7 @@ 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);