]> code.delx.au - gnu-emacs/blobdiff - nt/makefile.w32-in
Merge from emacs-24, up to 2012-04-10T02:06:19Z!larsi@gnus.org
[gnu-emacs] / nt / makefile.w32-in
index 5bd7fec0cc0daf6e2f281eb2dc378849b4bdc0bf..3ddf3a04cb613225b7dd196a49d09d3cce1ebbd5 100644 (file)
-# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.\r
-# Copyright (C) 2000-2012 Free Software Foundation, Inc.\r
-#\r
-# Top level makefile for building GNU Emacs on Windows NT\r
-#\r
-# This file is part of GNU Emacs.\r
-\r
-# GNU Emacs is free software: you can redistribute it and/or modify\r
-# it under the terms of the GNU General Public License as published by\r
-# the Free Software Foundation, either version 3 of the License, or\r
-# (at your option) any later version.\r
-\r
-# GNU Emacs is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-# GNU General Public License for more details.\r
-\r
-# You should have received a copy of the GNU General Public License\r
-# along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.\r
-\r
-\r
-# FIXME: This file uses DOS EOLs.  Convert to Unix after 22.1 is out\r
-#        (and remove or replace this comment).\r
-\r
-VERSION                = 24.0.95\r
-\r
-TMP_DIST_DIR   = emacs-$(VERSION)\r
-\r
-TRES           = $(BLD)/emacs.res\r
-CLIENTRES      = $(BLD)/emacsclient.res\r
-\r
-XMFLAGS                =\r
-\r
-ALL            = addpm ddeclient runemacs cmdproxy addsection preprep\r
-\r
-.PHONY: $(ALL)\r
-\r
-\r
-addpm:           stamp_BLD $(BLD)/addpm.exe\r
-$(BLD)/addpm.exe: $(BLD)/addpm.$(O)\r
-                 $(LINK) $(LINK_OUT)$@ \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) \\r
-                 $(USER32) $(OLE32) $(UUID) $(SHELL32)\r
-\r
-ddeclient:       stamp_BLD $(BLD)/ddeclient.exe\r
-$(BLD)/ddeclient.exe: $(BLD)/ddeclient.$(O)\r
-                 $(LINK) $(LINK_OUT)$@ \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) $(USER32)\r
-\r
-cmdproxy:        stamp_BLD $(BLD)/cmdproxy.exe\r
-$(BLD)/cmdproxy.exe: $(BLD)/cmdproxy.$(O)\r
-                 $(LINK) $(LINK_OUT)$@ \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32)\r
-\r
-addsection:      stamp_BLD $(BLD)/addsection.exe\r
-$(BLD)/addsection.exe: $(BLD)/addsection.$(O)\r
-                 $(LINK) $(LINK_OUT)$@ \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32)\r
-\r
-preprep:         stamp_BLD $(BLD)/preprep.exe\r
-$(BLD)/preprep.exe: $(BLD)/preprep.$(O)\r
-                 $(LINK) $(LINK_OUT)$@ \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS)\r
-\r
-#\r
-# The resource file.  NT 3.10 requires the use of cvtres; even though\r
-# it is not necessary on later versions, it is still ok to use it.\r
-#\r
-$(TRES):       emacs.rc icons/emacs.ico emacs.manifest stamp_BLD\r
-               $(RC) $(RC_OUT)$(TRES) emacs.rc\r
-\r
-$(CLIENTRES):  emacsclient.rc stamp_BLD\r
-               $(RC) $(RC_OUT)$(CLIENTRES) emacsclient.rc\r
-\r
-runemacs:        stamp_BLD $(BLD)/runemacs.exe\r
-$(BLD)/runemacs.exe: $(BLD)/runemacs.$(O) $(TRES)\r
-                 $(LINK) $(LINK_OUT)$@ $(SUBSYSTEM_WINDOWS) \\r
-                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) $(USER32)\r
-\r
-which-sh:\r
-       @echo Using $(THE_SHELL) as shell.\r
-\r
-# These depend on stamp_BLD to make sure the $(BLD) directory is created\r
-# before the compilation begins, even if Make runs several commands\r
-# in parallel under "make -j".\r
-#\r
-$(BLD)/addpm.$(O) $(BLD)/ddeclient.$(O) $(BLD)/runemacs.$(O) $(BLD)/cmdproxy.$(O) $(BLD)/addsection.$(O) $(BLD)/preprep.$(O): stamp_BLD\r
-\r
-#\r
-# Build emacs\r
-#\r
-all:   which-sh stamp_BLD $(ALL) $(CLIENTRES) maybe-bootstrap all-other-dirs-$(MAKETYPE)\r
-\r
-all-other-dirs-nmake: addsection\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) all\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) all\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) all\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) all\r
-       cd ..\leim\r
-       $(MAKE) $(MFLAGS) all\r
-       cd ..\nt\r
-\r
-all-other-dirs-gmake: addsection\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim all\r
-\r
-recompile:     recompile-$(MAKETYPE)\r
-\r
-recompile-nmake:\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) recompile\r
-       cd ..\nt\r
-\r
-recompile-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp recompile\r
-\r
-#### Bootstrapping.\r
-\r
-### This is meant for Emacs maintainers only.  It first cleans the\r
-### lisp subdirectory, removing all compiled Lisp files.  Then a\r
-### special emacs executable is built from Lisp sources, which is then\r
-### used to compile Lisp files.  The last step is a "normal" make.\r
-\r
-maybe-bootstrap: maybe-bootstrap-$(SHELLTYPE)\r
-\r
-# dummy target to force other targets to be evaluated.\r
-doit:\r
-\r
-maybe-bootstrap-CMD:   doit\r
-       @echo .\r
-       @if not EXIST ..\lisp\abbrev.elc echo Essential Lisp files seem to be missing.  You should either\r
-       @if not EXIST ..\lisp\abbrev.elc echo do 'make bootstrap' or create 'lisp/abbrev.elc' somehow\r
-       @echo .\r
-       @if not EXIST ..\lisp\abbrev.elc exit -1\r
-\r
-maybe-bootstrap-SH: doit\r
-       @if [ ! -f ../lisp/abbrev.elc ] ; then \\r
-         echo; \\r
-         echo "Essential Lisp files seem to be missing.  You should either"; \\r
-         echo "do \`make bootstrap' or create \`lisp/abbrev.elc' somehow.";  \\r
-         echo; \\r
-         exit -1; \\r
-       fi\r
-\r
-# Bootstrap depends on cmdproxy because some Lisp functions\r
-# loaded during bootstrap may need to run shell commands.\r
-bootstrap:     addsection cmdproxy bootstrap-$(MAKETYPE)\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) all\r
-\r
-bootstrap-nmake: addsection cmdproxy\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) bootstrap-clean\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) clean make-docfile\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) clean all\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) bootstrap\r
-       $(MAKE) $(MFLAGS) bootstrap-clean\r
-       cd ..\nt\r
-       $(CP) $(BLD)/cmdproxy.exe ../bin\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) SHELL=$(SHELLTYPE) bootstrap\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) DOC\r
-       cd ..\nt\r
-\r
-bootstrap-gmake: addsection cmdproxy\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean make-docfile\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean\r
-       $(CP) $(BLD)/cmdproxy.exe ../bin\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src DOC\r
-\r
-bootstrap-clean: bootstrap-clean-$(MAKETYPE)\r
-\r
-bootstrap-clean-nmake:\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) bootstrap-clean\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) bootstrap-clean\r
-\r
-bootstrap-clean-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean\r
-\r
-$(INSTALL_DIR):\r
-       - mkdir "$(INSTALL_DIR)"\r
-\r
-$(INSTALL_DIR)/bin: $(INSTALL_DIR)\r
-       - mkdir "$(INSTALL_DIR)/bin"\r
-\r
-#\r
-# Build and install emacs in INSTALL_DIR\r
-#\r
-.PHONY: install-bin install-shortcuts\r
-\r
-install: install-bin install-shortcuts\r
-\r
-install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)\r
-       - $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin\r
-       - $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin\r
-       - $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin\r
-       - $(CP) README.W32 $(INSTALL_DIR)\r
-       - $(DEL) ../$(DIRNAME)_same-dir.tst\r
-       - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst\r
-       echo SameDirTest > "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst"\r
-       - mkdir "$(INSTALL_DIR)/etc"\r
-       - mkdir "$(INSTALL_DIR)/info"\r
-       - mkdir "$(INSTALL_DIR)/lock"\r
-       - mkdir "$(INSTALL_DIR)/data"\r
-       - mkdir "$(INSTALL_DIR)/site-lisp"\r
-       - mkdir "$(INSTALL_DIR)/etc/icons"\r
-       $(IFNOTSAMEDIR) $(CP) ../site-lisp/subdirs.el $(INSTALL_DIR)/site-lisp $(ENDIF)\r
-       $(IFNOTSAMEDIR) $(CP_DIR) ../etc $(INSTALL_DIR) $(ENDIF)\r
-       - $(CP_DIR) icons $(INSTALL_DIR)/etc\r
-       $(IFNOTSAMEDIR) $(CP_DIR) ../info $(INSTALL_DIR) $(ENDIF)\r
-       $(IFNOTSAMEDIR) $(CP) ../COPYING $(INSTALL_DIR) $(ENDIF)\r
-       - $(CP) ../COPYING $(INSTALL_DIR)/bin\r
-       - $(DEL) ../$(DIRNAME)_same-dir.tst\r
-       - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst\r
-\r
-install-other-dirs-nmake: all\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) install\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) install\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) install\r
-       cd ..\leim\r
-       $(MAKE) $(MFLAGS) install\r
-       cd ..\nt\r
-\r
-install-other-dirs-gmake: all\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src install\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src install\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install\r
-\r
-install-shortcuts: $(INSTALL_DIR)/bin\r
-       - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin\r
-       "$(INSTALL_DIR)/bin/addpm" -q\r
-\r
-maybe-copy-distfiles: maybe-copy-distfiles-$(SHELLTYPE)\r
-\r
-maybe-copy-distfiles-CMD: create-tmp-dist-dir doit\r
-       @if not $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE) == "" $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin\r
-\r
-maybe-copy-distfiles-SH: create-tmp-dist-dir doit\r
-       @if [ ! $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE) == "" ] ; then \\r
-         $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin ; \\r
-       fi\r
-\r
-create-tmp-dist-dir:\r
-       mkdir "$(TMP_DIST_DIR)"\r
-# Also create bin directory for dist files.\r
-       mkdir "$(TMP_DIST_DIR)/bin"\r
-\r
-dist: install-bin maybe-copy-distfiles\r
-       $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR)\r
-       $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)\r
-       $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)\r
-       $(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/lisp" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/leim" $(TMP_DIST_DIR)\r
-       $(CP_DIR) "$(INSTALL_DIR)/site-lisp" $(TMP_DIST_DIR)\r
-       $(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(VERSION)$(ARGQUOTE)\r
-       $(DEL_TREE) $(TMP_DIST_DIR)\r
-\r
-force-info:\r
-# Note that doc/emacs/makefile knows how to\r
-# put the info files in $(infodir),\r
-# so we can do ok running make in the build dir.\r
-info: force-info info-$(MAKETYPE)\r
-\r
-info-nmake:\r
-       cd ..\doc\emacs\r
-       $(MAKE) $(MFLAGS) info\r
-       cd ..\misc\r
-       $(MAKE) $(MFLAGS) info\r
-       cd ..\lispref\r
-       $(MAKE) $(MFLAGS) info\r
-       cd ..\lispintro\r
-       $(MAKE) $(MFLAGS) info\r
-       cd $(MAKEDIR)\r
-\r
-info-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs info\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc info\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref info\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro info\r
-#\r
-# Maintenance\r
-#\r
-clean: clean-other-dirs-$(MAKETYPE)\r
-       - $(DEL) $(COMPILER_TEMP_FILES)\r
-       - $(DEL_TREE) $(OBJDIR)\r
-       - $(DEL) stamp_BLD\r
-       - $(DEL) ../etc/DOC ../etc/DOC-X\r
-\r
-clean-other-dirs-nmake:\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\doc\lispintro\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\lispref\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\..\leim\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\doc\emacs\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\misc\r
-       $(MAKE) $(MFLAGS) clean\r
-       cd ..\..\nt\r
-\r
-clean-other-dirs-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref clean\r
-\r
-cleanall-other-dirs-nmake:\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) cleanall\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) cleanall\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) cleanall\r
-       cd ..\nt\r
-\r
-cleanall-other-dirs-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib cleanall\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src cleanall\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src cleanall\r
-\r
-# We used to delete *~ here, but that might inadvertently remove\r
-# precious files if it happens to match their short 8+3 aliases.\r
-cleanall: clean cleanall-other-dirs-$(MAKETYPE)\r
-        - $(DEL_TREE) obj\r
-        - $(DEL_TREE) obj-spd\r
-        - $(DEL_TREE) oo\r
-        - $(DEL_TREE) oo-spd\r
-\r
-top-distclean:\r
-       - $(DEL) $(COMPILER_TEMP_FILES)\r
-       - $(DEL_TREE) obj\r
-       - $(DEL_TREE) obj-spd\r
-       - $(DEL_TREE) oo\r
-       - $(DEL_TREE) oo-spd\r
-       - $(DEL) stamp_BLD\r
-       - $(DEL) ../etc/DOC ../etc/DOC-X\r
-       - $(DEL) config.log Makefile\r
-       - $(DEL) ../README.W32\r
-\r
-distclean: distclean-other-dirs-$(MAKETYPE) top-distclean\r
-\r
-distclean-other-dirs-nmake:\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\leim\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\doc\emacs\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\misc\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\lispintro\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\lispref\r
-       $(MAKE) $(MFLAGS) distclean\r
-       cd ..\..\nt\r
-\r
-distclean-other-dirs-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro distclean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref distclean\r
-\r
-maintainer-clean: maintainer-clean-other-dirs-$(MAKETYPE) top-distclean\r
-\r
-maintainer-clean-other-dirs-nmake:\r
-       cd ..\lib\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\lib-src\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\src\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\lisp\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\leim\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\doc\emacs\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\misc\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\lispintro\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\lispref\r
-       $(MAKE) $(MFLAGS) maintainer-clean\r
-       cd ..\..\nt\r
-\r
-maintainer-clean-other-dirs-gmake:\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro maintainer-clean\r
-       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref maintainer-clean\r
-\r
-realclean: cleanall\r
-       - $(DEL_TREE) ../bin\r
-\r
-TAGS: TAGS-$(MAKETYPE)\r
-\r
-frc:\r
-TAGS-gmake: frc\r
-       ../lib-src/$(BLD)/etags $(CURDIR)/*.c\r
-       $(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP\r
-       $(MAKE) $(MFLAGS) -C ../lib-src TAGS\r
-       $(MAKE) $(MFLAGS) -C ../lib TAGS\r
-\r
-TAGS-nmake:\r
-       echo This target is not supported with NMake\r
-\r
-.PHONY: frc\r
+# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
+# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+#
+# Top level makefile for building GNU Emacs on Windows NT
+#
+# 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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# FIXME: This file uses DOS EOLs.  Convert to Unix after 22.1 is out
+#        (and remove or replace this comment).
+
+VERSION                = 24.1.50
+
+TMP_DIST_DIR   = emacs-$(VERSION)
+
+TRES           = $(BLD)/emacs.res
+CLIENTRES      = $(BLD)/emacsclient.res
+
+XMFLAGS                =
+
+ALL            = addpm ddeclient runemacs cmdproxy addsection preprep
+
+.PHONY: $(ALL)
+
+
+addpm:           stamp_BLD $(BLD)/addpm.exe
+$(BLD)/addpm.exe: $(BLD)/addpm.$(O)
+                 $(LINK) $(LINK_OUT)$@ \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) \
+                 $(USER32) $(OLE32) $(UUID) $(SHELL32)
+
+ddeclient:       stamp_BLD $(BLD)/ddeclient.exe
+$(BLD)/ddeclient.exe: $(BLD)/ddeclient.$(O)
+                 $(LINK) $(LINK_OUT)$@ \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) $(USER32)
+
+cmdproxy:        stamp_BLD $(BLD)/cmdproxy.exe
+$(BLD)/cmdproxy.exe: $(BLD)/cmdproxy.$(O)
+                 $(LINK) $(LINK_OUT)$@ \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32)
+
+addsection:      stamp_BLD $(BLD)/addsection.exe
+$(BLD)/addsection.exe: $(BLD)/addsection.$(O)
+                 $(LINK) $(LINK_OUT)$@ \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32)
+
+preprep:         stamp_BLD $(BLD)/preprep.exe
+$(BLD)/preprep.exe: $(BLD)/preprep.$(O)
+                 $(LINK) $(LINK_OUT)$@ \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_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):       emacs.rc icons/emacs.ico emacs.manifest stamp_BLD
+               $(RC) $(RC_OUT)$(TRES) emacs.rc
+
+$(CLIENTRES):  emacsclient.rc stamp_BLD
+               $(RC) $(RC_OUT)$(CLIENTRES) emacsclient.rc
+
+runemacs:        stamp_BLD $(BLD)/runemacs.exe
+$(BLD)/runemacs.exe: $(BLD)/runemacs.$(O) $(TRES)
+                 $(LINK) $(LINK_OUT)$@ $(SUBSYSTEM_WINDOWS) \
+                 $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) $(USER32)
+
+which-sh:
+       @echo Using $(THE_SHELL) as shell.
+
+# These depend on stamp_BLD to make sure the $(BLD) directory is created
+# before the compilation begins, even if Make runs several commands
+# in parallel under "make -j".
+#
+$(BLD)/addpm.$(O) $(BLD)/ddeclient.$(O) $(BLD)/runemacs.$(O) $(BLD)/cmdproxy.$(O) $(BLD)/addsection.$(O) $(BLD)/preprep.$(O): stamp_BLD
+
+#
+# Build emacs
+#
+all:   which-sh $(ALL) $(CLIENTRES) all-other-dirs-$(MAKETYPE)
+
+all-other-dirs-$(MAKETYPE): maybe-bootstrap
+
+all-other-dirs-nmake: addsection
+       cd ..\lib
+       $(MAKE) $(MFLAGS) all
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) all
+       cd ..\src
+       $(MAKE) $(MFLAGS) all
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) all
+       cd ..\leim
+       $(MAKE) $(MFLAGS) all
+       cd ..\nt
+
+all-other-dirs-gmake: addsection
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim all
+
+recompile:     recompile-$(MAKETYPE)
+
+recompile-nmake:
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) recompile
+       cd ..\nt
+
+recompile-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp recompile
+
+#### Bootstrapping.
+
+### This is meant for Emacs maintainers only.  It first cleans the
+### lisp subdirectory, removing all compiled Lisp files.  Then a
+### special emacs executable is built from Lisp sources, which is then
+### used to compile Lisp files.  The last step is a "normal" make.
+
+maybe-bootstrap: maybe-bootstrap-$(SHELLTYPE)
+
+# dummy target to force other targets to be evaluated.
+doit:
+
+maybe-bootstrap-CMD:   doit
+       @echo .
+       @if not EXIST ..\lisp\abbrev.elc echo Essential Lisp files seem to be missing.  You should either
+       @if not EXIST ..\lisp\abbrev.elc echo do 'make bootstrap' or create 'lisp/abbrev.elc' somehow
+       @echo .
+       @if not EXIST ..\lisp\abbrev.elc exit -1
+
+maybe-bootstrap-SH: doit
+       @if [ ! -f ../lisp/abbrev.elc ] ; then \
+         echo; \
+         echo "Essential Lisp files seem to be missing.  You should either"; \
+         echo "do \`make bootstrap' or create \`lisp/abbrev.elc' somehow.";  \
+         echo; \
+         exit -1; \
+       fi
+
+# Bootstrap depends on cmdproxy because some Lisp functions
+# loaded during bootstrap may need to run shell commands.
+bootstrap:     addsection cmdproxy bootstrap-$(MAKETYPE)
+       $(MAKE) $(MFLAGS) $(XMFLAGS) all
+
+bootstrap-nmake: addsection cmdproxy
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) bootstrap-clean
+       cd ..\src
+       $(MAKE) $(MFLAGS) clean
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) clean make-docfile
+       cd ..\lib
+       $(MAKE) $(MFLAGS) clean all
+       cd ..\src
+       $(MAKE) $(MFLAGS) bootstrap
+       $(MAKE) $(MFLAGS) bootstrap-clean
+       cd ..\nt
+       $(CP) $(BLD)/cmdproxy.exe ../bin
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) SHELL=$(SHELLTYPE) bootstrap
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) DOC
+       cd ..\nt
+
+bootstrap-gmake: addsection cmdproxy
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src make-docfile
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
+       $(CP) $(BLD)/cmdproxy.exe ../bin
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src DOC
+
+bootstrap-clean: bootstrap-clean-$(MAKETYPE)
+
+bootstrap-clean-nmake:
+       cd ..\src
+       $(MAKE) $(MFLAGS) bootstrap-clean
+       cd ..\lib
+       $(MAKE) $(MFLAGS) clean
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) bootstrap-clean
+
+bootstrap-clean-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
+
+$(INSTALL_DIR):
+       - mkdir "$(INSTALL_DIR)"
+
+$(INSTALL_DIR)/bin: $(INSTALL_DIR)
+       - mkdir "$(INSTALL_DIR)/bin"
+
+#
+# Build and install emacs in INSTALL_DIR
+#
+.PHONY: install-bin install-shortcuts
+
+install: install-bin install-shortcuts
+
+install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)
+       - $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin
+       - $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin
+       - $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin
+       - $(CP) README.W32 $(INSTALL_DIR)
+       - $(DEL) ../$(DIRNAME)_same-dir.tst
+       - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst
+       echo SameDirTest > "$(INSTALL_DIR)/$(DIRNAME)_same-dir.tst"
+       - mkdir "$(INSTALL_DIR)/etc"
+       - mkdir "$(INSTALL_DIR)/info"
+       - mkdir "$(INSTALL_DIR)/lock"
+       - mkdir "$(INSTALL_DIR)/data"
+       - mkdir "$(INSTALL_DIR)/site-lisp"
+       - mkdir "$(INSTALL_DIR)/etc/icons"
+       $(IFNOTSAMEDIR) $(CP) ../site-lisp/subdirs.el $(INSTALL_DIR)/site-lisp $(ENDIF)
+       $(IFNOTSAMEDIR) $(CP_DIR) ../etc $(INSTALL_DIR) $(ENDIF)
+       - $(CP_DIR) icons $(INSTALL_DIR)/etc
+       $(IFNOTSAMEDIR) $(CP_DIR) ../info $(INSTALL_DIR) $(ENDIF)
+       $(IFNOTSAMEDIR) $(CP) ../COPYING $(INSTALL_DIR) $(ENDIF)
+       - $(CP) ../COPYING $(INSTALL_DIR)/bin
+       - $(DEL) ../$(DIRNAME)_same-dir.tst
+       - $(DEL) $(INSTALL_DIR)/$(DIRNAME)_same-dir.tst
+
+install-other-dirs-nmake: all
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) install
+       cd ..\src
+       $(MAKE) $(MFLAGS) install
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) install
+       cd ..\leim
+       $(MAKE) $(MFLAGS) install
+       cd ..\nt
+
+install-other-dirs-gmake: all
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src install
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src install
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install
+
+install-shortcuts: $(INSTALL_DIR)/bin
+       - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin
+       "$(INSTALL_DIR)/bin/addpm" -q
+
+maybe-copy-distfiles: maybe-copy-distfiles-$(SHELLTYPE)
+
+maybe-copy-distfiles-CMD: create-tmp-dist-dir doit
+       @if not $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE) == "" $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin
+
+maybe-copy-distfiles-SH: create-tmp-dist-dir doit
+       @if [ ! $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE) == "" ] ; then \
+         $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin ; \
+       fi
+
+create-tmp-dist-dir:
+       mkdir "$(TMP_DIST_DIR)"
+# Also create bin directory for dist files.
+       mkdir "$(TMP_DIST_DIR)/bin"
+
+dist: install-bin maybe-copy-distfiles
+       $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR)
+       $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)
+       $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)
+       $(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/lisp" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/leim" $(TMP_DIST_DIR)
+       $(CP_DIR) "$(INSTALL_DIR)/site-lisp" $(TMP_DIST_DIR)
+       $(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(VERSION)$(ARGQUOTE)
+       $(DEL_TREE) $(TMP_DIST_DIR)
+
+force-info:
+# Note that doc/emacs/makefile knows how to
+# put the info files in $(infodir),
+# so we can do ok running make in the build dir.
+info: force-info info-$(MAKETYPE)
+
+info-nmake:
+       cd ..\doc\emacs
+       $(MAKE) $(MFLAGS) info
+       cd ..\misc
+       $(MAKE) $(MFLAGS) info
+       cd ..\lispref
+       $(MAKE) $(MFLAGS) info
+       cd ..\lispintro
+       $(MAKE) $(MFLAGS) info
+       cd $(MAKEDIR)
+
+info-gmake: emacs misc lispref lispintro
+
+emacs misc lispref lispintro:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/$@ info
+
+#
+# Maintenance
+#
+clean: clean-other-dirs-$(MAKETYPE)
+       - $(DEL) $(COMPILER_TEMP_FILES)
+       - $(DEL_TREE) $(OBJDIR)
+       - $(DEL) stamp_BLD
+       - $(DEL) ../etc/DOC ../etc/DOC-X
+
+clean-other-dirs-nmake:
+       cd ..\lib
+       $(MAKE) $(MFLAGS) clean
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) clean
+       cd ..\src
+       $(MAKE) $(MFLAGS) clean
+       cd ..\doc\lispintro
+       $(MAKE) $(MFLAGS) clean
+       cd ..\lispref
+       $(MAKE) $(MFLAGS) clean
+       cd ..\..\leim
+       $(MAKE) $(MFLAGS) clean
+       cd ..\doc\emacs
+       $(MAKE) $(MFLAGS) clean
+       cd ..\misc
+       $(MAKE) $(MFLAGS) clean
+       cd ..\..\nt
+
+clean-other-dirs-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref clean
+
+cleanall-other-dirs-nmake:
+       cd ..\lib
+       $(MAKE) $(MFLAGS) cleanall
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) cleanall
+       cd ..\src
+       $(MAKE) $(MFLAGS) cleanall
+       cd ..\nt
+
+cleanall-other-dirs-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib cleanall
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src cleanall
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src cleanall
+
+# We used to delete *~ here, but that might inadvertently remove
+# precious files if it happens to match their short 8+3 aliases.
+cleanall: clean cleanall-other-dirs-$(MAKETYPE)
+        - $(DEL_TREE) obj
+        - $(DEL_TREE) obj-spd
+        - $(DEL_TREE) oo
+        - $(DEL_TREE) oo-spd
+
+top-distclean:
+       - $(DEL) $(COMPILER_TEMP_FILES)
+       - $(DEL_TREE) obj
+       - $(DEL_TREE) obj-spd
+       - $(DEL_TREE) oo
+       - $(DEL_TREE) oo-spd
+       - $(DEL) stamp_BLD
+       - $(DEL) ../etc/DOC ../etc/DOC-X
+       - $(DEL) config.log Makefile
+       - $(DEL) ../README.W32
+
+distclean: distclean-other-dirs-$(MAKETYPE) top-distclean
+
+distclean-other-dirs-nmake:
+       cd ..\lib
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\src
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\leim
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\doc\emacs
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\misc
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\lispintro
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\lispref
+       $(MAKE) $(MFLAGS) distclean
+       cd ..\..\nt
+
+distclean-other-dirs-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro distclean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref distclean
+
+maintainer-clean: maintainer-clean-other-dirs-$(MAKETYPE) top-distclean
+
+maintainer-clean-other-dirs-nmake:
+       cd ..\lib
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\lib-src
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\src
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\lisp
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\leim
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\doc\emacs
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\misc
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\lispintro
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\lispref
+       $(MAKE) $(MFLAGS) maintainer-clean
+       cd ..\..\nt
+
+maintainer-clean-other-dirs-gmake:
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro maintainer-clean
+       $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref maintainer-clean
+
+realclean: cleanall
+       - $(DEL_TREE) ../bin
+
+TAGS: TAGS-$(MAKETYPE)
+
+frc:
+TAGS-gmake: frc
+       ../lib-src/$(BLD)/etags $(CURDIR)/*.c
+       $(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP
+       $(MAKE) $(MFLAGS) -C ../lib-src TAGS
+       $(MAKE) $(MFLAGS) -C ../lib TAGS
+
+TAGS-nmake:
+       echo This target is not supported with NMake
+
+.PHONY: frc