#  -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
#  Copyright (C) 2000, 2001, 2002, 2003, 2004,
#                2005, 2006, 2007 Free Software Foundation, Inc.
#
#  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 3, 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, Inc., 51 Franklin Street, Fifth Floor,
#  Boston, MA 02110-1301, USA.
#

ALL = emacs

.PHONY: $(ALL)

# Set EMACSLOADPATH correctly (in case already defined in environment).
EMACSLOADPATH=$(CURDIR)/../lisp

#
# 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 -D_UCHAR_T -DHAVE_NTGUI=1 $(EMACS_EXTRA_C_FLAGS)

EMACS           = $(BLD)/emacs.exe
TEMACS          = $(BLD)/temacs.exe
TEMACS_TMP      = $(BLD)/temacs.bin
TLIB0           = $(BLD)/temacs0.$(A)
TLIB1           = $(BLD)/temacs1.$(A)
TLIBW32         = $(BLD)/temacw32.$(A)
TOBJ            = $(BLD)/firstfile.$(O)
TRES		= $(BLD)/emacs.res
TLASTLIB	= $(BLD)/lastfile.$(A)

DOC		= $(OBJDIR)/etc/DOC-X

FULL_LINK_FLAGS      = $(LINK_FLAGS) $(TEMACS_EXTRA_LINK)

#
# 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.
#
# Put emacs.$(O) in a separate lib, since we need to have firstfile.$(O)
# as the "main" object file when linking.
#
OBJ0 =  $(BLD)/emacs.$(O)

OBJ1 =  $(BLD)/abbrev.$(O)			\
	$(BLD)/alloc.$(O)			\
	$(BLD)/atimer.$(O)			\
	$(BLD)/buffer.$(O)			\
	$(BLD)/bytecode.$(O)			\
	$(BLD)/callint.$(O)			\
	$(BLD)/callproc.$(O)			\
	$(BLD)/casefiddle.$(O)			\
	$(BLD)/cm.$(O)				\
	$(BLD)/cmds.$(O)			\
	$(BLD)/data.$(O)			\
	$(BLD)/dired.$(O)			\
	$(BLD)/dispnew.$(O)			\
	$(BLD)/doc.$(O)				\
	$(BLD)/doprnt.$(O)			\
	$(BLD)/editfns.$(O)			\
	$(BLD)/eval.$(O)			\
	$(BLD)/fileio.$(O)			\
	$(BLD)/filelock.$(O)			\
	$(BLD)/filemode.$(O)			\
	$(BLD)/fns.$(O)				\
	$(BLD)/indent.$(O)			\
	$(BLD)/insdel.$(O)			\
	$(BLD)/keyboard.$(O)			\
	$(BLD)/keymap.$(O)			\
	$(BLD)/lread.$(O)			\
	$(BLD)/macros.$(O)			\
	$(BLD)/marker.$(O)			\
	$(BLD)/md5.$(O)                         \
	$(BLD)/minibuf.$(O)			\
	$(BLD)/w32.$(O)				\
	$(BLD)/w32heap.$(O)			\
	$(BLD)/w32inevt.$(O)			\
	$(BLD)/w32proc.$(O)			\
	$(BLD)/w32console.$(O)			\
	$(BLD)/print.$(O)			\
	$(BLD)/process.$(O)			\
	$(BLD)/regex.$(O)			\
	$(BLD)/scroll.$(O)			\
	$(BLD)/search.$(O)			\
	$(BLD)/sound.$(O)			\
	$(BLD)/syntax.$(O)			\
	$(BLD)/sysdep.$(O)			\
	$(BLD)/term.$(O)			\
	$(BLD)/termcap.$(O)			\
	$(BLD)/tparam.$(O)			\
	$(BLD)/undo.$(O)			\
	$(BLD)/unexw32.$(O)			\
	$(BLD)/window.$(O)			\
	$(BLD)/xdisp.$(O)			\
	$(BLD)/casetab.$(O)			\
	$(BLD)/floatfns.$(O)			\
	$(BLD)/frame.$(O)			\
	$(BLD)/gmalloc.$(O)			\
	$(BLD)/intervals.$(O)			\
	$(BLD)/composite.$(O)			\
	$(BLD)/ralloc.$(O)			\
	$(BLD)/textprop.$(O)			\
	$(BLD)/vm-limit.$(O)			\
	$(BLD)/region-cache.$(O)		\
	$(BLD)/strftime.$(O)			\
	$(BLD)/charset.$(O)			\
	$(BLD)/coding.$(O)			\
	$(BLD)/category.$(O)			\
	$(BLD)/ccl.$(O)				\
	$(BLD)/fontset.$(O)			\
	$(BLD)/fringe.$(O)			\
	$(BLD)/image.$(O)

WIN32OBJ = $(BLD)/w32term.$(O)			\
	   $(BLD)/w32xfns.$(O)			\
	   $(BLD)/w32fns.$(O)			\
	   $(BLD)/xfaces.$(O)			\
	   $(BLD)/w32select.$(O)		\
	   $(BLD)/w32menu.$(O)			\
	   $(BLD)/w32reg.$(O)			\
	   $(BLD)/w32bdf.$(O)

LIBS =  $(TLIB0)	\
	$(TLIB1)	\
	$(TLIBW32)	\
	$(TLASTLIB)	\
	$(WINMM)	\
	$(ADVAPI32)	\
	$(GDI32)	\
	$(COMDLG32)	\
	$(USER32)	\
	$(MPR)		\
	$(SHELL32)	\
	$(WINSPOOL)	\
	$(OLE32)	\
	$(libc)

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

#
# The dumped executable
#
emacs:          stamp_BLD $(EMACS)
$(EMACS):       $(DOC) $(TEMACS)
	"$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup dump
	-"$(THISDIR)/$(BLD)/emacs.exe" -q -batch -f list-load-path-shadows

#
# The undumped executable
# Note the extra post-link step to insert a static preload heap section.
# If preload runs out of memory, increase the last argument to addsection
# (it is the preload heap size in MB).
#
temacs:         stamp_BLD $(TEMACS)
$(TEMACS):      $(TLIB0) $(TLIB1) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES) \
		  ../nt/$(BLD)/addsection.exe
	$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
	"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 16
	echo $(OBJ0) > $(BLD)/buildobj.lst
	echo $(OBJ1) >> $(BLD)/buildobj.lst
	echo $(WIN32OBJ) >> $(BLD)/buildobj.lst

bootstrap: bootstrap-emacs

#
# Build a temacs with a sufficiently large PURESIZE to load the
# Lisp files from loadup.el in source form.
#
# WARNING: Do NOT split the part inside $(ARGQUOTE)s into multiple lines as
#          this can break with GNU Make 3.81 and later if sh.exe is used.
bootstrap-temacs:
	$(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(CFLAGS) -DPURESIZE=5000000$(ARGQUOTE)

#
# Dump an Emacs executable named bootstrap-emacs containing the
# files from loadup.el in source form.
#
bootstrap-emacs: bootstrap-temacs
	"$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup bootstrap
	- mkdir "../bin"
	$(CP) $(EMACS) ../bin

#
# Force recompile of files that depend on PURESIZE
#
bootstrap-clean:
	- $(DEL) $(BLD)/alloc.$(O)
	- $(DEL) $(BLD)/data.$(O)
	- $(DEL) $(BLD)/intervals.$(O)
	- $(DEL) $(BLD)/keyboard.$(O)
	- $(DEL) $(BLD)/keymap.$(O)

#
# 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 stamp_BLD
	$(RC) $(RC_INCLUDE)../nt $(RC_OUT)$@ ../nt/emacs.rc

#
# Build the library.  Split up the build into two phases...otherwise we
# run out of command line space.
#
$(TLIB0):       $(OBJ0)
	- $(DEL) $@
	$(AR) $(AR_OUT)$@ $(ALL_DEPS)
$(TLIB1):       $(OBJ1)
	- $(DEL) $@
	$(AR) $(AR_OUT)$@ $(ALL_DEPS)
$(TLIBW32):	$(WIN32OBJ)
	- $(DEL) $@
	$(AR) $(AR_OUT)$@ $(ALL_DEPS)

#
# Place lastfile.$(O) 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.$(O)
	- $(DEL) $@
	$(AR) $(AR_OUT)$@ $(ALL_DEPS)

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

#
# Maintenance
#
# We used to delete *~, s/*~, m/*~ here, but that might inadvertently
# remove precious files if it happens to match their short 8+3 aliases.
clean:
	- $(DEL) "s/*.h~" "m/*.h~"
	- $(DEL) $(COMPILER_TEMP_FILES)
	- $(DEL_TREE) $(OBJDIR)
	- $(DEL) stamp_BLD

distclean:	clean
	- $(DEL) config.h epaths.h

cleanall:	clean
	- $(DEL_TREE) obj
	- $(DEL_TREE) obj-spd
	- $(DEL_TREE) oo
	- $(DEL_TREE) oo-spd

### DEPENDENCIES ###

EMACS_ROOT	= ..
SRC		= .

$(BLD)/abbrev.$(O) : \
	$(SRC)/abbrev.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/syntax.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/alloc.$(O) : \
	$(SRC)/alloc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/process.h \
	$(SRC)/puresize.h \
	$(SRC)/syssignal.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/atimer.$(O) : \
	$(SRC)/atimer.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h

$(BLD)/buffer.$(O) : \
	$(SRC)/buffer.c \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/indent.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/region-cache.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/bytecode.$(O) : \
	$(SRC)/bytecode.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/syntax.h \
	$(SRC)/window.h

$(BLD)/callint.$(O) : \
	$(SRC)/callint.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/callproc.$(O) : \
	$(SRC)/callproc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(EMACS_ROOT)/nt/inc/sys/ioctl.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/epaths.h \
	$(SRC)/process.h \
	$(SRC)/syssignal.h \
	$(SRC)/systty.h \
	$(SRC)/w32.h

$(BLD)/casefiddle.$(O) : \
	$(SRC)/casefiddle.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/keymap.h \
	$(SRC)/syntax.h

$(BLD)/casetab.$(O) : \
	$(SRC)/casetab.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h

$(BLD)/category.$(O) : \
	$(SRC)/category.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/category.h \
	$(SRC)/charset.h \
	$(SRC)/keymap.h

$(BLD)/ccl.$(O) : \
	$(SRC)/ccl.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h

$(BLD)/charset.$(O) : \
	$(SRC)/charset.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/disptab.h

$(BLD)/cm.$(O) : \
	$(SRC)/cm.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/cm.h \
	$(SRC)/termhooks.h

$(BLD)/cmds.$(O) : \
	$(SRC)/cmds.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/syntax.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/coding.$(O) : \
	$(SRC)/coding.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/composite.$(O) : \
	$(SRC)/composite.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/data.$(O) : \
	$(SRC)/data.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/puresize.h \
	$(SRC)/syssignal.h

$(BLD)/dired.$(O) : \
	$(SRC)/dired.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/ndir.h \
	$(SRC)/regex.h \
	$(SRC)/systime.h

$(BLD)/dispnew.$(O) : \
	$(SRC)/dispnew.c \
	$(EMACS_ROOT)/src/s/ms-w32.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)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/cm.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/indent.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/process.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/doc.$(O) : \
	$(SRC)/doc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h

$(BLD)/doprnt.$(O) : \
	$(SRC)/doprnt.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/charset.c

$(BLD)/editfns.$(O) : \
	$(SRC)/editfns.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/pwd.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/emacs.$(O) : \
	$(SRC)/emacs.c \
	$(EMACS_ROOT)/src/s/ms-w32.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)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/process.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/systty.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/window.h

$(BLD)/eval.$(O) : \
	$(SRC)/eval.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/fileio.$(O) : \
	$(SRC)/fileio.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/pwd.h \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/filelock.$(O) : \
	$(SRC)/filelock.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/pwd.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(EMACS_ROOT)/src/epaths.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/systime.h

$(BLD)/filemode.$(O) : \
	$(SRC)/filemode.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h

$(BLD)/firstfile.$(O) : \
	$(SRC)/firstfile.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h

$(BLD)/floatfns.$(O) : \
	$(SRC)/floatfns.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/syssignal.h

$(BLD)/fns.$(O) : \
	$(SRC)/fns.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/langinfo.h \
	$(EMACS_ROOT)/nt/inc/nl_types.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/md5.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/fontset.$(O) : \
	$(SRC)/fontset.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/dispextern.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/frame.$(O) : \
	$(SRC)/frame.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/fringe.$(O) : \
	$(SRC)/fringe.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/gmalloc.$(O) : \
	$(SRC)/gmalloc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(SRC)/getpagesize.h

$(BLD)/image.$(O): \
	$(SRC)/image.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/dispextern.h \
	$(SRC)/epaths.h \
	$(SRC)/frame.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/indent.$(O) : \
	$(SRC)/indent.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/category.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/indent.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/region-cache.h \
	$(SRC)/termchar.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/insdel.$(O) : \
	$(SRC)/insdel.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/region-cache.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/intervals.$(O) : \
	$(SRC)/intervals.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/puresize.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/keyboard.$(O) : \
	$(SRC)/keyboard.c \
	$(EMACS_ROOT)/src/s/ms-w32.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)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/macros.h \
	$(SRC)/puresize.h \
	$(SRC)/syntax.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/systty.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/keymap.$(O) : \
	$(SRC)/keymap.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/puresize.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/lastfile.$(O) : \
	$(SRC)/lastfile.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h

$(BLD)/lread.$(O) : \
	$(SRC)/lread.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h \
	$(EMACS_ROOT)/src/epaths.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/macros.$(O) : \
	$(SRC)/macros.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/commands.h \
	$(SRC)/dispextern.h \
	$(SRC)/keyboard.h \
	$(SRC)/macros.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/marker.$(O) : \
	$(SRC)/marker.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h

$(BLD)/md5.$(O) : \
	$(SRC)/md5.c \
	$(SRC)/md5.h

$(BLD)/minibuf.$(O) : \
	$(SRC)/minibuf.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/syntax.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/w32.$(O) : \
	$(SRC)/w32.c \
	$(EMACS_ROOT)/nt/inc/pwd.h \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h \
	$(SRC)/ndir.h \
	$(SRC)/systime.h \
	$(SRC)/w32.h \
	$(SRC)/w32heap.h

$(BLD)/w32heap.$(O) : \
	$(SRC)/w32heap.c \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h \
	$(SRC)/w32heap.h

$(BLD)/w32inevt.$(O) : \
	$(SRC)/w32inevt.c \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h

$(BLD)/w32proc.$(O) : \
	$(SRC)/w32proc.c \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(EMACS_ROOT)/nt/inc/langinfo.h \
	$(EMACS_ROOT)/nt/inc/nl_types.h \
	$(SRC)/config.h \
	$(SRC)/process.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/syswait.h \
	$(SRC)/w32.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h

$(BLD)/w32console.$(O) : \
	$(SRC)/w32console.c \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/config.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32inevt.h

$(BLD)/print.$(O) : \
	$(SRC)/print.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/process.h \
	$(SRC)/termchar.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/process.$(O) : \
	$(SRC)/process.c \
	$(EMACS_ROOT)/src/s/ms-w32.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)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/process.h \
	$(SRC)/sysselect.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/systty.h \
	$(SRC)/syswait.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/ralloc.$(O) : \
	$(SRC)/ralloc.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/param.h \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/config.h \
	$(SRC)/getpagesize.h

$(BLD)/regex.$(O) : \
	$(SRC)/regex.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/s/ms-w32.h \
	$(SRC)/m/intel386.h \
	$(SRC)/buffer.h \
	$(SRC)/category.h \
	$(SRC)/charset.h \
	$(SRC)/config.h \
	$(SRC)/regex.h \
	$(SRC)/syntax.h

$(BLD)/region-cache.$(O) : \
	$(SRC)/region-cache.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/region-cache.h

$(BLD)/scroll.$(O) : \
	$(SRC)/scroll.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/termchar.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/search.$(O) : \
	$(SRC)/search.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/category.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/regex.h \
	$(SRC)/region-cache.h \
	$(SRC)/syntax.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/sound.$(O) : \
	$(SRC)/sound.c \
	$(SRC)/lisp.h \
	$(SRC)/dispextern.h \
	$(SRC)/atimer.h \
	$(SRC)/syssignal.h

$(BLD)/strftime.$(O) : \
	$(SRC)/strftime.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h

$(BLD)/syntax.$(O) : \
	$(SRC)/syntax.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/category.h \
	$(SRC)/charset.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/keymap.h \
	$(SRC)/syntax.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h

$(BLD)/sysdep.$(O) : \
	$(SRC)/sysdep.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.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)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/ndir.h \
	$(SRC)/process.h \
	$(SRC)/sysselect.h \
	$(SRC)/syssignal.h \
	$(SRC)/systime.h \
	$(SRC)/systty.h \
	$(SRC)/syswait.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/term.$(O) : \
	$(SRC)/term.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/cm.h \
	$(SRC)/coding.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/termcap.$(O) : \
	$(SRC)/termcap.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(EMACS_ROOT)/nt/inc/sys/file.h

$(BLD)/textprop.$(O) : \
	$(SRC)/textprop.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/intervals.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/window.h

$(BLD)/tparam.$(O) : \
	$(SRC)/tparam.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h

$(BLD)/undo.$(O) : \
	$(SRC)/undo.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/buffer.h \
	$(SRC)/commands.h

$(BLD)/unexw32.$(O) : \
	$(SRC)/unexw32.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/w32heap.h

$(BLD)/vm-limit.$(O) : \
	$(SRC)/vm-limit.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/mem-limits.h

$(BLD)/window.$(O) : \
	$(SRC)/window.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/frame.h \
	$(SRC)/indent.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/systime.h \
	$(SRC)/termchar.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/xdisp.$(O) : \
	$(SRC)/xdisp.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/commands.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/indent.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/macros.h \
	$(SRC)/process.h \
	$(SRC)/region-cache.h \
	$(SRC)/systime.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/xfaces.$(O): \
	$(SRC)/xfaces.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/w32fns.$(O): \
	$(SRC)/w32fns.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/epaths.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/w32menu.$(O): \
	$(SRC)/w32menu.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/systime.h \
	$(SRC)/termhooks.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/w32term.$(O): \
	$(SRC)/w32term.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/disptab.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/gnu.h \
	$(SRC)/intervals.h \
	$(SRC)/keyboard.h \
	$(SRC)/keymap.h \
	$(SRC)/systime.h \
	$(SRC)/systty.h \
	$(SRC)/termchar.h \
	$(SRC)/termhooks.h \
	$(SRC)/termopts.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h \
	$(SRC)/window.h

$(BLD)/w32select.$(O): \
	$(SRC)/w32select.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/buffer.h \
	$(SRC)/ccl.h \
	$(SRC)/charset.h \
	$(SRC)/coding.h \
	$(SRC)/composite.h \
	$(SRC)/dispextern.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32heap.h \
	$(SRC)/w32term.h

$(BLD)/w32reg.$(O): \
	$(SRC)/w32reg.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h

$(BLD)/w32xfns.$(O): \
	$(SRC)/w32xfns.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/charset.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h

$(BLD)/w32bdf.$(O): \
	$(SRC)/w32bdf.c \
	$(EMACS_ROOT)/src/s/ms-w32.h \
	$(EMACS_ROOT)/src/m/intel386.h \
	$(EMACS_ROOT)/src/config.h \
	$(SRC)/atimer.h \
	$(SRC)/blockinput.h \
	$(SRC)/charset.h \
	$(SRC)/dispextern.h \
	$(SRC)/fontset.h \
	$(SRC)/frame.h \
	$(SRC)/keyboard.h \
	$(SRC)/systime.h \
	$(SRC)/w32bdf.h \
	$(SRC)/w32gui.h \
	$(SRC)/w32term.h

# Each object file depends on stamp_BLD, because in parallel builds we must
# make sure $(BLD) exists before starting compilations.
#
$(OBJ0) $(OBJ1) $(WIN32OBJ) $(BLD)/lastfile.$(O) $(BLD)/firstfile.$(O): stamp_BLD
