OSDN Git Service

upgrade to 3.6.2
[jnethack/source.git] / sys / unix / Makefile.src
index cbad6bc..adc5d01 100644 (file)
@@ -1,5 +1,7 @@
 #      NetHack Makefile.
-# NetHack 3.6  Makefile.src    $NHDT-Date: 1447313972 2015/11/12 07:39:32 $  $NHDT-Branch: master $:$NHDT-Revision: 1.45 $
+# NetHack 3.6  Makefile.src    $NHDT-Date: 1550876124 2019/02/22 22:55:24 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.70 $
+# Copyright (c) 2018 by Pasi Kallinen
+# NetHack may be freely redistributed.  See license for details.
 
 # Root of source tree:
 NHSROOT=..
@@ -146,6 +148,20 @@ JOBJ = jconj.o jlib.o
 #LINK = gcc
 #LFLAGS = -Xlinker -soname=_APP_
 
+# Compile with PDCurses installed in a separate directory that doesn't
+# conflict with the system curses/ncurses library
+#CFLAGS = -O -I../include -I/usr/local/include/pdcurses
+# Same as above, but for XCurses
+#CFLAGS = -O -DXCURSES -I../include -I/usr/local/include/pdcurses
+# Compile against system curses library, such as ncurses
+#CFLAGS = -O -I../include
+
+# files in ../win/X11 (relative to src) are passed $(CFLAGS) $(X11CFLAGS)
+# and by default will find <X11/foo.h> in /usr/include/X11/foo.h;
+# can be overridden via hints; post-10.7 OSX with XQuartz uses
+# X11CFLAGS=-I/opt/X11/include to find <X11/foo.h> in /opt/X11/include/X11/foo.h
+#X11CFLAGS=
+
 # Only used for the Gnome interface.
 # When including the Gnome interface, you need to include gnome specific
 # directories.  The ones given below is the usual spot for linux systems.
@@ -163,12 +179,18 @@ GNOMEINC=-I/usr/lib/glib/include -I/usr/lib/gnome-libs/include -I../win/gnome
 # NetHack is standard C.  If using Qt, uncomment the LINK line here to get
 # the C++ libraries linked in.
 CXXFLAGS = $(CFLAGS) -I. -I$(QTDIR)/include
-CXX=g++
+CXX ?= g++
+MOC ?= moc
 #LINK=g++
 #      For cross-compiling, eg. with gcc on Linux (see also CC further up):
 #CXX=arm-linux-g++
 #LINK=arm-linux-gcc
 
+# we specify C preprocessor flags via CFLAGS; files built with default rules
+# might include $(CPPFLAGS) which could get a value from user's environment;
+# we avoid that by forcing it empty rather than by overriding default rules
+CPPFLAGS =
+
 # file for regular expression matching
 REGEXOBJ = posixregex.o
 #REGEXOBJ = pmatchregex.o
@@ -184,6 +206,14 @@ WINTTYSRC = ../win/tty/getline.c ../win/tty/termcap.c ../win/tty/topl.c \
        ../win/tty/wintty.c
 WINTTYOBJ = getline.o termcap.o topl.o wintty.o
 #
+# Files for curses interface
+WINCURSESSRC = ../win/curses/cursmain.c ../win/curses/curswins.c \
+       ../win/curses/cursmisc.c ../win/curses/cursdial.c \
+       ../win/curses/cursstat.c ../win/curses/cursinit.c \
+       ../win/curses/cursmesg.c ../win/curses/cursinvt.c
+WINCURSESOBJ = cursmain.o curswins.o cursmisc.o cursdial.o cursstat.o \
+       cursinit.o cursmesg.o cursinvt.o
+#
 # files for an X11 port
 # (tile.c is a generated source file)
 WINX11SRC = ../win/X11/Window.c ../win/X11/dialogs.c ../win/X11/winX.c \
@@ -198,6 +228,22 @@ WINX11OBJ = Window.o dialogs.o winX.o winmap.o winmenu.o winmesg.o \
 WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp ../win/Qt/qttableview.cpp
 WINQTOBJ = qt_win.o qt_clust.o qttableview.o tile.o
 #
+# Files for a Qt 4 or 5 port
+#
+WINQT4SRC = ../win/Qt4/qt4bind.cpp ../win/Qt4/qt4click.cpp \
+       ../win/Qt4/qt4clust.cpp ../win/Qt4/qt4delay.cpp \
+       ../win/Qt4/qt4glyph.cpp ../win/Qt4/qt4icon.cpp ../win/Qt4/qt4inv.cpp \
+       ../win/Qt4/qt4key.cpp ../win/Qt4/qt4line.cpp ../win/Qt4/qt4main.cpp \
+       ../win/Qt4/qt4map.cpp ../win/Qt4/qt4menu.cpp ../win/Qt4/qt4msg.cpp \
+       ../win/Qt4/qt4plsel.cpp ../win/Qt4/qt4rip.cpp ../win/Qt4/qt4set.cpp \
+       ../win/Qt4/qt4stat.cpp ../win/Qt4/qt4str.cpp ../win/Qt4/qt4streq.cpp \
+       ../win/Qt4/qt4svsel.cpp ../win/Qt4/qt4win.cpp ../win/Qt4/qt4xcmd.cpp \
+       ../win/Qt4/qt4yndlg.cpp
+WINQT4OBJ = qt4bind.o qt4click.o qt4clust.o qt4delay.o qt4glyph.o qt4icon.o \
+       qt4inv.o qt4key.o qt4line.o qt4main.o qt4map.o qt4menu.o qt4msg.o \
+       qt4plsel.o qt4rip.o qt4set.o qt4stat.o qt4str.o qt4streq.o qt4svsel.o \
+       qt4win.o qt4xcmd.o qt4yndlg.o tile.o
+#
 # Files for a Gnome port
 #
 WINGNOMESRC = ../win/gnome/gnaskstr.c ../win/gnome/gnbind.c \
@@ -221,12 +267,15 @@ WINBEOBJ =
 #WINBESRC = ../win/BeOS/winbe.cpp ../win/BeOS/NHWindow.cpp \
 #      ../win/BeOS/NHMenuWindow.cpp ../win/BeOS/NHMapWindow.cpp tile.c
 #WINBEOBJ = winbe.o NHWindow.o NHMenuWindow.o NHMapWindow.o tile.o
-
 #
 #
 #WINSRC = $(WINTTYSRC)
 #WINOBJ = $(WINTTYOBJ)
-
+#
+# Curses - Karl Garrison, Tangles
+#WINSRC = $(WINCURSESSRC)
+#WINOBJ = $(WINCURSESOBJ)
+#
 # on some systems the termcap library is in -ltermcap or -lcurses
 # on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
 # Sysatt uses shared library in lieu of this option
@@ -245,14 +294,21 @@ WINBEOBJ =
 #
 # libraries for X11
 # If USE_XPM is defined in config.h, you will also need -lXpm here.
-WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
+#WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
 # WINX11LIB = -lXaw -lXmu -lXt -lX11
 # WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 -lm
 # WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0
 #
-# libraries for Qt
+#
+# libraries for Qt 3
 WINQTLIB = -L$(QTDIR)/lib -lqt
 #
+# libraries for Qt 4
+WINQT4LIB = `pkg-config QtGui --libs`
+#
+# libraries for Qt 5 (use with WINQT4SRC and WINQT4OBJ)
+WINQT5LIB = `pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs`
+#
 # libraries for KDE (with Qt)
 WINKDELIB = -lkdecore -lkdeui -lXext
 #
@@ -264,9 +320,20 @@ WINGEMLIB = -le_gem -lgem
 #
 # libraries for BeOS 
 WINBELIB = -lbe
-
+#
+# libraries for curses port
+# link with ncurses
+WINCURSESLIB = -lncurses
+# link with pdcurses for SDL, installed in a separate directory
+#WINCURSESLIB = -L/usr/local/lib/pdcurses -lpdcurses -lSDL
+# same as above, for XCurses
+#WINCURSESLIB = -L/usr/local/lib/pdcurses -lXCurses -lXawM -lXmu -lXext -lXt -lX11
+#
 #WINLIB = $(WINTTYLIB)
-
+#
+# For Curses
+#WINLIB = $(WINCURSESLIB)
+#
 # any other strange libraries your system needs (for Sysunix only -- the more
 # specialized targets should already be right)
 #
@@ -311,6 +378,23 @@ RANDOBJ =
 # used by `make depend' to reconstruct this Makefile; you shouldn't need this
 AWK    = nawk
 
+# when using 'makedefs -v', also force dat/gitinfo.txt to be up to date;
+# changing this to 0 will change the behavior to only make that file if
+# it doesn't already exist; to skip it completely, create an empty file
+# of that name and also set this to 0; there shouldn't be any need to
+# skip it--if nethack's sources don't reside in a git repository than
+# the script which creates that file will fail benignly and 'makedefs -v'
+# will proceed without it
+GITINFO=1
+
+# if you change this to 1, feedback while building will omit -Dthis -Wthat
+# -Isomewhere so that each file being compiled is listed on one short line;
+# it requires support for '$<' in rules with more than one prerequisite
+# (rather than just in suffix default rule), such as is implemented by
+# gnu make and others which have picked up its extensions;
+# allowed values are 0, 1, and empty (which behaves like 0)
+QUIETCC=0
+
 # ----------------------------------------
 #
 # Nothing below this line should have to be changed.
@@ -318,6 +402,36 @@ AWK        = nawk
 # Other things that have to be reconfigured are in config.h,
 # {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h
 
+# Verbosity definitions, begin
+#   Set QUIETCC=1 above to output less feedback while building.
+#   CC and CXX obey verbosity, LD and LINK don't.
+#   AT is @ when not verbose, empty otherwise
+ACTUAL_CC := $(CC)
+ACTUAL_CXX := $(CXX)
+ACTUAL_LD := $(LD)
+ACTUAL_LINK := $(LINK)
+
+CC_V0 = $(ACTUAL_CC)
+CC_V = $(CC_V0)
+CC_V1 = @echo "[CC] $<"; $(ACTUAL_CC)
+CC = $(CC_V$(QUIETCC))
+
+CXX_V0 = $(ACTUAL_CXX)
+CXX_V = $(CXX_V0)
+CXX_V1 = @echo "[CXX] $<"; $(ACTUAL_CXX)
+CXX = $(CXX_V$(QUIETCC))
+
+# LD and LINK might be based on invoking CC and may not be able to substitute
+# for QUIETCC, so feedback from them is handled differently (via $AT)
+LD = $(ACTUAL_LD)
+LINK = $(ACTUAL_LINK)
+
+AT_V0 :=
+AT_V := $(AT_V0)
+AT_V1 := @
+AT = $(AT_V$(QUIETCC))
+# Verbosity, end
+
 MAKEDEFS = ../util/makedefs
 
 # timestamp files to reduce `make' overhead and shorten .o dependency lists
@@ -330,17 +444,17 @@ HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \
           botl.c cmd.c dbridge.c decl.c detect.c dig.c display.c dlb.c do.c \
           do_name.c do_wear.c dog.c dogmove.c dokick.c dothrow.c drawing.c \
           dungeon.c eat.c end.c engrave.c exper.c explode.c extralev.c \
-          files.c fountain.c hack.c hacklib.c invent.c light.c lock.c \
-          mail.c makemon.c mapglyph.c mcastu.c mhitm.c mhitu.c minion.c \
-          mklev.c mkmap.c \
+          files.c fountain.c hack.c hacklib.c invent.c isaac64.c light.c \
+          lock.c mail.c makemon.c mapglyph.c mcastu.c mhitm.c mhitu.c \
+          minion.c mklev.c mkmap.c \
           mkmaze.c mkobj.c mkroom.c mon.c mondata.c monmove.c monstj.c \
           mplayer.c mthrowu.c muse.c music.c o_init.c objectsj.c objnam.c \
           options.c pager.c pickup.c pline.c polyself.c potion.c pray.c \
-          priest.c quest.c questpgr.c read.c rect.c region.c restore.c rip.c \
-          rnd.c role.c rumors.c save.c shk.c shknam.c sit.c sounds.c sp_lev.c \
-          spell.c steal.c steed.c sys.c teleport.c timeout.c topten.c track.c \
-          trap.c \
-          u_init.c uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
+          priest.c quest.c questpgr.c read.c rect.c region.c restore.c \
+          rip.c rnd.c role.c rumors.c save.c shk.c shknam.c sit.c sounds.c \
+          sp_lev.c spell.c steal.c steed.c sys.c teleport.c timeout.c \
+          topten.c track.c trap.c u_init.c \
+          uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \
           windows.c wizard.c worm.c worn.c write.c zap.c
 
 # all operating-system-dependent .c (for dependencies and such)
@@ -350,19 +464,20 @@ SYSCSRC = ../sys/atari/tos.c ../sys/share/pcmain.c ../sys/share/pcsys.c \
        ../sys/share/random.c \
        ../sys/share/ioctl.c ../sys/share/unixtty.c ../sys/unix/unixmain.c \
        ../sys/unix/unixunix.c ../sys/unix/unixres.c ../sys/be/bemain.c
+SYSCXXSRC = ../sys/share/cppregex.cpp
 
 # generated source files (tile.c is handled separately via WINxxxSRC)
-GENCSRC = monstr.c vis_tab.c   #tile.c
+GENCSRC = vis_tab.c    #tile.c
 
 # all windowing-system-dependent .c (for dependencies and such)
-WINCSRC = $(WINTTYSRC) $(WINX11SRC) $(WINGNOMESRC) $(WINGEMSRC)
+WINCSRC = $(WINTTYSRC) $(WINCURSESSRC) $(WINX11SRC) $(WINGNOMESRC) $(WINGEMSRC)
 # all windowing-system-dependent .cpp (for dependencies and such)
-WINCXXSRC = $(WINQTSRC) $(WINBESRC)
+WINCXXSRC = $(WINQTSRC) $(WINQT4SRC) $(WINBESRC)
 
-# Files for window system chaining.  Requires SYSCF; include via HINTSRC/HINTOBJ
-CHAINSRC=../win/chain/wc_chainin.c ../win/chain/wc_chainout.c \
-       ../win/chain/wc_trace.c
-CHAINOBJ=wc_chainin.o wc_chainout.o wc_trace.o
+# Files for window system chaining. Requires SYSCF; include via HINTSRC/HINTOBJ
+CHAINSRC = ../win/chain/wc_chainin.c ../win/chain/wc_chainout.c \
+          ../win/chain/wc_trace.c
+CHAINOBJ = wc_chainin.o wc_chainout.o wc_trace.o
 
 # .c files for this version (for date.h)
 VERSOURCES = $(HACKCSRC) $(SYSSRC) $(JSRC) $(WINSRC) $(CHAINSRC) $(GENCSRC)
@@ -381,12 +496,12 @@ HACKINCL = align.h amiconf.h artifact.h artilistj.h attrib.h beconf.h botl.h \
        global.h hack.h lev.h lint.h macconf.h mextra.h mfndpos.h micro.h \
        mkroom.h \
        monattk.h mondata.h monflag.h monst.h monsym.h obj.h objclass.h \
-       os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h region.h rm.h \
-       sp_lev.h spell.h sys.h system.h tcap.h timeout.h tosconf.h tradstdc.h \
-       trampoli.h trap.h unixconf.h vision.h vmsconf.h wintty.h \
-       winX.h winprocs.h wintype.h you.h youprop.h
+       os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h region.h \
+       rm.h sp_lev.h spell.h sys.h system.h tcap.h timeout.h tosconf.h \
+       tradstdc.h trampoli.h trap.h unixconf.h vision.h vmsconf.h wintty.h \
+       wincurs.h winX.h winprocs.h wintype.h you.h youprop.h
 
-HSOURCES = $(HACKINCL) date.h onames.h pm.h vis_tab.h\
+HSOURCES = $(HACKINCL) date.h onames.h pm.h vis_tab.h \
                lev_comp.h dgn_comp.h dgn_file.h
 
 # the following .o's _must_ be made before any others (for makedefs)
@@ -396,10 +511,10 @@ HOBJ = monstj.o objectsj.o allmain.o alloc.o apply.o artifact.o attrib.o ball.o
        bones.o botl.o cmd.o dbridge.o decl.o detect.o dig.o display.o dlb.o \
        do.o do_name.o do_wear.o dog.o dogmove.o dokick.o dothrow.o \
        drawing.o dungeon.o eat.o end.o engrave.o exper.o explode.o \
-       extralev.o files.o fountain.o hack.o hacklib.o invent.o light.o \
-       lock.o mail.o makemon.o mapglyph.o mcastu.o mhitm.o mhitu.o \
+       extralev.o files.o fountain.o hack.o hacklib.o invent.o isaac64.o \
+       light.o lock.o mail.o makemon.o mapglyph.o mcastu.o mhitm.o mhitu.o \
        minion.o mklev.o mkmap.o \
-       mkmaze.o mkobj.o mkroom.o mon.o mondata.o monmove.o monstr.o \
+       mkmaze.o mkobj.o mkroom.o mon.o mondata.o monmove.o \
        mplayer.o mthrowu.o muse.o music.o o_init.o objnam.o options.o \
        pager.o pickup.o pline.o polyself.o potion.o pray.o priest.o \
        quest.o questpgr.o read.o rect.o region.o restore.o rip.o rnd.o \
@@ -415,33 +530,33 @@ $(GAME):  $(SYSTEM)
        @echo "$(GAME) is up to date."
 
 Sysunix:       $(HOBJ) Makefile
-       @echo "Loading ..."
-       $(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
+       @echo "Linking $(GAME)."
+       $(AT)$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
        @touch Sysunix
 
 Sys3B2:        $(HOBJ) Makefile
-       @echo "Loading ..."
-       @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) -lmalloc
+       @echo "Linking $(GAME)."
+       $(AT)$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) -lmalloc
        @touch Sys3B2
 
 Sysatt:        $(HOBJ) Makefile
-       @echo "Loading ..."
-       @$(LD) $(LFLAGS) /lib/crt0s.o /lib/shlib.ifile -o $(GAME) $(HOBJ)
+       @echo "Loading $(GAME)."
+       $(AT)$(LD) $(LFLAGS) /lib/crt0s.o /lib/shlib.ifile -o $(GAME) $(HOBJ)
        @touch Sysatt
 
 Systos:        $(HOBJ) Makefile
-       @echo "Loading ..."
-       @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
+       @echo "Linking $(GAME)."
+       $(AT)$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
        @touch Systos
 
 SysV-AT:       DUMB.Setup $(HOBJ) Makefile
-       @echo "Loading ..."
-       @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
+       @echo "Linking $(GAME)."
+       $(AT)$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB)
        @touch SysV-AT
 
 SysBe: $(HOBJ) Makefile
-       @echo "Loading ..."
-       @$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
+       @echo "Linking $(GAME)."
+       $(AT)$(LINK) $(LFLAGS) -o $(GAME) $(HOBJ) $(WINLIB) $(LIBS)
        @xres -o $(GAME) ../win/BeOS/nethack.rsrc
        @mimeset -f $(GAME)
        @touch SysBe
@@ -483,7 +598,7 @@ objects.o:
        $(CC) $(CFLAGS) -c objects.c
        @rm -f $(MAKEDEFS)
 
-# Qt windowport meta-object-compiler output
+# Qt windowport meta-object-compiler output
 qt_kde0.moc: ../include/qt_kde0.h
        $(QTDIR)/bin/moc -o qt_kde0.moc ../include/qt_kde0.h
 
@@ -493,23 +608,53 @@ qt_win.moc: ../include/qt_win.h
 qttableview.moc: ../include/qttableview.h
        $(QTDIR)/bin/moc -o qttableview.moc ../include/qttableview.h
 
-$(MAKEDEFS): ../util/makedefs.c  $(CONFIG_H) ../include/permonst.h \
+# Qt 4 windowport meta-object-compiler output
+qt4kde0.moc : ../win/Qt4/qt4kde0.h
+       $(QTDIR)/bin/$(MOC) -o qt4kde0.moc ../win/Qt4/qt4kde0.h
+qt4main.moc : ../win/Qt4/qt4main.h
+       $(QTDIR)/bin/$(MOC) -o qt4main.moc ../win/Qt4/qt4main.h
+qt4map.moc : ../win/Qt4/qt4map.h
+       $(QTDIR)/bin/$(MOC) -o qt4map.moc ../win/Qt4/qt4map.h
+qt4menu.moc : ../win/Qt4/qt4menu.h
+       $(QTDIR)/bin/$(MOC) -o qt4menu.moc ../win/Qt4/qt4menu.h
+qt4msg.moc : ../win/Qt4/qt4msg.h
+       $(QTDIR)/bin/$(MOC) -o qt4msg.moc ../win/Qt4/qt4msg.h
+qt4plsel.moc : ../win/Qt4/qt4plsel.h
+       $(QTDIR)/bin/$(MOC) -o qt4plsel.moc ../win/Qt4/qt4plsel.h
+qt4set.moc : ../win/Qt4/qt4set.h
+       $(QTDIR)/bin/$(MOC) -o qt4set.moc ../win/Qt4/qt4set.h
+qt4stat.moc : ../win/Qt4/qt4stat.h
+       $(QTDIR)/bin/$(MOC) -o qt4stat.moc ../win/Qt4/qt4stat.h
+qt4xcmd.moc : ../win/Qt4/qt4xcmd.h
+       $(QTDIR)/bin/$(MOC) -o qt4xcmd.moc ../win/Qt4/qt4xcmd.h
+qt4yndlg.moc : ../win/Qt4/qt4yndlg.h
+       $(QTDIR)/bin/$(MOC) -o qt4yndlg.moc ../win/Qt4/qt4yndlg.h
+
+#      build monst.o and objects.o before executing '$(MAKE) makedefs'
+$(MAKEDEFS): $(FIRSTOBJ) \
+               ../util/makedefs.c $(CONFIG_H) ../include/permonst.h \
                ../include/objclass.h ../include/monsym.h \
                ../include/artilist.h ../include/dungeon.h ../include/obj.h \
                ../include/monst.h ../include/you.h ../include/flag.h \
                ../include/dlb.h ../include/patchlevel.h ../include/qtext.h
-       @( cd ../util ; $(MAKE) makedefs)
-
+       @( cd ../util ; $(MAKE) makedefs )
+
+#      Source files created by 'makedefs' at build time.
+#      Each is given an artificial dependency upon the one before
+#      so that parallel makes will have to build them sequentially.
+#      (More for documentation than effect; 'make' should know not
+#      to try to build $(MAKEDEFS) for bar.h while it is in the
+#      process of building it for foo.h.)
 ../include/onames.h: $(MAKEDEFS)
        @( cd ../util ; $(MAKE) ../include/onames.h )
-../include/pm.h: $(MAKEDEFS)
+../include/pm.h: $(MAKEDEFS) ../include/onames.h
        @( cd ../util ; $(MAKE) ../include/pm.h )
-monstr.c: $(MAKEDEFS)
-       @( cd ../util ; $(MAKE) ../src/monstr.c )
-../include/vis_tab.h: $(MAKEDEFS)
+../include/vis_tab.h: $(MAKEDEFS) ../include/pm.h
        @( cd ../util ; $(MAKE) ../include/vis_tab.h )
 # makedefs -z makes both vis_tab.h and vis_tab.c, but writes the .h first
 vis_tab.c: ../include/vis_tab.h
+#      Created at build time for configurations which support tiles,
+#      but not by makedefs so not connected to the others.
 tile.c: ../win/share/tilemap.c $(HACK_H)
        @( cd ../util ; $(MAKE) ../src/tile.c )
 
@@ -521,10 +666,13 @@ tile.c: ../win/share/tilemap.c $(HACK_H)
 #      file far more complex.  Since "hack.h" depends on most of the include
 #      files, we kludge around this by making date.h dependent on hack.h,
 #      even though it doesn't include this file.
+#      Do NOT include ../dat/gitinfo.txt as either a prerequisite or target.
+#      'makedefs -v' processes it when present and ignores it if not.
 #
 #      hack.h depends on makedefs' output, so we know makedefs will be
 #      up to date before being executed
 ../include/date.h:     $(VERSOURCES) $(HACK_H)
+       -$(SHELL) ../sys/unix/gitinfo.sh $(GITINFO) #before 'makedefs -v'
        ../util/makedefs -v
 
 
@@ -549,16 +697,16 @@ clean:
 spotless: clean
        -rm -f a.out core $(GAME) Sys*
        -rm -f ../include/date.h ../include/onames.h ../include/pm.h
-       -rm -f monstr.c ../include/vis_tab.h vis_tab.c tile.c *.moc
+       -rm -f ../include/vis_tab.h vis_tab.c tile.c *.moc
        -rm -f ../win/gnome/gn_rip.h
 
 
 depend: ../sys/unix/depend.awk \
-               $(SYSCSRC) $(WINCSRC) $(WINCXXSRC) $(CHAINSRC) $(GENCSRC) \
-               $(HACKCSRC)
+               $(SYSCSRC) $(WINCSRC) $(SYSCXXSRC) $(WINCXXSRC) \
+               $(CHAINSRC) $(GENCSRC) $(HACKCSRC)
        $(AWK) -f ../sys/unix/depend.awk ../include/*.h \
-               $(SYSCSRC) $(WINCSRC) $(WINCXXSRC) $(CHAINSRC) $(GENCSRC) \
-               $(HACKCSRC) >makedep
+               $(SYSCSRC) $(WINCSRC) $(SYSCXXSRC) $(WINCXXSRC) \
+               $(CHAINSRC) $(GENCSRC) $(HACKCSRC) >makedep
        @echo '/^# DO NOT DELETE THIS LINE OR CHANGE ANYTHING BEYOND IT/+2,$$d' >eddep
        @echo '$$r makedep' >>eddep
        @echo 'w' >>eddep
@@ -599,136 +747,238 @@ $(HACK_H): ../include/hack.h $(CONFIG_H) ../include/lint.h ../include/align.h \
        touch $(HACK_H)
 #
 tos.o: ../sys/atari/tos.c $(HACK_H) ../include/tcap.h
-       $(CC) $(CFLAGS) -c ../sys/atari/tos.c
-pcmain.o: ../sys/share/pcmain.c $(HACK_H) ../include/dlb.h \
-               #../include/win32api.h
-       $(CC) $(CFLAGS) -c ../sys/share/pcmain.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/atari/tos.c
+pcmain.o: ../sys/share/pcmain.c $(HACK_H) ../include/dlb.h
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/pcmain.c
 pcsys.o: ../sys/share/pcsys.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/pcsys.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/pcsys.c
 pctty.o: ../sys/share/pctty.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/pctty.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/pctty.c
 pcunix.o: ../sys/share/pcunix.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/pcunix.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/pcunix.c
 pmatchregex.o: ../sys/share/pmatchregex.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/pmatchregex.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/pmatchregex.c
 posixregex.o: ../sys/share/posixregex.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/posixregex.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/posixregex.c
 random.o: ../sys/share/random.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/random.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/random.c
 ioctl.o: ../sys/share/ioctl.c $(HACK_H) ../include/tcap.h
-       $(CC) $(CFLAGS) -c ../sys/share/ioctl.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/ioctl.c
 unixtty.o: ../sys/share/unixtty.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/share/unixtty.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/share/unixtty.c
 unixmain.o: ../sys/unix/unixmain.c $(HACK_H) ../include/dlb.h
-       $(CC) $(CFLAGS) -c ../sys/unix/unixmain.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/unix/unixmain.c
 unixunix.o: ../sys/unix/unixunix.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../sys/unix/unixunix.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/unix/unixunix.c
 unixres.o: ../sys/unix/unixres.c $(CONFIG_H)
-       $(CC) $(CFLAGS) -c ../sys/unix/unixres.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/unix/unixres.c
 bemain.o: ../sys/be/bemain.c $(HACK_H) ../include/dlb.h
-       $(CC) $(CFLAGS) -c ../sys/be/bemain.c
+       $(CC) $(CFLAGS) -c -o $@ ../sys/be/bemain.c
 getline.o: ../win/tty/getline.c $(HACK_H) ../include/func_tab.h
-       $(CC) $(CFLAGS) -c ../win/tty/getline.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/tty/getline.c
 termcap.o: ../win/tty/termcap.c $(HACK_H) ../include/tcap.h
-       $(CC) $(CFLAGS) -c ../win/tty/termcap.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/tty/termcap.c
 topl.o: ../win/tty/topl.c $(HACK_H) ../include/tcap.h
-       $(CC) $(CFLAGS) -c ../win/tty/topl.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/tty/topl.c
 wintty.o: ../win/tty/wintty.c $(HACK_H) ../include/dlb.h ../include/tcap.h
-       $(CC) $(CFLAGS) -c ../win/tty/wintty.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/tty/wintty.c
+cursmain.o: ../win/curses/cursmain.c $(HACK_H) ../include/patchlevel.h \
+               ../include/wincurs.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursmain.c
+curswins.o: ../win/curses/curswins.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/curswins.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/curswins.c
+cursmisc.o: ../win/curses/cursmisc.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursmisc.h ../include/func_tab.h ../include/dlb.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursmisc.c
+cursdial.o: ../win/curses/cursdial.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursdial.h ../include/func_tab.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursdial.c
+cursstat.o: ../win/curses/cursstat.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursstat.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursstat.c
+cursinit.o: ../win/curses/cursinit.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursinit.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursinit.c
+cursmesg.o: ../win/curses/cursmesg.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursmesg.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursmesg.c
+cursinvt.o: ../win/curses/cursinvt.c $(HACK_H) ../include/wincurs.h \
+               ../win/curses/cursinvt.h
+       $(CC) $(CFLAGS) -c -o $@ ../win/curses/cursinvt.c
 Window.o: ../win/X11/Window.c ../include/xwindowp.h ../include/xwindow.h \
                $(CONFIG_H) ../include/lint.h
-       $(CC) $(CFLAGS) -c ../win/X11/Window.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/Window.c
 dialogs.o: ../win/X11/dialogs.c $(CONFIG_H) ../include/lint.h
-       $(CC) $(CFLAGS) -c ../win/X11/dialogs.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/dialogs.c
 winX.o: ../win/X11/winX.c $(HACK_H) ../include/winX.h ../include/dlb.h \
-               ../win/X11/nh72icon ../win/X11/nh56icon ../win/X11/nh32icon
-       $(CC) $(CFLAGS) -c ../win/X11/winX.c
+               ../include/xwindow.h ../win/X11/nh72icon ../win/X11/nh56icon \
+               ../win/X11/nh32icon
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winX.c
 winmap.o: ../win/X11/winmap.c ../include/xwindow.h $(HACK_H) ../include/dlb.h \
                ../include/winX.h ../include/tile2x11.h
-       $(CC) $(CFLAGS) -c ../win/X11/winmap.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winmap.c
 winmenu.o: ../win/X11/winmenu.c $(HACK_H) ../include/winX.h
-       $(CC) $(CFLAGS) -c ../win/X11/winmenu.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winmenu.c
 winmesg.o: ../win/X11/winmesg.c ../include/xwindow.h $(HACK_H) ../include/winX.h
-       $(CC) $(CFLAGS) -c ../win/X11/winmesg.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winmesg.c
 winmisc.o: ../win/X11/winmisc.c $(HACK_H) ../include/func_tab.h \
                ../include/winX.h
-       $(CC) $(CFLAGS) -c ../win/X11/winmisc.c
-winstat.o: ../win/X11/winstat.c $(HACK_H) ../include/winX.h
-       $(CC) $(CFLAGS) -c ../win/X11/winstat.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winmisc.c
+winstat.o: ../win/X11/winstat.c $(HACK_H) ../include/winX.h ../include/xwindow.h
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winstat.c
 wintext.o: ../win/X11/wintext.c $(HACK_H) ../include/winX.h ../include/xwindow.h
-       $(CC) $(CFLAGS) -c ../win/X11/wintext.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/wintext.c
 winval.o: ../win/X11/winval.c $(HACK_H) ../include/winX.h
-       $(CC) $(CFLAGS) -c ../win/X11/winval.c
+       $(CC) $(CFLAGS) $(X11CFLAGS) -c -o $@ ../win/X11/winval.c
 tile.o: tile.c $(HACK_H)
 gnaskstr.o: ../win/gnome/gnaskstr.c ../win/gnome/gnaskstr.h \
                ../win/gnome/gnmain.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnaskstr.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnaskstr.c
 gnbind.o: ../win/gnome/gnbind.c ../win/gnome/gnbind.h ../win/gnome/gnmain.h \
                ../win/gnome/gnmenu.h ../win/gnome/gnaskstr.h \
                ../win/gnome/gnyesno.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnbind.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnbind.c
 gnglyph.o: ../win/gnome/gnglyph.c ../win/gnome/gnglyph.h ../include/tile2x11.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnglyph.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnglyph.c
 gnmain.o: ../win/gnome/gnmain.c ../win/gnome/gnmain.h ../win/gnome/gnsignal.h \
                ../win/gnome/gnbind.h ../win/gnome/gnopts.h $(HACK_H) \
                ../include/date.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmain.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnmain.c
 gnmap.o: ../win/gnome/gnmap.c ../win/gnome/gnmap.h ../win/gnome/gnglyph.h \
                ../win/gnome/gnsignal.h $(HACK_H)
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmap.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnmap.c
 gnmenu.o: ../win/gnome/gnmenu.c ../win/gnome/gnmenu.h ../win/gnome/gnmain.h \
                ../win/gnome/gnbind.h ../include/func_tab.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmenu.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnmenu.c
 gnmesg.o: ../win/gnome/gnmesg.c ../win/gnome/gnmesg.h ../win/gnome/gnsignal.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnmesg.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnmesg.c
 gnopts.o: ../win/gnome/gnopts.c ../win/gnome/gnopts.h ../win/gnome/gnglyph.h \
                ../win/gnome/gnmain.h ../win/gnome/gnmap.h $(HACK_H)
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnopts.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnopts.c
 gnplayer.o: ../win/gnome/gnplayer.c ../win/gnome/gnplayer.h \
                ../win/gnome/gnmain.h $(HACK_H)
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnplayer.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnplayer.c
 gnsignal.o: ../win/gnome/gnsignal.c ../win/gnome/gnsignal.h \
                ../win/gnome/gnmain.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnsignal.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnsignal.c
 gnstatus.o: ../win/gnome/gnstatus.c ../win/gnome/gnstatus.h \
                ../win/gnome/gnsignal.h ../win/gnome/gn_xpms.h \
                ../win/gnome/gnomeprv.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnstatus.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnstatus.c
 gntext.o: ../win/gnome/gntext.c ../win/gnome/gntext.h ../win/gnome/gnmain.h \
                ../win/gnome/gn_rip.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gntext.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gntext.c
 gnyesno.o: ../win/gnome/gnyesno.c ../win/gnome/gnbind.h ../win/gnome/gnyesno.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnyesno.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnyesno.c
 gnworn.o: ../win/gnome/gnworn.c ../win/gnome/gnworn.h ../win/gnome/gnglyph.h \
                ../win/gnome/gnsignal.h ../win/gnome/gnomeprv.h
-       $(CC) $(CFLAGS) $(GNOMEINC) -c ../win/gnome/gnworn.c
+       $(CC) $(CFLAGS) $(GNOMEINC) -c -o $@ ../win/gnome/gnworn.c
 wingem.o: ../win/gem/wingem.c $(HACK_H) ../include/func_tab.h ../include/dlb.h \
                ../include/patchlevel.h ../include/wingem.h
-       $(CC) $(CFLAGS) -c ../win/gem/wingem.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/gem/wingem.c
 wingem1.o: ../win/gem/wingem1.c ../include/gem_rsc.h ../include/load_img.h \
                ../include/gr_rect.h ../include/wintype.h ../include/wingem.h
-       $(CC) $(CFLAGS) -c ../win/gem/wingem1.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/gem/wingem1.c
 load_img.o: ../win/gem/load_img.c ../include/load_img.h
-       $(CC) $(CFLAGS) -c ../win/gem/load_img.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/gem/load_img.c
 gr_rect.o: ../win/gem/gr_rect.c ../include/gr_rect.h
-       $(CC) $(CFLAGS) -c ../win/gem/gr_rect.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/gem/gr_rect.c
 tile.o: tile.c $(HACK_H)
+cppregex.o: ../sys/share/cppregex.cpp
+       $(CXX) $(CXXFLAGS) -c -o $@ ../sys/share/cppregex.cpp
 qt_win.o: ../win/Qt/qt_win.cpp $(HACK_H) ../include/func_tab.h \
                ../include/dlb.h ../include/patchlevel.h ../include/tile2x11.h \
                ../include/qt_win.h ../include/qt_clust.h ../include/qt_kde0.h \
                ../include/qt_xpms.h qt_win.moc qt_kde0.moc qttableview.moc
-       $(CXX) $(CXXFLAGS) -c ../win/Qt/qt_win.cpp
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt/qt_win.cpp
 qt_clust.o: ../win/Qt/qt_clust.cpp ../include/qt_clust.h
-       $(CXX) $(CXXFLAGS) -c ../win/Qt/qt_clust.cpp
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt/qt_clust.cpp
 qttableview.o: ../win/Qt/qttableview.cpp ../include/qttableview.h
-       $(CXX) $(CXXFLAGS) -c ../win/Qt/qttableview.cpp
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt/qttableview.cpp
+qt4bind.o: ../win/Qt4/qt4bind.cpp $(HACK_H) ../win/Qt4/qt4bind.h \
+               ../win/Qt4/qt4click.h ../win/Qt4/qt4delay.h \
+               ../win/Qt4/qt4xcmd.h ../win/Qt4/qt4key.h ../win/Qt4/qt4map.h \
+               ../win/Qt4/qt4menu.h ../win/Qt4/qt4msg.h ../win/Qt4/qt4plsel.h \
+               ../win/Qt4/qt4svsel.h ../win/Qt4/qt4set.h ../win/Qt4/qt4stat.h \
+               ../win/Qt4/qt4streq.h ../win/Qt4/qt4yndlg.h \
+               ../win/Qt4/qt4str.h ../include/dlb.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4bind.cpp
+qt4click.o: ../win/Qt4/qt4click.cpp $(HACK_H) ../win/Qt4/qt4click.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4click.cpp
+qt4clust.o: ../win/Qt4/qt4clust.cpp ../win/Qt4/qt4clust.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4clust.cpp
+qt4delay.o: ../win/Qt4/qt4delay.cpp $(HACK_H) ../win/Qt4/qt4delay.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4delay.cpp
+qt4glyph.o: ../win/Qt4/qt4glyph.cpp $(HACK_H) ../include/tile2x11.h \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4glyph.cpp
+qt4icon.o: ../win/Qt4/qt4icon.cpp $(HACK_H) ../win/Qt4/qt4icon.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4icon.cpp
+qt4inv.o: ../win/Qt4/qt4inv.cpp $(HACK_H) ../win/Qt4/qt4inv.h \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4set.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4inv.cpp
+qt4key.o: ../win/Qt4/qt4key.cpp $(HACK_H) ../win/Qt4/qt4key.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4key.cpp
+qt4line.o: ../win/Qt4/qt4line.cpp $(HACK_H) ../win/Qt4/qt4line.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4line.cpp
+qt4main.o: ../win/Qt4/qt4main.cpp $(HACK_H) ../include/patchlevel.h \
+               ../win/Qt4/qt4main.h qt4main.moc ../win/Qt4/qt4bind.h \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4inv.h ../win/Qt4/qt4key.h \
+               ../win/Qt4/qt4map.h ../win/Qt4/qt4msg.h ../win/Qt4/qt4set.h \
+               ../win/Qt4/qt4stat.h ../win/Qt4/qt4str.h qt4kde0.moc
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4main.cpp
+qt4map.o: ../win/Qt4/qt4map.cpp $(HACK_H) ../win/Qt4/qt4map.h qt4map.moc \
+               ../win/Qt4/qt4click.h ../win/Qt4/qt4glyph.h \
+               ../include/qt_xpms.h ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4map.cpp
+qt4menu.o: ../win/Qt4/qt4menu.cpp $(HACK_H) ../win/Qt4/qt4menu.h qt4menu.moc \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4set.h \
+               ../win/Qt4/qt4streq.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4menu.cpp
+qt4msg.o: ../win/Qt4/qt4msg.cpp $(HACK_H) ../win/Qt4/qt4msg.h qt4msg.moc \
+               ../win/Qt4/qt4map.h ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4msg.cpp
+qt4plsel.o: ../win/Qt4/qt4plsel.cpp $(HACK_H) ../win/Qt4/qt4plsel.h \
+               qt4plsel.moc ../win/Qt4/qt4bind.h ../win/Qt4/qt4glyph.h \
+               ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4plsel.cpp
+qt4rip.o: ../win/Qt4/qt4rip.cpp $(HACK_H) ../win/Qt4/qt4rip.h \
+               ../win/Qt4/qt4bind.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4rip.cpp
+qt4set.o: ../win/Qt4/qt4set.cpp $(HACK_H) ../win/Qt4/qt4set.h qt4set.moc \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4set.cpp
+qt4stat.o: ../win/Qt4/qt4stat.cpp $(HACK_H) ../win/Qt4/qt4stat.h qt4stat.moc \
+               ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h ../include/qt_xpms.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4stat.cpp
+qt4str.o: ../win/Qt4/qt4str.cpp ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4str.cpp
+qt4streq.o: ../win/Qt4/qt4streq.cpp $(HACK_H) ../win/Qt4/qt4streq.h \
+               ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4streq.cpp
+qt4svsel.o: ../win/Qt4/qt4svsel.cpp $(HACK_H) ../win/Qt4/qt4svsel.h \
+               ../win/Qt4/qt4bind.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4svsel.cpp
+qt4win.o: ../win/Qt4/qt4win.cpp $(HACK_H) ../win/Qt4/qt4win.h \
+               ../win/Qt4/qt4bind.h ../win/Qt4/qt4click.h \
+               ../win/Qt4/qt4glyph.h ../win/Qt4/qt4inv.h ../win/Qt4/qt4key.h \
+               ../win/Qt4/qt4icon.h ../win/Qt4/qt4map.h ../win/Qt4/qt4menu.h \
+               ../win/Qt4/qt4msg.h ../win/Qt4/qt4set.h ../win/Qt4/qt4clust.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4win.cpp
+qt4xcmd.o: ../win/Qt4/qt4xcmd.cpp $(HACK_H) ../include/func_tab.h \
+               ../win/Qt4/qt4xcmd.h qt4xcmd.moc ../win/Qt4/qt4bind.h \
+               ../win/Qt4/qt4set.h ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4xcmd.cpp
+qt4yndlg.o: ../win/Qt4/qt4yndlg.cpp $(HACK_H) ../win/Qt4/qt4yndlg.h \
+               qt4yndlg.moc ../win/Qt4/qt4str.h
+       $(CXX) $(CXXFLAGS) -c -o $@ ../win/Qt4/qt4yndlg.cpp
 wc_chainin.o: ../win/chain/wc_chainin.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../win/chain/wc_chainin.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/chain/wc_chainin.c
 wc_chainout.o: ../win/chain/wc_chainout.c $(HACK_H)
-       $(CC) $(CFLAGS) -c ../win/chain/wc_chainout.c
+       $(CC) $(CFLAGS) -c -o $@ ../win/chain/wc_chainout.c
 wc_trace.o: ../win/chain/wc_trace.c $(HACK_H) ../include/func_tab.h
-       $(CC) $(CFLAGS) -c ../win/chain/wc_trace.c
-monstr.o: monstr.c $(CONFIG_H)
+       $(CC) $(CFLAGS) -c -o $@ ../win/chain/wc_trace.c
 vis_tab.o: vis_tab.c $(CONFIG_H) ../include/vis_tab.h
 allmain.o: allmain.c $(HACK_H)
 alloc.o: alloc.c $(CONFIG_H)
@@ -738,7 +988,7 @@ attrib.o: attrib.c $(HACK_H)
 ball.o: ball.c $(HACK_H)
 bones.o: bones.c $(HACK_H) ../include/lev.h
 botl.o: botl.c $(HACK_H)
-cmd.o: cmd.c $(HACK_H) ../include/func_tab.h
+cmd.o: cmd.c $(HACK_H) ../include/lev.h ../include/func_tab.h
 dbridge.o: dbridge.c $(HACK_H)
 decl.o: decl.c $(HACK_H)
 detect.o: detect.c $(HACK_H) ../include/artifact.h
@@ -766,6 +1016,7 @@ fountain.o: fountain.c $(HACK_H)
 hack.o: hack.c $(HACK_H)
 hacklib.o: hacklib.c $(HACK_H)
 invent.o: invent.c $(HACK_H)
+isaac64.o: isaac64.c $(CONFIG_H) ../include/isaac64.h ../include/integer.h
 light.o: light.c $(HACK_H) ../include/lev.h
 lock.o: lock.c $(HACK_H)
 mail.o: mail.c $(HACK_H) ../include/mail.h