From 4f6735c28b423556e61e9af85f9683aa384d8237 Mon Sep 17 00:00:00 2001 From: Hannu Koivisto Date: Sun, 28 Aug 2011 23:00:00 +0300 Subject: [PATCH 2/4] NT build: ensure GNU make makefiles don't have CRLF line ends --- nt/configure.bat | 2 + nt/makefile.w32-in | 902 ++++++++++++++++++++++++++-------------------------- 2 files changed, 451 insertions(+), 453 deletions(-) diff --git a/nt/configure.bat b/nt/configure.bat index 9db688f..db57661 100755 --- a/nt/configure.bat +++ b/nt/configure.bat @@ -774,6 +774,8 @@ if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp echo /* End of settings from configure.bat. */ >>config.tmp +if %MAKECMD% == gmake dos2unix config.tmp config.settings + Rem See if fc.exe returns a meaningful exit status. If it does, we Rem might as well avoid unnecessary overwriting of config.h and epaths.h, Rem since this forces recompilation of every source file. diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in index 31ca314..05ce4eb 100644 --- a/nt/makefile.w32-in +++ b/nt/makefile.w32-in @@ -1,453 +1,449 @@ -# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API. -# Copyright (C) 2000-2011 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.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 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) "$(INSTALL_DIR)/INSTALL" $(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 ..\doc\lispref - $(MAKE) $(MFLAGS) clean - cd ..\leim - $(MAKE) $(MFLAGS) clean - cd ..\doc\emacs - $(MAKE) $(MFLAGS) clean - cd ..\doc\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 ..\doc\misc - $(MAKE) $(MFLAGS) distclean - cd ..\doc\lispintro - $(MAKE) $(MFLAGS) distclean - cd ..\doc\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 ..\doc\misc - $(MAKE) $(MFLAGS) maintainer-clean - cd ..\doc\lispintro - $(MAKE) $(MFLAGS) maintainer-clean - cd ..\doc\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 W32 API. +# Copyright (C) 2000-2011 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 . + +VERSION = 24.0.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 || $(RC) $(RC_OUT)$(TRES) emacs22.rc + +$(CLIENTRES): emacsclient.rc stamp_BLD + $(RC) $(RC_OUT)$(CLIENTRES) emacsclient.rc || $(RC) $(RC_OUT)$(CLIENTRES) emacsclient22.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) "$(INSTALL_DIR)/INSTALL" $(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 ..\doc\lispref + $(MAKE) $(MFLAGS) clean + cd ..\leim + $(MAKE) $(MFLAGS) clean + cd ..\doc\emacs + $(MAKE) $(MFLAGS) clean + cd ..\doc\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 ..\doc\misc + $(MAKE) $(MFLAGS) distclean + cd ..\doc\lispintro + $(MAKE) $(MFLAGS) distclean + cd ..\doc\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 ..\doc\misc + $(MAKE) $(MFLAGS) maintainer-clean + cd ..\doc\lispintro + $(MAKE) $(MFLAGS) maintainer-clean + cd ..\doc\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 -- 1.7.7.rc0