# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
# Copyright (C) 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
EMACSOPT = -batch --no-init-file --no-site-file --multibyte
+# Extra flags to pass to the byte compiler
+BYTE_COMPILE_EXTRA_FLAGS =
+# For example to not display the undefined function warnings you can use this:
+# BYTE_COMPILE_EXTRA_FLAGS = --eval '(setq byte-compile-warnings (quote (not unresolved)))'
+# The example above is just for developers, it should not be used by default.
+
# Set EMACSLOADPATH correctly (already defined in environment).
EMACSLOADPATH=$(lisp)
lisptagsfiles2 = $(lisp)/*/*.el
ETAGS = "../lib-src/$(BLD)/etags"
+# Automatically generated autoload files, apart from lisp/loaddefs.el.
+LOADDEFS = $(lisp)/calendar/cal-loaddefs.el \
+ $(lisp)/calendar/diary-loaddefs.el $(lisp)/calendar/hol-loaddefs.el \
+ $(lisp)/mh-e/mh-loaddefs.el
+
+AUTOGENEL = $(lisp)/loaddefs.el $(LOADDEFS) $(lisp)/cus-load.el \
+ $(lisp)/finder-inf.el $(lisp)/subdirs.el $(lisp)/eshell/esh-groups.el \
+ $(lisp)/calc/calc-loaddefs.el
+
# Files to compile before others during a bootstrap. This is done to
# speed up the bootstrap process. The CC files are compiled first
# because CC mode tweaks the compilation process, and requiring
mail \
mh-e \
net \
+ nxml \
+ org \
play \
progmodes \
- term \
textmodes \
url
WINS= $(WINS_ALMOST) \
+ term \
obsolete
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 $(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)
+ @echo Directories: $(WINS_ALMOST)
+ -$(emacs) -l cus-dep --eval $(ARGQUOTE)(setq find-file-hook nil)$(ARGQUOTE) -f custom-make-dependencies $(lisp) $(WINS_ALMOST)
finder-data: $(lisp)/loaddefs.el doit
- @echo Directories: $(WINS)
- $(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS)
+ @echo Directories: $(WINS_ALMOST)
+ $(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS_ALMOST)
$(lisp)/loaddefs.el:
$(MAKE) $(MFLAGS) loaddefs.el-$(SHELLTYPE)
#
# 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
+autoloads: $(lisp)/loaddefs.el $(LOADDEFS) doit
@echo Directories: . $(WINS_ALMOST)
$(emacs) -l autoload \
--eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
# 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)
.SUFFIXES: .elc .el
.el.elc:
- -$(emacs) -f batch-byte-compile $<
+ -$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
# Compile all Lisp files, but don't recompile those that are up to
# date. Some files don't actually get compiled because they set the
compile-CMD:
# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
for %%f in ($(COMPILE_FIRST)) do \
- $(emacs) -l loaddefs -f batch-byte-compile-if-not-done %%f
+ $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done %%f
for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do \
- $(emacs) -l loaddefs -f batch-byte-compile-if-not-done %%f/%%g
+ $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
compile-SH:
# for elc in $(lisp)/*.elc $(lisp)/*/*.elc; do attrib -r $$elc; done
for el in $(COMPILE_FIRST); do \
echo Compiling $$el; \
- $(emacs) -l loaddefs -f batch-byte-compile-if-not-done $$el; \
+ $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done $$el; \
done
for dir in $(lisp) $(WINS); do \
for el in $$dir/*.el; do \
if test -f $$el; \
then \
echo Compiling $$el; \
- $(emacs) -l loaddefs -f batch-byte-compile-if-not-done $$el; \
+ $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done $$el; \
fi \
done; \
done
compile-always-CMD:
# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
- for %%f in ($(COMPILE_FIRST)) do $(emacs) -f batch-byte-compile %%f
- for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do $(emacs) -f batch-byte-compile %%f/%%g
+ for %%f in ($(COMPILE_FIRST)) do $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile %%f
+ for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile %%f/%%g
compile-always-SH:
# for elc in $(lisp)/*.elc $(lisp)/*/*.elc; do attrib -r $$elc; done
for el in $(COMPILE_FIRST); do \
echo Compiling $$el; \
- $(emacs) -f batch-byte-compile $$el || exit 1; \
+ $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
done
for dir in $(lisp) $(WINS); do \
for el in $$dir/*.el; do \
echo Compiling $$el; \
- $(emacs) -f batch-byte-compile $$el || exit 1; \
+ $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
done; \
done
compile-calc: compile-calc-$(SHELLTYPE)
compile-calc-CMD:
- for %%f in ($(lisp)/calc/*.el) do $(emacs) -f batch-byte-compile %%f
+ for %%f in ($(lisp)/calc/*.el) do $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile %%f
compile-calc-SH:
for el in $(lisp)/calc/*.el; do \
echo Compiling $$el; \
- $(emacs) -f batch-byte-compile $$el || exit 1; \
+ $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
done
# Backup compiled Lisp files in elc.tar.gz. If that file already
recompile: mh-autoloads doit $(lisp)/progmodes/cc-mode.elc
$(emacs) --eval $(ARGQUOTE)(batch-byte-recompile-directory 0)$(ARGQUOTE) $(lisp)
+# CC Mode uses a compile time macro system which causes a compile time
+# dependency in cc-mode.elc on the macros in cc-langs.el and the
+# version string in cc-defs.el.
+$(lisp)/progmodes/cc-mode.elc: \
+ $(lisp)/progmodes/cc-mode.el \
+ $(lisp)/progmodes/cc-langs.el \
+ $(lisp)/progmodes/cc-defs.el
+ $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $(lisp)/progmodes/cc-mode.el
+
+$(lisp)/calendar/cal-loaddefs.el:
+ "$(EMACS)" $(EMACSOPT) -l autoload \
+ --eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \
+ --eval "(setq find-file-suppress-same-file-warnings t)" \
+ --eval "(setq make-backup-files nil)" \
+ -f w32-batch-update-autoloads "$(lisp)/calendar/cal-loaddefs.el" \
+ ./calendar
+
+$(lisp)/calendar/diary-loaddefs.el:
+ "$(EMACS)" $(EMACSOPT) -l autoload \
+ --eval "(setq generate-autoload-cookie \";;;###diary-autoload\")" \
+ --eval "(setq find-file-suppress-same-file-warnings t)" \
+ --eval "(setq make-backup-files nil)" \
+ -f w32-batch-update-autoloads $(lisp)/calendar/diary-loaddefs.el \
+ ./calendar
+
+$(lisp)/calendar/hol-loaddefs.el:
+ "$(EMACS)" $(EMACSOPT) -l autoload \
+ --eval "(setq generate-autoload-cookie \";;;###holiday-autoload\")" \
+ --eval "(setq find-file-suppress-same-file-warnings t)" \
+ --eval "(setq make-backup-files nil)" \
+ -f w32-batch-update-autoloads $(lisp)/calendar/hol-loaddefs.el \
+ ./calendar
+
# 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.
# 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) \
-l autoload \
- --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \
- --eval "(setq find-file-suppress-same-file-warnings t)" \
- --eval "(setq make-backup-files nil)" \
+ --eval $(ARGQUOTE)(setq generate-autoload-cookie $(DQUOTE);;;###mh-autoload$(DQUOTE))$(ARGQUOTE) \
+ --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
+ --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
-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, 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 ";;; mh-loaddefs.el ends here" >> $@
-
-pre-mh-loaddefs.el-CMD:
- echo ;;; mh-loaddefs.el --- automatically extracted autoloads> $@
- echo ;;>> $@
- 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 ;;; mh-loaddefs.el ends here>> $@
+ $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) ./mh-e
# Prepare a bootstrap in the lisp subdirectory.
#
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"
+# 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.
+check-declare:
+ $(emacs) -l $(lisp)/emacs-lisp/check-declare --eval $(ARGQUOTE)(check-declare-directory $(DQUOTE)$(lisp)$(DQUOTE))$(ARGQUOTE)
+
#
# 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) *.el~
+ - $(DEL) *.el~
+
+distclean:
+ - $(DEL) $(lisp)/Makefile
+
+maintainer-clean: bootstrap-clean distclean
+ - $(DEL) $(AUTOGENEL)