--- /dev/null
+# NetHack 3.7 Makefile.mingw32
+# Copyright (c) 2022 by Michael Allison
+# NetHack may be freely redistributed. See license for details.
+#
+#==============================================================================
+#
+# Win32 Compilers Tested with this Makefile.mingw32:
+# mingw-w64
+# from:
+# https://sourceforge.net/p/mingw-w64/wiki2/GeneralUsageInstructions/
+# Toolchain for 32 and 64 bit Windows target
+#
+#==============================================================================
+# This is used for building two versions of NetHack:
+#
+# A tty port utilizing the Win32 Console I/O subsystem, Console
+# NetHack.
+#
+# A Win32 native port built on the Windows API, Graphical NetHack or
+# NetHackW.
+#
+# If you have any questions read the sys/windows/Install.windows file included
+# with the distribution.
+#
+#==============================================================================
+# DECISIONS SECTION
+#
+# Build Options Decisions
+#
+# There are currently 4 decisions that you can choose to make.
+# None of the 4 decisions are absolutely required because defaults are in place:
+# 1. Do you have git commands in your path and NetHack in a git repository?
+# 2. Where do you want your build results to end up?
+# 3. Do you want debug information in the executable?
+# 4. Do you want to explicitly override auto-detection of a 32-bit or 64-bit target?
+# 5. Do you want to include any optional interfaces in the port?
+# 5a) console without or with pdcurses
+# 5b) Windows
+#
+# Mandatory LUA source Location
+#
+# LUA source code or is required to build NetHack-3.7.
+# LUATOP must point to the location of the LUA sources.
+#
+#-----------------------------------------------------------------------------------------
+#=========================================================================================
+
+#==============================================================================
+#
+# The default make target (so just typing 'mingw32-make').
+#
+
+default: install
+
+#---------------------------------------------------------------
+# 1. Where do you want the game to be built (which folder)?
+# If not present prior to compilation it gets created.
+#
+
+GAMEDIR = ../binary
+
+#
+#---------------------------------------------------------------
+# 2. Do you want debug information in the executable?
+#
+
+DEBUGINFO = N
+
+#
+#---------------------------------------------------------------
+# 3. Do you want to explicitly override auto-detection of a 32-bit
+# or 64-bit executable (save files do not interchange currently)?
+#
+# It depends on which MSYS2 MinGW shell you are using.
+#
+#---------------------------------------------------------------
+# 4. Do you want additional GUI interfaces in the executable?
+# Make these Y to enable the GUIs. Win32 is always enabled,
+# and is the default.
+#
+
+#4a Curses window port support
+#
+#
+# 4. Uncomment these and set them appropriately if you want to
+# include curses port support alongside TTY support in your
+# NetHack.exe binary.
+#
+# You'll have to set PDCURSES_H to the correct location of the
+# PDCurses header (.h) files and PDCURSES_C to the location
+# of your PDCurses C files which must already be resident on
+# your machine.
+#
+# ADD_CURSES=Y
+# PDCURSES_TOP=../submodules/pdcurses
+
+#---------------------------------------------------------------
+ifndef LUA_VERSION
+LUAVER=5.4.3
+else
+LUAVER=$(LUA_VERSION)
+endif
+#---------------------------------------------------------------
+# Location of LUA
+#
+# Original source needs to be obtained from:
+# http://www.lua.org/ftp/lua-5.4.3.tar.gz
+#
+# This build assumes that the LUA sources are located
+# at the specified location. If they are actually elsewhere
+# you'll need to specify the correct spot below in order to
+# successfully build NetHack-3.7.
+#
+USE_LUADLL = Y
+WANT_LUAC = N
+LUATOP = ../submodules/lua
+#
+#==============================================================================
+# This marks the end of the BUILD DECISIONS section.
+#==============================================================================
+#
+#===============================================
+#======= End of Modification Section ===========
+#===============================================
+#
+################################################
+# #
+# Nothing below here should have to be changed.#
+# #
+################################################
+#
+#==============================================================================
+
+SKIP_NETHACKW = N
+
+#==============================================================================
+
+# The version of the game this Makefile was designed for
+NETHACK_VERSION="3.7.0"
+
+# A brief version for use in macros
+NHV1=$(subst .,,$(NETHACK_VERSION))
+NHV=$(subst ",,$(NHV1))
+
+#
+# Source directories. Makedefs hardcodes these, don't change them.
+#
+
+# INCL - NetHack include files
+# DAT - NetHack data files
+# DOC - NetHack documentation files
+# UTIL - Utility source
+# SRC - Main source
+# SSYS - Shared system files
+# MSWSYS - mswin specific files
+# TTY - window port files (tty)
+# MSWIN - window port files (win32)
+# WCURSES - window port files (curses)
+# WSHR - Tile support files
+# QT - QT window support files
+
+INCL =../include
+DAT =../dat
+DOC =../doc
+UTIL =../util
+SRC =../src
+SSYS =../sys/share
+MSWSYS =../sys/windows
+TTY =../win/tty
+MSWIN =../win/win32
+WCURSES =../win/curses
+WSHR =../win/share
+QT =../win/Qt
+
+#
+# Object directory.
+#
+
+OBJ = o
+
+#
+# Shorten up the location for some files
+#
+
+O = $(OBJ)/
+
+U = $(UTIL)/
+
+# To store all the level files,
+# help files, etc. in a single library file.
+# USE_DLB = Y is left uncommented
+
+USE_DLB = Y
+
+#==========================================
+#==========================================
+# Setting up the compiler and linker
+# macros. All builds include the base ones.
+#==========================================
+#==========================================
+
+ifdef TRAVIS_COMPILER
+cc = i686-w64-mingw32-gcc.exe
+ld = i686-w64-mingw32-gcc.exe
+rc = windres --target=pe-i386
+else
+cc = gcc -c
+ld = gcc
+ifeq "$(MSYSTEM)" "MINGW64"
+rc = windres --target=pe-x86-64
+else # MINGW32
+rc = windres --target=pe-i386
+endif
+endif
+
+#
+# Handle user settings
+#
+CFLAGS = -mms-bitfields -I../include -I../sys/windows
+LDFLAGS =
+ifeq "$(DEBUGINFO)" "Y"
+CFLAGS += -g -D_DEBUG
+else
+CFLAGS += -DNDEBUG
+LDFLAGS += -s
+endif
+
+ifeq "$(USE_DLB)" "Y"
+DLBFLG = -DDLB
+else
+DLBFLG =
+endif
+
+COMMONDEF = -DWIN32 -DWINVER=0x0601 -D_WIN32_WINNT=0x0601
+DLLDEF = $(COMMONDEF) -DWIN32CON -D_WINDOWS -D_USRDLL -D_WINDLL
+CONSOLEDEF = $(COMMONDEF) -D_CONSOLE
+
+# To build util targets
+CFLAGSU = $(CFLAGS) $(CONSOLEDEF) $(DLBFLG) -DWIN32CON -DMSWIN_GRAPHICS
+
+LIBS = -lcomctl32 -lgdi32 -lole32 -lshell32 -luuid -lwinmm -lbcrypt
+
+$(GAMEDIR):
+ @mkdir -p $@
+
+$(OBJ):
+ @mkdir -p $@
+
+CLEAN_DIR = $(GAMEDIR) $(OBJ)
+
+#===============-=================================================
+# LUA library
+# Source from http://www.lua.org/ftp/lua-5.4.3.tar.gz
+#=================================================================
+
+OLUA = $(O)lua
+LUASRC = $(LUATOP)
+LUAOBJS = $(addprefix $(OLUA)/, $(addsuffix .o, 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))
+LUADLL = $(GAMEDIR)/lua-$(LUAVER).dll
+LUAIMP = $(OLUA)/lua-$(LUAVER).dll.a
+ULUADLL = $(U)$(notdir $(LUADLL))
+LUASTATIC = $(OLUA)/lua-$(LUAVER).a
+LUATARGETS = $(U)lua.exe
+
+ifeq "$(USE_LUADLL)" "Y"
+LUALIB = $(LUAIMP)
+LUATARGETS += $(LUADLL) $(ULUADLL) $(LUAIMP)
+else
+LUALIB = $(LUASTATIC)
+LUATARGETS += $(LUASTATIC)
+endif
+
+ifeq "$(WANT_LUAC)" "Y"
+LUATARGETS += $(U)luac.exe
+endif
+
+lua: $(LUATARGETS)
+
+$(U)lua.exe: $(OLUA)/lua.o $(LUALIB)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(LUADLL): $(ULUADLL)
+ cp $< $@
+
+$(ULUADLL) $(LUAIMP): $(LUAOBJS) | $(OLUA)
+ $(ld) $(LDFLAGS) -fPIC -shared -Wl,--export-all-symbols -Wl,--add-stdcall-alias \
+ -Wl,--out-implib=$(LUAIMP) $^ -o$(ULUADLL)
+
+$(LUASTATIC): $(LUAOBJS) | $(OLUA)
+ ar rcs $@ $^
+
+$(OLUA)/%.o: $(LUASRC)/%.c | $(OLUA)
+ $(cc) $(CFLAGS) $< -o$@
+
+$(U)luac.exe: $(OLUA)/luac.o $(LUALIB)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OLUA):
+ @mkdir -p $@
+
+CLEAN_DIR += $(OLUA)
+CLEAN_FILE += $(LUATARGETS) $(LUAOBJS) $(OLUA)/lua.o $(OLUA)/luac.o
+
+#==========================================
+# nhlua.h
+#==========================================
+NHLUAH = $(INCL)/nhlua.h
+
+$(NHLUAH):
+ echo "/* nhlua.h - generated by top Makefile */" > $@
+ @echo "#include \"$(LUASRC)/lua.h\"" >> $@
+ @echo "LUA_API int (lua_error) (lua_State *L) NORETURN;" >>$@
+ @echo "#include \"$(LUASRC)/lualib.h\"" >> $@
+ @echo "#include \"$(LUASRC)/lauxlib.h\"" >> $@
+ @echo "/*nhlua.h*/" >> $@
+
+CLEAN_FILE += $(NHLUAH)
+
+#==========================================
+# Makedefs
+#==========================================
+OM = $(O)makedefs
+MOBJS = $(addprefix $(OM)/, alloc.o date.o makedefs.o monst.o objects.o panic.o)
+MTARGETS = $(U)makedefs.exe
+
+makedefs: $(MTARGETS)
+
+$(U)makedefs.exe: $(MOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OM)/%.o: $(SRC)/%.c $(NHLUAH) | $(OM)
+ $(cc) $(CFLAGSU) -DENUM_PM $< -o$@
+
+$(OM)/%.o: $(U)%.c $(NHLUAH) | $(OM)
+ $(cc) $(CFLAGSU) -DENUM_PM $< -o$@
+
+$(OM):
+ @mkdir -p $@
+
+CLEAN_DIR += $(OM)
+CLEAN_FILE += $(MTARGETS) $(MOBJS)
+
+#==========================================
+# Recover
+#==========================================
+OR = $(OBJ)
+ROBJS = $(OR)/recover.o
+RTARGETS = $(GAMEDIR)/recover.txt $(GAMEDIR)/recover.exe
+
+recover: $(RTARGETS)
+
+$(GAMEDIR)/recover.txt: $(DOC)/recover.txt | $(GAMEDIR)
+ cp $< $@
+
+$(GAMEDIR)/recover.exe: $(ROBJS) | $(GAMEDIR)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OR)/recover.o: $(U)recover.c | $(OR)
+ $(cc) $(CFLAGSU) $< -o$@
+
+# $(OR):
+# @mkdir -p $@
+
+CLEAN_FILE += $(RTARGETS) $(ROBJS)
+
+#==========================================
+# PDCurses
+#==========================================
+ifeq "$(ADD_CURSES)" "Y"
+OP = $(O)pdcurses
+PDCOBJS = $(addprefix $(OP)/, addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
+ clear.o color.o debug.o delch.o deleteln.o getch.o getstr.o getyx.o \
+ inch.o inchstr.o initscr.o inopts.o insch.o insstr.o \
+ kernel.o keyname.o mouse.o move.o outopts.o overlay.o \
+ pad.o panel.o pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o pdcutil.o printw.o \
+ refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o touch.o util.o window.o)
+PDCSRC = $(PDCURSES_TOP)/pdcurses
+PDCWINCON = $(PDCURSES_TOP)/wincon
+PDCINCL = -I$(PDCURSES_TOP) -I$(PDCSRC) -I$(PDCWINCON)
+PDCLIB = $(O)pdcurses.a
+
+pdcurses: $(PDCLIB)
+
+$(PDCLIB): $(PDCOBJS)
+ ar rcs $@ $^
+
+$(OP)/%.o: $(PDCSRC)/%.c | $(OP)
+ $(cc) $(CFLAGS) $(PDCINCL) -D_LIB $< -o$@
+
+$(OP)/%.o: $(PDCWINCON)/%.c | $(OP)
+ $(cc) $(CFLAGS) $(PDCINCL) -D_LIB $< -o$@
+
+$(OP):
+ @mkdir -p $@
+
+CLEAN_DIR += $(OP)
+CLEAN_FILE += $(PDCLIB) $(PDCOBJS)
+endif
+
+#==========================================
+# tile2bmp
+#==========================================
+OT = $(O)tile2bmp
+TOBJS = $(addprefix $(OT)/, drawing.o monst.o objects.o tile2bmp.o tiletext.o tiletxt.o)
+TTARGETS = $(U)tile2bmp.exe
+
+tile2bmp: $(TTARGETS)
+
+$(U)tile2bmp.exe: $(TOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OT)/tiletxt.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) -DTILETEXT $< -o$@
+
+$(OT)/%.o: $(WSHR)/%.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(OT)/%.o: $(SRC)/%.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(OT):
+ @mkdir -p $@
+
+CLEAN_DIR += $(OT)
+CLEAN_FILE += $(TTARGETS) $(TOBJS)
+
+#==========================================
+# Optional Tile Utilities
+#==========================================
+TEXT_IO = $(addprefix $(OT)/, drawing.o monst.o objects.o tiletext.o tiletxt.o)
+TUCOMMON = $(OT)/alloc.o $(OT)/panic.o
+TUOBJS = $(TUCOMMON) $(TEXT_IO)
+
+T32OBJS = $(OT)/tilete32.o $(OT)/tiletx32.o
+TEXT_IO32 = $(addprefix $(OT)/, drawing.o monst.o objects.o) $(T32OBJS)
+TU32OBJS = $(TUCOMMON) $(TEXT_IO32)
+
+GIFOBJ = $(OT)/gifread.o
+GIF32OBJ = $(OT)/gifrd32.o
+PPMOBJ = $(OT)/ppmwrite.o
+BMP32OBJ = $(OT)/til2bm32.o
+TILEFILES32 = $(addprefix $(WSHR)/, mon32.txt obj32.txt oth32.txt)
+TUTARGETS = $(U)gif2txt.exe $(U)gif2tx32.exe $(U)txt2ppm.exe $(U)til2bm32.exe
+
+tileutil: $(TUTARGETS)
+
+$(U)gif2txt.exe: $(GIFOBJ) $(TUOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(U)gif2tx32.exe: $(GIF32OBJ) $(TU32OBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(U)txt2ppm.exe: $(PPMOBJ) $(TUOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(U)til2bm32.exe: $(BMP32OBJ) $(TEXT_IO32)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OT)/tilete32.o: $(WSHR)/tiletext.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
+
+$(OT)/tiletx32.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) -DTILETEXT -DTILE_X=32 -DTILE_Y=32 $< -o$@
+
+$(GIF32OBJ): $(WSHR)/gifread.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
+
+$(BMP32OBJ): $(WSHR)/tile2bmp.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) -DTILE_X=32 -DTILE_Y=32 $< -o$@
+
+$(OT)/panic.o: $(UTIL)/panic.c $(NHLUAH) | $(OT)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(MSWIN)/tiles32.bmp: $(U)til2bm32.exe $(TILEFILES32)
+ $< $@
+
+CLEAN_FILE += $(TUTARGETS) $(GIFOBJ) $(GIF32OBJ) $(PPMOBJ) $(BMP32OBJ) \
+ $(T32OBJS) $(TUCOMMON)
+
+#==========================================
+# tilemap
+#==========================================
+OTM = $(OBJ)/tilemap
+TMOBJS = $(addprefix $(OTM)/, drawing.o monst.o objects.o tilemap.o)
+TMTARGETS = $(SRC)/tile.c $(U)tilemap.exe
+
+tilemap: $(SRC)/tile.c
+
+$(SRC)/tile.c: $(U)tilemap.exe
+ $<
+
+$(U)tilemap.exe: $(TMOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OTM)/tilemap.o: $(WSHR)/tilemap.c $(NHLUAH) | $(OTM)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(OTM)/%.o: $(SRC)/%.c $(NHLUAH) | $(OTM)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(OTM):
+ @mkdir -p $@
+
+CLEAN_DIR += $(OTM)
+# tilemap.exe will create tilemappings.lst
+CLEAN_FILE += $(TMTARGETS) $(TMOBJS) $(SRC)/tilemappings.lst
+
+#==========================================
+# uudecode
+#==========================================
+OU = $(OBJ)
+UOBJS = $(OU)/uudecode.o
+UTARGETS = $(U)uudecode.exe $(MSWIN)/NetHack.ico
+
+uudecode: $(UTARGETS)
+
+$(U)uudecode.exe: $(UOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(OU)/uudecode.o: $(SSYS)/uudecode.c | $(OU)
+ $(cc) $(CFLAGS) $(CONSOLEDEF) $< -o$@
+
+# $(OU):
+# @mkdir -p $@
+
+$(MSWIN)/NetHack.ico: $(U)uudecode.exe $(MSWSYS)/nhico.uu
+ $^
+ mv nethack.ico $@
+
+CLEAN_FILE += $(UTARGETS) $(UOBJS)
+
+#==========================================
+# Data librarian
+#==========================================
+ODLB = $(O)dlb
+DLBOBJS = $(addprefix $(ODLB)/, alloc.o dlb.o dlb_main.o panic.o)
+DAT_CLEAN = $(addprefix $(DAT)/, data oracles options porthelp rumors engrave epitaph bogusmon)
+DAT_NOCLEAN = $(addprefix $(DAT)/, help hh cmdhelp keyhelp history opthelp optmenu \
+ wizhelp license engrave epitaph bogusmon tribute)
+DLBLST = $(DAT)/dlb.lst
+DLB = $(GAMEDIR)/nhdat$(NHV)
+DTARGETS = $(U)dlb.exe $(DAT_CLEAN) $(DLBLST) $(DLB)
+
+dlb: $(DTARGETS)
+
+$(U)dlb.exe: $(DLBOBJS)
+ $(ld) $(LDFLAGS) $^ -o$@
+
+$(ODLB)/%.o: $(SRC)/%.c $(NHLUAH) | $(ODLB)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(ODLB)/%.o: $(U)%.c $(NHLUAH) | $(ODLB)
+ $(cc) $(CFLAGSU) $< -o$@
+
+$(ODLB):
+ @mkdir -p $@
+
+$(DAT)/data: $(U)makedefs.exe $(DAT)/data.base
+ $< -d
+
+$(DAT)/oracles: $(U)makedefs.exe $(DAT)/oracles.txt
+ $< -h
+
+$(DAT)/options $(INCL)/date.h: $(U)makedefs.exe
+ $< -v
+
+$(DAT)/porthelp: $(MSWSYS)/porthelp
+ cp $< $@
+
+$(DAT)/rumors: $(U)makedefs.exe $(DAT)/rumors.tru $(DAT)/rumors.fal
+ $< -r
+
+$(DAT)/engrave: $(DAT)/bogusmon
+
+$(DAT)/epitaph: $(DAT)/bogusmon
+
+$(DAT)/bogusmon: $(U)makedefs.exe $(DAT)/bogusmon.txt $(DAT)/engrave.txt $(DAT)/epitaph.txt
+ $< -s
+
+$(DLBLST): | $(DAT_CLEAN) $(DAT_NOCLEAN)
+ echo data > $(DLBLST)
+ echo oracles >> $(DLBLST)
+ echo options >> $(DLBLST)
+ if [ -f $(DAT)/ttyoptions ] ; then echo ttyoptions >> $(DLBLST) ; fi
+ if [ -f $(DAT)/guioptions ] ; then echo guioptions >> $(DLBLST) ; fi
+ echo porthelp >> $(DLBLST)
+ echo rumors >> $(DLBLST)
+ echo help >> $(DLBLST)
+ echo hh >> $(DLBLST)
+ echo cmdhelp >> $(DLBLST)
+ echo keyhelp >> $(DLBLST)
+ echo history >> $(DLBLST)
+ echo opthelp >> $(DLBLST)
+ echo optmenu >> $(DLBLST)
+ echo wizhelp >> $(DLBLST)
+ echo license >> $(DLBLST)
+ echo engrave >> $(DLBLST)
+ echo epitaph >> $(DLBLST)
+ echo bogusmon >> $(DLBLST)
+ echo tribute >> $(DLBLST)
+ cd $(DAT) ; ls -1 *.lua >> $(DLBLST)
+
+$(DLB): $(U)dlb.exe $(DLBLST) | $(GAMEDIR)
+ $(U)dlb.exe CcIf $(dir $(DLBLST)) $(notdir $(DLBLST)) $(SRC)/nhdat
+ mv $(SRC)/nhdat$(NHV) $@
+
+CLEAN_DIR += $(ODLB)
+CLEAN_FILE += $(DTARGETS) $(DLBOBJS) $(INCL)/date.h
+
+#==========================================
+# nethackw
+#==========================================
+COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl cmd cppregex \
+ date 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 \
+ 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 \
+ nhlan nhlobj nhlsel nhlua ntsound o_init objects objnam options \
+ pager pickup pline polyself potion pray priest quest questpgr \
+ random read rect region restore rip rnd role rumors \
+ safeproc save sfstruct shk shknam sit sounds sp_lev spell steal steed stubs symbols sys \
+ teleport timeout topten track trap u_init uhitm vault version vision \
+ weapon were wield windmain windows windsys wizard worm worn write zap)
+
+CFLAGSW = $(CFLAGS) $(COMMONDEF) $(DLBFLG) -DTILES -D_WINDOWS -DMSWIN_GRAPHICS -DSAFEPROCS -DNOTTYGRPHICS
+
+ONHW = $(O)nethackw
+NHWONLY = $(addsuffix .o, mhaskyn mhdlg mhfont mhinput mhmain mhmap mhmenu \
+ mhmsgwnd mhrip mhsplash mhstatus mhtext mswproc tile NetHackW win10)
+NHWOBJS = $(addprefix $(ONHW)/, $(COREOBJS) $(NHWONLY))
+TILEFILES = $(addprefix $(WSHR)/, monsters.txt objects.txt other.txt)
+BMPS = $(addprefix $(MSWIN)/, $(addsuffix .bmp, mnsel mnselcnt mnunsel petmark pilemark rip splash tiles))
+NHWRES = $(ONHW)/winres.o
+NHWTARGETS = $(GAMEDIR)/NetHackW.exe
+
+nethackw: $(NHWTARGETS)
+
+$(GAMEDIR)/NetHackW.exe: $(NHWOBJS) $(NHWRES) $(LUALIB) | $(GAMEDIR)
+ $(ld) $(LDFLAGS) -mwindows $^ $(LIBS) -static -lstdc++ -o$@
+
+$(ONHW)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(ONHW)/cppregex.o: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(ONHW)/%.o: $(SSYS)/%.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(ONHW)/stubs.o: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) -DTTYSTUB $< -o$@
+
+$(ONHW)/%.o: $(MSWSYS)/%.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(ONHW)/%.o: $(MSWIN)/%.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(ONHW)/%.o: $(WSHR)/%.c $(NHLUAH) | $(ONHW)
+ $(cc) $(CFLAGSW) $< -o$@
+
+$(NHWRES): $(MSWIN)/NetHackW.rc $(BMPS) $(MSWIN)/NetHack.ico | $(ONHW)
+ $(rc) --include-dir=$(MSWIN) --input=$< -o$@
+
+$(MSWIN)/tiles.bmp: $(U)tile2bmp.exe $(TILEFILES)
+ $< $@
+
+$(MSWIN)/%.bmp: $(U)uudecode.exe $(MSWIN)/%.uu
+ $^
+ mv $(notdir $@) $@
+
+$(ONHW):
+ @mkdir -p $@
+
+CLEAN_DIR += $(ONHW)
+CLEAN_FILE += $(NHWTARGETS) $(NHWOBJS) $(NHWRES) $(BMPS)
+
+#==========================================
+# nethack
+#==========================================
+CFLAGSNH = $(CFLAGSU) -DNO_TILE_C -DSAFEPROCS -D_LIB
+
+ONH = $(O)nethack
+
+NHONLY = consoletty.o getline.o topl.o wintty.o
+ifeq "$(ADD_CURSES)" "Y"
+CFLAGSNH += -DCURSES_GRAPHICS -DCHTYPE_32 -DPDC_NCMOUSE
+NHONLY += $(addsuffix .o, cursdial cursinit cursinvt cursmain cursmesg cursmisc cursstat curswins)
+endif
+
+NHOBJS = $(addprefix $(ONH)/, $(COREOBJS) $(NHONLY))
+NHRES = $(ONH)/conres.o
+NHTARGET = $(GAMEDIR)/NetHack.exe
+
+nethack: $(NHTARGET)
+
+$(GAMEDIR)/NetHack.exe: $(NHOBJS) $(NHRES) $(LUALIB) $(PDCLIB) | $(GAMEDIR)
+ $(ld) $(LDFLAGS) -mconsole $^ $(LIBS) -static -lstdc++ -o$@
+
+$(ONH)/%.o: $(SRC)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/cppregex.o: $(SSYS)/cppregex.cpp $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/%.o: $(SSYS)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/stubs.o: $(MSWSYS)/stubs.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) -DGUISTUB $< -o$@
+
+$(ONH)/%.o: $(MSWSYS)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/%.o: $(MSWIN)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/%.o: $(WSHR)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/%.o: $(TTY)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $< -o$@
+
+$(ONH)/%.o: $(WCURSES)/%.c $(NHLUAH) | $(ONH)
+ $(cc) $(CFLAGSNH) $(PDCINCL) $< -o$@
+
+$(NHRES): $(MSWIN)/NetHack.rc $(MSWIN)/NetHack.ico | $(ONH)
+ $(rc) --include-dir=$(MSWIN) --input=$< -o$@
+
+$(ONH):
+ @mkdir -p $@
+
+CLEAN_DIR += $(ONH)
+CLEAN_FILE += $(NHTARGET) $(NHOBJS) $(NHRES)
+
+#==========================================
+#=============== TARGETS ==================
+#==========================================
+
+.PHONY: all clean default install lua makedefs recover pdcurses \
+ tile2bmp tilemap uudecode dlb nethackw nethack tileutil
+
+#
+# Everything
+#
+
+all: install
+
+TO_INSTALL = $(GAMEDIR)/NetHack.exe $(RTARGETS) \
+ $(addprefix $(GAMEDIR)/, $(addsuffix .template, sysconf symbols .nethackrc) \
+ Guidebook.txt NetHack.txt license opthelp record)
+
+ifeq "$(USE_LUADLL)" "Y"
+TO_INSTALL += $(LUADLL)
+endif
+
+ifneq "$(SKIP_NETHACKW)" "Y"
+TO_INSTALL += $(GAMEDIR)/NetHackW.exe
+endif
+
+ifeq "$(USE_DLB)" "Y"
+TO_INSTALL += $(DLB)
+endif
+
+install: $(TO_INSTALL)
+ifdef TRAVIS_COMPILER
+ ls -l $(SRC)
+ ls -l $(DAT)
+ ls -l $(UTIL)
+endif
+ifneq "$(USE_DLB)" "Y"
+ cp $(DAT)/*.dat $(GAMEDIR)/
+endif
+ @echo NetHack is up to date.
+
+$(GAMEDIR)/symbols.template: $(DAT)/symbols
+ cp $< $@
+
+$(GAMEDIR)/NetHack.txt: $(DOC)/nethack.txt
+ cp $< $@
+
+$(GAMEDIR)/record:
+ touch $@
+
+$(GAMEDIR)/%: $(DAT)/%
+ cp $< $@
+
+$(GAMEDIR)/%: $(DOC)/%
+ cp $< $@
+
+$(GAMEDIR)/%: $(MSWSYS)/%
+ cp $< $@
+
+CLEAN_FILE += $(TO_INSTALL)
+
+clean:
+ @-rm -f $(CLEAN_FILE)
+ @$(foreach dir, $(CLEAN_DIR), \
+ if [ -d $(dir) ] ; then rmdir -p --ignore $(dir) ; fi ; )
+
+-include Makefile.mingw32.depend
+-include .depend
+# end of file