# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
# Copyright (C) 2000, 2001, 2002, 2003, 2004,
-# 2005 Free Software Foundation, Inc.
+# 2005, 2006, 2007 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
# You can specify a different executable on the make command line,
# e.g. "make EMACS=../src/emacs ...".
-EMACS = "$(THISDIR)/../bin/emacs.exe"
+EMACS = $(THISDIR)/../bin/emacs.exe
# Command line flags for Emacs. This must include --multibyte,
# otherwise some files will not compile.
$(lisp)/progmodes/cc-vars.el
# The actual Emacs command run in the targets below.
+# The quotes around $(EMACS) are here because the user could type
+# it with forward slashes and without quotes, which will fail if
+# the shell is cmd.exe.
-emacs = $(EMACS) $(EMACSOPT)
-
-# Common command to find subdirectories
-
-setwins=subdirs=`find $$wd -type d -print`; \
- for file in $$subdirs; do \
- case $$file in */Old | */RCS | */CVS | */CVS/* | */=* ) ;; \
- *) wins="$$wins $$file" ;; \
- esac; \
- done
+emacs = "$(EMACS)" $(EMACSOPT)
# Have to define the list of subdirs manually when not using sh.
-WINS=\
+WINS_ALMOST=\
calc \
calendar \
emacs-lisp \
emulation \
+ erc \
eshell \
gnus \
international \
mail \
mh-e \
net \
- obsolete \
play \
progmodes \
term \
textmodes \
- toolbar \
url
+WINS= $(WINS_ALMOST) \
+ obsolete
+
doit:
-cus-load.el:
+$(lisp)/cus-load.el:
touch $@
-custom-deps: cus-load.el doit
+# 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.
+custom-deps: $(lisp)/cus-load.el doit
@echo Directories: $(WINS)
-$(emacs) -l cus-dep --eval $(ARGQUOTE)(setq find-file-hook nil)$(ARGQUOTE) -f custom-make-dependencies $(lisp) $(WINS)
@echo Directories: $(WINS)
$(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS)
-loaddefs.el:
+$(lisp)/loaddefs.el:
$(MAKE) $(MFLAGS) loaddefs.el-$(SHELLTYPE)
cp loaddefs.el-$(SHELLTYPE) $@
rm loaddefs.el-$(SHELLTYPE)
echo (autoload 'define-derived-mode "derived")>> $@
echo (autoload 'encoded-kbd-mode "encoded-kb")>> $@
echo (defvar cvs-global-menu nil)>> $@
- echo ;;; >> $@
+ echo.\f>> $@
echo ;;; Local Variables:>> $@
echo ;;; version-control: never>> $@
echo ;;; no-byte-compile: t>> $@
echo ;;; End:>> $@
echo ;;; loaddefs.el ends here>> $@
-autoloads: loaddefs.el doit
- @echo Directories: $(WINS)
+# Use . instead of $(lisp) because $(lisp) is an absolute file name,
+# including a drive letter and any leading directories, so the generated
+# loaddefs.el will mention file names that on other machine reference
+# possibly non-existent directories.
+#
+# 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.
+autoloads: $(lisp)/loaddefs.el doit
+ @echo Directories: . $(WINS_ALMOST)
$(emacs) -l autoload \
- --eval $(ARGQUOTE)(setq find-file-hook nil \
- find-file-suppress-same-file-warnings t \
- generated-autoload-file \
- $(DQUOTE)$(lisp)/loaddefs.el$(DQUOTE))$(ARGQUOTE) \
- -f batch-update-autoloads $(lisp) $(WINS)
+ --eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
+ -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_ALMOST)
-subdirs.el:
+$(lisp)/subdirs.el:
$(MAKE) $(MFLAGS) update-subdirs
# Need separate version for sh and native cmd.exe
update-subdirs: update-subdirs-$(SHELLTYPE)
update-subdirs-CMD: doit
- echo ;; -*- no-byte-compile: t -*->subdirs.el
- echo ;; In load-path, after this directory should come>> subdirs.el
- echo ;; certain of its subdirectories. Here we specify them.>> subdirs.el
- echo (normal-top-level-add-to-load-path $(SQUOTE)(>> subdirs.el
- @for %%d in ($(WINS)) do if not (%%d)==(term) echo "%%d">> subdirs.el
- echo ))>> subdirs.el
+ echo ;; -*- no-byte-compile: t -*-> $(lisp)/subdirs.el
+ echo ;; In load-path, after this directory should come>> $(lisp)/subdirs.el
+ echo ;; certain of its subdirectories. Here we specify them.>> $(lisp)/subdirs.el
+ echo (normal-top-level-add-to-load-path $(SQUOTE)(>> $(lisp)/subdirs.el
+ @for %%d in ($(WINS)) do if not (%%d)==(term) echo "%%d">> $(lisp)/subdirs.el
+ echo ))>> $(lisp)/subdirs.el
update-subdirs-SH: doit
$(srcdir)/update-subdirs $(lisp); \
updates: update-subdirs autoloads mh-autoloads finder-data custom-deps
+# This is useful after "cvs up".
+cvs-update: recompile autoloads finder-data custom-deps
+
# Update the AUTHORS file.
update-authors:
# compiled find the right files.
# Need separate version for sh and native cmd.exe
-compile: subdirs.el mh-autoloads compile-$(SHELLTYPE) doit
+compile: $(lisp)/subdirs.el mh-autoloads compile-$(SHELLTYPE) doit
compile-CMD:
# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
# unconditionally. Some files don't actually get compiled because they
# set the local variable no-byte-compile.
-compile-always: subdirs.el compile-always-$(SHELLTYPE) doit
+compile-always: $(lisp)/subdirs.el compile-always-$(SHELLTYPE) doit
compile-always-CMD:
# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
# Recompile all Lisp files which are newer than their .elc files.
# Note that this doesn't create .elc files. It only recompiles if an
# .elc is present.
-
-recompile: mh-autoloads doit
- $(emacs) -f batch-byte-recompile-directory $(lisp)
+# 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.
+recompile: mh-autoloads doit $(lisp)/progmodes/cc-mode.elc
+ $(emacs) --eval $(ARGQUOTE)(batch-byte-recompile-directory 0)$(ARGQUOTE) $(lisp)
# Update MH-E internal autoloads. These are not to be confused with
# the autoloads for the MH-E entry points, which are already in
# loaddefs.el.
MH_E_SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \
- $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-customize.el \
- $(lisp)/mh-e/mh-e.el $(lisp)/mh-e/mh-funcs.el \
- $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-pick.el \
- $(lisp)/mh-e/mh-print.el $(lisp)/mh-e/mh-inc.el \
- $(lisp)/mh-e/mh-init.el $(lisp)/mh-e/mh-index.el \
- $(lisp)/mh-e/mh-identity.el $(lisp)/mh-e/mh-junk.el \
- $(lisp)/mh-e/mh-seq.el $(lisp)/mh-e/mh-speed.el \
- $(lisp)/mh-e/mh-utils.el
+ $(lisp)/mh-e/mh-buffers.el $(lisp)/mh-e/mh-compat.el \
+ $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-e.el \
+ $(lisp)/mh-e/mh-folder.el $(lisp)/mh-e/mh-funcs.el \
+ $(lisp)/mh-e/mh-gnus.el $(lisp)/mh-e/mh-identity.el \
+ $(lisp)/mh-e/mh-inc.el $(lisp)/mh-e/mh-junk.el \
+ $(lisp)/mh-e/mh-letter.el $(lisp)/mh-e/mh-limit.el \
+ $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-print.el \
+ $(lisp)/mh-e/mh-scan.el $(lisp)/mh-e/mh-search.el \
+ $(lisp)/mh-e/mh-seq.el $(lisp)/mh-e/mh-show.el \
+ $(lisp)/mh-e/mh-speed.el $(lisp)/mh-e/mh-thread.el \
+ $(lisp)/mh-e/mh-tool-bar.el $(lisp)/mh-e/mh-utils.el \
+ $(lisp)/mh-e/mh-xface.el
mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el
$(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC)
$(MAKE) $(MFLAGS) pre-mh-loaddefs.el-$(SHELLTYPE)
cp pre-mh-loaddefs.el-$(SHELLTYPE) $@
- rm re-mh-loaddefs.el-$(SHELLTYPE)
- $(EMACS) $(EMACSOPT) \
+ rm pre-mh-loaddefs.el-$(SHELLTYPE)
+ "$(EMACS)" $(EMACSOPT) \
-l autoload \
--eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \
- --eval "(setq generated-autoload-file \"$(lisp)/mh-e/mh-loaddefs.el\")" \
+ --eval "(setq find-file-suppress-same-file-warnings t)" \
--eval "(setq make-backup-files nil)" \
- -f batch-update-autoloads $(lisp)/mh-e
+ -f w32-batch-update-autoloads \
+ "$(lisp)/mh-e/mh-loaddefs.el" $(lisp)/mh-e
pre-mh-loaddefs.el-SH:
echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@
echo ";;" >> $@
- echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@
- echo ";;; Author: Bill Wohler <wohler@newt.com>" >> $@
- echo ";;; Keywords: mail" >> $@
+ echo ";; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc." >> $@
+ echo ";; Author: Bill Wohler <wohler@newt.com>" >> $@
+ echo ";; Keywords: mail" >> $@
echo ";;; Commentary:" >> $@
echo ";;; Change Log:" >> $@
echo ";;; Code:" >> $@
echo "\f" >> $@
echo "(provide 'mh-loaddefs)" >> $@
- echo ";;; Local Variables:" >> $@
- echo ";;; version-control: never" >> $@
- echo ";;; no-byte-compile: t" >> $@
- echo ";;; no-update-autoloads: t" >> $@
- echo ";;; End:" >> $@
+ echo ";; Local Variables:" >> $@
+ echo ";; version-control: never" >> $@
+ echo ";; no-byte-compile: t" >> $@
+ echo ";; no-update-autoloads: t" >> $@
+ echo ";; End:" >> $@
echo ";;; mh-loaddefs.el ends here" >> $@
pre-mh-loaddefs.el-CMD:
echo ;;; mh-loaddefs.el --- automatically extracted autoloads> $@
echo ;;>> $@
- echo ;;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.>> $@
- echo ;;; Author: Bill Wohler (wohler@newt.com)>> $@
- echo ;;; Keywords: mail>> $@
+ echo ;; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.>> $@
+ echo ;; Author: Bill Wohler (wohler@newt.com)>> $@
+ echo ;; Keywords: mail>> $@
echo ;;; Commentary:>> $@
echo ;;; Change Log:>> $@
echo ;;; Code:>> $@
echo.\f>> $@
echo (provide 'mh-loaddefs)>> $@
- echo ;;; Local Variables:>> $@
- echo ;;; version-control: never>> $@
- echo ;;; no-byte-compile: t>> $@
- echo ;;; no-update-autoloads: t>> $@
- echo ;;; End:>> $@
+ echo ;; Local Variables:>> $@
+ echo ;; version-control: never>> $@
+ echo ;; no-byte-compile: t>> $@
+ echo ;; no-update-autoloads: t>> $@
+ echo ;; End:>> $@
echo ;;; mh-loaddefs.el ends here>> $@
# Prepare a bootstrap in the lisp subdirectory.
# sources only.
# Need separate version for sh and native cmd.exe
-bootstrap-clean: bootstrap-clean-$(SHELLTYPE) loaddefs.el
+# Note that bootstrap-clean-$(SHELLTYPE) copies ldefs-boot.el to loaddefs.el,
+# and thus the almost-empty loaddefs.el crafted by the $(lisp)/loaddefs.el
+# target can NOT be built _after_ bootstrap-clean-$(SHELLTYPE) does its
+# thing, or else an empty loaddefs.el will overwrite the full one.
+bootstrap-clean: $(lisp)/loaddefs.el
+ $(MAKE) $(MFLAGS) bootstrap-clean-$(SHELLTYPE)
bootstrap-clean-CMD:
-# if exist $(EMACS) $(MAKE) $(MFLAGS) autoloads
+# if exist "$(EMACS)" $(MAKE) $(MFLAGS) autoloads
cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el
-for %%f in (. $(WINS)) do for %%g in (%%f\*.elc) do @$(DEL) %%g
bootstrap-clean-SH:
-# if test -f $(EMACS); then $(MAKE) $(MFLAGS) autoloads; fi
+# if test -f "$(EMACS)"; then $(MAKE) $(MFLAGS) autoloads; fi
# -rm -f $(lisp)/*.elc $(lisp)/*/*.elc
cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el
-for dir in . $(WINS); do rm -f $$dir/*.elc; done
# it will not be mistaken for an installed binary.
bootstrap: update-subdirs autoloads mh-autoloads compile finder-data custom-deps
- - $(DEL) $(EMACS)
+ - $(DEL) "$(EMACS)"
#
# Assuming INSTALL_DIR is defined, copy the elisp files to it