bytecomp.el fix for bug#8647
[bpt/emacs.git] / lisp / makefile.w32-in
index 687dba4..c844a8f 100644 (file)
@@ -1,8 +1,7 @@
-#  -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
-#  Copyright (C) 2000, 2001, 2002, 2003, 2004,
-#                2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
+# Copyright (C) 2000-2011  Free Software Foundation, Inc.
 
-#  This file is part of GNU Emacs.
+# 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
@@ -28,14 +27,13 @@ lisp = $(CURDIR)
 srcdir = $(CURDIR)/..
 
 # You can specify a different executable on the make command line,
-# e.g. "make EMACS=../src/emacs ...".
+# e.g. "make EMACS=../bin/emacs ...".
 
-EMACS = $(THISDIR)/../bin/emacs.exe
+EMACS = ../src/$(BLD)/emacs.exe
 
-# Command line flags for Emacs.  This must include --multibyte,
-# otherwise some files will not compile.
+# Command line flags for Emacs.
 
-EMACSOPT = -batch --no-init-file --no-site-file --multibyte
+EMACSOPT = -batch --no-site-file --no-site-lisp
 
 # Extra flags to pass to the byte compiler
 BYTE_COMPILE_EXTRA_FLAGS =
@@ -51,12 +49,16 @@ LC_ALL = C
 
 lisptagsfiles1 = $(lisp)/*.el
 lisptagsfiles2 = $(lisp)/*/*.el
-ETAGS = "../lib-src/$(BLD)/etags"
+lisptagsfiles3 = $(lisp)/*/*/*.el
+lisptagsfiles4 = $(lisp)/*/*/*/*.el
+ETAGS = "../lib-src/$(BLD)/etags.exe"
+## $(DEST) is overridden by ../src/makefile.w32-in.
+DEST=$(lisp)
 
 # 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
+       $(lisp)/mh-e/mh-loaddefs.el $(lisp)/net/tramp-loaddefs.el
 
 AUTOGENEL = $(lisp)/loaddefs.el $(LOADDEFS) $(lisp)/cus-load.el \
        $(lisp)/finder-inf.el $(lisp)/subdirs.el $(lisp)/eshell/esh-groups.el \
@@ -64,6 +66,15 @@ AUTOGENEL = $(lisp)/loaddefs.el $(LOADDEFS) $(lisp)/cus-load.el \
        $(lisp)/cedet/semantic/loaddefs.el $(lisp)/cedet/ede/loaddefs.el \
        $(lisp)/cedet/srecode/loaddefs.el
 
+# Value of max-lisp-eval-depth when compiling initially.
+# During bootstrapping the byte-compiler is run interpreted when compiling
+# itself, and uses more stack than usual.
+#
+BIG_STACK_DEPTH = 1200
+BIG_STACK_OPTS = --eval "(setq max-lisp-eval-depth $(BIG_STACK_DEPTH))"
+
+BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) $(BYTE_COMPILE_EXTRA_FLAGS)
+
 # 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
@@ -73,6 +84,8 @@ AUTOGENEL = $(lisp)/loaddefs.el $(LOADDEFS) $(lisp)/cus-load.el \
 COMPILE_FIRST = \
        $(lisp)/emacs-lisp/byte-opt.el \
        $(lisp)/emacs-lisp/bytecomp.el \
+       $(lisp)/emacs-lisp/macroexp.el \
+       $(lisp)/emacs-lisp/cconv.el \
        $(lisp)/subr.el \
        $(lisp)/progmodes/cc-mode.el \
        $(lisp)/progmodes/cc-vars.el
@@ -89,9 +102,7 @@ WINS_CEDET=\
        cedet \
        cedet/ede \
        cedet/semantic \
-       cedet/srecode
-
-WINS_CEDET_SUBDIRS=\
+       cedet/srecode \
        cedet/semantic/analyze \
        cedet/semantic/bovine \
        cedet/semantic/decorate \
@@ -116,22 +127,20 @@ WINS_BASIC=\
        play \
        progmodes \
        textmodes \
-       url
+       url \
+       vc
 
-# Directories with lisp files to compile
-WINS_ALMOST=$(WINS_BASIC) \
+# Directories with lisp files to compile, and to extract data from
+# (customs, autoloads, etc.)
+WINS_UPDATES=$(WINS_BASIC) \
        $(WINS_CEDET)
 
-# Directories to extract data from (customs, autoloads, etc.)
-WINS_UPDATES=$(WINS_ALMOST) \
-       $(WINS_CEDET_SUBDIRS)
-
 # Directories to add to subdirs.el
 WINS_SUBDIR=$(WINS_BASIC) \
        obsolete
 
-# All directories, except CEDET subdirs
-WINS= $(WINS_ALMOST) \
+# All directories
+WINS= $(WINS_UPDATES) \
        term \
        obsolete
 
@@ -214,7 +223,7 @@ autoloads: $(lisp)/loaddefs.el $(LOADDEFS) doit
        @echo Directories: . $(WINS_UPDATES)
        $(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_UPDATES)
+               -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" $(MAKE) . $(WINS_UPDATES)
 
 $(lisp)/subdirs.el:
        $(MAKE) $(MFLAGS) update-subdirs
@@ -238,24 +247,58 @@ update-subdirs-SH: doit
 
 updates: update-subdirs autoloads mh-autoloads finder-data custom-deps
 
-# This is useful after "cvs up".
-cvs-update: recompile autoloads finder-data custom-deps
+# This is useful after "bzr up".
+bzr-update: recompile autoloads finder-data custom-deps
+
+# For backwards compatibility:
+cvs-update: bzr-update
 
 # Update the AUTHORS file.
 
 update-authors:
        $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
 
-TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
-       $(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
+TAGS: TAGS-$(MAKETYPE)
+
+TAGS-LISP: TAGS-LISP-$(MAKETYPE)
+
+TAGS-nmake:
+       echo This target is not supported with NMake
+       exit -1
+
+TAGS-LISP-nmake:
+       echo This target is not supported with NMake
+       exit -1
+
+TAGS-gmake: TAGS-$(SHELLTYPE)
+
+TAGS-LISP-gmake: TAGS-LISP-$(SHELLTYPE)
 
-TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2)
-       $(ETAGS) -o TAGS-LISP $(lisptagsfiles1) $(lisptagsfiles2)
+TAGS-SH: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+       - $(DEL) TAGS
+       for dir in . $(WINS_UPDATES); do \
+         $(ETAGS) -a $(lisp)/$$dir/*.el; \
+       done
+
+TAGS-LISP-SH: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+       - $(DEL) $(DEST)/TAGS-LISP
+       for dir in . $(WINS_UPDATES); do \
+         $(ETAGS) -a -o $(DEST)/TAGS-LISP $(lisp)/$$dir/*.el; \
+       done
+
+TAGS-CMD: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+       - $(DEL) TAGS
+       for %%d in (. $(WINS_UPDATES)) do $(ETAGS) -a $(lisp)/%%d/*.el
+
+TAGS-LISP-CMD: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+       - $(DEL) $(DEST)/TAGS-LISP
+       for %%d in (. $(WINS_UPDATES)) do \
+         $(ETAGS) -a -o $(DEST)/TAGS-LISP $(lisp)/%%d/*.el
 
 .SUFFIXES: .elc .el
 
 .el.elc:
-       -$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
+       -$(emacs) $(BYTE_COMPILE_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
@@ -275,22 +318,22 @@ 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
        for %%f in ($(COMPILE_FIRST)) do \
-         $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done %%f
+         $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f
        for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do \
-         $(emacs) -l loaddefs $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
+         $(emacs) -l loaddefs $(BYTE_COMPILE_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 $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done $$el; \
+         $(emacs) -l loaddefs $(BYTE_COMPILE_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 $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile-if-not-done $$el; \
+             $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \
            fi \
          done; \
        done
@@ -303,31 +346,31 @@ 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
-       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
+       for %%f in ($(COMPILE_FIRST)) do $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile %%f
+       for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do $(emacs) $(BYTE_COMPILE_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) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
+         $(emacs) $(BYTE_COMPILE_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) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
+           $(emacs) $(BYTE_COMPILE_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) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile %%f
+       for %%f in ($(lisp)/calc/*.el) do $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile %%f
 
 compile-calc-SH:
        for el in $(lisp)/calc/*.el; do \
          echo Compiling $$el; \
-         $(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $$el || exit 1; \
+         $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $$el || exit 1; \
        done
 
 # Backup compiled Lisp files in elc.tar.gz.  If that file already
@@ -358,7 +401,7 @@ $(lisp)/calendar/cal-loaddefs.el:
           --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
+             $(MAKE) ./calendar
 
 $(lisp)/calendar/diary-loaddefs.el:
        "$(EMACS)" $(EMACSOPT) -l autoload \
@@ -366,7 +409,7 @@ $(lisp)/calendar/diary-loaddefs.el:
           --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
+             $(MAKE) ./calendar
 
 $(lisp)/calendar/hol-loaddefs.el:
        "$(EMACS)" $(EMACSOPT) -l autoload \
@@ -374,7 +417,7 @@ $(lisp)/calendar/hol-loaddefs.el:
           --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
+             $(MAKE) ./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
@@ -403,7 +446,26 @@ $(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC)
           --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
           --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
           -f w32-batch-update-autoloads \
-          $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) ./mh-e
+          $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) $(MAKE) ./mh-e
+
+# Update TRAMP internal autoloads. Maybe we could move tramp*.el into
+# its own subdirectory. OTOH, it does not hurt to keep them in
+# lisp/net.
+TRAMP_SRC = $(lisp)/net/tramp.el  $(lisp)/net/tramp-cache.el  \
+       $(lisp)/net/tramp-cmds.el $(lisp)/net/tramp-compat.el \
+       $(lisp)/net/tramp-ftp.el  $(lisp)/net/tramp-gvfs.el   \
+       $(lisp)/net/tramp-gw.el   $(lisp)/net/tramp-sh.el     \
+       $(lisp)/net/tramp-smb.el  $(lisp)/net/tramp-uu.el     \
+       $(lisp)/net/trampver.el
+
+$(lisp)/net/tramp-loaddefs.el: $(TRAMP_SRC)
+       "$(EMACS)" $(EMACSOPT) \
+          -l autoload \
+          --eval $(ARGQUOTE)(setq generate-autoload-cookie $(DQUOTE);;;###tramp-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 \
+          $(ARGQUOTE)$(lisp)/net/tramp-loaddefs.el$(ARGQUOTE) $(MAKE) ./net
 
 # Prepare a bootstrap in the lisp subdirectory.
 #
@@ -426,12 +488,11 @@ bootstrap-clean:
 bootstrap-clean-CMD:
 #      if exist "$(EMACS)" $(MAKE) $(MFLAGS) autoloads
        -for %%f in (. $(WINS)) do for %%g in (%%f\*.elc) do @$(DEL) %%g
-       -for %%f in ($(WINS_CEDET_SUBDIRS)) do for %%g in (%%f\*.elc) do @$(DEL) %%g
 
 bootstrap-clean-SH:
 #      if test -f "$(EMACS)"; then $(MAKE) $(MFLAGS) autoloads; fi
 #      -rm -f $(lisp)/*.elc $(lisp)/*/*.elc
-       -for dir in . $(WINS) $(WINS_CEDET_SUBDIRS); do rm -f $$dir/*.elc $$dir/*/*.elc $$dir/*/*/*.elc; done
+       -for dir in . $(WINS); do rm -f $$dir/*.elc $$dir/*/*.elc $$dir/*/*/*.elc; done
 
 # Generate/update files for the bootstrap process.
 # When done, remove bootstrap-emacs from ../bin, so that
@@ -512,7 +573,7 @@ $(lisp)/progmodes/cc-align.elc $(lisp)/progmodes/cc-awk.elc\
  $(lisp)/progmodes/cc-engine.elc $(lisp)/progmodes/cc-fonts.elc\
  $(lisp)/progmodes/cc-langs.elc $(lisp)/progmodes/cc-menus.elc\
  $(lisp)/progmodes/cc-mode.elc $(lisp)/progmodes/cc-styles.elc\
- $(lisp)/progmodes/cc-subword.elc $(lisp)/progmodes/cc-vars.elc: \
+ $(lisp)/progmodes/cc-vars.elc: \
    $(lisp)/progmodes/cc-bytecomp.elc $(lisp)/progmodes/cc-defs.elc
 
 $(lisp)/progmodes/cc-align.elc: \
@@ -546,8 +607,6 @@ $(lisp)/progmodes/cc-mode.elc: $(lisp)/progmodes/cc-langs.elc \
 $(lisp)/progmodes/cc-styles.elc: $(lisp)/progmodes/cc-vars.elc \
    $(lisp)/progmodes/cc-align.elc
 
-$(lisp)/progmodes/cc-subword.elc: $(lisp)/progmodes/cc-cmds.elc
-
 $(lisp)/progmodes/cc-vars.elc: $(lisp)/custom.elc $(lisp)/widget.elc
 
 # MH-E dependencies, mainly to prevent failures with parallel