]> granicus.if.org Git - nethack/commitdiff
some parallel Make glitches noticed
authornhmall <nhmall@nethack.org>
Sun, 13 Mar 2022 15:06:45 +0000 (11:06 -0400)
committernhmall <nhmall@nethack.org>
Sun, 13 Mar 2022 15:06:45 +0000 (11:06 -0400)
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.

sys/unix/Makefile.src
sys/unix/Makefile.top
sys/unix/Makefile.utl
win/share/.gitignore
win/share/tiletxt.c [new file with mode: 0644]

index ff7b75f6748c8a1a29ce350feacd029526400eaa..35cb68bebb93db4abdf146c220bba69cfe09c799 100644 (file)
@@ -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
index 89ba178684e8328057fc635999c4aa5578a1f36b..835bd3b77a4692a8ff1870f8267286b1a5b59e40 100644 (file)
@@ -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"' >> $@
index 09a5339e05d4a986ef9e3f63c2d9b482cee43bd3..dee11e4431a791e42d4e565829919a292c2eeced 100644 (file)
@@ -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
index 10969bb6038d5714fe0cc11ae4a1854d0df30449..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-tiletxt.c
diff --git a/win/share/tiletxt.c b/win/share/tiletxt.c
new file mode 100644 (file)
index 0000000..22fd768
--- /dev/null
@@ -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*/