# -*- 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.
#
# 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 2, or (at your option)
+# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Emacs is distributed in the hope that it will be useful,
# 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 \
+ nxml \
international \
language \
mail \
mh-e \
net \
- obsolete \
play \
progmodes \
term \
textmodes \
url
+WINS= $(WINS_ALMOST) \
+ obsolete
+
doit:
$(lisp)/cus-load.el:
touch $@
# 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
+custom-deps: $(lisp)/cus-load.el $(lisp)/loaddefs.el doit
@echo Directories: $(WINS)
-$(emacs) -l cus-dep --eval $(ARGQUOTE)(setq find-file-hook nil)$(ARGQUOTE) -f custom-make-dependencies $(lisp) $(WINS)
-finder-data: doit
+finder-data: $(lisp)/loaddefs.el doit
@echo Directories: $(WINS)
$(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS)
# 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)
+ @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 . $(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)
$(lisp)/subdirs.el:
$(MAKE) $(MFLAGS) update-subdirs
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:
- $(emacs) -l authors -f batch-update-authors $(srcdir)/AUTHORS $(srcdir)
+ $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
$(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
# 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
+
+# See the commentary for autoloads above for why we use ./mh-e below
+# instead of $(lisp)/mh-e.
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 pre-mh-loaddefs.el-$(SHELLTYPE)
- $(EMACS) $(EMACSOPT) \
+ "$(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" ./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) $(lisp)/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
- $(DEL) "$(INSTALL_DIR)/same-dir.tst"
echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst"
#ifdef COPY_LISP_SOURCE
- $(IFNOTSAMEDIR) $(CP_DIR) . "$(INSTALL_DIR)/lisp" $(ENDIF)
+ $(IFNOTSAMEDIR) $(MAKE) $(MFLAGS) install-lisp-$(SHELLTYPE) $(ENDIF)
#else
# $(IFNOTSAMEDIR) $(CP_DIR) *.elc "$(INSTALL_DIR)/lisp" $(ENDIF)
# $(IFNOTSAMEDIR) $(CP) cus-load.el "$(INSTALL_DIR)/lisp" $(ENDIF)
- $(DEL) ../same-dir.tst
- $(DEL) "$(INSTALL_DIR)/same-dir.tst"
+# Need to copy *.el files first, to avoid "source file is newer" annoyance
+# since cp does not preserve time stamps
+install-lisp-SH:
+ cp -f *.el "$(INSTALL_DIR)/lisp"
+ for dir in $(WINS); do [ -d "$(INSTALL_DIR)/lisp/$$dir" ] || mkdir "$(INSTALL_DIR)/lisp/$$dir"; done
+ for dir in $(WINS); do cp -f $$dir/*.el "$(INSTALL_DIR)/lisp/$$dir"; done
+ for dir in . $(WINS); do cp $$dir/*.elc "$(INSTALL_DIR)/lisp/$$dir"; done
+
+install-lisp-CMD:
+ cp -f *.el "$(INSTALL_DIR)/lisp"
+ for %%f in ($(WINS)) do if not exist "$(INSTALL_DIR)/lisp/%%f" mkdir "$(INSTALL_DIR)/lisp/%%f"
+ for %%f in ($(WINS)) do cp -f %%f/*.el "$(INSTALL_DIR)/lisp/%%f"
+ for %%f in (. $(WINS)) do cp -f %%f/*.elc "$(INSTALL_DIR)/lisp/%%f"
+
#
# Maintenance
#
+# We used to delete *~ here, but that might inadvertently remove
+# precious files if it happens to match their short 8+3 aliases.
clean:
- - $(DEL) *~
+ - $(DEL) *.el~