#  Makefile for GNU Emacs on Windows NT
#  Copyright (c) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
#   Tim Fleehart (apollo@online.com)            17-Apr-92
#   Geoff Voelker (voelker@cs.washington.edu)   11-20-93
#
#  This file is part of GNU Emacs.
#  
#  GNU Emacs is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.
#  
#  GNU Emacs is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with GNU Emacs; see the file COPYING.  If not, write to
#  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
#

# 
# Sets up the system dependent macros.
#
!include ..\nt\makefile.def

!IFDEF NTGUI
SUBSYSTEM=windows
!ELSE
SUBSYSTEM=console
!ENDIF

#
# HAVE_CONFIG_H is required by some generic gnu sources stuck into
# the emacs source tree.
#
LOCAL_FLAGS     = -Demacs=1 -DWINDOWSNT -DDOS_NT -DHAVE_CONFIG_H -I..\nt\inc

EMACS           = $(BLD)\emacs.exe
TEMACS          = $(BLD)\temacs.exe
TLIB1           = $(BLD)\temacs1.lib
TLIB2           = $(BLD)\temacs2.lib
!IFDEF NTGUI
TLIBW32         = $(BLD)\temacw32.lib
!ELSE
TLIBW32		=
!ENDIF
TOBJ            = $(BLD)\emacs.obj
!if $(MSVCNT11)
TRES		= $(BLD)\emacs.res
!else
TRES		= $(BLD)\emacs.rbj
!endif
TLASTLIB	= $(BLD)\lastfile.lib

LINK_FLAGS      = $(ARCH_LDFLAGS) -stack:0x1000000 -base:0xD00000 -debug:full -debugtype:cv -machine:$(ARCH) -subsystem:$(SUBSYSTEM) -entry:_start -map:$(BLD)\temacs.map -map

#
# Split up the objects into two sets so that we don't run out of
# command line space when we link them into a library.
#
OBJ1 =  $(BLD)\abbrev.obj       \
	$(BLD)\alloc.obj        \
	$(BLD)\alloca.obj       \
	$(BLD)\buffer.obj       \
	$(BLD)\bytecode.obj     \
	$(BLD)\callint.obj      \
	$(BLD)\callproc.obj     \
	$(BLD)\casefiddle.obj	\
	$(BLD)\cm.obj           \
	$(BLD)\cmds.obj         \
	$(BLD)\data.obj         \
	$(BLD)\dired.obj        \
	$(BLD)\dispnew.obj      \
	$(BLD)\doc.obj          \
	$(BLD)\doprnt.obj       \
	$(BLD)\editfns.obj      \
	$(BLD)\eval.obj         \
	$(BLD)\fileio.obj       \
	$(BLD)\filelock.obj     \
	$(BLD)\filemode.obj     \
	$(BLD)\fns.obj          \
	$(BLD)\indent.obj       \
	$(BLD)\insdel.obj       \
	$(BLD)\keyboard.obj     \
	$(BLD)\keymap.obj       \
	$(BLD)\lread.obj        \
	$(BLD)\macros.obj       \
	$(BLD)\marker.obj       \
	$(BLD)\minibuf.obj      \
	$(BLD)\mocklisp.obj

OBJ2 =  $(BLD)\nt.obj           \
	$(BLD)\ntheap.obj       \
	$(BLD)\ntinevt.obj      \
	$(BLD)\ntproc.obj       \
	$(BLD)\ntterm.obj       \
	$(BLD)\print.obj        \
	$(BLD)\process.obj      \
	$(BLD)\regex.obj        \
	$(BLD)\scroll.obj       \
	$(BLD)\search.obj       \
	$(BLD)\syntax.obj       \
	$(BLD)\sysdep.obj       \
	$(BLD)\term.obj         \
	$(BLD)\termcap.obj      \
	$(BLD)\tparam.obj       \
	$(BLD)\undo.obj         \
	$(BLD)\unexnt.obj       \
	$(BLD)\window.obj       \
	$(BLD)\xdisp.obj        \
	$(BLD)\casetab.obj      \
	$(BLD)\floatfns.obj     \
	$(BLD)\frame.obj        \
	$(BLD)\gmalloc.obj      \
	$(BLD)\intervals.obj    \
	$(BLD)\ralloc.obj       \
	$(BLD)\textprop.obj     \
	$(BLD)\vm-limit.obj	\
	$(BLD)\region-cache.obj	\
	$(BLD)\strftime.obj

WIN32OBJ = $(BLD)\w32term.obj	\
	   $(BLD)\w32xfns.obj	\
	   $(BLD)\w32fns.obj	\
	   $(BLD)\w32faces.obj	\
	   $(BLD)\w32select.obj	\
	   $(BLD)\w32menu.obj	\
	   $(BLD)\w32reg.obj

LIBS =  $(TLIB1)	\
	$(TLIB2)	\
!IFDEF NTGUI
	$(TLIBW32)      \
!ENDIF
	$(TLASTLIB)	\
!IFDEF NTGUI
	gdi32.lib       \
	comdlg32.lib    \
!ENDIF
	$(BASE_LIBS)	\
	$(ADVAPI32)	\
	user32.lib	\
	mpr.lib

#
# Build the executable and dump it.
#
all:            $(BLD) $(EMACS) 

#
# Headers we would preprocess if we could.
#
PREPARED_HEADERS = config.h paths.h
config.h:	..\nt\$(CONFIG_H)
		$(CP) $** $@
paths.h:	..\nt\paths.h
		$(CP) $** $@

#
# Make sure we have the DOC file in the right place.
#
DOC		= obj\etc\DOC-X
$(DOC):;	cd ..\lib-src 
		- $(DEL) DOC-X
		$(MAKE) -f makefile.nt all
		cd ..\src

#
# The dumped executable
#
emacs:          $(EMACS)
$(EMACS):       $(PREPARED_HEADERS) $(DOC) $(TEMACS)
		cd $(BLD)
		temacs.exe -batch -l loadup dump
		cd ..\..

#
# The undumped executable
#
temacs:         $(BLD) $(TEMACS)
$(TEMACS):      $(TLIB1) $(TLIB2) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
		$(LINK) -out:$(TEMACS) $(LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)

#
# The resource file.  NT 3.10 requires the use of cvtres; even though
# it is not necessary on later versions, it is still ok to use it.
#
$(TRES):	..\nt\emacs.rc
		$(RC) -i..\nt -Fo$(BLD)\emacs.res $**
!if !$(MSVCNT11)
		$(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
!endif

#
# Build the library.  Split up the build into two phases...otherwise we 
# run out of command line space.
#
$(TLIB1):       $(OBJ1)
		@- $(AR) -out:$@ $**
$(TLIB2):	$(OBJ2)
		@- $(AR) -out:$@ $**
!IFDEF NTGUI
$(TLIBW32):	$(WIN32OBJ)
		@- $(AR) -out:$@ $**
!ENDIF

#
# Place lastfile.obj in its own library so that it can be loaded after
# the source libraries but before any system libraries.  Doing so defines
# the end of Emacs' data section portably across compilers and systems.
#
$(TLASTLIB):	$(BLD)\lastfile.obj
  		@- $(AR) -out:$@ $**

#
# Object files.
#
.c{$(BLD)}.obj:
		$(CC) $(CFLAGS) -Fo$@ $<

#
# Assuming INSTALL_DIR is defined, build and install emacs in it.
#
install:        all
		- mkdir $(INSTALL_DIR)\bin
		$(CP) $(EMACS) $(INSTALL_DIR)\bin

#
# Maintenance
# 
clean:;         - $(DEL) *~ *.pdb config.h paths.h
		- $(DEL_TREE) deleted
		- $(DEL_TREE) obj

#
# These files are the ones that compile conditionally on CANNOT_DUMP...
# this target is mostly used for debugging.
#
cleandump:;     cd $(BLD)
		- $(DEL) callproc.obj data.obj dispnew.obj doc.obj editfns.obj emacs.obj lread.obj process.obj sysdep.obj term.obj ntheap.obj unexnt.obj
		cd ..\..


### DEPENDENCIES ###

EMACS_ROOT	= ..
SRC		= .

$(BLD)\abbrev.obj : \
	$(SRC)\abbrev.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h

$(BLD)\alloc.obj : \
	$(SRC)\alloc.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\puresize.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h \
	$(SRC)\frame.h \
	$(SRC)\blockinput.h \
	$(SRC)\syssignal.h

$(BLD)\alloca.obj : \
	$(SRC)\alloca.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\blockinput.h

$(BLD)\buffer.obj : \
	$(SRC)\buffer.c \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\window.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\indent.h \
	$(SRC)\blockinput.h \
	$(SRC)\region-cache.h

$(BLD)\bytecode.obj : \
	$(SRC)\bytecode.c \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\syntax.h

$(BLD)\callint.obj : \
	$(SRC)\callint.c \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h \
	$(SRC)\keyboard.h \
	$(SRC)\window.h \
	$(SRC)\mocklisp.h

$(BLD)\callproc.obj : \
	$(SRC)\callproc.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\msdos.h \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\process.h \
	$(SRC)\syssignal.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h

$(BLD)\casefiddle.obj : \
	$(SRC)\casefiddle.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h \
	$(SRC)\syntax.h
	$(CC) $(CFLAGS) -Fo$@ casefiddle.c

$(BLD)\casetab.obj : \
	$(SRC)\casetab.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h

$(BLD)\cm.obj : \
	$(SRC)\cm.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\cm.h \
	$(SRC)\termhooks.h

$(BLD)\cmds.obj : \
	$(SRC)\cmds.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\syntax.h

$(BLD)\data.obj : \
	$(SRC)\data.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\puresize.h \
	$(SRC)\buffer.h \
	$(SRC)\syssignal.h

$(BLD)\dired.obj : \
	$(SRC)\dired.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\vmsdir.h \
	$(SRC)\ndir.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h \
	$(SRC)\regex.h

$(BLD)\dispnew.obj : \
	$(SRC)\dispnew.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\termchar.h \
	$(SRC)\termopts.h \
	$(SRC)\termhooks.h \
	$(SRC)\cm.h \
	$(SRC)\buffer.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\commands.h \
	$(SRC)\disptab.h \
	$(SRC)\indent.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h \
	$(SRC)\w32term.h \
	$(SRC)\xterm.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h

$(BLD)\doc.obj : \
	$(SRC)\doc.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\keyboard.h

$(BLD)\doprnt.obj : \
	$(SRC)\doprnt.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h

$(BLD)\dosfns.obj : \
	$(SRC)\dosfns.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\termchar.h \
	$(SRC)\termhooks.h \
	$(SRC)\frame.h \
	$(SRC)\dosfns.h \
	$(SRC)\msdos.h

$(BLD)\editfns.obj : \
	$(SRC)\editfns.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\uaf.h \
	$(SRC)\vms-pwd.h \
	$(EMACS_ROOT)\nt\inc\pwd.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h

$(BLD)\emacs.obj : \
	$(SRC)\emacs.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h \
	$(SRC)\syssignal.h \
	$(SRC)\process.h

$(BLD)\eval.obj : \
	$(SRC)\eval.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\blockinput.h \
	$(SRC)\commands.h \
	$(SRC)\keyboard.h

$(BLD)\fileio.obj : \
	$(SRC)\fileio.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\uaf.h \
	$(SRC)\vms-pwd.h \
	$(EMACS_ROOT)\nt\inc\pwd.h \
	$(SRC)\msdos.h \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(SRC)\vmsdir.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h

$(BLD)\filelock.obj : \
	$(SRC)\filelock.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\uaf.h \
	$(SRC)\vms-pwd.h \
	$(EMACS_ROOT)\nt\inc\pwd.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\lisp.h \
	$(EMACS_ROOT)\src\paths.h \
	$(SRC)\buffer.h \
	$(SRC)\vmsdir.h \
	$(SRC)\ndir.h

$(BLD)\filemode.obj : \
	$(SRC)\filemode.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h

$(BLD)\floatfns.obj : \
	$(SRC)\floatfns.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\syssignal.h

$(BLD)\fns.obj : \
	$(SRC)\fns.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\keyboard.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h

$(BLD)\frame.obj : \
	$(SRC)\frame.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\frame.h \
	$(SRC)\termhooks.h \
	$(SRC)\window.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h \
	$(SRC)\keyboard.h

$(BLD)\getloadavg.obj : \
	$(SRC)\getloadavg.c \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h

$(BLD)\gmalloc.obj : \
	$(SRC)\gmalloc.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(SRC)\getpagesize.h
	$(CC) $(CFLAGS) -D__STDC__ -Fo$@ gmalloc.c

$(BLD)\hftctl.obj : \
	$(SRC)\hftctl.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h

$(BLD)\indent.obj : \
	$(SRC)\indent.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\indent.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\termchar.h \
	$(SRC)\termopts.h \
	$(SRC)\disptab.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\region-cache.h

$(BLD)\insdel.obj : \
	$(SRC)\insdel.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h \
	$(SRC)\blockinput.h

$(BLD)\intervals.obj : \
	$(SRC)\intervals.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\buffer.h \
	$(SRC)\puresize.h
	$(CC) $(CFLAGS) -Fo$@ intervals.c

$(BLD)\keyboard.obj : \
	$(SRC)\keyboard.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\termchar.h \
	$(SRC)\termopts.h \
	$(SRC)\lisp.h \
	$(SRC)\termhooks.h \
	$(SRC)\macros.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\disptab.h \
	$(SRC)\keyboard.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\blockinput.h \
	$(SRC)\msdos.h \
	$(SRC)\syssignal.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h \
	$(SRC)\w32term.h \
	$(SRC)\xterm.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h

$(BLD)\keymap.obj : \
	$(SRC)\keymap.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\keyboard.h \
	$(SRC)\termhooks.h \
	$(SRC)\blockinput.h

$(BLD)\lastfile.obj : \
	$(SRC)\lastfile.c

$(BLD)\lread.obj : \
	$(SRC)\lread.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(EMACS_ROOT)\src\paths.h \
	$(SRC)\commands.h \
	$(SRC)\keyboard.h \
	$(SRC)\termhooks.h \
	$(SRC)\msdos.h

$(BLD)\macros.obj : \
	$(SRC)\macros.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\macros.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h

$(BLD)\marker.obj : \
	$(SRC)\marker.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h

$(BLD)\minibuf.obj : \
	$(SRC)\minibuf.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\syntax.h

$(BLD)\mocklisp.obj : \
	$(SRC)\mocklisp.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h

$(BLD)\nt.obj : \
	$(SRC)\nt.c \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\lisp.h \
	$(EMACS_ROOT)\nt\inc\pwd.h \
	$(SRC)\ntheap.h

$(BLD)\ntheap.obj : \
	$(SRC)\ntheap.c \
	$(SRC)\ntheap.h

$(BLD)\ntinevt.obj : \
	$(SRC)\ntinevt.c \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\lisp.h \
	$(SRC)\frame.h \
	$(SRC)\blockinput.h \
	$(SRC)\termhooks.h

$(BLD)\ntproc.obj : \
	$(SRC)\ntproc.c \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\lisp.h \
	$(SRC)\nt.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h

$(BLD)\ntterm.obj : \
	$(SRC)\ntterm.c \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\lisp.h \
	$(SRC)\frame.h \
	$(SRC)\disptab.h \
	$(SRC)\termhooks.h \
	$(SRC)\ntinevt.h

$(BLD)\prefix-args.obj : \
	$(SRC)\prefix-args.c

$(BLD)\print.obj : \
	$(SRC)\print.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\process.h \
	$(SRC)\termchar.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h

$(BLD)\process.obj : \
	$(SRC)\process.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h \
	$(SRC)\window.h \
	$(SRC)\buffer.h \
	$(SRC)\process.h \
	$(SRC)\termhooks.h \
	$(SRC)\commands.h \
	$(SRC)\frame.h \
	$(SRC)\syssignal.h \
	$(SRC)\vmsproc.h \
	$(SRC)\syswait.h \
	$(SRC)\lisp.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h \
	$(SRC)\termopts.h

$(BLD)\ralloc.obj : \
	$(SRC)\ralloc.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(SRC)\getpagesize.h

$(BLD)\regex.obj : \
	$(SRC)\regex.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\s\windowsnt.h \
	$(SRC)\m\intel386.h \
	$(SRC)\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\syntax.h \
	$(SRC)\regex.h

$(BLD)\region-cache.obj : \
	$(SRC)\region-cache.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\region-cache.h

$(BLD)\scroll.obj : \
	$(SRC)\scroll.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\termchar.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h

$(BLD)\search.obj : \
	$(SRC)\search.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\syntax.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h \
	$(SRC)\blockinput.h \
	$(SRC)\regex.h \
	$(SRC)\region-cache.h

$(BLD)\strftime.obj : \
	$(SRC)\strftime.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h
	$(CC) $(CFLAGS) -Dstrftime=emacs_strftime -Fo$@ strftime.c

$(BLD)\sunfns.obj : \
	$(SRC)\sunfns.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\window.h \
	$(SRC)\buffer.h \
	$(SRC)\termhooks.h

$(BLD)\syntax.obj : \
	$(SRC)\syntax.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\commands.h \
	$(SRC)\buffer.h \
	$(SRC)\syntax.h

$(BLD)\sysdep.obj : \
	$(SRC)\sysdep.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\blockinput.h \
	$(SRC)\dosfns.h \
	$(SRC)\msdos.h \
	$(EMACS_ROOT)\nt\inc\sys\param.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h \
	$(SRC)\systty.h \
	$(SRC)\vmsproc.h \
	$(SRC)\syswait.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\termhooks.h \
	$(SRC)\termchar.h \
	$(SRC)\termopts.h \
	$(SRC)\dispextern.h \
	$(SRC)\process.h \
	$(SRC)\vmsdir.h \
	$(SRC)\ndir.h \
	$(SRC)\syssignal.h \
	$(SRC)\vmstime.h \
	$(SRC)\systime.h \
	$(SRC)\uaf.h \
	$(SRC)\vms-pwd.h \
	$(EMACS_ROOT)\src\acldef.h \
	$(EMACS_ROOT)\src\chpdef.h

$(BLD)\term.obj : \
	$(SRC)\term.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\termchar.h \
	$(SRC)\termopts.h \
	$(SRC)\cm.h \
	$(SRC)\lisp.h \
	$(SRC)\frame.h \
	$(SRC)\disptab.h \
	$(SRC)\termhooks.h \
	$(SRC)\keyboard.h

$(BLD)\termcap.obj : \
	$(SRC)\termcap.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(EMACS_ROOT)\nt\inc\sys\file.h

$(BLD)\terminfo.obj : \
	$(SRC)\terminfo.c

$(BLD)\textprop.obj : \
	$(SRC)\textprop.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h \
	$(SRC)\buffer.h \
	$(SRC)\window.h

$(BLD)\tparam.obj : \
	$(SRC)\tparam.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h

$(BLD)\undo.obj : \
	$(SRC)\undo.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\commands.h

$(BLD)\unexnt.obj : \
	$(SRC)\unexnt.c \
	$(SRC)\ntheap.h

$(BLD)\vm-limit.obj : \
	$(SRC)\vm-limit.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\mem-limits.h	

$(BLD)\widget.obj : \
	$(SRC)\widget.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\xterm.h \
	$(SRC)\frame.h \
	$(SRC)\dispextern.h \
	$(SRC)\widget.h \
	$(SRC)\widgetprv.h

$(BLD)\window.obj : \
	$(SRC)\window.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\buffer.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\commands.h \
	$(SRC)\indent.h \
	$(SRC)\termchar.h \
	$(SRC)\disptab.h \
	$(SRC)\keyboard.h

$(BLD)\xdisp.obj : \
	$(SRC)\xdisp.c \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\lisp.h \
	$(SRC)\frame.h \
	$(SRC)\window.h \
	$(SRC)\termchar.h \
	$(SRC)\buffer.h \
	$(SRC)\indent.h \
	$(SRC)\commands.h \
	$(SRC)\macros.h \
	$(SRC)\disptab.h \
	$(SRC)\termhooks.h \
	$(SRC)\dispextern.h \
	$(SRC)\intervals.h

$(BLD)\w32faces.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32faces.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\buffer.h \
	$(SRC)\blockinput.h \
  	$(SRC)\window.h

$(BLD)\w32fns.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32fns.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\buffer.h \
	$(SRC)\blockinput.h \
  	$(SRC)\window.h

$(BLD)\w32menu.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32menu.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\buffer.h \
	$(SRC)\blockinput.h \
  	$(SRC)\window.h

$(BLD)\w32term.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32term.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\buffer.h \
	$(SRC)\blockinput.h \
  	$(SRC)\window.h

$(BLD)\w32select.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32select.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\blockinput.h

$(BLD)\w32reg.obj: \
	$(EMACS_ROOT)\src\s\windowsnt.h \
	$(EMACS_ROOT)\src\m\intel386.h \
	$(EMACS_ROOT)\src\config.h \
	$(SRC)\w32reg.c \
	$(SRC)\dispextern.h \
	$(SRC)\frame.h \
	$(SRC)\w32term.h \
	$(SRC)\win32.h \
	$(SRC)\blockinput.h
