set of Makefiles.vms for GNU make 4.1 on VMS based on Unix Makefiles
A test build log follows
$ make
pipe set default [.src] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 LUA_VERSION=5.4.6 nethack \
&& set def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.src]'
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]hacklib.c /OBJECT=hacklib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /obj=[-.util]panic.obj [-.util]panic.c
if f$search("hacklib.olb").eqs."" then -
library/create hacklib.olb/object
library/insert/replace hacklib.olb hacklib.obj,[-.util]panic.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lapi.c /OBJECT=lapi.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lauxlib.c /OBJECT=lauxlib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lbaselib.c /OBJECT=lbaselib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lcode.c /OBJECT=lcode.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lcorolib.c /OBJECT=lcorolib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lctype.c /OBJECT=lctype.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ldblib.c /OBJECT=ldblib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ldebug.c /OBJECT=ldebug.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ldo.c /OBJECT=ldo.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ldump.c /OBJECT=ldump.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lfunc.c /OBJECT=lfunc.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lgc.c /OBJECT=lgc.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]linit.c /OBJECT=linit.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]liolib.c /OBJECT=liolib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]llex.c /OBJECT=llex.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lmathlib.c /OBJECT=lmathlib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lmem.c /OBJECT=lmem.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]loadlib.c /OBJECT=loadlib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lobject.c /OBJECT=lobject.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lopcodes.c /OBJECT=lopcodes.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]loslib.c /OBJECT=loslib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lparser.c /OBJECT=lparser.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lstate.c /OBJECT=lstate.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lstring.c /OBJECT=lstring.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lstrlib.c /OBJECT=lstrlib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ltable.c /OBJECT=ltable.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ltablib.c /OBJECT=ltablib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]ltm.c /OBJECT=ltm.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lundump.c /OBJECT=lundump.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lutf8lib.c /OBJECT=lutf8lib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lvm.c /OBJECT=lvm.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /define=(LUA_USE_C89) [-.lib.lua.lua546.src]lzio.c /OBJECT=lzio.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) luaplaceholder.
c /OBJECT=luaplaceholder.obj
if f$search("[-.lib.lua]lua546.olb").eqs."" then library/create/obj [-.lib.lua]l
ua546.olb
library/insert/replace [-.lib.lua]lua546.olb lapi.obj, lauxlib.obj, lbaselib.obj
, lcode.obj, lcorolib.obj, lctype.obj, ldblib.obj, ldebug.obj, ldo.obj, ldump.ob
j, lfunc.obj, lgc.obj, linit.obj, liolib.obj, llex.obj, lmathlib.obj, lmem.obj,
loadlib.obj, lobject.obj, lopcodes.obj, loslib.obj, lparser.obj, lstate.obj, lst
ring.obj, lstrlib.obj, ltable.obj, ltablib.obj, ltm.obj, lundump.obj, lutf8lib.o
bj, lvm.obj, lzio.obj, luaplaceholder.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmsmain.c /OBJECT=vmsmain.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]allmain.c /OBJECT=allmain.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]alloc.c/OBJECT=alloc.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]apply.c/OBJECT=apply.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]artifact.c /OBJECT=artifact.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]attrib.c /OBJECT=attrib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]ball.c /OBJECT=ball.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]bones.c/OBJECT=bones.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]botl.c /OBJECT=botl.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]calendar.c /OBJECT=calendar.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]cmd.c /OBJECT=cmd.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]coloratt.c /OBJECT=coloratt.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dbridge.c /OBJECT=dbridge.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]decl.c /OBJECT=decl.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]detect.c /OBJECT=detect.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dig.c /OBJECT=dig.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]display.c /OBJECT=display.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dlb.c /OBJECT=dlb.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]do.c /OBJECT=do.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]do_name.c /OBJECT=do_name.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]do_wear.c /OBJECT=do_wear.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dog.c /OBJECT=dog.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dogmove.c /OBJECT=dogmove.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dokick.c /OBJECT=dokick.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dothrow.c /OBJECT=dothrow.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]drawing.c /OBJECT=drawing.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]dungeon.c /OBJECT=dungeon.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]eat.c /OBJECT=eat.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]end.c /OBJECT=end.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]engrave.c /OBJECT=engrave.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]exper.c/OBJECT=exper.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]explode.c /OBJECT=explode.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]extralev.c /OBJECT=extralev.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]files.c/OBJECT=files.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]fountain.c /OBJECT=fountain.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]getpos.c /OBJECT=getpos.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]hack.c /OBJECT=hack.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]insight.c /OBJECT=insight.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]invent.c /OBJECT=invent.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]isaac64.c /OBJECT=isaac64.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]light.c/OBJECT=light.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]lock.c /OBJECT=lock.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mail.c /OBJECT=mail.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]makemon.c /OBJECT=makemon.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mcastu.c /OBJECT=mcastu.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mdlib.c /OBJECT=mdlib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mhitm.c /OBJECT=mhitm.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mhitu.c /OBJECT=mhitu.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]minion.c /OBJECT=minion.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mklev.c /OBJECT=mklev.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mkmap.c /OBJECT=mkmap.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mkmaze.c /OBJECT=mkmaze.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mkobj.c /OBJECT=mkobj.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mkroom.c /OBJECT=mkroom.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mon.c /OBJECT=mon.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mondata.c /OBJECT=mondata.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]monmove.c /OBJECT=monmove.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]monst.c /OBJECT=monst.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mplayer.c /OBJECT=mplayer.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]mthrowu.c /OBJECT=mthrowu.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]muse.c /OBJECT=muse.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]music.c /OBJECT=music.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]nhlua.c /OBJECT=nhlua.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]nhlsel.c /OBJECT=nhlsel.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]nhlobj.c /OBJECT=nhlobj.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]objnam.c /OBJECT=objnam.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]o_init.c /OBJECT=o_init.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]objects.c /OBJECT=objects.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]options.c /OBJECT=options.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]pager.c /OBJECT=pager.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]pickup.c /OBJECT=pickup.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]pline.c /OBJECT=pline.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]polyself.c /OBJECT=polyself.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]potion.c /OBJECT=potion.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]pray.c /OBJECT=pray.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]priest.c /OBJECT=priest.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]quest.c /OBJECT=quest.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]questpgr.c /OBJECT=questpgr.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]read.c /OBJECT=read.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]rect.c /OBJECT=rect.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]region.c /OBJECT=region.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]report.c /OBJECT=report.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]restore.c /OBJECT=restore.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]rip.c /OBJECT=rip.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]rnd.c /OBJECT=rnd.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]role.c /OBJECT=role.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]rumors.c /OBJECT=rumors.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]save.c /OBJECT=save.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]selvar.c /OBJECT=selvar.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]sfstruct.c /OBJECT=sfstruct.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]shk.c /OBJECT=shk.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]shknam.c /OBJECT=shknam.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]sit.c /OBJECT=sit.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]sounds.c /OBJECT=sounds.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]sp_lev.c /OBJECT=sp_lev.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]spell.c /OBJECT=spell.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]stairs.c /OBJECT=stairs.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]steal.c /OBJECT=steal.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]steed.c /OBJECT=steed.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]strutil.c /OBJECT=strutil.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]symbols.c /OBJECT=symbols.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]sys.c /OBJECT=sys.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]teleport.c /OBJECT=teleport.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]timeout.c /OBJECT=timeout.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]topten.c /OBJECT=topten.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]track.c /OBJECT=track.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]trap.c /OBJECT=trap.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]u_init.c /OBJECT=u_init.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]utf8map.c /OBJECT=utf8map.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]uhitm.c/OBJECT=uhitm.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]vault.c/OBJECT=vault.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]version.c /OBJECT=version.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]vision.c /OBJECT=vision.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]weapon.c /OBJECT=weapon.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]were.c /OBJECT=were.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]wield.c /OBJECT=wield.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]windows.c /OBJECT=windows.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]wizard.c /OBJECT=wizard.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]wizcmds.c /OBJECT=wizcmds.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]worm.c /OBJECT=worm.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]worn.c /OBJECT=worn.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]write.c/OBJECT=write.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]zap.c /OBJECT=zap.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmsfiles.c /OBJECT=vmsfiles.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmsmail.c /OBJECT=vmsmail.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmsmisc.c /OBJECT=vmsmisc.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmstty.c /OBJECT=vmstty.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.sys.vms]vmsunix.c /OBJECT=vmsunix.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /OBJECT=getline.obj [-.win.tty]getline.c
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /OBJECT=termcap.obj [-.win.tty]termcap.c
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /OBJECT=topl.obj [-.win.tty]topl.c
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /OBJECT=wintty.obj [-.win.tty]wintty.c
cxx /INCLUDE_DIR=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /OBJECT=cppregex.obj [-.sys.share]cppregex.cpp
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) [-.src]tclib.c /OBJECT=tclib.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) \
/OBJECT=date.obj [-.src]date.c
Linking nethack.
link vmsmain.obj, \
allmain.obj, alloc.obj, apply.obj, artifact.obj, attrib.obj, ball.obj, b
ones.obj, botl.obj, calendar.obj, cmd.obj, coloratt.obj, dbridge.obj, decl.obj,
detect.obj, dig.obj, display.obj, dlb.obj, do.obj, do_name.obj, do_wear.obj, dog
.obj, dogmove.obj, dokick.obj, dothrow.obj, drawing.obj, dungeon.obj, eat.obj, e
nd.obj, engrave.obj, exper.obj, explode.obj, extralev.obj, files.obj, fountain.o
bj, getpos.obj, hack.obj, hacklib.obj, insight.obj, invent.obj, isaac64.obj, lig
ht.obj, lock.obj, mail.obj, makemon.obj, mcastu.obj, mdlib.obj, mhitm.obj, mhitu
.obj, minion.obj, mklev.obj, mkmap.obj, mkmaze.obj, mkobj.obj, mkroom.obj, mon.o
bj, mondata.obj, monmove.obj, monst.obj, mplayer.obj, mthrowu.obj, muse.obj, mus
ic.obj, nhlua.obj, nhlsel.obj, nhlobj.obj, objnam.obj, o_init.obj, objects.obj,
options.obj, pager.obj, pickup.obj, pline.obj, polyself.obj, potion.obj, pray.ob
j, priest.obj, quest.obj, questpgr.obj, read.obj, rect.obj, region.obj, report.o
bj, restore.obj, rip.obj, rnd.obj, role.obj, rumors.obj, save.obj, selvar.obj, s
fstruct.obj, shk.obj, shknam.obj, sit.obj, sounds.obj, sp_lev.obj, spell.obj, st
airs.obj, steal.obj, steed.obj, strutil.obj, symbols.obj, sys.obj, teleport.obj,
timeout.obj, topten.obj, track.obj, trap.obj, u_init.obj, utf8map.obj, uhitm.ob
j, vault.obj, version.obj, vision.obj, weapon.obj, were.obj, wield.obj, windows.
obj, wizard.obj, wizcmds.obj, worm.obj, worn.obj, write.obj, zap.obj, vmsfiles.o
bj, vmsmail.obj, vmsmisc.obj, vmstty.obj, vmsunix.obj, getline.obj, termcap.obj,
topl.obj, wintty.obj, cppregex.obj, tclib.obj, date.obj \
/EXECUTABLE=nethack.exe\
+[-.lib.lua]lua546.olb/library
nethack is up to date.
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.src]'
pipe set def [.util] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 recover && s
et def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.util]'
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) recover.c /OB
J=recover.obj
link /EXE=recover.exe recover.obj
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.util]'
pipe set def [.doc] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 Guidebook &&
set def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.doc]'
pipe set def [-.util] && make makedefs && set def [-.doc]
make[2]: Entering directory 'DKA100:[DEVEL.NetHack370.util]'
LIBRARY/CREATE hacklib.olb/object
LIBRARY/INSERT hacklib.olb [-.src]hacklib.obj,[-.util]panic.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) makedefs.c /OB
J=makedefs.obj
CC /INCLUDE=([-.include],[-.lib.lua.lua546.src]) /NAMES=(AS_IS) /obj=placehol
der.obj placeholder.c
link /EXE=makedefs.exe \
[]makedefs.obj, [-.src]monst.obj, [-.src]objects.obj, [-.src]date.obj, [
-.src]alloc.obj, []panic.obj, placeholder.obj, \
hacklib.olb/lib
make[2]: Leaving directory 'DKA100:[DEVEL.NetHack370.util]'
disabled Guidebook on vms
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.do
c]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 bogusmon &&
set def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
mcr [-.util]makedefs.exe -s
about to Sprintf epitaph sizeof filename 600.filename = "../dat/epitaph.txt".RDT
MODE = "r".just did Sprintf filename="../dat/epitaph".about to Sprintf engrave s
izeof filename 600.filename = "../dat/engrave.txt".RDTMODE = "r".just did Sprint
f filename="../dat/engrave".about to Sprintf bogusmon sizeof filename 600.filena
me = "../dat/bogusmon.txt".RDTMODE = "r".just did Sprintf filename="../dat/bogus
mon".
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 data && set d
ef [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
mcr [-.util]makedefs.exe -d
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 engrave && se
t def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
make[1]: 'engrave' is up to date.
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 epitaph && se
t def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
make[1]: 'epitaph' is up to date.
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 oracles && se
t def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
mcr [-.util]makedefs.exe -h
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 options && se
t def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
mcr [-.util]makedefs.exe -v
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 rumors && set
def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
mcr [-.util]makedefs.exe -r
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 spec_levs &&
set def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
make[1]: 'spec_levs' is up to date.
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
pipe set def [.dat] && mcr NHMAL4$DKA100:[DEVEL.HELPERS]make.exe;1 quest_levs &&
set def [-]
make[1]: Entering directory 'DKA100:[DEVEL.NetHack370.dat]'
make[1]: 'quest_levs' is up to date.
make[1]: Leaving directory 'DKA100:[DEVEL.NetHack370.dat]'
echo disabled check-dlb
disabled check-dlb
pipe true
Done.
This commit is contained in:
364
sys/vms/Install370.vms
Normal file
364
sys/vms/Install370.vms
Normal file
@@ -0,0 +1,364 @@
|
||||
Instructions for Building and Installing NetHack 3.7.0
|
||||
on a VSI openVMS 9.2 system
|
||||
=========================================
|
||||
|
||||
This contains a description of how to build NetHack-3.7.0 on VSI OpenVMS 9.2.
|
||||
This process uses Gnu Make 4.1 (minimum) for VMS to carry out the build.
|
||||
Last tested with VSI C x86-64 V7.5-009 (GEM 50XBR) on OpenVMS x86_64 V9.2-2.
|
||||
|
||||
0. Please read this entire file before trying to build or install
|
||||
NetHack, then read it again!
|
||||
|
||||
1. Make sure all the NetHack files are in the appropriate directory
|
||||
structure. You should set up a directory--referred to as "top" below
|
||||
and in some of the assorted files, but which may be a subdirectory--
|
||||
that has these subdirectories
|
||||
[.dat] -- data files
|
||||
[.doc] -- documentation files
|
||||
[.include] -- C header files
|
||||
[.lib.lua546] -- Lua distribution from https://www.lua.org/
|
||||
[.src] -- primary source files
|
||||
[.sys] -- parent for [.sys.*]
|
||||
[.sys.share] -- files shared by several ports, including VMS
|
||||
[.sys.vms] -- VMS-specific source and support files
|
||||
[.util] -- sources for essential utility programs
|
||||
[.win] -- parent for [.win.*]
|
||||
[.win.tty] -- "window" routines for ordinary terminals
|
||||
(including terminal windows on workstations)
|
||||
|
||||
2. From the top of the NetHack 3.7 distribution, issue the following
|
||||
pair of commands to distribute the GNU make Makefile.vms files to their
|
||||
working locations for building NetHack:
|
||||
$ set def [.sys.vms]
|
||||
$ @vmssetup.com
|
||||
$ set def [-.-]
|
||||
That will place renamed copies of the following files like so,
|
||||
relative to the top of the NetHack source tree:
|
||||
[.sys.vms]Makefile_top.vms -> Makefile.vms
|
||||
[.sys.vms]Makefile_dat.vms -> [.dat]Makefile.vms
|
||||
[.sys.vms]Makefile_doc.vms -> [.doc]Makefile.vms
|
||||
[.sys.vms]Makefile_src.vms -> [.src]Makefile.vms
|
||||
[.sys.vms]Makefile_utl.vms -> [.util]Makefile.vms
|
||||
|
||||
3. Prior to beginning compilation, go to the [.include] subdirectory and
|
||||
edit vmsconf.h according to its comments. You should set Local_WIZARD
|
||||
and Local_HACKDIR to appropriate values.
|
||||
Other things which may be of interest are SECURE if you intend to
|
||||
set up NetHack as an installed image which is granted privileges, and
|
||||
SHELL which should be disabled if you intend to allow captive accounts
|
||||
to run NetHack. You may also want to edit file config.h, but that's
|
||||
only necessary if you want or need to disable some of the game options.
|
||||
The distributed copy of config.h will work successfully on VMS;
|
||||
vmsconf.h has conditional code to deal with the UNIX-specific items.
|
||||
|
||||
4. After the above steps, issue the following command from the top of the
|
||||
NetHack source tree to build the game from sources:
|
||||
make
|
||||
|
||||
5. [ FIXME: this step is not in the Makefile_top.vms yet 2024/03/08 ]
|
||||
After compilation, it's time to perform installation. Issue the
|
||||
following command from the top of the NetHack source tree:
|
||||
make install
|
||||
|
||||
6. To clean files left over from the build, issue the following command
|
||||
from the top of the Nethack source tree:
|
||||
make clean
|
||||
|
||||
7. The file nethack.com which is copied to the playground directory can
|
||||
be used to invoke NetHack, or nethack.exe can be run directly. Most
|
||||
of the command-line options specified in the Unix man-page (file
|
||||
[.doc]nethack.txt) are also applicable to VMS. Some comments at the
|
||||
beginning of nethack.com illustrate several of the options. New
|
||||
players should read the file "Guidebook.txt" which will be copied
|
||||
into the playground directory as "Guidebook.doc".
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
1. Save files and bones files from 3.6.x and earlier versions will not
|
||||
work with 3.7.0. The scoreboard file (RECORD) from 3.6.x or 3.4.x or
|
||||
3.3.x should work.
|
||||
|
||||
2. To specify user-preference options in your environment, define the
|
||||
logical name NETHACKOPTIONS to have the value of a quoted string
|
||||
containing a comma separated list of option values. The option names
|
||||
are case-insensitive.
|
||||
$ define nethackoptions "noAutoPickup,Dog:Rover,Cat:Felix,DECgraphics"
|
||||
One value you'll probably want to specify is "noLegacy" to turn off
|
||||
the initial introductory passage. The "checkpoint" option controls
|
||||
whether or not enough data is saved to disk so that the set of level
|
||||
files left behind after a crash contains sufficient information for
|
||||
recover.exe to be able to construct a save file after the fact. The
|
||||
tradeoff for enabling checkpoint is that using it makes level changes
|
||||
do more I/O and take longer. The "menustyle" option controls some
|
||||
aspects of the user interface, and can be set to "menustyle:traditional"
|
||||
to make nethack behave more like older versions.
|
||||
|
||||
If logical name or DCL symbol NETHACKOPTIONS is not defined, NetHack
|
||||
will try HACKOPTIONS instead. Regardless of whether or not either
|
||||
is defined, it will also try to find a configuration file containing
|
||||
additional option settings. If the value of the translation of
|
||||
NETHACKOPTIONS--or HACKOPTIONS--begins with an "@" character then the
|
||||
rest of the translation is assumed to be the name of the configuration
|
||||
file. Otherwise, the following are tried: file specified by logical
|
||||
name NETHACKINI, file SYS$LOGIN:NETHACK.INI, and file HOME:NETHACK.CNF
|
||||
(note that the C run-time library sets up the value of HOME to match
|
||||
sys$login). Syntax for the configuration file is similar to
|
||||
NETHACKOPTIONS, but multiple lines can be used, each must start with
|
||||
OPTIONS=, and comments can be included by placing '#' in the first
|
||||
column. Several options which take more complex values (graphics
|
||||
representation) can also be present; see the "Guidebook" for details.
|
||||
(Guidebook.txt can be found in the [.doc] subdirectory; a copy gets
|
||||
placed in the playground directory by install.com. Also, an example
|
||||
configuration file can be found in [.win.X11]nethack.rc.)
|
||||
|
||||
3. termcap is an ASCII data file containing descriptions of terminal
|
||||
capabilities and the escape sequences that software must use to take
|
||||
advantage of them. If you do not already have a termcap file in use
|
||||
on your system there is a small one in file [.SYS.SHARE]TERMCAP. It
|
||||
contains definitions for common Digital terminals, also suitable for
|
||||
most clones and emulators. This file is copied into the playground
|
||||
by install.com, and NetHack will use it if it can't find any other
|
||||
one. NetHack uses the following sequence to attempt to locate the
|
||||
termcap file: translation of the logical name TERMCAP (used as-is),
|
||||
file NETHACKDIR:TERMCAP, similar file HACKDIR:TERMCAP, GNU-Emacs file
|
||||
EMACS_LIBRARY:[ETC]TERMCAP.DAT, file []TERMCAP, and lastly file
|
||||
$TERMCAP (which most likely would be a logical name). If NetHack
|
||||
can't find the termcap file, or if the above search sequence finds a
|
||||
different one than you'd prefer, then use the DCL ASSIGN or DEFINE
|
||||
command to define a value for logical name TERMCAP.
|
||||
|
||||
NetHack also tries fairly hard to figure out what kind of terminal
|
||||
you're using. It checks for logical names (or symbols) NETHACK_TERM,
|
||||
HACK_TERM, EMACS_TERM, and lastly TERM. The last is set up by the
|
||||
C run-time library and you cannot use a logical name or symbol for
|
||||
it. If all those fail, or if whichever one succeeds has a value of
|
||||
"undefined" or "unknown" (which can happen under VMS V5.4-* and
|
||||
V5.5-* for VT420 terminals), NetHack will query the VMS TERMTABLE
|
||||
database used by the SMG library routines. Whatever value NetHack
|
||||
eventually comes up with needs to be the name of an entry in the
|
||||
termcap file, otherwise a message about "Unknown terminal type" will
|
||||
be printed and NetHack will exit.
|
||||
|
||||
4. Both vmsbuild.com and Makefile.src have provisions to build NetHack's
|
||||
There is currently no working version of the 'curses' interface for
|
||||
OpenVMS. The NetHack source code for it won't compile using
|
||||
the implementation of curses which is supplied with VMS (either the
|
||||
VMS-specific variant or the BSD-derived one). If someone manages
|
||||
to port 'ncurses' or 'PDcurses' to OpenVMS, it may be possible to
|
||||
use either of those, as ncurses works on Unix and PDcurses works
|
||||
on Windows and MS-DOS.
|
||||
|
||||
5. NetHack contains code which attempts to make it secure in case it's
|
||||
installed with privileges (to allow the playground to be protected
|
||||
against world write access). This has only undergone limited testing,
|
||||
so install NetHack with privileges at your own risk. If you discover
|
||||
any potential security holes, please let us know so that we can take
|
||||
steps to correct the problem(s). NetHack always includes filename
|
||||
punctuation when accessing files, so that it should never be affected
|
||||
by inadvertent or malicious logical name definitions, and it always
|
||||
deactivates installed privileges prior to spawning a subprocess.
|
||||
|
||||
Note to end users: "installing with privileges" is an option for
|
||||
system managers who set up system-wide access to the game. Since
|
||||
CMKRNL privilege and modification of the system boot routines are
|
||||
both required, it is not an option for ordinary users. There are
|
||||
no explicit instructions on how to do such an installation, because
|
||||
only system managers who are already familiar with the process and
|
||||
its potential security ramifications should even consider it.
|
||||
|
||||
The default setup by install.com assumes no privileges and uses
|
||||
world-writable files to allow arbitrary users to play. This is
|
||||
NOT secure and not advisable in any environment where there are
|
||||
untrustworthy users, but works fine for many sites. If you allow
|
||||
users to run NetHack from captive accounts (VMS 5.1-* or earlier)
|
||||
or from restricted accounts (5.2 and later), you should either make
|
||||
sure that they do not have TMPMBX privilege or else disable NetHack's
|
||||
ability to spawn an interactive subprocess. To disable subprocesses,
|
||||
disable the "!" (shell escape) command by commenting out the definition
|
||||
of SHELL in vmsconf.h prior to building the program. This necessity
|
||||
may be removed in some future release, where NetHack will check for
|
||||
captive accounts instead of spawning unconditionally. Note that
|
||||
disabling the SHELL command also prevents spawning MAIL when scrolls
|
||||
of new mail are received.
|
||||
|
||||
In order for installed privileges to be used at all, the value of
|
||||
HACKDIR (via Local_HACKDIR in vmsconf.h) compiled into the program
|
||||
must correspond to the actual playground directory. If logical name
|
||||
HACKDIR (or NETHACKDIR) is used to override that value, installed
|
||||
privileges will be deactivated unless its value corresponds to the
|
||||
same device and directory as the internal value. If that internal
|
||||
value contains a logical name, only an executive-mode translation
|
||||
will be honored; if there is no such translation, installed privs
|
||||
will be deactivated.
|
||||
|
||||
To be able to install nethack.exe with privileges (SYSPRV or GRPPRV,
|
||||
perhaps EXQUOTA, depending on site usage and needs), you'll need to
|
||||
link it with debugging and tracebacks both disabled. You can do this
|
||||
by specifying an argument to vmsbuild.com when performing step #6
|
||||
above; pass it "/noTrace/noDebug" as the 4th parameter.
|
||||
$ @[.SYS.VMS]VMSBUILD "" "" "" "/noTrace/noDebug"
|
||||
/Trace/noDebug is the linker's normal default. If you've already
|
||||
built NetHack, you can relink with tracebacks disabled by doing
|
||||
$ @[.SYS.VMS]VMSBUILD "LINK" "" "" "/noTrace/noDebug"
|
||||
|
||||
6. If you can't or won't install nethack.exe with privileges and if you
|
||||
don't have access to a privileged account yourself, then if you intend
|
||||
to allow other users to access your copy of NetHack you should probably
|
||||
place an ACL on the playground directory and its save subdirectory.
|
||||
The access control list should contain a default protection ACE which
|
||||
grants delete+control access to the playground owner (ie, your own
|
||||
account if there's no special games account involved). install.com
|
||||
does not attempt to do this automatically at the present time. After
|
||||
executing install.com to create the playground directory, perform a
|
||||
pair of commands similar to the following
|
||||
$ SET ACL/ACL=(IDENT=your_id, OPTIONS=DEFAULT, ACCESS=R+W+E+D+C) -
|
||||
$_ device:[playground's.parent.directory]playground.DIR
|
||||
$ SET ACL/ACL=(IDENT=your_id, OPTIONS=DEFAULT, ACCESS=R+W+E+D+C) -
|
||||
$_ device:[playground.directory]SAVE.DIR
|
||||
The two commands use the same options, but SET ACL won't accept a
|
||||
list of files to modify. (For recent versions of VMS, SET ACL was
|
||||
made obsolete in favor of SET FILE/ACL, which in turn has been made
|
||||
obsolete in favor of SET SECURITY/CLASS=FILE/ACL; however, the older
|
||||
forms will still work.) 'your_id' should be the rights identifier
|
||||
which corresponds to the account which should retain access to those
|
||||
files; 'device:[playground's.parent.directory]' is the name of the
|
||||
parent directory for the playground (ie, if your playground directory
|
||||
is disk$foo:[me.games.nethack.play], then you want to specify
|
||||
disk$foo:[me.games.nethack]play.dir on the SET ACL command), and
|
||||
'device:[playground.directory]' is the playground itself. Those ACLs
|
||||
establish a default protection scheme such that every newly created
|
||||
file in those directories will have an ACL attached to it, and the
|
||||
attached ACL will grant 'your_id' full access to the corresponding
|
||||
file. That should allow you to clear away level files from aborted
|
||||
games, and to delete old save files if necessary. It will not enable
|
||||
you to run recover.exe on behalf of other users, because you won't be
|
||||
able to create files owned by them unless you have elevated privileges.
|
||||
|
||||
7. Many NetHack commands can be aborted by sending it the <escape>
|
||||
character when it wants input. This is displayed as ESC inside the
|
||||
game. Digital VK201 keyboards (used by VT2xx and VT3xx and older
|
||||
VAXstations) and VK401 keyboards (used by VT4xx, newer VAXstations,
|
||||
and DEC's X Terminals) do not have an <escape> key. They may
|
||||
transmit <escape> for the <F11> key if the terminal or emulator
|
||||
window is set to operate in VT100 mode, or there may be a setup-type
|
||||
option for making the <` | ~> key behave as <escape>. If your
|
||||
terminal does not have that, or if it's set to a mode where that
|
||||
won't work, then just use <ctrl/[> instead. (Press the "[" key while
|
||||
holding down the "Ctrl" key, then release both; <escape> and <ctrl/[>
|
||||
have the same ASCII code and are indistinguishable once they reach
|
||||
the computer; note that VAXstations and X Terminals _can_ tell the
|
||||
difference, but that won't matter for NetHack.)
|
||||
|
||||
VMS NetHack is configured to use the SYS$QIOW system service for
|
||||
reading characters from the keyboard. This allows ^C and ^Y (as well
|
||||
as ^X and ^O for wizard mode debugging) to be used as commands without
|
||||
being intercepted or interpreted by the terminal driver. The code
|
||||
which parses arrow and function keys is not perfect, and it's possible
|
||||
to get strange results if you hold such keys down or just type too
|
||||
quickly, particularly on slow multiplexor lines. Those keys are
|
||||
never needed in actual play, and most function keys are just treated
|
||||
as <escape> for use in aborting partial commands.
|
||||
|
||||
VMS NetHack also still has code to use SMG$READ_KEYSTROKE instead.
|
||||
That can be activated by modifying vmsconf.h and recompiling, but
|
||||
it should never be necessary. If you use it, you'll need to press
|
||||
either <esc> or <ctrl/[> twice to abort partial commands, or else
|
||||
press an arbitrary function key, such as <PF4>, once.
|
||||
|
||||
If SUSPEND is defined in vmsconf.h, <ctrl/Z> is used for that command.
|
||||
Since Unix-style job control is not available, it's used for connecting
|
||||
to the parent process if NetHack is running in a subprocess. When not
|
||||
in a subprocess, it doesn't do anything except give a message to the
|
||||
effect that it's not doing anything.... The suspend command does not
|
||||
save the current game; if you use ^Z to attach to your parent process,
|
||||
be sure to remember to eventually reattach to the NetHack subprocess;
|
||||
otherwise the game in progress won't get saved when you logout.
|
||||
|
||||
8. NetHack optionally maintains a logfile which receives one line appended
|
||||
to it whenever a game ends. This can be disabled entirely by adding
|
||||
an "#undef LOGFILE" directive to vmsconf.h prior to building the
|
||||
program, or it can be disabled later by removing the file(s) LOGFILE.;*
|
||||
from the playground directory. If not disabled prior to compilation,
|
||||
the logfile can be reinitialized by simply creating an empty file
|
||||
named LOGFILE in the playground, but make sure that users are able
|
||||
to write into it, or new entries will not be appended. A somewhat
|
||||
more elaborate log file named XLOGFILE containing more information is
|
||||
handled similarly.
|
||||
|
||||
9. Some attempt at support for VMS versions earlier than V4.6 has been
|
||||
included, but no such obsolete system was available for testing it.
|
||||
vmsbuild.com detects the need for the extra support routines and
|
||||
arranges automatically for them to be compiled. The reason that
|
||||
special support is needed is that the C Run-Time Library (VAXCRTL)
|
||||
underwent a major revision for VMS V4.6 and several routines which
|
||||
NetHack utilizes were not available prior to that upgrade.
|
||||
|
||||
[That was written many years ago and the chance of it still working
|
||||
is very small.]
|
||||
|
||||
10. To access "wizard mode"--intended for debugging purposes, not to
|
||||
spoil the game with unlimited wishes--you must be running from the
|
||||
username compiled into the game via Local_WIZARD in vmsconf.h, and
|
||||
you must specify "-D" on the command line when invoking NetHack.
|
||||
Note that -D must be uppercase, and it must be in quotes to prevent
|
||||
the C run-time library's program startup code from converting it into
|
||||
lowercase.
|
||||
$ @hackdir:nethack "-D"
|
||||
Any character name you specify will be ignored in favor of "wizard".
|
||||
|
||||
[More out of date information. Rather than compile-time Local_WIZARD,
|
||||
users(s) allowed to run in wizard mode are now controlled by the entry
|
||||
WIZARDS in the file SYSCONF.]
|
||||
|
||||
11. At program startup time, NetHack uses the empty file PERM to prevent
|
||||
two different processes from using the same character name (under the
|
||||
same UIC ownership) at the same time. It does this by temporarily
|
||||
giving that file a second directory entry named PERM.LOCK, then
|
||||
removing the alternate entry once started. If the PERM file is
|
||||
missing or inaccessible, NetHack will give a message and then quit.
|
||||
Several possible messages and their usual causes are:
|
||||
Can't find file perm;1 to lock!
|
||||
PERM.;1 is missing from the playground directory. Fix: reinstall
|
||||
the playground directory using install.com, or use CREATE or an editor
|
||||
to make an empty file named PERM. Version number must be 1.
|
||||
Can't lock perm;1 due to directory protection.
|
||||
The playground directory is not allowing write access. Fix: players
|
||||
need to be able to write files for dungeon levels and "bones" into
|
||||
the playground directory. Set the protection or ACL on the xxx.DIR;1
|
||||
file in the playground's parent directory to allow write access.
|
||||
Can't unlink perm.lock;1.
|
||||
The empty file PERM.;1 is protected against delete access; only matters
|
||||
under some versions of VMS. Fix: set the protection or ACL on PERM.;1
|
||||
to allow delete access to players. Under VMS V5.5-2, delete access is
|
||||
not necessary. PERM does not have to remain writable.
|
||||
Waiting for access to perm;1. (# retries left).
|
||||
If some other process is also starting up NetHack at about the same
|
||||
time, you may have to wait a short period. NetHack will retry once
|
||||
per second, counting down to 0. If 0 is reached, the message
|
||||
Perhaps there is an old perm.lock;1 around?
|
||||
will be displayed and then NetHack will give up. Fix: to forcibly
|
||||
remove a stale PERM.LOCK entry, issue the following command
|
||||
$ SET FILE/REMOVE PERM.LOCK;1
|
||||
from the playground directory. The file PERM should remain intact.
|
||||
Do not use that command for real files, only alternate directory
|
||||
entries. If output from a DIRECTORY command on the playground reports
|
||||
PERM.LOCK;1 no such file
|
||||
then someone has deleted PERM.;1 while the synonym entry was still
|
||||
in place, and PERM.LOCK was left as a dangling name which no longer
|
||||
points at any file. The SET FILE/REMOVE command above will fix the
|
||||
dangling name; a new PERM.;1 will need to be created as mentioned above.
|
||||
|
||||
In similar fashion, synchronized access to the scoreboard file RECORD
|
||||
is accomplished using temporary entry RECORD.LOCK and LOGFILE using
|
||||
entry LOGFILE.LOCK.
|
||||
|
||||
12. If necessary, send problem reports via e-mail to
|
||||
<devteam@nethack.org>
|
||||
Always include version information for NetHack, the operating system
|
||||
version, and the C compiler and version used, and the version of GNU
|
||||
make utility used.
|
||||
|
||||
8-March-2024
|
||||
# NetHack 3.7 Install370.vms $NHDT-Date: 1575245132 2019/12/02 00:05:32 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.16 $
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
156
sys/vms/Makefile_dat.vms
Normal file
156
sys/vms/Makefile_dat.vms
Normal file
@@ -0,0 +1,156 @@
|
||||
# NetHack Datafiles Makefile.dat $NHDT-Date: 1596486993 2020/08/03 20:36:33 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.32 $
|
||||
# Copyright (c) 2018 by Pasi Kallinen
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
# Root of source tree:
|
||||
NHSROOT=..
|
||||
|
||||
# relative directories to dat
|
||||
DOC=[-.doc]
|
||||
DAT=[-.dat]
|
||||
INCL=[-.include]
|
||||
SRC=[-.src]
|
||||
UTIL=[-.util]
|
||||
SYSVMS=[-.sys.vms]
|
||||
SYSSHR=[-.sys.share]
|
||||
SYSUNIX=[-.sys.unix]
|
||||
WINTTY=[-.win.tty]
|
||||
WINSHR=[-.win.share]
|
||||
WINTTY=[-.win.tty]
|
||||
WINCURS=[-.win.curses]
|
||||
WINX11=[-.win.X11]
|
||||
WINQT=[-.win.Qt]
|
||||
WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to src
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
LUASRCINCDIR=$(LUASRCDIR)
|
||||
#LUASRCINCDIR=SYS$COMMON:[LUA.INCLUDE]
|
||||
|
||||
#
|
||||
# If your compiler needs an appropriate switch to accept C99 code.
|
||||
# VSI C defaults to /STANDARD=relaxed which allows several C
|
||||
# dialects including C99.
|
||||
#
|
||||
# CSTD=/STANDARD=C99
|
||||
#
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS :=/INCLUDE=($(INCL),$(LUAINC)) /NAMES=(AS_IS) $(CSTD)
|
||||
CXXFLAGS = /INCLUDE_DIR=($(INCL),$(LUAINC)) /NAMES=(AS_IS)
|
||||
|
||||
# Link flags
|
||||
LFLAGS =
|
||||
|
||||
# external programs
|
||||
# MAKE = make
|
||||
CC = CC
|
||||
#$(TOUCH) :=SET FILE/TRUNCATE
|
||||
TOUCH = append/New _NLA0: # only one file per $($(TOUCH))
|
||||
LINK = link
|
||||
RM = delete
|
||||
#TRUE uses an actual helper true.exe
|
||||
TRUE = true
|
||||
#FALSE uses an actual helper false.exe
|
||||
FALSE = false
|
||||
#ECHO uses an actual helper echo.exe
|
||||
ECHO = echo
|
||||
CXX ?= CXX
|
||||
MOC ?= moc
|
||||
MOCPATH ?= $(QTDIR)/bin/$(MOC)
|
||||
# The default is for the TARGET_* variables to match the defaults.
|
||||
# If we're cross-compiling these will get overridden elsewhere, likely via
|
||||
|
||||
VARDAT = bogusmon data engrave epitaph rumors oracles options
|
||||
|
||||
all: $(VARDAT) spec_levs quest_levs
|
||||
|
||||
$(UTIL)makedefs.exe:
|
||||
pipe set def [-.util] && $(MAKE) makedefs && set def [-.dat]
|
||||
|
||||
$(UTIL)tile2x11.exe:
|
||||
pipe set def [-.util] && $(MAKE) tile2x11 && set def [-.dat]
|
||||
|
||||
$(UTIL)tile2bmp.exe:
|
||||
pipe set def [-.util] && $(MAKE) tile2bmp) && set def [-.dat]
|
||||
|
||||
$(UTIL)x11tiles.exe : $(UTIL)tile2x11.exe ../win/share/monsters.txt \
|
||||
../win/share/objects.txt ../win/share/other.txt \
|
||||
../win/share/monsters.txt
|
||||
mcr $(UTIL)tile2x11.exe ../win/share/monsters.txt \
|
||||
../win/share/objects.txt ../win/share/other.txt \
|
||||
-grayscale ../win/share/monsters.txt
|
||||
|
||||
nhtiles.bmp: $(UTIL)tile2bmp.exe ../win/share/monsters.txt \
|
||||
../win/share/objects.txt \
|
||||
../win/share/other.txt
|
||||
mcr $(UTIL)tile2bmp.exe $@
|
||||
|
||||
NetHack.ad: ../win/X11/NetHack.ad
|
||||
# handle "#define foo bar" -lines
|
||||
grep ^#define ../win/X11/NetHack.ad | \
|
||||
sed -e 's/^#define/s/g' -e 's/ */ /g' \
|
||||
-e 's/$$/ g/g' > NetHack.ad.tmp
|
||||
grep -v ^#define ../win/X11/NetHack.ad | \
|
||||
sed -f NetHack.ad.tmp > NetHack.ad
|
||||
-rm -f NetHack.ad.tmp
|
||||
|
||||
pet_mark.xbm: $(WINX11)pet_mark.xbm
|
||||
copy $(WINX11)pet_mark.xbm pet_mark.xbm
|
||||
|
||||
pilemark.xbm: $(WINX11)pilemark.xbm
|
||||
copy $(WINX11)pilemark.xbm pilemark.xbm
|
||||
|
||||
rip.xpm: $(WINX11)rip.xpm
|
||||
copy $(WINX11)rip.xpm rip.xpm
|
||||
|
||||
nhsplash.xpm: $(WINSHR)nhsplash.xpm
|
||||
copy $(WINSHR)nhsplash.xpm nhsplash.xpm
|
||||
|
||||
nethack.icns: $(WINSHR)nhicns.uu
|
||||
mcr $(UUDECODE) $(WINSHR)nhicns.uu
|
||||
|
||||
data: data.base $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -d
|
||||
|
||||
rumors: rumors.tru rumors.fal $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -r
|
||||
|
||||
oracles: oracles.txt $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -h
|
||||
|
||||
engrave: engrave.txt $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -s
|
||||
|
||||
epitaph: epitaph.txt $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -s
|
||||
|
||||
bogusmon: bogusmon.txt $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -s
|
||||
|
||||
# note: 'options' should have already been made when include/date.h was created
|
||||
options: $(UTIL)makedefs.exe
|
||||
mcr $(UTIL)makedefs.exe -v
|
||||
|
||||
# these don't actually do anything useful now that levcomp and dngcomp are gone
|
||||
spec_levs:
|
||||
$(TOUCH) spec_levs
|
||||
quest_levs:
|
||||
$(TOUCH) quest_levs
|
||||
|
||||
clean:
|
||||
-delete/log spec_levs.;*,quest_levs.;*,gitinfo.txt;*
|
||||
|
||||
spotless: clean
|
||||
-delete/log nhdat,$(addsuffix ;*$(comma),$(VARDAT) \
|
||||
x11tiles, pet_mark.xbm, pilemark.xbm, rip.xpm, mapbg.xpm, \
|
||||
rip.img, GEM_RSC.RSC, title.img, nh16.img, NetHack.ad, \
|
||||
nhsplash.xpm, nhtiles.bmp)
|
||||
|
||||
#eof#
|
||||
202
sys/vms/Makefile_doc.vms
Normal file
202
sys/vms/Makefile_doc.vms
Normal file
@@ -0,0 +1,202 @@
|
||||
# NetHack Documentation Makefile.
|
||||
# NetHack 3.7 Makefile.doc $NHDT-Date: 1596498290 2020/08/03 23:44:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.21 $
|
||||
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
# Root of source tree:
|
||||
NHSROOT=[-]
|
||||
|
||||
# relative directories from src
|
||||
DOC=[-.doc]
|
||||
DAT=[-.dat]
|
||||
INCL=[-.include]
|
||||
SRC=[-.src]
|
||||
UTIL=[-.util]
|
||||
SYSVMS=[-.sys.vms]
|
||||
SYSSHR=[-.sys.share]
|
||||
SYSUNIX=[-.sys.unix]
|
||||
WINTTY=[-.win.tty]
|
||||
WINSHR=[-.win.share]
|
||||
WINTTY=[-.win.tty]
|
||||
WINCURS=[-.win.curses]
|
||||
WINX11=[-.win.X11]
|
||||
WINQT=[-.win.Qt]
|
||||
WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to src
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
LUASRCINCDIR=$(LUASRCDIR)
|
||||
#LUASRCINCDIR=SYS$COMMON:[LUA.INCLUDE]
|
||||
|
||||
#
|
||||
# If your compiler needs an appropriate switch to accept C99 code.
|
||||
# VSI C defaults to /STANDARD=relaxed which allows several C
|
||||
# dialects including C99.
|
||||
#
|
||||
# CSTD=/STANDARD=C99
|
||||
#
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS :=/INCLUDE=($(INCL),$(LUAINC)) /NAMES=(AS_IS) $(CSTD)
|
||||
CXXFLAGS = /INCLUDE_DIR=($(INCL),$(LUAINC)) /NAMES=(AS_IS)
|
||||
|
||||
# Link flags
|
||||
LFLAGS =
|
||||
|
||||
# external programs
|
||||
# MAKE = make
|
||||
CC = CC
|
||||
#touch :=SET FILE/TRUNCATE
|
||||
touch = append/New _NLA0:
|
||||
LINK = link
|
||||
RM = delete
|
||||
#TRUE uses an actual helper true.exe
|
||||
TRUE = true
|
||||
#FALSE uses an actual helper false.exe
|
||||
FALSE = false
|
||||
#ECHO uses an actual helper echo.exe
|
||||
ECHO = echo
|
||||
CXX ?= CXX
|
||||
MOC ?= moc
|
||||
MOCPATH ?= $(QTDIR)/bin/$(MOC)
|
||||
# The default is for the TARGET_* variables to match the defaults.
|
||||
# If we're cross-compiling these will get overridden elsewhere, likely via
|
||||
|
||||
MAKEDEFS = $(UTIL)makedefs
|
||||
|
||||
# Which version do we want to build? (XXX These are not used anywhere.)
|
||||
GUIDEBOOK = Guidebook # regular ASCII file
|
||||
#GUIDEBOOK = Guidebook.ps # PostScript file
|
||||
#GUIDEBOOK = Guidebook.dvi # TeX device-independent file
|
||||
|
||||
# Some versions of col need -x to keep them from converting spaces to tabs;
|
||||
# some versions of col don't do the conversion by default and don't
|
||||
# recognize the option. Sigh.
|
||||
COLCMD = col -bx
|
||||
#COLCMD = col -b
|
||||
|
||||
# The command to use to generate a PostScript file
|
||||
# PSCMD = ditroff | psdit
|
||||
PSCMD = groff
|
||||
|
||||
# Use the "cat" GUIDECMD if nroff and/or tbl and/or col are not installed
|
||||
# Not appropriate for creating Guidebook.txt.
|
||||
# GUIDECMD = cat Guidebook.txt
|
||||
#
|
||||
# Single page. Might need adjustment to .pl value
|
||||
# GUIDECMD= $(GUIDE_PREFORMAT) | perl -pe 's/^(.mt)$$/.pl 4720v\n.in 0\n.po 8\n.ll 64m\n$$1/' | nroff -c -Tascii | $(COLCMD)
|
||||
#
|
||||
GUIDECMD = $(GUIDE_PREFORMAT) | nroff -c -Tascii | $(COLCMD)
|
||||
ONEPAGECMD = $(ONEPAGE_PREFORMAT) | nroff -c -Tascii | $(COLCMD) \
|
||||
| sed -e '/EOF--EOF/,12345D'
|
||||
|
||||
# Only generate output for the current configuration:
|
||||
NHGREP = mcr $(MAKEDEFS) --grep --input - --output -
|
||||
NEEDMAKEDEFS = $(MAKEDEFS)
|
||||
# Generate output for all configurations:
|
||||
#NHGREP = mcr $(MAKEDEFS) --grep --input - --output - --grep-define ALLDOCS
|
||||
#NEEDMAKEDEFS = $(MAKEDEFS)
|
||||
# Fallback:
|
||||
#NHGREP = cat
|
||||
#NEEDMAKEDEFS =
|
||||
|
||||
GUIDEBOOK_MN_SRC = Guidebook.mn
|
||||
GUIDEBOOK_MN = $(GUIDEBOOK_MN_SRC)
|
||||
GUIDEBOOK_TEX_SRC = Guidebook.tex
|
||||
GUIDEBOOK_TEX = $(GUIDEBOOK_TEX_SRC)
|
||||
|
||||
GUIDE_PREFORMAT = cat $(GUIDEBOOK_MN) | $(NHGREP) | tbl tmac.n -
|
||||
# for Guidebook.dat, unpaginated version of Guidebook.txt
|
||||
ONEPAGE_PREFORMAT = cat Gbk-1pg-pfx.mn $(GUIDEBOOK_MN) Gbk-1pg-sfx.mn \
|
||||
| $(NHGREP) | tbl tmac.n -
|
||||
|
||||
# the basic guidebook
|
||||
Guidebook : $(GUIDEBOOK_MN) tmac.n tmac.nh $(NEEDMAKEDEFS)
|
||||
@echo disabled $@ on vms
|
||||
# $(GUIDECMD) > Guidebook
|
||||
|
||||
# Fancier output for those with ditroff, psdit and a PostScript printer.
|
||||
Guidebook.ps : $(GUIDEBOOK_MN) tmac.n tmac.nh $(NEEDMAKEDEFS)
|
||||
@echo disabled $@ on vms
|
||||
# $(GUIDE_PREFORMAT) | $(PSCMD) > Guidebook.ps
|
||||
|
||||
# Guidebook.tex is the same as Guidebook.mn but formatted with LaTeX.
|
||||
# - The invocation command for LaTeX may vary in different installations.
|
||||
# - To print Guidebook.dvi you need to use a suitable dvi-driver.
|
||||
# - LaTeX needs to be run twice; second pass uses Guidebook.aux made by first.
|
||||
Guidebook.dvi : $(GUIDEBOOK_TEX)
|
||||
@echo disabled $@ on vms
|
||||
# latex $(GUIDEBOOK_TEX)
|
||||
# latex $(GUIDEBOOK_TEX)
|
||||
|
||||
# makedefs has more dependencies than these; this is mainly to cope with the
|
||||
# case where it hasn't been built yet since it is usually needed for $(NHGREP)
|
||||
# (note: 'make makedefs', not 'make $(MAKEDEFS)')
|
||||
$(MAKEDEFS) : ../util/makedefs.c ../include/config.h ../src/mdlib.c \
|
||||
../util/mdgrep.h
|
||||
pipe set def $(UTIL) && make makedefs && set def [-.doc]
|
||||
|
||||
GAME = nethack
|
||||
MANDIR = /usr/man/man6
|
||||
MANEXT = 6
|
||||
|
||||
# manual installation for most BSD-style systems
|
||||
GAMEMANCREATE = cat nethack.6 | $(NHGREP) >
|
||||
RCVRMANCREATE = cat recover.6 | $(NHGREP) >
|
||||
DLBMANCREATE = cat dlb.6 | $(NHGREP) >
|
||||
MDMANCREATE = cat makedefs.6 | $(NHGREP) >
|
||||
# manual installation for most SYSV-style systems
|
||||
# GAMEMANCREATE = cat nethack.6 | $(NHGREP) | nroff -man - >
|
||||
# RCVRMANCREATE = cat recover.6 | $(NHGREP) | nroff -man - >
|
||||
# DLBMANCREATE = cat dlb.6 | $(NHGREP) | nroff -man - >
|
||||
# MDMANCREATE = cat makedefs.6 | $(NHGREP) | nroff -man - >
|
||||
|
||||
manpages:
|
||||
echo $@ disabled on VMS
|
||||
# -$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
|
||||
# -$(RCVRMANCREATE) $(MANDIR)/recover.$(MANEXT)
|
||||
# -$(DLBMANCREATE) $(MANDIR)/dlb.$(MANEXT)
|
||||
# -$(MDMANCREATE) $(MANDIR)/makedefs.$(MANEXT)
|
||||
|
||||
# manual creation for distribution
|
||||
DISTRIB = Guidebook.txt nethack.txt recover.txt \
|
||||
dlb.txt makedefs.txt
|
||||
|
||||
distrib: $(DISTRIB)
|
||||
echo $@ disabled on VMS
|
||||
# @echo "Plain text documentation is up to date."
|
||||
|
||||
Guidebook.txt : $(GUIDEBOOK_MN) tmac.n tmac.nh $(NEEDMAKEDEFS)
|
||||
echo $@ disabled on VMS
|
||||
# $(GUIDECMD) > $@
|
||||
Guidebook.dat : Gbk-1pg-pfx.mn Gbk-1pg-sfx.mn $(GUIDEBOOK_MN) tmac.n tmac.nh \
|
||||
$(NEEDMAKEDEFS)
|
||||
echo $@ disabled on VMS
|
||||
# $(ONEPAGECMD) > $@
|
||||
|
||||
MAN2TXT = $(NHGREP) | nroff -man - | $(COLCMD)
|
||||
nethack.txt : nethack.6
|
||||
echo $@ disabled on VMS
|
||||
# cat nethack.6 | $(MAN2TXT) > nethack.txt
|
||||
recover.txt : recover.6
|
||||
echo $@ disabled on VMS
|
||||
# cat recover.6 | $(MAN2TXT) > recover.txt
|
||||
dlb.txt : dlb.6
|
||||
echo $@ disabled on VMS
|
||||
# cat dlb.6 | $(MAN2TXT) > dlb.txt
|
||||
makedefs.txt : makedefs.6
|
||||
echo $@ disabled on VMS
|
||||
# cat makedefs.6 | $(MAN2TXT) > makedefs.txt
|
||||
|
||||
clean:
|
||||
-delete/log Guidebook.aux;*, Guidebook.log;*
|
||||
|
||||
spotless: clean
|
||||
-delete/log Guidebook.;*, Guidebook.dat;*, Guidebook.ps;*, \
|
||||
Guidebook.dvi;*
|
||||
832
sys/vms/Makefile_src.vms
Normal file
832
sys/vms/Makefile_src.vms
Normal file
@@ -0,0 +1,832 @@
|
||||
# NetHack 3.7 Makefile.src $NHDT-Date: 1654287121 2022/06/03 20:12:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.145 $
|
||||
# Copyright (c) 2024 by Michael Allison
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
#
|
||||
# OpenVMS GNU Makefile for OpenVMS 9.x and VSI C
|
||||
# with GNU Make V4.1 (or greater).
|
||||
#
|
||||
# Tested on x86_64 version of OpenVMS V9.2-1.
|
||||
#
|
||||
|
||||
# Root of source tree:
|
||||
NHSROOT=..
|
||||
|
||||
# If we're cross-compiling, a hints file will override this
|
||||
# to a unique target directory, but otherwise the obj files just go
|
||||
# into [-.src]
|
||||
TARGETPFX=
|
||||
|
||||
# relative directories from src
|
||||
DOC=[-.doc]
|
||||
DAT=[-.dat]
|
||||
INCL=[-.include]
|
||||
SRC=[-.src]
|
||||
UTIL=[-.util]
|
||||
SYSVMS=[-.sys.vms]
|
||||
SYSSHR=[-.sys.share]
|
||||
SYSUNIX=[-.sys.unix]
|
||||
WINTTY=[-.win.tty]
|
||||
WINSHR=[-.win.share]
|
||||
WINTTY=[-.win.tty]
|
||||
WINCURS=[-.win.curses]
|
||||
WINX11=[-.win.X11]
|
||||
WINQT=[-.win.Qt]
|
||||
WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
# Lua location relative to src
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
LUASRCINCDIR=$(LUASRCDIR)
|
||||
|
||||
#
|
||||
# If your compiler needs an appropriate switch to accept C99 code.
|
||||
# VSI C defaults to /STANDARD=relaxed which allows several C
|
||||
# dialects including C99.
|
||||
#
|
||||
# CSTD=/STANDARD=C99
|
||||
#
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS :=/INCLUDE=($(INCL),$(LUAINC)) /NAMES=(AS_IS) $(CSTD)
|
||||
CXXFLAGS = /INCLUDE_DIR=($(INCL),$(LUAINC)) /NAMES=(AS_IS)
|
||||
|
||||
# Link flags
|
||||
LFLAGS =
|
||||
|
||||
# external programs
|
||||
# MAKE = make
|
||||
CC = CC
|
||||
#touch :=SET FILE/TRUNCATE
|
||||
touch = append/New _NLA0:
|
||||
LINK = link
|
||||
RM = delete
|
||||
#TRUE uses an actual helper true.exe
|
||||
TRUE = true
|
||||
#FALSE uses an actual helper false.exe
|
||||
FALSE = false
|
||||
#ECHO uses an actual helper echo.exe
|
||||
ECHO = echo
|
||||
CXX ?= CXX
|
||||
MOC ?= moc
|
||||
MOCPATH ?= $(QTDIR)/bin/$(MOC)
|
||||
# The default is for the TARGET_* variables to match the defaults.
|
||||
# If we're cross-compiling these will get overridden elsewhere, likely via
|
||||
# a hints file. TARGETPFX was set above earlier.
|
||||
TARGET_CC = $(CC)
|
||||
TARGET_CFLAGS = $(CFLAGS)
|
||||
TARGET_LINK = $(LINK)
|
||||
TARGET_LFLAGS = $(LFLAGS)
|
||||
TARGET_CXX = $(CXX)
|
||||
TARGET_CXXFLAGS = $(CXXFLAGS)
|
||||
TARGET_LIBS = $(LIBS)
|
||||
|
||||
HACKLIB=hacklib.olb
|
||||
HACKLIBOBJLIST=hacklib.obj,[-.util]panic.obj
|
||||
|
||||
# Set SYSTEM target
|
||||
SYSTEM = SysVMS
|
||||
|
||||
comma:=,
|
||||
|
||||
# all .h files
|
||||
CONFIGBASEH := color config config1 patchlevel tradstdc hacklib integer \
|
||||
global coord vmsconf cstd nhlua unixconf \
|
||||
pcconf micro windconf warnings fnamesiz
|
||||
|
||||
HACKBASEH := hack lint align dungeon wintype sym defsym \
|
||||
mkroom artilist objclass objects youprop \
|
||||
prop permonst monattk monflag monsters \
|
||||
mondata context rm botl rect region trap \
|
||||
display vision seffects selvar sndprocs stairs decl \
|
||||
quest spell obj engrave you attrib monst \
|
||||
mextra skills timeout flag winprocs sys
|
||||
|
||||
CONFIG_H = $(addsuffix .h, $(addprefix $(INCL), $(CONFIGBASEH)))
|
||||
HACK_H = $(addsuffix .h, $(addprefix $(INCL), $(CONFIGBASEH) $(HACKBASEH)))
|
||||
|
||||
#QTn_H =
|
||||
# all .c that are part of the main NetHack program and are not
|
||||
# operating-system or windowing-system specific.
|
||||
# Do not include date.c in this list.
|
||||
HACKFILES := allmain alloc apply artifact attrib ball bones \
|
||||
botl calendar cmd coloratt dbridge decl detect dig display dlb do \
|
||||
do_name do_wear dog dogmove dokick dothrow drawing \
|
||||
dungeon eat end engrave exper explode extralev \
|
||||
files fountain getpos hack hacklib insight invent isaac64 light \
|
||||
lock mail makemon mcastu mdlib mhitm mhitu minion mklev \
|
||||
mkmap mkmaze mkobj mkroom mon \
|
||||
mondata monmove monst mplayer mthrowu muse music \
|
||||
nhlua nhlsel nhlobj objnam o_init objects \
|
||||
options pager pickup pline polyself potion pray \
|
||||
priest quest questpgr read rect region report restore \
|
||||
rip rnd role rumors save selvar sfstruct \
|
||||
shk shknam sit sounds \
|
||||
sp_lev spell stairs steal steed strutil symbols sys teleport \
|
||||
timeout topten track trap u_init utf8map \
|
||||
uhitm vault version vision weapon were wield \
|
||||
windows wizard wizcmds worm worn write zap
|
||||
|
||||
# the date file
|
||||
DATEFILES = date
|
||||
|
||||
# ---------------
|
||||
# platforms / OS
|
||||
# ---------------
|
||||
|
||||
# Files for sys.vms
|
||||
OPENVMSFILES = vmsfiles vmsmail vmsmisc vmstty vmsunix
|
||||
OPENVMSMAIN = vmsmain
|
||||
|
||||
# ---------------
|
||||
# window ports
|
||||
# ---------------
|
||||
|
||||
# files for a straight tty interface
|
||||
WINTTYFILES = getline termcap topl wintty
|
||||
|
||||
# Files for curses interface
|
||||
WINCURSESFILES = cursmain curswins cursmisc cursdial cursstat cursinit \
|
||||
cursmesg cursinvt
|
||||
|
||||
# Files for X11 interface
|
||||
WINX11FILES = Window dialogs winX winmap winmenu winmesg winmisc \
|
||||
winstat wintext winval
|
||||
|
||||
# Files for Qt interface
|
||||
WINQTFILES = qt_bind qt_click qt_clust qt_delay qt_glyph qt_icon qt_inv \
|
||||
qt_key qt_line qt_main qt_map qt_menu qt_msg qt_plsel qt_rip qt_set \
|
||||
qt_stat qt_str qt_streq qt_svsel qt_win qt_xcmd qt_yndlg
|
||||
|
||||
# shared win files
|
||||
#WINSHAREFILES = ioctl
|
||||
|
||||
#
|
||||
# Files for a Qt 4, Qt 5, or Qt 6 interface
|
||||
#
|
||||
# generated source files made by Qt's 'moc' program from $(WINQT)qt_*.h;
|
||||
# appended to WINQTSRC for use by 'make depend'
|
||||
# WINQTMOC = qt_kde0.moc qt_main.moc qt_map.moc qt_menu.moc qt_msg.moc \
|
||||
# qt_plsel.moc qt_set.moc qt_stat.moc qt_xcmd.moc qt_yndlg.moc
|
||||
# WINQTSRC = $(WINQT)qt_bind.cpp $(WINQT)qt_click.cpp \
|
||||
# $(WINQT)qt_clust.cpp $(WINQT)qt_delay.cpp \
|
||||
# $(WINQT)qt_glyph.cpp $(WINQT)qt_icon.cpp $(WINQT)qt_inv.cpp \
|
||||
# $(WINQT)qt_key.cpp $(WINQT)qt_line.cpp $(WINQT)qt_main.cpp \
|
||||
# $(WINQT)qt_map.cpp $(WINQT)qt_menu.cpp $(WINQT)qt_msg.cpp \
|
||||
# $(WINQT)qt_plsel.cpp $(WINQT)qt_rip.cpp $(WINQT)qt_set.cpp \
|
||||
# $(WINQT)qt_stat.cpp $(WINQT)qt_str.cpp $(WINQT)qt_streq.cpp \
|
||||
# $(WINQT)qt_svsel.cpp $(WINQT)qt_win.cpp $(WINQT)qt_xcmd.cpp \
|
||||
# $(WINQT)qt_yndlg.cpp $(WINQTMOC) tile.c
|
||||
# WINQTOBJ = $(TARGETPFX)qt_bind.o $(TARGETPFX)qt_click.o \
|
||||
# $(TARGETPFX)qt_clust.o $(TARGETPFX)qt_delay.o \
|
||||
# $(TARGETPFX)qt_glyph.o $(TARGETPFX)qt_icon.o \
|
||||
# $(TARGETPFX)qt_inv.o $(TARGETPFX)qt_key.o $(TARGETPFX)qt_line.o \
|
||||
# $(TARGETPFX)qt_main.o $(TARGETPFX)qt_map.o $(TARGETPFX)qt_menu.o \
|
||||
# $(TARGETPFX)qt_msg.o $(TARGETPFX)qt_plsel.o $(TARGETPFX)qt_rip.o \
|
||||
# $(TARGETPFX)qt_set.o $(TARGETPFX)qt_stat.o $(TARGETPFX)qt_str.o \
|
||||
# $(TARGETPFX)qt_streq.o $(TARGETPFX)qt_svsel.o $(TARGETPFX)qt_win.o \
|
||||
# $(TARGETPFX)qt_xcmd.o $(TARGETPFX)qt_yndlg.o #$(TARGETPFX)tile.o
|
||||
#
|
||||
|
||||
# -----------------
|
||||
# derived variables
|
||||
# -----------------
|
||||
|
||||
HACKSRC = $(addsuffix .c, $(addprefix $(SRC), $(HACKFILES)))
|
||||
DATESRC = $(addsuffix .c, $(addprefix $(SRC), $(DATEFILES)))
|
||||
VMSSRC = $(addsuffix .c, $(addprefix $(SYSVMS), $(OPENVMSFILES)))
|
||||
WINTTYSRC = $(addsuffix .c, $(addprefix $(WINTTY), $(WINTTYFILES)))
|
||||
WINCURSESSRC = $(addsuffix .c, $(addprefix $(WINCURS), $(WINCURSESFILES)))
|
||||
WINX11SRC = $(addsuffix .c, $(addprefix $(WINX11), $(WINX11FILES)))
|
||||
WINQTSRC = $(addsuffix .cpp, $(addprefix $(WINQT), $(WINQTFILES)))
|
||||
#WINSHARESRC = $(addsuffix .c, $(addprefix $(WINSHR), $(WINSHAREFILES)))
|
||||
MAINSRC = $(addsuffix .c, $(addprefix $(SYSVMS), $(OPENVMSMAIN)))
|
||||
|
||||
HACKOBJS = $(addsuffix .obj, $(HACKFILES))
|
||||
DATEOBJ = $(addsuffix .obj, $(DATEFILES))
|
||||
VMSOBJS = $(addsuffix .obj, $(OPENVMSFILES))
|
||||
WINTTYOBJS = $(addsuffix .obj, $(WINTTYFILES))
|
||||
#WINCURSESOBJS = $(addsuffix .obj, $(WINCURSESFILES))
|
||||
#WINX11OBJS = $(addsuffix .obj, $(WINX11FILES))
|
||||
#WINQTOBJS = $(addsuffix .obj, $(WINQTFILES))
|
||||
#WINSHAREOBJS = $(addsuffix .obj, $(WINSHAREFILES))
|
||||
MAINOBJ = $(addsuffix .obj, $(OPENVMSMAIN))
|
||||
|
||||
# file for regular expression matching
|
||||
#REGEXFILE ?= posixregex
|
||||
#REGEXOBJ ?= pmatchregex
|
||||
REGEXFILE ?= cppregex
|
||||
ifeq "$(REGEXFILE)" "cppregex"
|
||||
REGEXSRC = $(addsuffix .cpp, $(addprefix $(SYSSHR), $(REGEXFILE)))
|
||||
else
|
||||
REGEXSRC = $(addsuffix .c, $(addprefix $(SYSSHR), $(REGEXFILE)))
|
||||
endif
|
||||
REGEXOBJ = $(addsuffix .obj, $(REGEXFILE))
|
||||
|
||||
# file for termcap
|
||||
TERMCAPFILE ?= tclib
|
||||
TERMCAPSRC = $(addsuffix .c, $(addprefix $(SYSSHR), $(TERMCAPFILE)))
|
||||
TERMCAPOBJ = $(addsuffix .obj, $(TERMCAPFILE))
|
||||
|
||||
# if you defined RANDOM in unixconf.h since your system did not come
|
||||
# with a reasonable random number generator
|
||||
# RANDOBJ = $(TARGETPFX)random.obj
|
||||
#RANDOBJ =
|
||||
|
||||
LUABASESRC = lapi lauxlib lbaselib lcode lcorolib lctype ldblib \
|
||||
ldebug ldo ldump lfunc lgc linit liolib llex \
|
||||
lmathlib lmem loadlib lobject lopcodes loslib \
|
||||
lparser lstate lstring lstrlib ltable ltablib \
|
||||
ltm lundump lutf8lib lvm lzio
|
||||
#LUASRC = $(addsuffix .c, $(addprefix $(LUASRCDIR), $(LUABASESRC)))
|
||||
LUAOBJS = $(addsuffix .obj, $(LUABASESRC))
|
||||
LUALIBOBJS = $(addsuffix .obj$(comma), $(LUABASESRC))
|
||||
LUASPOTLESSOBJS = $(addsuffix .obj;*$(comma), $(LUABASESRC))
|
||||
|
||||
ALLSRC = $(HACKSRC) $(VMSSRC) $(WINTTYSRC) $(WINCURSESSRC) \
|
||||
$(WINX11SRC) $(WINQTSRC) $(WINSHARESRC) \
|
||||
$(REGEXSRC) $(TERMCAPSRC)
|
||||
#
|
||||
# $(TARGETPFX)date.o is not included in this list
|
||||
ALLOBJS = $(HACKOBJS) $(VMSOBJS) $(WINTTYOBJS) $(RANDOBJ) \
|
||||
$(WINCURSESOBJS) $(WINX11OBJS) $(WINQTOBJS) \
|
||||
$(WINSHAREOBJS) $(REGEXOBJ) $(TERMCAPOBJ)
|
||||
|
||||
GAME = nethack
|
||||
# GAME = nethack.prg
|
||||
GAMEBIN = $(GAME).exe
|
||||
|
||||
LINKOBJLIST = $(addsuffix $(comma), $(ALLOBJS))
|
||||
CLEANFILES = $(addsuffix ;*$(comma), $(ALLOBJS) $(MAINOBJ) \
|
||||
$(GAMEBIN)) \
|
||||
$(DATEOBJ);*
|
||||
SPOTLESSFILES = $(addsuffix ;*$(comma), $(LUASPOTLESSOBJS) \
|
||||
luaplaceholder.obj)
|
||||
|
||||
# rules
|
||||
%.obj: $(SRC)%.c
|
||||
$(CC) $(CFLAGS) $< /OBJECT=$@
|
||||
|
||||
%.obj: $(SYSVMS)%.c
|
||||
$(CC) $(CFLAGS) $< /OBJECT=$@
|
||||
|
||||
%.obj: $(SYSSHR)%.c
|
||||
$(CC) $(CFLAGS) $< /OBJECT=$@
|
||||
|
||||
%.obj: $(SYSSHR)%.cpp
|
||||
$(CXX) $(CXXFLAGS) $< -o $@
|
||||
|
||||
%.obj: $(LUASRCDIR)%.c
|
||||
$(CC) $(CFLAGS) /define=(LUA_USE_C89) $< /OBJECT=$@
|
||||
|
||||
# targets
|
||||
.PHONY: SysVMS all pregame $(GAME) clean spotless package
|
||||
.PHONY: tell-fetch-lua fetch-lua
|
||||
|
||||
# first target is also the default target for 'make' without any arguments
|
||||
all: $(GAME)
|
||||
@echo ""
|
||||
|
||||
pregame:
|
||||
$(PREGAME)
|
||||
|
||||
$(GAME): pregame $(HACKLIB) $(MAKEDEFS) $(LUALIB) $(WAVS) $(GAMEBIN)
|
||||
@echo "$(GAME) is up to date."
|
||||
|
||||
$(GAMEBIN): $(LUALIB) $(MAINOBJ) $(ALLOBJS) $(DATEOBJ)
|
||||
@echo "Linking $(GAME)."
|
||||
# @echo $(TARGET_LINK) $(TARGET_LFLAGS) $(MAINOBJ), \
|
||||
# $(LINKOBJLIST) $(DATEOBJ) \
|
||||
# /EXECUTABLE=$@ \
|
||||
# +sys$$common:[lua.lib]liblua.olb/library
|
||||
$(AT)$(TARGET_LINK) $(TARGET_LFLAGS) $(MAINOBJ), \
|
||||
$(LINKOBJLIST) $(DATEOBJ) \
|
||||
/EXECUTABLE=$@\
|
||||
+$(LUALIB)/library
|
||||
|
||||
hacklib.olb: $(HACKLIBOBJLIST)
|
||||
if f$$search("hacklib.olb").eqs."" then -
|
||||
library/create hacklib.olb/object
|
||||
library/insert/replace hacklib.olb $(HACKLIBOBJLIST)
|
||||
|
||||
#$(WINLIB) $(TARGET_LIBS) $(LUALIB)
|
||||
|
||||
$(INCL)nhlua.h:
|
||||
echo "/* nhlua.h - generated by Makefile.vms */" > $@
|
||||
@echo \#"include ""$(LUASRCINCDIR)lua.h""" >> $@
|
||||
@echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
|
||||
@echo \#"include ""$(LUASRCINCDIR)lualib.h""" >> $@
|
||||
@echo \#"include ""$(LUASRCINCDIR)lauxlib.h""" >> $@
|
||||
@echo "/*nhlua.h*/" >> $@
|
||||
|
||||
#$(INCL)nhlua.h:
|
||||
# echo "/* nhlua.h - generated by -vms9 */" > $@
|
||||
# @echo \#"include ""sys$$common:[lua.include]lua.h""" >> $@
|
||||
# @echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
|
||||
# @echo \#"include ""sys$$common:[lua.include]lualib.h""" >> $@
|
||||
# @echo \#"include ""sys$$common:[lua.include]lauxlib.h""" >> $@
|
||||
# @echo "/*nhlua.h*/" >> $@
|
||||
|
||||
$(LUALIB): [-.lib.lua]lua$(LUAVER).dir $(LUAOBJS) luaplaceholder.obj
|
||||
if f$$search("$(LUALIB)").eqs."" then library/create/obj $(LUALIB)
|
||||
library/insert/replace $(LUALIB) $(LUALIBOBJS) luaplaceholder.obj
|
||||
|
||||
|
||||
lapi.obj: $(LUASRCDIR)lapi.c
|
||||
lauxlib.obj: $(LUASRCDIR)lauxlib.c
|
||||
lbaselib.obj: $(LUASRCDIR)lbaselib.c
|
||||
lcode.obj: $(LUASRCDIR)lcode.c
|
||||
lcorolib.obj: $(LUASRCDIR)lcorolib.c
|
||||
lctype.obj: $(LUASRCDIR)lctype.c
|
||||
ldblib.obj: $(LUASRCDIR)ldblib.c
|
||||
ldebug.obj: $(LUASRCDIR)ldebug.c
|
||||
ldo.obj: $(LUASRCDIR)ldo.c
|
||||
ldump.obj: $(LUASRCDIR)ldump.c
|
||||
lfunc.obj: $(LUASRCDIR)lfunc.c
|
||||
lgc.obj: $(LUASRCDIR)lgc.c
|
||||
linit.obj: $(LUASRCDIR)linit.c
|
||||
liolib.obj: $(LUASRCDIR)liolib.c
|
||||
llex.obj: $(LUASRCDIR)llex.c
|
||||
lmathlib.obj: $(LUASRCDIR)lmathlib.c
|
||||
lmem.obj: $(LUASRCDIR)lmem.c
|
||||
loadlib.obj: $(LUASRCDIR)loadlib.c
|
||||
lobject.obj: $(LUASRCDIR)lobject.c
|
||||
lopcodes.obj: $(LUASRCDIR)lopcodes.c
|
||||
loslib.obj: $(LUASRCDIR)loslib.c
|
||||
lparser.obj: $(LUASRCDIR)lparser.c
|
||||
lstate.obj: $(LUASRCDIR)lstate.c
|
||||
lstring.obj: $(LUASRCDIR)lstring.c
|
||||
lstrlib.obj: $(LUASRCDIR)lstrlib.c
|
||||
ltable.obj: $(LUASRCDIR)ltable.c
|
||||
ltablib.obj: $(LUASRCDIR)ltablib.c
|
||||
ltm.obj: $(LUASRCDIR)ltm.c
|
||||
lundump.obj: $(LUASRCDIR)lundump.c
|
||||
lutf8lib.obj: $(LUASRCDIR)lutf8lib.c
|
||||
lvm.obj: $(LUASRCDIR)lvm.c
|
||||
lzio.obj: $(LUASRCDIR)lzio.c
|
||||
|
||||
#LUABASESRC = lapi lauxlib lbaselib lcode lcorolib lctype ldblib \
|
||||
# ldebug ldo ldump lfunc lgc linit liolib llex \
|
||||
# lmathlib lmem loadlib lobject lopcodes loslib \
|
||||
# lparser lstate lstring lstrlib ltable ltablib \
|
||||
# ltm lundump lutf8lib lvm lzio
|
||||
|
||||
|
||||
luaplaceholder.obj: luaplaceholder.c
|
||||
$(CC) $(CFLAGS) luaplaceholder.c /OBJECT=$@
|
||||
luaplaceholder.c:
|
||||
@echo int placeholder = 1; >luaplaceholder.c
|
||||
|
||||
[-.lib]lua.dir:
|
||||
create/directory [-.lib.lua]
|
||||
|
||||
[-]lib.dir:
|
||||
create/directory [-.lib]
|
||||
|
||||
[-.lib.lua]lua$(LUAVER).dir:
|
||||
@echo You need to make fetch-lua
|
||||
false
|
||||
|
||||
fetch-lua: [-]lib.dir [-.lib]lua.dir
|
||||
if f$$search("[-.lib.lua]lua$(LUAVER).tgz").eqs."" then \
|
||||
curl http://www.lua.org/ftp/lua-$(LUADOTVER).tar.gz \
|
||||
--output [-.lib.lua]lua$(LUAVER).tgz
|
||||
if f$$search("[-.lib.lua]lua$(LUAVER).tgz").nes."" then \
|
||||
gzip --force -d [-.lib.lua]lua$(LUAVER).tgz
|
||||
if f$$search("[-.lib.lua]lua$(LUAVER).tar").nes."" then \
|
||||
pipe set def [-.lib.lua] && \
|
||||
tar -xf lua$(LUAVER).tar && \
|
||||
set def [--.src]
|
||||
if (f$$search("[-.lib.lua]lua-$(LUAUNDERVER).DIR;1").nes."" \
|
||||
.AND. f$$search("[-.lib.lua]lua$(LUAVER).dir;1").eqs."") then \
|
||||
rename [-.lib.lua]lua-$(LUAUNDERVER).DIR;1 \
|
||||
[-.lib.lua]lua$(LUAVER).dir;1
|
||||
|
||||
tile.c: $(WINSHR)tilemap.c $(HACK_H)
|
||||
@( cd $(UTIL) ; $(MAKE) $(SRC)tile.c )
|
||||
|
||||
# date.c should be recompiled any time any of the source or include code
|
||||
# is modified.
|
||||
$(DATEOBJ): $(DATESRC) $(HACK_H) $(HACKCSRC) $(ALLOBJS)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(GITHASH) $(GITBRANCH) \
|
||||
/OBJECT=$@ $(DATESRC)
|
||||
|
||||
tags: $(CSOURCES)
|
||||
@echo ctags -tw ...
|
||||
@ctags -tw $(CSOURCES)
|
||||
@( cd $(INCL) ; ctags -tw $(HSOURCES) )
|
||||
@( cd $(UTIL) ; $(MAKE) tags )
|
||||
|
||||
clean:
|
||||
-delete/log $(CLEANFILES)
|
||||
|
||||
spotless: clean
|
||||
-delete/log $(SPOTLESSFILES) $(INCL)nhlua.h;*
|
||||
# -$(RM) $(GAMEBIN);*
|
||||
|
||||
package:
|
||||
@echo packaging complete (nothing to do).
|
||||
|
||||
# VMS-specific code
|
||||
vmsmain.obj: $(SYSVMS)vmsmain.c $(HACK_H) $(INCL)dlb.h
|
||||
vmstty.obj: $(SYSVMS)vmstty.c $(HACK_H) $(INCL)wintty.h \
|
||||
$(INCL)tcap.h
|
||||
vmsunix.obj: $(SYSVMS)vmsunix.c $(HACK_H)
|
||||
vmsmisc.obj: $(SYSVMS)vmsmisc.c $(SYSVMS)oldcrtl.c $(CONFIG_H)
|
||||
vmsfiles.obj: $(SYSVMS)vmsfiles.c $(CONFIG_H)
|
||||
vmsmail.obj: $(SYSVMS)vmsmail.c $(CONFIG_H) $(INCL)mail.h \
|
||||
$(INCL)wintype.h $(INCL)winprocs.h $(INCL)color.h
|
||||
|
||||
# DO NOT DELETE THIS LINE OR CHANGE ANYTHING BEYOND IT
|
||||
#
|
||||
$(TARGETPFX)pcmain.obj: $(SYSSHR)pcmain.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)pcmain.c
|
||||
$(TARGETPFX)pcsys.obj: $(SYSSHR)pcsys.c $(HACK_H) $(INCL)wintty.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)pcsys.c
|
||||
$(TARGETPFX)pctty.obj: $(SYSSHR)pctty.c $(HACK_H) $(INCL)wintty.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)pctty.c
|
||||
$(TARGETPFX)pcunix.obj: $(SYSSHR)pcunix.c $(HACK_H) $(INCL)wintty.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)pcunix.c
|
||||
$(TARGETPFX)pmatchregex.obj: $(SYSSHR)pmatchregex.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)pmatchregex.c
|
||||
$(TARGETPFX)posixregex.obj: $(SYSSHR)posixregex.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)posixregex.c
|
||||
$(TARGETPFX)random.obj: $(SYSSHR)random.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)random.c
|
||||
$(TARGETPFX)ioctl.obj: $(SYSSHR)ioctl.c $(HACK_H) $(INCL)tcap.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)ioctl.c
|
||||
$(TARGETPFX)unixtty.obj: $(SYSSHR)unixtty.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSSHR)unixtty.c
|
||||
$(TARGETPFX)unixmain.obj: $(SYSUNIX)unixmain.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSUNIX)unixmain.c
|
||||
$(TARGETPFX)unixunix.obj: $(SYSUNIX)unixunix.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSUNIX)unixunix.c
|
||||
$(TARGETPFX)unixres.obj: $(SYSUNIX)unixres.c $(CONFIG_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(SYSUNIX)unixres.c
|
||||
$(TARGETPFX)getline.obj: $(WINTTY)getline.c $(HACK_H) $(INCL)wintty.h \
|
||||
$(INCL)func_tab.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINTTY)getline.c
|
||||
$(TARGETPFX)termcap.obj: $(WINTTY)termcap.c $(HACK_H) $(INCL)wintty.h \
|
||||
$(INCL)tcap.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINTTY)termcap.c
|
||||
$(TARGETPFX)topl.obj: $(WINTTY)topl.c $(HACK_H) $(INCL)tcap.h \
|
||||
$(INCL)wintty.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINTTY)topl.c
|
||||
$(TARGETPFX)wintty.obj: $(WINTTY)wintty.c $(HACK_H) $(INCL)dlb.h \
|
||||
$(INCL)tcap.h $(INCL)wintty.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINTTY)wintty.c
|
||||
$(TARGETPFX)cursmain.obj: $(WINCURS)cursmain.c $(HACK_H) $(INCL)wincurs.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursmain.c
|
||||
$(TARGETPFX)curswins.obj: $(WINCURS)curswins.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)curswins.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)curswins.c
|
||||
$(TARGETPFX)cursmisc.obj: $(WINCURS)cursmisc.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursmisc.h \
|
||||
$(INCL)func_tab.h $(INCL)dlb.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursmisc.c
|
||||
$(TARGETPFX)cursdial.obj: $(WINCURS)cursdial.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursdial.h \
|
||||
$(INCL)func_tab.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursdial.c
|
||||
$(TARGETPFX)cursstat.obj: $(WINCURS)cursstat.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursstat.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursstat.c
|
||||
$(TARGETPFX)cursinit.obj: $(WINCURS)cursinit.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursinit.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursinit.c
|
||||
$(TARGETPFX)cursmesg.obj: $(WINCURS)cursmesg.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursmesg.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursmesg.c
|
||||
$(TARGETPFX)cursinvt.obj: $(WINCURS)cursinvt.c $(HACK_H) \
|
||||
$(INCL)wincurs.h $(WINCURS)cursinvt.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCURS)cursinvt.c
|
||||
$(TARGETPFX)Window.obj: $(WINX11)Window.c $(INCL)xwindowp.h \
|
||||
$(INCL)xwindow.h $(CONFIG_H) $(INCL)lint.h \
|
||||
$(INCL)winX.h $(INCL)color.h $(INCL)wintype.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)Window.c
|
||||
$(TARGETPFX)dialogs.obj: $(WINX11)dialogs.c $(CONFIG_H) $(INCL)lint.h \
|
||||
$(INCL)winX.h $(INCL)color.h $(INCL)wintype.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)dialogs.c
|
||||
$(TARGETPFX)winX.obj: $(WINX11)winX.c $(HACK_H) $(INCL)winX.h \
|
||||
$(INCL)dlb.h $(INCL)xwindow.h $(WINX11)nh72icon \
|
||||
$(WINX11)nh56icon $(WINX11)nh32icon
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winX.c
|
||||
$(TARGETPFX)winmap.obj: $(WINX11)winmap.c $(INCL)xwindow.h $(HACK_H) \
|
||||
$(INCL)dlb.h $(INCL)winX.h $(INCL)tile2x11.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winmap.c
|
||||
$(TARGETPFX)winmenu.obj: $(WINX11)winmenu.c $(HACK_H) $(INCL)winX.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winmenu.c
|
||||
$(TARGETPFX)winmesg.obj: $(WINX11)winmesg.c $(INCL)xwindow.h $(HACK_H) \
|
||||
$(INCL)winX.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winmesg.c
|
||||
$(TARGETPFX)winmisc.obj: $(WINX11)winmisc.c $(HACK_H) $(INCL)func_tab.h \
|
||||
$(INCL)winX.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winmisc.c
|
||||
$(TARGETPFX)winstat.obj: $(WINX11)winstat.c $(HACK_H) $(INCL)winX.h \
|
||||
$(INCL)xwindow.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winstat.c
|
||||
$(TARGETPFX)wintext.obj: $(WINX11)wintext.c $(HACK_H) $(INCL)winX.h \
|
||||
$(INCL)xwindow.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)wintext.c
|
||||
$(TARGETPFX)winval.obj: $(WINX11)winval.c $(HACK_H) $(INCL)winX.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(X11CFLAGS) /OBJECT=$@ $(WINX11)winval.c
|
||||
$(TARGETPFX)tile.obj: tile.c $(HACK_H)
|
||||
$(TARGETPFX)winshim.obj: $(WINSHIM)winshim.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINSHIM)winshim.c
|
||||
$(TARGETPFX)cppregex.obj: $(SYSSHR)cppregex.cpp $(CONFIG_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(SYSSHR)cppregex.cpp
|
||||
$(TARGETPFX)qt_bind.obj: $(WINQT)qt_bind.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_bind.h $(WINQT)qt_main.h \
|
||||
$(WINQT)qt_kde0.h $(WINQT)qt_click.h $(WINQT)qt_delay.h \
|
||||
$(WINQT)qt_xcmd.h $(WINQT)qt_key.h $(WINQT)qt_map.h \
|
||||
$(WINQT)qt_win.h $(WINQT)qt_clust.h $(WINQT)qt_menu.h \
|
||||
$(WINQT)qt_rip.h $(WINQT)qt_msg.h $(WINQT)qt_plsel.h \
|
||||
$(WINQT)qt_svsel.h $(WINQT)qt_set.h $(WINQT)qt_stat.h \
|
||||
$(WINQT)qt_icon.h $(WINQT)qt_streq.h $(WINQT)qt_line.h \
|
||||
$(WINQT)qt_yndlg.h $(WINQT)qt_str.h $(INCL)dlb.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_bind.cpp
|
||||
$(TARGETPFX)qt_click.obj: $(WINQT)qt_click.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_click.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_click.cpp
|
||||
$(TARGETPFX)qt_clust.obj: $(WINQT)qt_clust.cpp $(WINQT)qt_clust.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_clust.cpp
|
||||
$(TARGETPFX)qt_delay.obj: $(WINQT)qt_delay.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_delay.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_delay.cpp
|
||||
$(TARGETPFX)qt_glyph.obj: $(WINQT)qt_glyph.cpp $(HACK_H) \
|
||||
$(INCL)tile2x11.h $(WINQT)qt_pre.h $(WINQT)qt_post.h \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_bind.h $(WINQT)qt_main.h \
|
||||
$(WINQT)qt_kde0.h $(WINQT)qt_set.h $(WINQT)qt_inv.h \
|
||||
$(WINQT)qt_map.h $(WINQT)qt_win.h $(WINQT)qt_clust.h \
|
||||
$(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_glyph.cpp
|
||||
$(TARGETPFX)qt_icon.obj: $(WINQT)qt_icon.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_icon.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_icon.cpp
|
||||
$(TARGETPFX)qt_inv.obj: $(WINQT)qt_inv.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_inv.h $(WINQT)qt_glyph.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_set.h \
|
||||
$(WINQT)qt_bind.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_inv.cpp
|
||||
$(TARGETPFX)qt_key.obj: $(WINQT)qt_key.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_key.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_key.cpp
|
||||
$(TARGETPFX)qt_line.obj: $(WINQT)qt_line.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_line.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_line.cpp
|
||||
$(TARGETPFX)qt_main.obj: $(WINQT)qt_main.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_main.h $(WINQT)qt_kde0.h \
|
||||
qt_main.moc $(WINQT)qt_bind.h $(WINQT)qt_glyph.h \
|
||||
$(WINQT)qt_inv.h $(WINQT)qt_key.h $(WINQT)qt_map.h \
|
||||
$(WINQT)qt_win.h $(WINQT)qt_clust.h $(WINQT)qt_msg.h \
|
||||
$(WINQT)qt_set.h $(WINQT)qt_stat.h $(WINQT)qt_icon.h \
|
||||
$(WINQT)qt_str.h qt_kde0.moc $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_main.cpp
|
||||
$(TARGETPFX)qt_map.obj: $(WINQT)qt_map.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_map.h $(WINQT)qt_win.h \
|
||||
$(WINQT)qt_clust.h qt_map.moc $(WINQT)qt_click.h \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_set.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_map.cpp
|
||||
$(TARGETPFX)qt_menu.obj: $(WINQT)qt_menu.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_menu.h $(WINQT)qt_win.h \
|
||||
$(WINQT)qt_rip.h qt_menu.moc $(WINQT)qt_key.h \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_set.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_streq.h \
|
||||
$(WINQT)qt_line.h $(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_menu.cpp
|
||||
$(TARGETPFX)qt_msg.obj: $(WINQT)qt_msg.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_msg.h $(WINQT)qt_win.h \
|
||||
qt_msg.moc $(WINQT)qt_map.h $(WINQT)qt_clust.h \
|
||||
$(WINQT)qt_set.h $(WINQT)qt_bind.h $(WINQT)qt_main.h \
|
||||
$(WINQT)qt_kde0.h $(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_msg.cpp
|
||||
$(TARGETPFX)qt_plsel.obj: $(WINQT)qt_plsel.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_plsel.h qt_plsel.moc \
|
||||
$(WINQT)qt_bind.h $(WINQT)qt_main.h $(WINQT)qt_kde0.h \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_set.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_plsel.cpp
|
||||
$(TARGETPFX)qt_rip.obj: $(WINQT)qt_rip.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_rip.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_rip.cpp
|
||||
$(TARGETPFX)qt_set.obj: $(WINQT)qt_set.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_set.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h qt_set.moc \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_xcmd.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_set.cpp
|
||||
$(TARGETPFX)qt_stat.obj: $(WINQT)qt_stat.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_stat.h $(WINQT)qt_win.h \
|
||||
$(WINQT)qt_icon.h qt_stat.moc $(WINQT)qt_set.h \
|
||||
$(WINQT)qt_bind.h $(WINQT)qt_main.h $(WINQT)qt_kde0.h \
|
||||
$(WINQT)qt_str.h $(WINQT)qt_xpms.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_stat.cpp
|
||||
$(TARGETPFX)qt_str.obj: $(WINQT)qt_str.cpp $(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_str.cpp
|
||||
$(TARGETPFX)qt_streq.obj: $(WINQT)qt_streq.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_streq.h $(WINQT)qt_line.h \
|
||||
$(WINQT)qt_str.h $(WINQT)qt_set.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_streq.cpp
|
||||
$(TARGETPFX)qt_svsel.obj: $(WINQT)qt_svsel.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_svsel.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_str.h \
|
||||
$(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_svsel.cpp
|
||||
$(TARGETPFX)qt_win.obj: $(WINQT)qt_win.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_win.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_click.h \
|
||||
$(WINQT)qt_glyph.h $(WINQT)qt_inv.h $(WINQT)qt_key.h \
|
||||
$(WINQT)qt_icon.h $(WINQT)qt_map.h $(WINQT)qt_clust.h \
|
||||
$(WINQT)qt_menu.h $(WINQT)qt_rip.h $(WINQT)qt_msg.h \
|
||||
$(WINQT)qt_set.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_win.cpp
|
||||
$(TARGETPFX)qt_xcmd.obj: $(WINQT)qt_xcmd.cpp $(HACK_H) $(INCL)func_tab.h \
|
||||
$(WINQT)qt_pre.h $(WINQT)qt_post.h $(WINQT)qt_xcmd.h \
|
||||
qt_xcmd.moc $(WINQT)qt_key.h $(WINQT)qt_bind.h \
|
||||
$(WINQT)qt_main.h $(WINQT)qt_kde0.h $(WINQT)qt_set.h \
|
||||
$(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_xcmd.cpp
|
||||
$(TARGETPFX)qt_yndlg.obj: $(WINQT)qt_yndlg.cpp $(HACK_H) $(WINQT)qt_pre.h \
|
||||
$(WINQT)qt_post.h $(WINQT)qt_yndlg.h qt_yndlg.moc \
|
||||
$(WINQT)qt_key.h $(WINQT)qt_str.h $(QTn_H)
|
||||
$(TARGET_CXX) $(TARGET_CXXFLAGS) /OBJECT=$@ $(WINQT)qt_yndlg.cpp
|
||||
qt_kde0.moc: $(WINQT)qt_kde0.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_kde0.h
|
||||
qt_main.moc: $(WINQT)qt_main.h $(WINQT)qt_kde0.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_main.h
|
||||
qt_map.moc: $(WINQT)qt_map.h $(WINQT)qt_win.h $(WINQT)qt_clust.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_map.h
|
||||
qt_menu.moc: $(WINQT)qt_menu.h $(WINQT)qt_win.h $(WINQT)qt_rip.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_menu.h
|
||||
qt_msg.moc: $(WINQT)qt_msg.h $(WINQT)qt_win.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_msg.h
|
||||
qt_plsel.moc: $(WINQT)qt_plsel.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_plsel.h
|
||||
qt_set.moc: $(WINQT)qt_set.h $(WINQT)qt_bind.h $(WINQT)qt_main.h \
|
||||
$(WINQT)qt_kde0.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_set.h
|
||||
qt_stat.moc: $(WINQT)qt_stat.h $(WINQT)qt_win.h $(WINQT)qt_icon.h \
|
||||
$(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_stat.h
|
||||
qt_xcmd.moc: $(WINQT)qt_xcmd.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_xcmd.h
|
||||
qt_yndlg.moc: $(WINQT)qt_yndlg.h $(QTn_H)
|
||||
$(MOCPATH) /OBJECT=$@ $(WINQT)qt_yndlg.h
|
||||
$(TARGETPFX)tile.obj: tile.c $(HACK_H)
|
||||
$(TARGETPFX)wc_chainin.obj: $(WINCHAIN)wc_chainin.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCHAIN)wc_chainin.c
|
||||
$(TARGETPFX)wc_chainout.obj: $(WINCHAIN)wc_chainout.c $(HACK_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCHAIN)wc_chainout.c
|
||||
$(TARGETPFX)wc_trace.obj: $(WINCHAIN)wc_trace.c $(HACK_H) $(INCL)wintty.h \
|
||||
$(INCL)func_tab.h
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) /OBJECT=$@ $(WINCHAIN)wc_trace.c
|
||||
$(TARGETPFX)allmain.obj: allmain.c $(HACK_H)
|
||||
$(TARGETPFX)alloc.obj: alloc.c $(CONFIG_H)
|
||||
$(TARGETPFX)apply.obj: apply.c $(HACK_H)
|
||||
$(TARGETPFX)artifact.obj: artifact.c $(HACK_H) $(INCL)artifact.h
|
||||
$(TARGETPFX)attrib.obj: attrib.c $(HACK_H)
|
||||
$(TARGETPFX)ball.obj: ball.c $(HACK_H)
|
||||
$(TARGETPFX)bones.obj: bones.c $(HACK_H)
|
||||
$(TARGETPFX)botl.obj: botl.c $(HACK_H)
|
||||
$(TARGETPFX)cmd.obj: cmd.c $(HACK_H) $(INCL)func_tab.h
|
||||
$(TARGETPFX)dbridge.obj: dbridge.c $(HACK_H)
|
||||
$(TARGETPFX)decl.obj: decl.c $(HACK_H)
|
||||
$(TARGETPFX)detect.obj: detect.c $(HACK_H) $(INCL)artifact.h
|
||||
$(TARGETPFX)dig.obj: dig.c $(HACK_H)
|
||||
$(TARGETPFX)display.obj: display.c $(HACK_H)
|
||||
$(TARGETPFX)dlb.obj: dlb.c $(CONFIG_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)do.obj: do.c $(HACK_H)
|
||||
$(TARGETPFX)do_name.obj: do_name.c $(HACK_H)
|
||||
$(TARGETPFX)do_wear.obj: do_wear.c $(HACK_H)
|
||||
$(TARGETPFX)dog.obj: dog.c $(HACK_H)
|
||||
$(TARGETPFX)dogmove.obj: dogmove.c $(HACK_H) $(INCL)mfndpos.h
|
||||
$(TARGETPFX)dokick.obj: dokick.c $(HACK_H)
|
||||
$(TARGETPFX)dothrow.obj: dothrow.c $(HACK_H)
|
||||
$(TARGETPFX)drawing.obj: drawing.c $(CONFIG_H) $(INCL)color.h \
|
||||
$(INCL)rm.h $(INCL)objclass.h $(INCL)defsym.h \
|
||||
$(INCL)objects.h $(INCL)wintype.h $(INCL)sym.h
|
||||
$(TARGETPFX)dungeon.obj: dungeon.c $(HACK_H) $(INCL)dgn_file.h \
|
||||
$(INCL)dlb.h
|
||||
$(TARGETPFX)eat.obj: eat.c $(HACK_H)
|
||||
$(TARGETPFX)end.obj: end.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)engrave.obj: engrave.c $(HACK_H)
|
||||
$(TARGETPFX)exper.obj: exper.c $(HACK_H)
|
||||
$(TARGETPFX)explode.obj: explode.c $(HACK_H)
|
||||
$(TARGETPFX)extralev.obj: extralev.c $(HACK_H)
|
||||
$(TARGETPFX)files.obj: files.c $(HACK_H) $(INCL)dlb.h $(INCL)wintty.h \
|
||||
#zlib.h
|
||||
$(TARGETPFX)fountain.obj: fountain.c $(HACK_H)
|
||||
$(TARGETPFX)hack.obj: hack.c $(HACK_H)
|
||||
$(TARGETPFX)hacklib.obj: hacklib.c $(HACK_H)
|
||||
$(TARGETPFX)insight.obj: insight.c $(HACK_H)
|
||||
$(TARGETPFX)invent.obj: invent.c $(HACK_H)
|
||||
$(TARGETPFX)isaac64.obj: isaac64.c $(CONFIG_H) $(INCL)isaac64.h
|
||||
$(TARGETPFX)light.obj: light.c $(HACK_H)
|
||||
$(TARGETPFX)lock.obj: lock.c $(HACK_H)
|
||||
$(TARGETPFX)mail.obj: mail.c $(HACK_H) $(INCL)mail.h
|
||||
$(TARGETPFX)makemon.obj: makemon.c $(HACK_H)
|
||||
$(TARGETPFX)mcastu.obj: mcastu.c $(HACK_H)
|
||||
$(TARGETPFX)mdlib.obj: mdlib.c $(CONFIG_H) $(INCL)permonst.h \
|
||||
$(INCL)align.h $(INCL)monattk.h $(INCL)monflag.h \
|
||||
$(INCL)monsters.h $(INCL)objclass.h \
|
||||
$(INCL)defsym.h $(INCL)objects.h $(INCL)wintype.h \
|
||||
$(INCL)sym.h $(INCL)artilist.h $(INCL)dungeon.h \
|
||||
$(INCL)sndprocs.h $(INCL)seffects.h $(INCL)obj.h \
|
||||
$(INCL)monst.h $(INCL)mextra.h $(INCL)you.h \
|
||||
$(INCL)attrib.h $(INCL)prop.h $(INCL)skills.h \
|
||||
$(INCL)context.h $(INCL)flag.h $(INCL)dlb.h
|
||||
$(TARGETPFX)mhitm.obj: mhitm.c $(HACK_H) $(INCL)artifact.h
|
||||
$(TARGETPFX)mhitu.obj: mhitu.c $(HACK_H) $(INCL)artifact.h
|
||||
$(TARGETPFX)minion.obj: minion.c $(HACK_H)
|
||||
$(TARGETPFX)mklev.obj: mklev.c $(HACK_H)
|
||||
$(TARGETPFX)mkmap.obj: mkmap.c $(HACK_H) $(INCL)sp_lev.h
|
||||
$(TARGETPFX)mkmaze.obj: mkmaze.c $(HACK_H) $(INCL)sp_lev.h
|
||||
$(TARGETPFX)mkobj.obj: mkobj.c $(HACK_H)
|
||||
$(TARGETPFX)mkroom.obj: mkroom.c $(HACK_H)
|
||||
$(TARGETPFX)mon.obj: mon.c $(HACK_H) $(INCL)mfndpos.h
|
||||
$(TARGETPFX)mondata.obj: mondata.c $(HACK_H)
|
||||
$(TARGETPFX)monmove.obj: monmove.c $(HACK_H) $(INCL)mfndpos.h \
|
||||
$(INCL)artifact.h
|
||||
$(TARGETPFX)monst.obj: monst.c $(CONFIG_H) $(INCL)permonst.h \
|
||||
$(INCL)align.h $(INCL)monattk.h $(INCL)monflag.h \
|
||||
$(INCL)monsters.h $(INCL)wintype.h $(INCL)sym.h \
|
||||
$(INCL)defsym.h $(INCL)color.h
|
||||
$(TARGETPFX)mplayer.obj: mplayer.c $(HACK_H)
|
||||
$(TARGETPFX)mthrowu.obj: mthrowu.c $(HACK_H)
|
||||
$(TARGETPFX)muse.obj: muse.c $(HACK_H)
|
||||
$(TARGETPFX)music.obj: music.c $(HACK_H)
|
||||
$(TARGETPFX)nhlua.obj: nhlua.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)nhlsel.obj: nhlsel.c $(HACK_H) $(INCL)sp_lev.h
|
||||
$(TARGETPFX)nhlobj.obj: nhlobj.c $(HACK_H) $(INCL)sp_lev.h
|
||||
$(TARGETPFX)o_init.obj: o_init.c $(HACK_H)
|
||||
$(TARGETPFX)objects.obj: objects.c $(CONFIG_H) $(INCL)obj.h \
|
||||
$(INCL)prop.h $(INCL)skills.h $(INCL)color.h \
|
||||
$(INCL)objclass.h $(INCL)defsym.h $(INCL)objects.h
|
||||
$(TARGETPFX)objnam.obj: objnam.c $(HACK_H)
|
||||
$(TARGETPFX)options.obj: options.c $(CONFIG_H) $(INCL)objclass.h \
|
||||
$(INCL)defsym.h $(INCL)objects.h $(INCL)flag.h \
|
||||
$(HACK_H) $(INCL)tcap.h $(INCL)optlist.h
|
||||
$(TARGETPFX)pager.obj: pager.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)pickup.obj: pickup.c $(HACK_H)
|
||||
$(TARGETPFX)pline.obj: pline.c $(HACK_H)
|
||||
$(TARGETPFX)polyself.obj: polyself.c $(HACK_H)
|
||||
$(TARGETPFX)potion.obj: potion.c $(HACK_H)
|
||||
$(TARGETPFX)pray.obj: pray.c $(HACK_H)
|
||||
$(TARGETPFX)priest.obj: priest.c $(HACK_H) $(INCL)mfndpos.h
|
||||
$(TARGETPFX)quest.obj: quest.c $(HACK_H)
|
||||
$(TARGETPFX)questpgr.obj: questpgr.c $(HACK_H) $(INCL)dlb.h \
|
||||
$(INCL)wintty.h
|
||||
$(TARGETPFX)read.obj: read.c $(HACK_H)
|
||||
$(TARGETPFX)rect.obj: rect.c $(HACK_H)
|
||||
$(TARGETPFX)region.obj: region.c $(HACK_H)
|
||||
$(TARGETPFX)restore.obj: restore.c $(HACK_H) $(INCL)tcap.h
|
||||
$(TARGETPFX)rip.obj: rip.c $(HACK_H)
|
||||
$(TARGETPFX)rnd.obj: rnd.c $(HACK_H) $(INCL)isaac64.h
|
||||
$(TARGETPFX)role.obj: role.c $(HACK_H)
|
||||
$(TARGETPFX)rumors.obj: rumors.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)save.obj: save.c $(HACK_H)
|
||||
$(TARGETPFX)sfstruct.obj: sfstruct.c $(HACK_H)
|
||||
$(TARGETPFX)shk.obj: shk.c $(HACK_H)
|
||||
$(TARGETPFX)shknam.obj: shknam.c $(HACK_H)
|
||||
$(TARGETPFX)sit.obj: sit.c $(HACK_H) $(INCL)artifact.h
|
||||
$(TARGETPFX)sounds.obj: sounds.c $(HACK_H)
|
||||
$(TARGETPFX)sp_lev.obj: sp_lev.c $(HACK_H) $(INCL)sp_lev.h
|
||||
$(TARGETPFX)spell.obj: spell.c $(HACK_H)
|
||||
$(TARGETPFX)steal.obj: steal.c $(HACK_H)
|
||||
$(TARGETPFX)steed.obj: steed.c $(HACK_H)
|
||||
$(TARGETPFX)symbols.obj: symbols.c $(HACK_H) $(INCL)tcap.h
|
||||
$(TARGETPFX)sys.obj: sys.c $(HACK_H)
|
||||
$(TARGETPFX)teleport.obj: teleport.c $(HACK_H)
|
||||
$(TARGETPFX)timeout.obj: timeout.c $(HACK_H)
|
||||
$(TARGETPFX)topten.obj: topten.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)track.obj: track.c $(HACK_H)
|
||||
$(TARGETPFX)trap.obj: trap.c $(HACK_H)
|
||||
$(TARGETPFX)u_init.obj: u_init.c $(HACK_H)
|
||||
$(TARGETPFX)utf8map.obj: utf8map.c $(HACK_H)
|
||||
$(TARGETPFX)uhitm.obj: uhitm.c $(HACK_H)
|
||||
$(TARGETPFX)vault.obj: vault.c $(HACK_H)
|
||||
$(TARGETPFX)version.obj: version.c $(HACK_H) $(INCL)dlb.h
|
||||
$(TARGETPFX)vision.obj: vision.c $(HACK_H)
|
||||
$(TARGETPFX)weapon.obj: weapon.c $(HACK_H)
|
||||
$(TARGETPFX)were.obj: were.c $(HACK_H)
|
||||
$(TARGETPFX)wield.obj: wield.c $(HACK_H)
|
||||
$(TARGETPFX)windows.obj: windows.c $(HACK_H) $(INCL)dlb.h $(INCL)wintty.h
|
||||
$(TARGETPFX)wizard.obj: wizard.c $(HACK_H)
|
||||
$(TARGETPFX)worm.obj: worm.c $(HACK_H)
|
||||
$(TARGETPFX)worn.obj: worn.c $(HACK_H)
|
||||
$(TARGETPFX)write.obj: write.c $(HACK_H)
|
||||
$(TARGETPFX)zap.obj: zap.c $(HACK_H)
|
||||
# DEPENDENCIES MUST END AT END OF FILE
|
||||
# IF YOU PUT STUFF HERE IT WILL GO AWAY
|
||||
438
sys/vms/Makefile_top.vms
Normal file
438
sys/vms/Makefile_top.vms
Normal file
@@ -0,0 +1,438 @@
|
||||
# NetHack Top-level Makefile.
|
||||
# NetHack 3.7 Makefile.vms $NHDT-Date: 1642630921 2022/01/19 22:22:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.72 $
|
||||
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
# Root of source tree: (Note: dot is after setup.sh has been used
|
||||
# to create the active Makefiles from sys/unix/Makefile.*.
|
||||
# It isn't sys/unix/ where you might happen to be reading this.)
|
||||
NHSROOT=[]
|
||||
|
||||
# Newer makes predefine $(MAKE) to 'make' and do smarter processing
|
||||
# of recursive make calls if $(MAKE) is used.
|
||||
# These makes allow $(MAKE) to be overridden by the environment if
|
||||
# someone wants to (or has to) use something other than the standard
|
||||
# make, so we do not want to unconditionally set $(MAKE) here.
|
||||
#
|
||||
# Unfortunately, some older makes do not predefine $(MAKE); if you
|
||||
# have one of these, uncomment the following line.
|
||||
# (You will know that you have one if you get complaints about unable
|
||||
# to execute things like 'data' and 'rumors'.)
|
||||
# MAKE = make
|
||||
|
||||
|
||||
# NetHack 3.7 Makefile.vms $NHDT-Date: 1654287121 2022/06/03 20:12:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.145 $
|
||||
# Copyright (c) 2023 by Michael Allison
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
#
|
||||
# OpenVMS GNU Makefile for OpenVMS 9.x and VSI C
|
||||
# with GNU Make V4.1 (or greater).
|
||||
#
|
||||
# Tested on x86_64 version of OpenVMS V9.2-1.
|
||||
#
|
||||
|
||||
# Root of source tree:
|
||||
NHSROOT=
|
||||
|
||||
# relative directories from top
|
||||
DOC=[.doc]
|
||||
DAT=[.dat]
|
||||
INCL=[.include]
|
||||
SRC=[.src]
|
||||
UTIL=[.util]
|
||||
LIB=[.lib]
|
||||
SYSVMS=[.sys.vms]
|
||||
SYSSHR=[.sys.share]
|
||||
SYSUNIX=[.sys.unix]
|
||||
WINTTY=[.win.tty]
|
||||
WINSHR=[.win.share]
|
||||
WINTTY=[.win.tty]
|
||||
WINCURS=[.win.curses]
|
||||
WINX11=[.win.X11]
|
||||
WINQT=[.win.Qt]
|
||||
WINSHIM=[.win.shim]
|
||||
WINCHAIN=[.win.chain]
|
||||
|
||||
# Lua macros
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAINC=[.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[.lib.lua.lua$(LUAVER).src]
|
||||
LUASRCINCDIR=$(LUASRCDIR)
|
||||
LUATESTTARGET = $(LUAINC)lua.h
|
||||
LUABASELIB = liblua-$(LUADOTVER).olb
|
||||
|
||||
# make NetHack (as opposite to variants or such)
|
||||
#PREFIX = /usr
|
||||
GAME = nethack
|
||||
# GAME = nethack.exe
|
||||
# GAME = nethack.prg
|
||||
#GAMEUID = games
|
||||
#GAMEGRP = bin
|
||||
|
||||
# Permissions - some places use setgid instead of setuid, for instance.
|
||||
# See also the option "SECURE" in include/config.h.
|
||||
#GAMEPERM = 04755
|
||||
FILEPERM = 0644
|
||||
# VARFILEPERM = 0644
|
||||
EXEPERM = 0755
|
||||
DIRPERM = 0755
|
||||
# VARDIRPERM = 0755
|
||||
|
||||
# VARDIR may also appear in unixconf.h as "VAR_PLAYGROUND" else HACKDIR
|
||||
#
|
||||
# Note well! 'make install' believes in creating a nice tidy HACKDIR
|
||||
# for installation, free of debris from previous NetHack versions --
|
||||
# therefore there should not be anything in HACKDIR that you want to
|
||||
# keep (if there is, you'll have to do the installation by hand or
|
||||
# modify the install commands below).
|
||||
#HACKDIR = $(PREFIX)/games/lib/$(GAME)dir
|
||||
#VARDIR = $(HACKDIR)
|
||||
# Where nethack.sh is installed (as 'nethack').
|
||||
# If this is not defined, the shell wrapper script is not used.
|
||||
#SHELLDIR = $(PREFIX)/games
|
||||
|
||||
# Extra data files depending upon the interface(s) built into nethack.
|
||||
# per discussion in Install.X11 and Install.Qt
|
||||
# Qt prefers nhtiles.bmp but can use x11tiles, and it ignores NetHack.ad.
|
||||
# X11 uses those last two.
|
||||
# Both can display a convential text map instead of tiles.
|
||||
# tty and/or curses (no extra data files outside of the dlb container):
|
||||
#VARDATND =
|
||||
# All X11 and/or Qt variations may also include tty or curses or both):
|
||||
# X11 without Qt:
|
||||
# VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm
|
||||
# X11 with GRAPHIC_TOMBSTONE (requires 'xpm'):
|
||||
# VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm
|
||||
# both X11 and Qt:
|
||||
# VARDATND = x11tiles nhtiles.bmp NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm
|
||||
# Qt without X11; assumes GRAPHIC_TOMBSTONE:
|
||||
# VARDATND = nhtiles.bmp pet_mark.xbm pilemark.xbm rip.xpm
|
||||
|
||||
VARDATD = bogusmon data engrave epitaph oracles options quest.lua rumors
|
||||
VARDAT = $(VARDATD) $(VARDATND)
|
||||
|
||||
# Some versions of make use the SHELL environment variable as the
|
||||
# shell for running commands. We need this to be a Bourne shell.
|
||||
# SHELL = /bin/sh
|
||||
# for Atari (obsolete)
|
||||
# SHELL=E:/GEMINI2/MUPFEL.TTP
|
||||
|
||||
# Commands for setting the owner and group on files during installation.
|
||||
# Some systems fail with one or the other when installing over NFS or for
|
||||
# other permission-related reasons. If that happens, you may want to set the
|
||||
# command to "true", which is a no-op. Note that disabling chown or chgrp
|
||||
# will only work if setuid (or setgid) behavior is not desired or required.
|
||||
#CHOWN = chown
|
||||
#CHGRP = chgrp
|
||||
|
||||
#
|
||||
# end of configuration
|
||||
#
|
||||
|
||||
DATHELP = help hh cmdhelp keyhelp history opthelp optmenu usagehlp wizhelp
|
||||
|
||||
SPEC_LEVS = asmodeus.lua baalz.lua bigrm-*.lua castle.lua fakewiz?.lua \
|
||||
juiblex.lua knox.lua medusa-?.lua minend-?.lua minefill.lua \
|
||||
minetn-?.lua oracle.lua orcus.lua sanctum.lua soko?-?.lua \
|
||||
tower?.lua valley.lua wizard?.lua nhcore.lua nhlib.lua themerms.lua \
|
||||
astral.lua air.lua earth.lua fire.lua water.lua hellfill.lua tut-?.lua
|
||||
QUEST_LEVS = ???-goal.lua ???-fil?.lua ???-loca.lua ???-strt.lua
|
||||
|
||||
DATNODLB = $(VARDATND) license symbols
|
||||
DATDLB = $(DATHELP) dungeon.lua tribute $(SPEC_LEVS) $(QUEST_LEVS) $(VARDATD)
|
||||
DODAT = $(DATNODLB) $(DATDLB)
|
||||
|
||||
ALLDEP = $(GAME) recover Guidebook $(VARDAT) spec_levs check-dlb
|
||||
|
||||
# first target is also the default target for 'make' without any arguments
|
||||
all: $(ALLDEP)
|
||||
pipe true
|
||||
@echo "Done."
|
||||
|
||||
$(GAME): lua_support
|
||||
pipe set default $(SRC) && $(MAKE) LUA_VERSION=$(LUADOTVER) $(GAME) \
|
||||
&& set def [-]
|
||||
|
||||
lua_support: [.include]nhlua.h
|
||||
@true
|
||||
|
||||
# Note: many of the dependencies below are here to allow parallel make
|
||||
# to generate valid output
|
||||
|
||||
Guidebook:
|
||||
pipe set def $(DOC) && $(MAKE) Guidebook && set def [-]
|
||||
|
||||
Guidebook.txt:
|
||||
pipe set def $(DOC) && $(MAKE) Guidebook.txt && set def [-]
|
||||
|
||||
Guidebook.pdf:
|
||||
pipe set def $(DOC) && $(MAKE) Guidebook.pdf && set def [-]
|
||||
|
||||
manpages:
|
||||
pipe set def $(DOC) && $(MAKE) manpages && set def [-]
|
||||
|
||||
data: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) data && set def [-]
|
||||
|
||||
engrave: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) engrave && set def [-]
|
||||
|
||||
bogusmon: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) bogusmon && set def [-]
|
||||
|
||||
epitaph: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) epitaph && set def [-]
|
||||
|
||||
rumors: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) rumors && set def [-]
|
||||
|
||||
oracles: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) oracles && set def [-]
|
||||
|
||||
# Note: options should have already been made with make, but...
|
||||
options: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) options && set def [-]
|
||||
|
||||
quest.lua: $(GAME)
|
||||
|
||||
spec_levs:
|
||||
pipe set def $(DAT) && $(MAKE) spec_levs && set def [-]
|
||||
pipe set def $(DAT) && $(MAKE) quest_levs && set def [-]
|
||||
|
||||
nhtiles.bmp: $(GAME)
|
||||
pipe set def $(UTIL) && $(MAKE) tile2bmp && set def [-]
|
||||
pipe set def $(DAT) && $(MAKE) nhtiles.bmp && set def [-]
|
||||
|
||||
x11tiles: $(GAME)
|
||||
pipe set def $(UTIL) && $(MAKE) tile2x11 && set def [-]
|
||||
pipe set def $(DAT) && $(MAKE) x11tiles && set def [-]
|
||||
|
||||
NetHack.ad: $(GAME)
|
||||
pipe set def $(DAT) && $(MAKE) NetHack.ad && set def [-]
|
||||
|
||||
pet_mark.xbm:
|
||||
pipe set def $(DAT) && $(MAKE) pet_mark.xbm && set def [-]
|
||||
|
||||
pilemark.xbm:
|
||||
pipe set def $(DAT) && $(MAKE) pilemark.xbm && set def [-]
|
||||
|
||||
rip.xpm:
|
||||
pipe set def $(DAT) && $(MAKE) rip.xpm && set def [-]
|
||||
|
||||
mapbg.xpm:
|
||||
pipe set def $(DAT) && $(MAKE) mapbg.xpm && set def [-]
|
||||
|
||||
nhsplash.xpm:
|
||||
pipe set def $(DAT) && $(MAKE) nhsplash.xpm && set def [-]
|
||||
|
||||
nh16.img: $(GAME)
|
||||
pipe set def $(UTIL) && $(MAKE) tile2img.ttp && set def [-]
|
||||
pipe set def $(DAT) && $(MAKE) nh16.img && set def [-]
|
||||
|
||||
rip.img:
|
||||
pip set def $(UTIL) && $(MAKE) xpm2img.ttp && set def [-]
|
||||
pipe set def $(DAT) && $(MAKE) rip.img && set def [-]
|
||||
GEM_RSC.RSC:
|
||||
pipe set def $(DAT) && $(MAKE) GEM_RSC.RSC && set def [-]
|
||||
|
||||
title.img:
|
||||
pipe set def $(DAT) && $(MAKE) title.img && set def [-]
|
||||
|
||||
check-dlb: options
|
||||
echo disabled $@
|
||||
# @if egrep -s librarian dat/options ; then $(MAKE) dlb ; else true ; fi
|
||||
|
||||
dlb:
|
||||
pipe set def $(UTIL) && $(MAKE) dlb && set def [-]
|
||||
pipe set def $(DAT) && LC_ALL=C && mcr [-.util]dlb cf nhdat $(DATDLB) \
|
||||
&& set def [-]
|
||||
|
||||
wasm:
|
||||
pipe set def $(SRC) && \
|
||||
$(MAKE) CROSS_TO_WASM=1 [-.targets.wasm]nethack.js && \
|
||||
set def [-]
|
||||
|
||||
package: $(GAME) recover $(VARDAT) spec_levs
|
||||
pipe set def $(SRC) && $(MAKE) $(PACKAGE) && set def [-]
|
||||
|
||||
# recover can be used when INSURANCE is defined in include/config.h
|
||||
# and the checkpoint option is true
|
||||
recover: $(GAME)
|
||||
pipe set def $(UTIL) && $(MAKE) recover && set def [-]
|
||||
|
||||
dofiles:
|
||||
echo disabled $@
|
||||
# target=`sed -n \
|
||||
# -e '/librarian/{' \
|
||||
# -e 's/.*/dlb/p' \
|
||||
# -e 'q' \
|
||||
# -e '}' \
|
||||
# -e '$$s/.*/nodlb/p' < dat/options` ; \
|
||||
# $(MAKE) dofiles-$${target-nodlb}
|
||||
# cp src/$(GAME) $(INSTDIR)
|
||||
# cp util/recover $(INSTDIR)
|
||||
# -if test -n '$(SHELLDIR)'; then rm -f $(SHELLDIR)/$(GAME); fi
|
||||
# if test -n '$(SHELLDIR)'; then \
|
||||
# sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \
|
||||
# -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
|
||||
# < sys/unix/nethack.sh \
|
||||
# > $(SHELLDIR)/$(GAME) ; fi
|
||||
# set up their permissions
|
||||
# -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(GAME) recover ; \
|
||||
# $(CHGRP) $(GAMEGRP) $(GAME) recover )
|
||||
# chmod $(GAMEPERM) $(INSTDIR)/$(GAME)
|
||||
# chmod $(EXEPERM) $(INSTDIR)/recover
|
||||
# -if test -n '$(SHELLDIR)'; then \
|
||||
# $(CHOWN) $(GAMEUID) $(SHELLDIR)/$(GAME); fi
|
||||
# if test -n '$(SHELLDIR)'; then \
|
||||
# $(CHGRP) $(GAMEGRP) $(SHELLDIR)/$(GAME); \
|
||||
# chmod $(EXEPERM) $(SHELLDIR)/$(GAME); fi
|
||||
|
||||
dofiles-dlb: check-dlb
|
||||
pipe set def $(DAT) && copy nhdat $(DATNODLB) $(INSTDIR) && \
|
||||
set def [-]
|
||||
# set up their permissions
|
||||
# -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) nhdat $(DATNODLB) ; \
|
||||
# $(CHGRP) $(GAMEGRP) nhdat $(DATNODLB) ; \
|
||||
# chmod $(FILEPERM) nhdat $(DATNODLB) )
|
||||
|
||||
dofiles-nodlb:
|
||||
# copy over the game files
|
||||
pipe set def $(DAT) && copy $(DAT) $(INSTDIR) && \
|
||||
set def [-]
|
||||
# set up their permissions
|
||||
# -( cd $(INSTDIR) ; $(CHOWN) $(GAMEUID) $(DAT) ; \
|
||||
# $(CHGRP) $(GAMEGRP) $(DAT) ; \
|
||||
# chmod $(FILEPERM) $(DAT) )
|
||||
#
|
||||
# This is not part of the dependency build hierarchy.
|
||||
# It requires an explicit "make fetch-Lua".
|
||||
|
||||
$(INCL)nhlua.h:
|
||||
echo "/* nhlua.h - generated by top-level Makefile.vms */" > $@
|
||||
@echo \#"include ""lua.h""" >> $@
|
||||
@echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
|
||||
@echo \#"include ""lualib.h""" >> $@
|
||||
@echo \#"include ""lauxlib.h""" >> $@
|
||||
@echo "/*nhlua.h*/" >> $@
|
||||
|
||||
[.lib]lua.dir:
|
||||
create/directory [.lib.lua]
|
||||
|
||||
[]lib.dir:
|
||||
create/directory [.lib]
|
||||
|
||||
[.lib.lua]lua$(LUAVER).dir:
|
||||
@echo You need to make fetch-lua
|
||||
false
|
||||
|
||||
fetch-lua: []lib.dir [.lib]lua.dir
|
||||
if f$$search("[.lib.lua]lua$(LUAVER).tgz").eqs."" then \
|
||||
curl http://www.lua.org/ftp/lua-$(LUADOTVER).tar.gz \
|
||||
--output [.lib.lua]lua$(LUAVER).tgz
|
||||
if f$$search("[.lib.lua]lua$(LUAVER).tgz").nes."" then \
|
||||
gzip --force -d [.lib.lua]lua$(LUAVER).tgz
|
||||
if f$$search("[.lib.lua]lua$(LUAVER).tar").nes."" then \
|
||||
pipe set def [.lib.lua] && \
|
||||
tar -xf lua$(LUAVER).tar && \
|
||||
set def [--]
|
||||
if (f$$search("[.lib.lua]lua-$(LUAUNDERVER).DIR;1").nes."" \
|
||||
.AND. f$$search("[.lib.lua]lua$(LUAVER).dir;1").eqs."") then \
|
||||
rename [.lib.lua]lua-$(LUAUNDERVER).DIR;1 \
|
||||
[.lib.lua]lua$(LUAVER).dir;1
|
||||
# remove [.include]nhlua.h in case it was created for some other Lua version
|
||||
@pipe if f$$search("[.include]nhlua.h").nes."" then \
|
||||
delete [.include]nhlua.h;* && echo 'delete [.include]nhlua.h;*'
|
||||
|
||||
# 'make update' can be used to install a revised version after making
|
||||
# customizations or such. Unlike 'make install', it doesn't delete everything
|
||||
# from the target directory to have a clean start.
|
||||
update: $(GAME) recover $(VARDAT) spec_levs
|
||||
echo disabled $@
|
||||
# (don't yank the old version out from under people who're playing it)
|
||||
# -mv $(INSTDIR)/$(GAME) $(INSTDIR)/$(GAME).old
|
||||
# -mv $(INSTDIR)/nhdat $(INSTDIR)/nhdat.old
|
||||
# set up new versions of the game files
|
||||
# ( $(MAKE) dofiles )
|
||||
# should already be present, but make sure
|
||||
# touch $(VARDIR)/perm $(VARDIR)/record
|
||||
# and a reminder
|
||||
# @echo You may also want to install the man pages via the doc Makefile.
|
||||
|
||||
rootcheck:
|
||||
@true; $(ROOTCHECK)
|
||||
|
||||
install: rootcheck $(GAME) recover $(VARDAT) spec_levs
|
||||
true; $(PREINSTALL)
|
||||
echo disabled $@
|
||||
# set up the directories
|
||||
# not all mkdirs have -p; those that don't will create a -p directory
|
||||
# -if test -n '$(SHELLDIR)'; then \
|
||||
# mkdir -p $(SHELLDIR); fi
|
||||
# rm -rf $(INSTDIR) $(VARDIR)
|
||||
# -mkdir -p $(INSTDIR) $(VARDIR) $(VARDIR)/save
|
||||
# if test -d ./-p; then rmdir ./-p; fi
|
||||
# -$(CHOWN) $(GAMEUID) $(INSTDIR) $(VARDIR) $(VARDIR)/save
|
||||
# $(CHGRP) $(GAMEGRP) $(INSTDIR) $(VARDIR) $(VARDIR)/save
|
||||
# order counts here:
|
||||
# chmod $(DIRPERM) $(INSTDIR)
|
||||
# chmod $(VARDIRPERM) $(VARDIR) $(VARDIR)/save
|
||||
# set up the game files
|
||||
# ( $(MAKE) dofiles )
|
||||
# set up some additional files
|
||||
# touch $(VARDIR)/perm $(VARDIR)/record $(VARDIR)/logfile $(VARDIR)/xlogfile \
|
||||
# $(VARDIR)/livelog
|
||||
# -( cd $(VARDIR) ; $(CHOWN) $(GAMEUID) perm record logfile xlogfile livelog ; \
|
||||
# $(CHGRP) $(GAMEGRP) perm record logfile xlogfile livelog ; \
|
||||
# chmod $(VARFILEPERM) perm record logfile xlogfile livelog )
|
||||
# true; $(POSTINSTALL)
|
||||
# and a reminder
|
||||
# @echo You may also want to reinstall the man pages via the doc Makefile.
|
||||
|
||||
|
||||
# 'make clean' removes all the .o files, but leaves around all the executables
|
||||
# and compiled data files
|
||||
#clean: clean-lib clean-keep-lib
|
||||
# @true
|
||||
|
||||
clean-lib:
|
||||
# -pipe set def $(LUASRCDIR) && $(MAKE) clean && set def [--.util]
|
||||
|
||||
clean-keep-lib:
|
||||
# ( cd src ; $(MAKE) clean )
|
||||
# ( cd util ; $(MAKE) clean )
|
||||
# pipe set def $(DAT) $(MAKE) clean && set def [-.util]
|
||||
# ( cd doc ; $(MAKE) clean )
|
||||
|
||||
spotless-lib:: clean-lib
|
||||
-( cd lib/lua && rm $(LUABASELIB) )
|
||||
|
||||
spotless-keep-lib: clean-keep-lib
|
||||
# ( cd src ; $(MAKE) spotless )
|
||||
# ( cd util ; $(MAKE) spotless )
|
||||
# pipe set def $(DAT) && $(MAKE) spotless && set def [-]
|
||||
# ( cd doc ; $(MAKE) spotless )
|
||||
spotless-clean-submodule:
|
||||
@( if test -f submodules/lua/lua.h ; then \
|
||||
git submodule deinit submodules/lua ; fi )
|
||||
|
||||
clean:
|
||||
pipe set def $(DAT) && $(MAKE) clean && set def [-]
|
||||
pipe set def $(SRC) && $(MAKE) clean && set def [-]
|
||||
pipe set def $(UTIL) && $(MAKE) clean && set def [-]
|
||||
pipe set def $(DOC) && $(MAKE) clean && set def [-]
|
||||
|
||||
# -delete/log $(CLEANFILES)
|
||||
|
||||
spotless: clean
|
||||
pipe set def $(DAT) && $(MAKE) spotless && set def [-]
|
||||
pipe set def $(SRC) && $(MAKE) spotless && set def [-]
|
||||
pipe set def $(UTIL) && $(MAKE) spotless && set def [-]
|
||||
pipe set def $(DOC) && $(MAKE) spotless && set def [-]
|
||||
-delete/log $(SPOTLESSFILES) $(INCL)nhlua.h;*
|
||||
|
||||
# pipe set def $(DAT) && $(MAKE) spotless && set def [-]
|
||||
# -$(RM) $(GAMEBIN);*
|
||||
325
sys/vms/Makefile_utl.vms
Normal file
325
sys/vms/Makefile_utl.vms
Normal file
@@ -0,0 +1,325 @@
|
||||
# Makefile for NetHack's utility programs.
|
||||
# NetHack 3.7 util Makefile.vms $NHDT-Date: 1602258295 2020/10/09 15:44:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.53 $
|
||||
# Copyright (c) 2018 by Robert Patrick Rankin
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
# Root of source tree relative to here:
|
||||
NHSROOT=[-]
|
||||
|
||||
# NetHack 3.7 began introducing C99 code.
|
||||
#
|
||||
# If your compiler needs an appropriate switch to accept C99 code.
|
||||
# CSTD = -std=c99
|
||||
|
||||
# directories relative to here (util)
|
||||
DOC=[-.doc]
|
||||
DAT=[-.dat]
|
||||
INCL=[-.include]
|
||||
SRC=[-.src]
|
||||
UTIL=[-.util]
|
||||
SYSVMS=[-.sys.vms]
|
||||
SYSSHR=[-.sys.share]
|
||||
SYSUNIX=[-.sys.unix]
|
||||
WINTTY=[-.win.tty]
|
||||
WINSHR=[-.win.share]
|
||||
WINTTY=[-.win.tty]
|
||||
WINCURS=[-.win.curses]
|
||||
WINX11=[-.win.X11]
|
||||
WINQT=[-.win.Qt]
|
||||
WINSHIM=[-.win.shim]
|
||||
WINCHAIN=[-.win.chain]
|
||||
|
||||
# Lua location relative to here
|
||||
LUAVER=546
|
||||
LUADOTVER=5.4.6
|
||||
LUAUNDERVER=5_4_6
|
||||
LUAINC=[-.lib.lua.lua$(LUAVER).src]
|
||||
LUALIB=[-.lib.lua]lua$(LUAVER).olb
|
||||
LUASRCDIR =[-.lib.lua.lua$(LUAVER).src]
|
||||
LUASRCINCDIR=$(LUASRCDIR)
|
||||
#LUASRCINCDIR=SYS$COMMON:[LUA.INCLUDE]
|
||||
|
||||
# hacklib
|
||||
HACKLIB=hacklib.olb
|
||||
HACKLIBOBJS=[-.src]hacklib.obj,[-.util]panic.obj
|
||||
|
||||
comma:=,
|
||||
LIBS =
|
||||
OBJDIR = [-.src]
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS :=/INCLUDE=($(INCL),$(LUAINC)) /NAMES=(AS_IS) $(CSTD)
|
||||
CXXFLAGS = /INCLUDE_DIR=($(INCL),$(LUAINC)) /NAMES=(AS_IS)
|
||||
|
||||
# Link flags
|
||||
LFLAGS =
|
||||
|
||||
# external programs
|
||||
# MAKE = make
|
||||
CC = CC
|
||||
#touch :=SET FILE/TRUNCATE
|
||||
touch = append/New _NLA0:
|
||||
LINK = link
|
||||
RM = delete
|
||||
#TRUE uses an actual helper true.exe
|
||||
TRUE = true
|
||||
#FALSE uses an actual helper false.exe
|
||||
FALSE = false
|
||||
#ECHO uses an actual helper echo.exe
|
||||
ECHO = echo
|
||||
CXX ?= CXX
|
||||
MOC ?= moc
|
||||
MOCPATH ?= $(QTDIR)/bin/$(MOC)
|
||||
# The default is for the TARGET_* variables to match the defaults.
|
||||
# If we're cross-compiling these will get overridden elsewhere, likely via
|
||||
# a hints file. TARGETPFX was set above earlier.
|
||||
TARGET_CC = $(CC)
|
||||
TARGET_CFLAGS = $(CFLAGS) $(CSTD)
|
||||
TARGET_LINK = $(LINK)
|
||||
TARGET_LFLAGS = $(LFLAGS)
|
||||
TARGET_CXX = $(CXX)
|
||||
TARGET_CXXFLAGS = $(CXXFLAGS)
|
||||
TARGET_LIBS = $(LIBS)
|
||||
# [LINK might be defined to use $(CXX); we don't want that here.]
|
||||
CLINK=$(TARGET_LINK)
|
||||
CXXLINK=$(TARGET_LINK)
|
||||
|
||||
# timestamps for primary header files, matching src/Makefile
|
||||
#CONFIG_H = $(SRC)config.h-t
|
||||
#HACK_H = $(SRC)hack.h-t
|
||||
|
||||
# utility .c files
|
||||
MAKESRC = makedefs.c $(SRC)mdlib.c
|
||||
RECOVSRC = recover.c
|
||||
DLBSRC = dlb_main.c
|
||||
UTILSRCS = $(MAKESRC) panic.c $(RECOVSRC) $(DLBSRC)
|
||||
|
||||
# files that define all monsters and objects
|
||||
CMONOBJ = $(SRC)monst.c $(SRC)objects.c
|
||||
OMONOBJ = $(OBJDIR)monst.obj $(OBJDIR)objects.obj
|
||||
# files that provide access to NetHack's names
|
||||
CNAMING = $(SRC)drawing.c $(CMONOBJ)
|
||||
ONAMING = $(OBJDIR)drawing.obj $(OMONOBJ)
|
||||
# dynamic memory allocation
|
||||
CALLOC = $(SRC)alloc.c
|
||||
OALLOC = $(OBJDIR)alloc.obj
|
||||
CPANIC = panic.c
|
||||
OPANIC = []panic.obj
|
||||
# build time info
|
||||
CDATE = $(SRC)date.c
|
||||
ODATE = $(OBJDIR)date.obj
|
||||
|
||||
# object files for makedefs
|
||||
MAKEOBJS = []makedefs.obj $(OMONOBJ) $(ODATE) $(OALLOC) $(OPANIC)
|
||||
|
||||
# object files for recovery utility
|
||||
RECOVOBJS = $(TARGETPFX)recover.obj
|
||||
|
||||
# object files for the data librarian
|
||||
DLBOBJS = dlb_main.obj $(OBJDIR)dlb.obj $(OALLOC) $(OPANIC)
|
||||
|
||||
# Distinguish between the build tools for the native host
|
||||
# and the build tools for the target environment in commands.
|
||||
# This allows the same set of Makefiles to be used for native
|
||||
# builds and for cross-compiles by overriding these in hints
|
||||
# files or on the command line.
|
||||
|
||||
TARGETPFX=
|
||||
TARGET_CC = $(CC)
|
||||
TARGET_CFLAGS = $(CFLAGS) $(CSTD)
|
||||
TARGET_CLINK = $(CLINK)
|
||||
TARGET_LFLAGS = $(LFLAGS)
|
||||
TARGET_CXX = $(CXX)
|
||||
TARGET_CXXFLAGS = $(CXXFLAGS)
|
||||
|
||||
# hacklib
|
||||
#
|
||||
$(HACKLIB): $(HACKLIBOBJS) [-.util]panic.obj
|
||||
LIBRARY/CREATE $(HACKLIB)/object
|
||||
LIBRARY/INSERT $(HACKLIB) $(HACKLIBOBJS)
|
||||
# dependencies for makedefs
|
||||
#
|
||||
|
||||
makedefs.exe: $(HACKLIB) $(MAKEOBJS) placeholder.obj mdgrep.h
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ \
|
||||
$(addsuffix $(comma),$(MAKEOBJS)) placeholder.obj, \
|
||||
$(HACKLIB)/lib
|
||||
|
||||
# note: the headers listed here are maintained manually rather than via
|
||||
# 'make depend'; only the ones which are directly included by
|
||||
# makedefs.c are listed, without various nested ones that they include;
|
||||
# for makedefs (but not for nethack's core), mdlib.c gets included
|
||||
# rather than be compiled separately
|
||||
makedefs.obj: makedefs.c $(SRC)mdlib.c $(CONFIG_H) \
|
||||
$(INCL)permonst.h $(INCL)objclass.h \
|
||||
$(INCL)artilist.h $(INCL)dungeon.h $(INCL)obj.h \
|
||||
$(INCL)monst.h $(INCL)monsters.h $(INCL)objects.h \
|
||||
$(INCL)you.h $(INCL)context.h $(INCL)flag.h \
|
||||
$(INCL)dlb.h $(INCL)patchlevel.h mdgrep.h
|
||||
$(CC) $(CFLAGS) $(CSTD) makedefs.c /OBJ=$@
|
||||
|
||||
placeholder.c:
|
||||
echo int makedefs_placeholder = 1; >$@
|
||||
|
||||
placeholder.obj: placeholder.c
|
||||
|
||||
|
||||
# Don't require perl to build; that is why mdgrep.h is spelled wrong below.
|
||||
mdgreph: mdgrep.pl
|
||||
perl mdgrep.pl
|
||||
|
||||
# These are for reference purposes only. They aren't required in the build.
|
||||
$(INCL)onames.h: makedefs $(INCL)objects.h
|
||||
mcr []makedefs -o
|
||||
$(INCL)pm.h: makedefs $(INCL)monsters.h
|
||||
mcr []makedefs -p
|
||||
|
||||
# we defer this makedefs call to the src Makefile, since it knows all about
|
||||
# the main src and include files date.h is a timestamp for
|
||||
$(INCL)date.h::
|
||||
@pipe set def $(SRC) && $(MAKE) $(INCL)date.h && set def [-]
|
||||
|
||||
# support code used by several of the utility programs (but not makedefs)
|
||||
panic.obj: panic.c $(CONFIG_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) panic.c /OBJ=$@
|
||||
|
||||
|
||||
# with all of extern.h's functions to complain about, we drown in
|
||||
# 'defined but not used' without -u
|
||||
#lintdgn:
|
||||
# @lint -axhu -I.include -DLINT $(UTILSRCS) $(CALLOC) \
|
||||
# | sed '/_flsbuf/d'
|
||||
#
|
||||
#
|
||||
# dependencies for recover
|
||||
#
|
||||
$(TARGETPFX)recover.exe: $(RECOVOBJS)
|
||||
$(TARGET_CLINK) $(TARGET_LFLAGS) /EXE=$@ $(RECOVOBJS) $(LIBS)
|
||||
|
||||
$(TARGETPFX)recover.obj: recover.c $(CONFIG_H)
|
||||
$(TARGET_CC) $(TARGET_CFLAGS) $(CSTD) recover.c /OBJ=$@
|
||||
|
||||
|
||||
# dependencies for dlb
|
||||
#
|
||||
dlb: $(DLBOBJS)
|
||||
$(CLINK) $(LFLAGS) /EXE=dlb $(DLBOBJS) $(LIBS)
|
||||
|
||||
dlb_main.obj: dlb_main.c $(CONFIG_H) $(INCL)dlb.h
|
||||
$(CC) $(CFLAGS) $(CSTD) dlb_main.c /OBJ=$@
|
||||
|
||||
|
||||
# dependencies for tile utilities
|
||||
#
|
||||
TEXT_IO = tiletext.obj tiletxt.obj $(OALLOC) $(ONAMING)
|
||||
GIFREADERS = gifread.obj
|
||||
PPMWRITERS = ppmwrite.obj
|
||||
|
||||
tileutils: tilemap gif2txt txt2ppm tile2x11
|
||||
|
||||
gif2txt.exe: $(GIFREADERS) $(TEXT_IO)
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ $(GIFREADERS) $(TEXT_IO) $(LIBS)
|
||||
txt2ppm.exe: $(PPMWRITERS) $(TEXT_IO)
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ $(PPMWRITERS) $(TEXT_IO) $(LIBS)
|
||||
|
||||
tile2x11.exe: tile2x11.obj $(TEXT_IO)
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ tile2x11.obj $(TEXT_IO) $(LIBS)
|
||||
|
||||
tile2bmp.exe: tile2bmp.obj $(TEXT_IO)
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ tile2bmp.obj $(TEXT_IO)
|
||||
|
||||
tile2beos.exe: tile2beos.obj $(TEXT_IO)
|
||||
$(CXXLINK) $(LFLAGS) /EXE=$@ tile2beos.obj $(TEXT_IO)
|
||||
|
||||
#--compiling and linking in one step leaves extra debugging files (in their
|
||||
# own subdirectories!) on OSX; compile and link separately to suppress
|
||||
# that without mucking about with extra OS-specific CFLAGS and/or LFLAGS
|
||||
#tilemap: .win/share/tilemap.c $(HACK_H)
|
||||
# $(CC) $(CFLAGS) $(LFLAGS) -o tilemap .win/share/tilemap.c $(LIBS)
|
||||
tilemap.exe: tilemap.obj $(OBJDIR)objects.obj $(OBJDIR)monst.obj \
|
||||
$(OBJDIR)drawing.obj
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ tilemap.obj $(OBJDIR)objects.obj \
|
||||
$(OBJDIR)monst.obj $(OBJDIR)drawing.obj $(LIBS)
|
||||
$(SRC)tile.c: tilemap
|
||||
mcr []tilemap
|
||||
|
||||
tiletext.obj: $(WINSHR)tiletext.c $(CONFIG_H) $(WINSHR)tile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)tiletext.c /OBJ=$@
|
||||
tiletxt.obj: $(WINSHR)tiletxt.c $(WINSHR)tilemap.c $(HACK_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)tiletxt.c /OBJ=$@
|
||||
tilemap.obj: $(WINSHR)tilemap.c $(HACK_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) $(WINSHR)tilemap.c /OBJ=$@
|
||||
|
||||
gifread.obj: $(WINSHR)gifread.c $(CONFIG_H) $(WINSHR)tile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)gifread.c /OBJ=$@
|
||||
ppmwrite.obj: $(WINSHR)ppmwrite.c $(CONFIG_H) $(WINSHR)tile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)ppmwrite.c /OBJ=$@
|
||||
|
||||
tile2bmp.obj: $(WINSHR)tile2bmp.c $(HACK_H) $(WINSHR)tile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)tile2bmp.c /OBJ=$@
|
||||
|
||||
tile2x11.obj: .win/X11/tile2x11.c $(HACK_H) .win/share/tile.h \
|
||||
$(INCL)tile2x11.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) $(WINSHR)tile2x11.c /OBJ=$@
|
||||
|
||||
tile2img.obj: [-.win.gem]tile2img.c $(HACK_H) $(WINSHR)tile.h \
|
||||
$(INCL)bitmfile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) /INCLUDE=$(WINSHR) [-.win.gem]tile2img.c /OBJ=$@
|
||||
xpm2img.obj: [-.win.gem]xpm2img.c $(HACK_H) $(INCL)bitmfile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) -c .win/gem/xpm2img.c /obj=$@
|
||||
bitmfile.obj: [-.win.gem]bitmfile.c $(INCL)bitmfile.h
|
||||
$(CC) $(CFLAGS) $(CSTD) [-.win.gem]bitmfile.c /obj=$@
|
||||
|
||||
uudecode.exe: uudecode.obj
|
||||
$(CLINK) $(LFLAGS) /EXE=$@ uudecode.obj $(LIBS)
|
||||
uudecode.obj: $(SYSSHR)uudecode.c
|
||||
$(CC) $(CFLAGS) $(CSTD) /obj=$@ $(SYSSHR)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.obj: $(SRC)alloc.c $(CONFIG_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)alloc.c /obj=$@
|
||||
$(OBJDIR)drawing.obj: $(SRC)drawing.c $(CONFIG_H) $(INCL)color.h \
|
||||
$(INCL)rm.h $(INCL)objclass.h $(INCL)defsym.h \
|
||||
$(INCL)objects.h $(INCL)sym.h
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)drawing.c /obj=$@
|
||||
$(OBJDIR)decl.obj: $(SRC)decl.c $(HACK_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)decl.c /obj=$@
|
||||
$(OBJDIR)monst.obj: $(SRC)monst.c $(CONFIG_H) $(INCL)permonst.h \
|
||||
$(INCL)align.h $(INCL)monattk.h $(INCL)monflag.h \
|
||||
$(INCL)monsters.h $(INCL)sym.h $(INCL)defsym.h \
|
||||
$(INCL)color.h
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)monst.c /obj=$@
|
||||
$(OBJDIR)objects.obj: $(SRC)objects.c $(CONFIG_H) $(INCL)obj.h \
|
||||
$(INCL)prop.h $(INCL)skills.h $(INCL)color.h \
|
||||
$(INCL)objclass.h $(INCL)defsym.h $(INCL)objects.h
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)objects.c /obj=$@
|
||||
$(OBJDIR)dlb.obj: $(SRC)dlb.c $(CONFIG_H) $(INCL)dlb.h
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)dlb.c /obj=$@
|
||||
# this differs substantially from what Makefile.src specifies
|
||||
$(OBJDIR)date.obj: $(SRC)date.c $(CONFIG_H)
|
||||
$(CC) $(CFLAGS) $(CSTD) $(SRC)date.c /obj=$@
|
||||
|
||||
# make sure hack.h dependencies get transitive information
|
||||
$(HACK_H): $(CONFIG_H)
|
||||
@pipe set def $(SRC) && $(MAKE) $(HACK_H) && set def $(UTIL)
|
||||
$(CONFIG_H): $(INCL)config.h
|
||||
@pipe set def $(SRC) && $(MAKE) $(CONFIG_H) && set def $(UTIL)
|
||||
|
||||
clean-fixup:
|
||||
-delete/log $(INCL)tile.h;*
|
||||
|
||||
clean: clean-fixup
|
||||
-delete/log *.obj;*
|
||||
|
||||
spotless: clean
|
||||
-delete/log makedefs.exe;*,recover.exe;*,dlb.exe;*
|
||||
-delete/log gif2txt.exe;*,txt2ppm.exe;*,tile2x11.exe;* \
|
||||
,tile2img.ttp;*,xpm2img.ttp;*, \
|
||||
tilemap.exe;*,tileedit.exe;*,tile2bmp.exe;*,uudecode.exe;
|
||||
.PHONY: recover makedefs
|
||||
|
||||
recover: recover.exe
|
||||
makedefs: makedefs.exe
|
||||
|
||||
25
sys/vms/vmssetup.com
Normal file
25
sys/vms/vmssetup.com
Normal file
@@ -0,0 +1,25 @@
|
||||
$ ! vmssetup.com -- place GNU Makefiles in their target directories
|
||||
$ version_number = "3.7.0"
|
||||
$ ! $NHDT-Date: 1687541093 2024/03/08 17:24:53 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.39 $
|
||||
$ ! NetHack may be freely redistributed. See license for details.
|
||||
$ !
|
||||
$ relsrc = ""
|
||||
$ reldst = "-.-"
|
||||
$ if (f$search("[]dat.dir") .nes. "") .AND. -
|
||||
(f$search("[]src.dir") .nes. "") .AND. -
|
||||
(f$search("[]include.dir") .nes. "") .AND. -
|
||||
(f$search("[]sys.dir") .nes. "") then -
|
||||
relsrc = ".sys.vms"
|
||||
$ if (f$search("[]dat.dir") .nes. "") .AND. -
|
||||
(f$search("[]src.dir") .nes. "") .AND. -
|
||||
(f$search("[]include.dir") .nes. "") .AND. -
|
||||
(f$search("[]sys.dir") .nes. "") then -
|
||||
reldst = ""
|
||||
$ copy ['relsrc']Makefile_top.vms ['reldst']Makefile.vms
|
||||
$ copy ['relsrc']Makefile_dat.vms ['reldst'.dat]Makefile.vms
|
||||
$ copy ['relsrc']Makefile_doc.vms ['reldst'.doc]Makefile.vms
|
||||
$ copy ['relsrc']Makefile_src.vms ['reldst'.src]Makefile.vms
|
||||
$ copy ['relsrc']Makefile_utl.vms ['reldst'.util]Makefile.vms
|
||||
$!
|
||||
$done:
|
||||
$ exit
|
||||
Reference in New Issue
Block a user