]> code.delx.au - gnu-emacs/blobdiff - lisp/makefile.w32-in
Add 2008 to copyright years.
[gnu-emacs] / lisp / makefile.w32-in
index f9c33dbed7962dcb55d8e49e3f64e50254d89b96..35f28487a5a6fe9c38f9310f765f1033837f74d7 100644 (file)
@@ -1,12 +1,12 @@
 #  -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
 #  Copyright (C) 2000, 2001, 2002, 2003, 2004,
-#                2005 Free Software Foundation, Inc.
+#                2005, 2006, 2007, 2008  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,
@@ -33,7 +33,7 @@ srcdir = $(CURDIR)/..
 # 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.
@@ -61,24 +61,19 @@ COMPILE_FIRST = \
        $(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 \
@@ -86,24 +81,26 @@ WINS=\
        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)
 
@@ -156,10 +153,10 @@ loaddefs.el-CMD:
 # 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)$(ARGQUOTE) \
-               -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS)
+               -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_ALMOST)
 
 $(lisp)/subdirs.el:
        $(MAKE) $(MFLAGS) update-subdirs
@@ -289,70 +286,77 @@ compile-after-backup: backup-compiled-files compile-always
 # 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 find-file-suppress-same-file-warnings t)" \
           --eval "(setq make-backup-files nil)" \
           -f w32-batch-update-autoloads \
-          "$(lisp)/mh-e/mh-loaddefs.el" $(lisp)/mh-e
+          "$(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, 2008 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, 2008 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.
@@ -369,15 +373,20 @@ pre-mh-loaddefs.el-CMD:
 # 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
@@ -387,7 +396,7 @@ bootstrap-clean-SH:
 # 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
@@ -399,7 +408,7 @@ install:
                - $(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)
@@ -416,8 +425,24 @@ install:
                - $(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~