From: nhmall Date: Sun, 13 Mar 2022 15:06:45 +0000 (-0400) Subject: some parallel Make glitches noticed X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2234cc256d54a43733cd30d249978a6ada921f81;p=nethack some parallel Make glitches noticed observed: parallel build attempts of makedefs that trampled over one another. attempted workaround: Add a dependency as per Pat R's suggestion. observed: Concurrent header file movement collisions were sometimes causing file busy errors and build failures. workaround: Eliminate tile.h header file movement from the Makefile build so that the collisions won't occur with that particular file. Leave the header file tile.h in win/share as it is in the distribution and just adjust the include path in the rule for the specific files that use it. observed: tiletxt.c created on-the-fly from Makefile echo statements sometimes resulted in garbled and duplicate content in it when parallel makes were involved, and that caused a build failure. workaround: Instead of creating a tiletxt.c on-the-fly via echo statements in the Makefile, simplify things and use that same #include "tilemap.c" approach but make it an actual file in the distribution. That makes it available for other platforms too. --- diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src index ff7b75f67..35cb68beb 100644 --- a/sys/unix/Makefile.src +++ b/sys/unix/Makefile.src @@ -599,7 +599,7 @@ all: $(GAME) pregame: $(PREGAME) -$(GAME): pregame $(SYSTEM) +$(GAME): pregame $(MAKEDEFS) $(SYSTEM) @echo "$(GAME) is up to date." Sysunix: $(HOSTOBJ) $(HOBJ) $(DATE_O) $(BUILDMORE) Makefile diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 89ba17868..835bd3b77 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -121,7 +121,7 @@ all: $(ALLDEP) $(GAME): lua_support ( cd src ; $(MAKE) $(GAME) ) -lua_support: $(TOPLUALIB) include/nhlua.h +lua_support: include/nhlua.h @true $(LUATOP)/liblua.a: $(LUAHEADERS)/lua.h ( cd $(LUATOP) \ @@ -129,6 +129,9 @@ $(LUATOP)/liblua.a: $(LUAHEADERS)/lua.h lib/lua/liblua.a: $(LUATOP)/liblua.a @( if test -d lib/lua ; then true ; else mkdir -p lib/lua ; fi ) cp $(LUATOP)/liblua.a $@ +#include/nhlua.h: $(TOPLUALIB) +# ( cd src ; $(MAKE) LUAHEADERS="$(LUAHEADERS)" ../include/nhlua.h ) + include/nhlua.h: $(TOPLUALIB) echo '/* nhlua.h - generated by top Makefile */' > $@ @echo '#include "../$(LUAHEADERS)/lua.h"' >> $@ diff --git a/sys/unix/Makefile.utl b/sys/unix/Makefile.utl index 09a5339e0..dee11e443 100644 --- a/sys/unix/Makefile.utl +++ b/sys/unix/Makefile.utl @@ -264,7 +264,7 @@ lintdgn: recover: $(RECOVOBJS) $(CLINK) $(LFLAGS) -o recover $(RECOVOBJS) $(LIBS) -recover.o: recover.c $(CONFIG_H) ../include/date.h +recover.o: recover.c $(CONFIG_H) $(CC) $(CFLAGS) -c recover.c -o $@ @@ -273,7 +273,7 @@ recover.o: recover.c $(CONFIG_H) ../include/date.h dlb: $(DLBOBJS) $(CLINK) $(LFLAGS) -o dlb $(DLBOBJS) $(LIBS) -dlb_main.o: dlb_main.c $(CONFIG_H) ../include/dlb.h ../include/date.h +dlb_main.o: dlb_main.c $(CONFIG_H) ../include/dlb.h $(CC) $(CFLAGS) -c dlb_main.c -o $@ @@ -317,44 +317,35 @@ tilemap: tilemap.o $(OBJDIR)/objects.o $(OBJDIR)/monst.o $(OBJDIR)/drawing.o ../src/tile.c: tilemap ./tilemap -../include/tile.h: ../win/share/tile.h - cp ../win/share/tile.h ../include/tile.h tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../include/tile.h $(CC) $(CFLAGS) -c ../win/share/tiletext.c -o $@ -tiletxt.c: ./Makefile - @echo '/* alternate compilation for tilemap.c to create tiletxt.o' > tiletxt.c - @echo ' that does not rely on "cc -c -o tiletxt.o tilemap.c"' >> tiletxt.c - @echo ' since many pre-POSIX compilers did not support that */' >> tiletxt.c - echo '#define TILETEXT' >> tiletxt.c - echo '#include "../win/share/tilemap.c"' >> tiletxt.c - @echo '/*tiletxt.c*/' >> tiletxt.c -tiletxt.o: tiletxt.c ../win/share/tilemap.c $(HACK_H) - $(CC) $(CFLAGS) -c tiletxt.c -o $@ +tiletxt.o: ../win/share/tiletxt.c $(HACK_H) + $(CC) $(CFLAGS) -I../win/share -c ../win/share/tiletxt.c -o $@ tilemap.o: ../win/share/tilemap.c $(HACK_H) $(CC) $(CFLAGS) -c ../win/share/tilemap.c -o $@ -gifread.o: ../win/share/gifread.c $(CONFIG_H) ../include/tile.h - $(CC) $(CFLAGS) -c ../win/share/gifread.c -o $@ -ppmwrite.o: ../win/share/ppmwrite.c $(CONFIG_H) ../include/tile.h - $(CC) $(CFLAGS) -c ../win/share/ppmwrite.c -o $@ +gifread.o: ../win/share/gifread.c $(CONFIG_H) ../win/share/tile.h + $(CC) $(CFLAGS) -I../win/share -c ../win/share/gifread.c -o $@ +ppmwrite.o: ../win/share/ppmwrite.c $(CONFIG_H) ../win/share/tile.h + $(CC) $(CFLAGS) -I../win/share -c ../win/share/ppmwrite.c -o $@ -tile2bmp.o: ../win/share/tile2bmp.c $(HACK_H) ../include/tile.h - $(CC) $(CFLAGS) -c ../win/share/tile2bmp.c -o $@ +tile2bmp.o: ../win/share/tile2bmp.c $(HACK_H) ../win/share/tile.h + $(CC) $(CFLAGS) -I../win/share -c ../win/share/tile2bmp.c -o $@ -tile2x11.o: ../win/X11/tile2x11.c $(HACK_H) ../include/tile.h \ +tile2x11.o: ../win/X11/tile2x11.c $(HACK_H) ../win/share/tile.h \ ../include/tile2x11.h - $(CC) $(CFLAGS) -c ../win/X11/tile2x11.c -o $@ + $(CC) $(CFLAGS) -I../win/share -c ../win/X11/tile2x11.c -o $@ -tile2img.o: ../win/gem/tile2img.c $(HACK_H) ../include/tile.h \ +tile2img.o: ../win/gem/tile2img.c $(HACK_H) ../win/share/tile.h \ ../include/bitmfile.h - $(CC) $(CFLAGS) -c ../win/gem/tile2img.c -o $@ + $(CC) $(CFLAGS) -I../win/share -c ../win/gem/tile2img.c -o $@ xpm2img.o: ../win/gem/xpm2img.c $(HACK_H) ../include/bitmfile.h $(CC) $(CFLAGS) -c ../win/gem/xpm2img.c -o $@ bitmfile.o: ../win/gem/bitmfile.c ../include/bitmfile.h $(CC) $(CFLAGS) -c ../win/gem/bitmfile.c -o $@ -tile2beos.o: ../win/BeOS/tile2beos.cpp $(HACK_H) ../include/tile.h - $(CXX) $(CFLAGS) -c ../win/BeOS/tile2beos.cpp -o $@ +tile2beos.o: ../win/BeOS/tile2beos.cpp $(HACK_H) ../win/share/tile.h + $(CXX) $(CFLAGS) -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 @@ -415,7 +406,6 @@ clean: -rm -f *.o spotless: clean - -rm -f ../include/tile.h tiletxt.c -rm -f makedefs recover dlb -rm -f gif2txt txt2ppm tile2x11 tile2img.ttp xpm2img.ttp \ tilemap tileedit tile2bmp diff --git a/win/share/.gitignore b/win/share/.gitignore index 10969bb60..e69de29bb 100644 --- a/win/share/.gitignore +++ b/win/share/.gitignore @@ -1 +0,0 @@ -tiletxt.c diff --git a/win/share/tiletxt.c b/win/share/tiletxt.c new file mode 100644 index 000000000..22fd768ca --- /dev/null +++ b/win/share/tiletxt.c @@ -0,0 +1,6 @@ +/* alternate compilation for tilemap.c to create tiletxt.o + that does not rely on "cc -c -o tiletxt.o tilemap.c" + since many pre-POSIX compilers did not support that */ +#define TILETEXT +#include "tilemap.c" +/*tiletxt.c*/