X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/6a43ef8e8508df7d732e639ec75f657f4363e27a..6dfa19c50f75c1892f5c9a48104ddd532796d089:/nt/makefile.w32-in diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in index 56ecae32e8..59da03434e 100644 --- a/nt/makefile.w32-in +++ b/nt/makefile.w32-in @@ -1,452 +1,465 @@ -# -*- 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 . - - -# FIXME: This file uses DOS EOLs. Convert to Unix after 22.1 is out -# (and remove or replace this comment). - -VERSION = 24.0.92 - -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 stamp_BLD $(ALL) $(CLIENTRES) maybe-bootstrap all-other-dirs-$(MAKETYPE) - -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-docfile - $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean 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)/addpm.exe $(INSTALL_DIR)/bin - - $(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) ../same-dir.tst - - $(DEL) $(INSTALL_DIR)/same-dir.tst - echo SameDirTest > "$(INSTALL_DIR)/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) ../same-dir.tst - - $(DEL) $(INSTALL_DIR)/same-dir.tst - -install-other-dirs-nmake: - 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: - $(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/addpm" -q - -dist: install-bin - mkdir $(TMP_DIST_DIR) - $(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) - $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin - $(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: - $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/emacs info - $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/misc info - $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref info - $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispintro 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 +# -*- Makefile -*- for GNU Emacs on the Microsoft Windows API. +# Copyright (C) 2000-2014 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 . + + +# FIXME: This file uses DOS EOLs. Convert to Unix after 22.1 is out +# (and remove or replace this comment). + +VERSION = 24.4.50 + +TMP_DIST_DIR = emacs-$(VERSION) + +TRES = $(BLD)/emacs.res +CLIENTRES = $(BLD)/emacsclient.res + +LOCAL_FLAGS = -DOLD_PATHS=1 + +XMFLAGS = + +ALL = $(BLD)/addpm.exe $(BLD)/ddeclient.exe $(BLD)/runemacs.exe \ + $(BLD)/cmdproxy.exe $(BLD)/addsection.exe $(BLD)/preprep.exe + +$(BLD)/addpm.exe: $(BLD)/addpm.$(O) + $(LINK) $(LINK_OUT)$@ \ + $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) \ + $(USER32) $(OLE32) $(UUID) $(SHELL32) + +$(BLD)/ddeclient.exe: $(BLD)/ddeclient.$(O) + $(LINK) $(LINK_OUT)$@ \ + $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(ADVAPI32) $(USER32) + +$(BLD)/cmdproxy.exe: $(BLD)/cmdproxy.$(O) + $(LINK) $(LINK_OUT)$@ \ + $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32) + +$(BLD)/addsection.exe: $(BLD)/addsection.$(O) + $(LINK) $(LINK_OUT)$@ \ + $(LINK_FLAGS) $(ALL_DEPS) $(BASE_LIBS) $(USER32) + +$(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 + +$(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: $(BLD)/addsection.exe + 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: $(BLD)/addsection.exe + $(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: $(BLD)/addsection.exe $(BLD)/cmdproxy.exe bootstrap-$(MAKETYPE) + $(MAKE) $(MFLAGS) $(XMFLAGS) all + +bootstrap-nmake: $(BLD)/addsection.exe $(BLD)/cmdproxy.exe + 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: $(BLD)/addsection.exe $(BLD)/cmdproxy.exe + $(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-addpm: $(INSTALL_DIR)/bin $(BLD)/addpm.exe + - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin + +install-shortcuts: install-addpm + "$(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 install-addpm 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 + +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 + - $(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