split some code into separate files

new .h files: hacklib.h selvar.h stairs.h

new .c files: calendar.c, getpos.c, report.c, selvar.c, stairs.c,
              strutil.c, wizcmds.c

cleanup of hacklib.c and mdlib.c

hacklib contains functions that do not have to link with the core

relocate wiz commands from cmd.c to wizcmds.c

relocate CRASHREPORT stuff to report.c

relocate getpos stuff from do_name.c to getpos.c

remove temporary struct definition from extern.h

cross-compile PRE-section split into cross-pre1.370 and cross-pre2.370

Windows sys/windows/Makefile.nmake and sys/windows/Makefile.mingw32 and
visual studio project file updates

Unix sys/unix/Makefile.src, sys/unix/Makefile.utl

populate selvar.c and selvar.h

build on MS-DOS (not cross-compile) Makefile updates
for sys/msdos/Makefile.GCC (untested)

vms updates for above (untested)
This commit is contained in:
nhmall
2024-03-07 11:01:04 -05:00
parent c22900fb63
commit 50811037f3
43 changed files with 5913 additions and 5677 deletions
+59 -40
View File
@@ -1,5 +1,5 @@
# NetHack 3.7 Makefile.GCC $NHDT-Date: 1596498268 2020/08/03 23:44:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.53 $
# Copyright (c) NetHack PC Development Team 1996-2022.
# Copyright (c) NetHack PC Development Team 1996-2024.
# PC NetHack 3.7 Makefile for djgpp V2
#
# Gnu gcc compiler for msdos (djgpp)
@@ -163,6 +163,9 @@ else
DLBFLG =
endif
#
HACKLIB = $(O)hacklib.a
TERMLIB =
# Build NetHack suitable for blind players
@@ -269,29 +272,31 @@ DLBOBJ = $(O)dlb.o
VOBJ01 = $(O)allmain.o $(O)alloc.o $(O)apply.o $(O)artifact.o $(O)attrib.o
VOBJ02 = $(O)ball.o $(O)bones.o $(O)botl.o $(O)cmd.o $(O)date.o $(O)dbridge.o
VOBJ03 = $(O)decl.o $(O)detect.o $(O)dig.o $(O)display.o $(O)do.o
VOBJ04 = $(O)do_name.o $(O)do_wear.o $(O)dog.o $(O)dogmove.o $(O)dokick.o
VOBJ05 = $(O)dothrow.o $(O)drawing.o $(O)dungeon.o $(O)eat.o $(O)end.o
VOBJ06 = $(O)engrave.o $(O)exper.o $(O)explode.o $(O)extralev.o $(O)files.o
VOBJ07 = $(O)fountain.o $(O)getline.o $(O)hack.o $(O)hacklib.o $(O)insight.o $(O)invent.o
VOBJ08 = $(O)isaac64.o $(O)lock.o $(O)mail.o $(O)main.o $(O)makemon.o
VOBJ09 = $(O)mcastu.o $(O)mdlib.o $(O)mhitm.o $(O)mhitu.o $(O)minion.o $(O)mkmap.o
VOBJ10 = $(O)mklev.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o $(O)mon.o
VOBJ11 = $(O)mondata.o $(O)monmove.o $(O)monst.o $(O)mplayer.o $(O)mthrowu.o
VOBJ12 = $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o
VOBJ13 = $(O)options.o $(O)pickup.o $(O)pline.o $(O)polyself.o $(O)potion.o
VOBJ14 = $(O)quest.o $(O)questpgr.o $(O)pager.o $(O)pray.o $(O)priest.o
VOBJ15 = $(O)read.o $(O)rect.o $(O)region.o $(O)restore.o $(O)rip.o
VOBJ16 = $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o $(O)sfstruct.o
VOBJ17 = $(O)shk.o $(O)shknam.o $(O)sit.o $(O)sounds.o $(O)sp_lev.o
VOBJ18 = $(O)spell.o $(O)steal.o $(O)steed.o $(O)symbols.o $(O)sys.o
VOBJ19 = $(O)teleport.o $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o
VOBJ20 = $(O)track.o $(O)trap.o $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o
VOBJ21 = $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o $(O)windows.o
VOBJ22 = $(O)wintty.o $(O)wizard.o $(O)worm.o $(O)worn.o $(O)write.o
VOBJ23 = $(O)zap.o $(O)light.o $(O)dlb.o
VOBJ24 = $(REGEX)
VOBJ02 = $(O)ball.o $(O)bones.o $(O)botl.o $(O)calendar.o $(O)cmd.o
VOBJ03 = $(O)coloratt.o $(O)date.o $(O)dbridge.o $(O)decl.o $(O)detect.o
VOBJ04 = $(O)dig.o $(O)display.o $(O)do.o $(O)do_name.o $(O)do_wear.o
VOBJ05 = $(O)dog.o $(O)dogmove.o $(O)dokick.o $(O)dothrow.o $(O)drawing.o
VOBJ06 = $(O)dungeon.o $(O)eat.o $(O)end.o $(O)engrave.o $(O)exper.o
VOBJ07 = $(O)explode.o $(O)extralev.o $(O)files.o $(O)fountain.o $(O)getpos.o
VOBJ08 = $(O)getline.o $(O)hack.o $(O)hacklib.o $(O)insight.o $(O)invent.o
VOBJ09 = $(O)isaac64.o $(O)lock.o $(O)mail.o $(O)main.o $(O)makemon.o
VOBJ10 = $(O)mcastu.o $(O)mdlib.o $(O)mhitm.o $(O)mhitu.o $(O)minion.o
VOBJ11 = $(O)mkmap.o $(O)mklev.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o
VOBJ12 = $(O)mon.o $(O)mondata.o $(O)monmove.o $(O)monst.o $(O)mplayer.o
VOBJ13 = $(O)mthrowu.o $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o
VOBJ14 = $(O)objnam.o $(O)options.o $(O)pickup.o $(O)pline.o $(O)polyself.o
VOBJ15 = $(O)potion.o $(O)quest.o $(O)questpgr.o $(O)pager.o $(O)pray.o
VOBJ16 = $(O)priest.o $(O)read.o $(O)rect.o $(O)region.o $(O)report.o
VOBJ17 = $(O)restore.o $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o
VOBJ18 = $(O)save.o $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o
VOBJ19 = $(O)sit.o $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o
VOBJ20 = $(O)steal.o $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o
VOBJ21 = $(O)strutil.o $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o
VOBJ22 = $(O)trap.o $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o
VOBJ23 = $(O)track.o $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o
VOBJ24 = $(O)windows.o $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o
VOBJ25 = $(O)worn.o $(O)write.o $(O)zap.o $(O)light.o $(O)dlb.o
VOBJ26 = $(REGEX)
SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \
$(O)video.o $(O)vidtxt.o $(O)pckeys.o
@@ -313,7 +318,7 @@ VOBJ = $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) \
$(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) $(VOBJ15) \
$(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) \
$(VOBJ21) $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) \
$(CURSESOBJ) $(LUAOBJ)
$(VOBJ26) $(CURSESOBJ) $(LUAOBJ)
ALLOBJ = $(VOBJ) $(SOBJ) $(TILOBJ) $(TILOBJ2) $(VVOBJ)
@@ -609,7 +614,7 @@ endif
#==========================================
$(GAMEFILE): $(O)obj.tag $(PATCHLEV_H) $(PDCLIB) $(LUATARGETS) \
$(O)utility.tag $(ALLOBJ)
$(O)utility.tag $(ALLOBJ) $(O)hacklib.a
@if exist temp.a del temp.a
@ar ruS temp.a $(VOBJ01)
@ar ruS temp.a $(VOBJ02)
@@ -636,6 +641,7 @@ $(GAMEFILE): $(O)obj.tag $(PATCHLEV_H) $(PDCLIB) $(LUATARGETS) \
@ar ruS temp.a $(VOBJ23)
@ar ruS temp.a $(VOBJ24)
@ar ruS temp.a $(VOBJ25)
@ar ruS temp.a $(VOBJ26)
@ar ruS temp.a $(SOBJ)
@ar ruS temp.a $(TILOBJ)
@ar ruS temp.a $(TILOBJ2)
@@ -674,12 +680,24 @@ $(INCL)/pm.h: $(U)makedefs.exe
# Makedefs Stuff
#==========================================
$(U)makedefs.exe: $(MAKEDEFSOBJS)
$(LINK) $(LFLAGS) -o$@ $(MAKEDEFSOBJS)
$(U)makedefs.exe: $(MAKEDEFSOBJS) $(HACKLIB)
$(LINK) $(LFLAGS) -o$@ $(MAKEDEFSOBJS) $(HACKLIB)
$(O)makedefs.o: $(CONFIG_H) $(PERMONST_H) $(INCL)/objclass.h \
$(INCL)/sym.h $(INCL)/defsym.h $(U)makedefs.c
#==========================================
# hacklib.a static library
#==========================================
$(O)hacklib.a: $(O)hacklibu.o
@ar rcs $@ $(O)hacklibu.o
# @ranlib $@
$(O)hacklibu.o: $(CONFIG_H) $(SRC)/hacklib.c
$(CC) $(cflags) -I$(SRC) -I$(MSYS) \
-o$@ $(SRC)/hacklib.c
#==========================================
# Recover Utility
#==========================================
@@ -707,8 +725,8 @@ $(SRC)/tile.c: $(U)tilemap.exe
TILEMAPOBJS = $(O)tilemap.o $(O)monst.o $(O)objects.o $(O)drawing.o
$(U)tilemap.exe: $(TILEMAPOBJS)
$(LINK) $(LFLAGS) -o$@ $(TILEMAPOBJS)
$(U)tilemap.exe: $(TILEMAPOBJS) $(HACKLIB)
$(LINK) $(LFLAGS) -o$@ $(TILEMAPOBJS) $(HACKLIB)
$(O)tilemap.o: $(WSHR)/tilemap.c $(HACK_H) $(TILE_H)
$(CC) $(cflags) -I$(WSHR) -I$(MSYS) -o$@ $(WSHR)/tilemap.c
@@ -726,23 +744,23 @@ $(DAT)/nhtiles.bmp: $(TILEFILES) $(U)tile2bmp.exe
@$(subst /,\,$(U)tile2bmp.exe $@)
@$(subst /,\,chdir $(SRC))
$(U)tile2bmp.exe: $(O)tile2bmp.o $(TEXTIO)
$(U)tile2bmp.exe: $(O)tile2bmp.o $(TEXTIO) $(HACKLIB)
-rm -f temp.a
@ar ru temp.a $(TEXTIO)
$(LINK) $(LFLAGS) -o$@ $(O)tile2bmp.o temp.a
$(LINK) $(LFLAGS) -o$@ $(O)tile2bmp.o temp.a $(HACKLIB)
$(U)tile2bin.exe: $(O)tile2bin.o $(TEXTIO)
$(U)tile2bin.exe: $(O)tile2bin.o $(TEXTIO) $(HACKLIB)
-rm -f temp.a
@ar ru temp.a $(TEXTIO)
$(LINK) $(LFLAGS) -o$@ $(O)tile2bin.o temp.a
$(LINK) $(LFLAGS) -o$@ $(O)tile2bin.o temp.a $(HACKLIB)
$(U)til2bin2.exe: $(O)til2bin2.o $(TEXTIO2)
$(U)til2bin2.exe: $(O)til2bin2.o $(TEXTIO2) $(HACKLIB)
-rm -f temp.a
@ar ru temp.a $(TEXTIO2)
$(LINK) $(LFLAGS) -o$@ $(O)til2bin2.o temp.a
$(LINK) $(LFLAGS) -o$@ $(O)til2bin2.o temp.a $(HACKLIB)
$(U)thintile.exe: $(O)thintile.o
$(LINK) $(LFLAGS) -o$@ $(O)thintile.o
$(U)thintile.exe: $(O)thintile.o $(HACKLIB)
$(LINK) $(LFLAGS) -o$@ $(O)thintile.o $(HACKLIB)
$(O)thintile.o: $(HACK_H) $(WSHR)/tile.h $(WSHR)/thintile.c
$(CC) $(cflags) -o$@ $(WSHR)/thintile.c
@@ -895,8 +913,8 @@ $(DAT)/nhdat: $(U)dlb_main.exe $(DAT)/data $(DAT)/rumors \
@$(subst /,\,$(U)dlb_main cvIf dlb.lst nhdat)
@$(subst /,\,cd $(SRC))
$(U)dlb_main.exe: $(DLBOBJS)
$(LINK) $(LFLAGS) -o$@ $(DLBOBJS)
$(U)dlb_main.exe: $(DLBOBJS) $(HACKLIB)
$(LINK) $(LFLAGS) -o$@ $(DLBOBJS) $(HACKLIB)
$(O)dlb_main.o: $(U)dlb_main.c $(INCL)/config.h $(DLB_H)
$(CC) $(cflags) -o$@ $(U)dlb_main.c
@@ -981,6 +999,7 @@ endif
$(subst /,\,if exist $(WSHR)/monthin.txt del $(WSHR)/monthin.txt)
$(subst /,\,if exist $(WSHR)/objthin.txt del $(WSHR)/objthin.txt)
$(subst /,\,if exist $(WSHR)/oththin.txt del $(WSHR)/oththin.txt)
$(subst /,\,if exist $(O)hacklib.a del $(O)hacklib.a)
#==========================================
# Create directory for holding object files