]> git.eshelyaron.com Git - emacs.git/commitdiff
(EMACSOPT, DONTCOMPILE, EL): New.
authorGerd Moellmann <gerd@gnu.org>
Thu, 7 Oct 1999 23:29:39 +0000 (23:29 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 7 Oct 1999 23:29:39 +0000 (23:29 +0000)
(emacs): Use it everywhere instead of EMACS.
(compile): New target.  Compile all Lisp files from scratch.
(recompile): New target.  Recompile lisp directory.
(autoloads-with-other-emacs): New target.  Build loaddefs.el with
an Emacs executable not built in the current directory tree.

lisp/ChangeLog
lisp/Makefile

index c36cab4752caddfab301a65c8cacb06ec4f2c20e..2697ca69ab9aa13a486ec9bb5ee596b4c965b504 100644 (file)
@@ -1,3 +1,12 @@
+1999-10-08  Gerd Moellmann  <gerd@gnu.org>
+
+       * Makefile (EMACSOPT, DONTCOMPILE, EL): New.
+       (emacs): Use it everywhere instead of EMACS.
+       (compile): New target.  Compile all Lisp files from scratch.
+       (recompile): New target.  Recompile lisp directory.
+       (autoloads-with-other-emacs): New target.  Build loaddefs.el with
+       an Emacs executable not built in the current directory tree.
+
 1999-10-07  Peter Breton  <pbreton@ne.mediaone.net>
 
        * filecache.el (file-cache-completion-ignore-case): New variable,
index 684fe148ec89693b1e815f8c8e1f518a4dfa67f4..838c1532552df10a96ead8d4e03fd824e19da51c 100644 (file)
@@ -1,12 +1,24 @@
 #
 # Maintenance productions for the Lisp directory
 #
-EMACS = emacs
+
+# You can specify a different executable on the make command line,
+# e.g. "make EMACS=../src/emacs ...".
+
+EMACS = emacs 
+
+# Command line flags for Emacs.  This must include --multibyte,
+# otherwise some files will not compile.
+
+EMACSOPT = --no-init-file --no-site-file --multibyte -batch
+
 SOURCES = *.el COPYING Makefile
 lisptagsfiles1 = [a-zA-Z]*.el
 lisptagsfiles2 = [a-zA-Z]*/[a-zA-Z]*.el
 ETAGS = ../lib-src/etags
 
+# Leave this in.  I don't know if some utility depends on it.
+
 dontcompilefiles: bindings.el blessmail.el bruce.el cus-load.el cus-start.el
 dontcompilefiles: forms-d2.el forms-pass.el 
 dontcompilefiles: latin-1.el latin-2.el latin-3.el latin-4.el latin-5.el
@@ -14,6 +26,27 @@ dontcompilefiles: loaddefs.el loadup.el mule-conf.el patcomp.el
 dontcompilefiles: paths.el sc.el subdirs.el term-nasty.el version.el 
 dontcompilefiles: generic-x.el latin-8.el latin-9.el
 
+# Files which should not be compiled.  All file names must be relative
+# to the `lisp' directory.
+
+DONTCOMPILE = bindings.el mail/blessmail.el play/bruce.el cus-load.el \
+       cus-start.el forms-d2.el forms-pass.el \
+       international/latin-1.el international/latin-2.el \
+       international/latin-3.el international/latin-4.el \
+       international/latin-5.el \
+       loaddefs.el loadup.el international/mule-conf.el patcomp.el \
+       paths.el mail/sc.el subdirs.el term-nasty.el version.el \
+       generic-x.el international/latin-8.el international/latin-9.el
+
+# All Lisp source files in the current directory.
+
+EL     = $(lisptagsfiles1) $(lisptagsfiles2)
+
+# The actual Emacs command run in the targets below.
+
+emacs = $(EMACS) $(EMACSOPT)
+
+
 doit:
 
 custom-deps: doit
@@ -24,7 +57,7 @@ custom-deps: doit
           esac; \
         done; \
        echo Directories: $$wins; \
-       $(EMACS) -batch -l cus-dep -f custom-make-dependencies $$wins
+       $(emacs) -l cus-dep -f custom-make-dependencies $$wins
 
 finder-data: doit
        subdirs=`find . -type d -print`; \
@@ -34,7 +67,7 @@ finder-data: doit
           esac; \
         done; \
        echo Directories: $$wins; \
-       $(EMACS) -batch -l finder -f finder-compile-keywords-make-dist $$wins
+       $(emacs) -l finder -f finder-compile-keywords-make-dist $$wins
 
 autoloads: doit
        subdirs=`find . -type d -print`; \
@@ -44,7 +77,7 @@ autoloads: doit
           esac; \
         done; \
        echo Directories: $$wins; \
-       $(EMACS) -batch -f batch-update-autoloads $$wins
+       $(emacs) -f batch-update-autoloads $$wins
 
 update-subdirs: doit
        subdirs=`find . -type d -print`; \
@@ -68,9 +101,9 @@ updates: doit
           ../update-subdirs $$file; \
        done; \
        echo Directories: $$wins; \
-       $(EMACS) -batch -l cus-dep -f custom-make-dependencies $$wins; \
-       $(EMACS) -batch -l finder -f finder-compile-keywords-make-dist $$wins; \
-       $(EMACS) -batch -f batch-update-autoloads $$wins
+       $(emacs) -l cus-dep -f custom-make-dependencies $$wins; \
+       $(emacs) -l finder -f finder-compile-keywords-make-dist $$wins; \
+       $(emacs) -f batch-update-autoloads $$wins
 
 TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
        ${ETAGS} $(lisptagsfiles1) $(lisptagsfiles2)
@@ -78,3 +111,52 @@ TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
 TAGS-LISP: $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
        ${ETAGS} -o TAGS-LISP \
          $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
+
+# Compile all Lisp files, except those from DONTCOMPILE.  This
+# compiles files unconditionally.  All .elc files are made writable
+# before compilation in case we checked out read-only (CVS option -r).
+
+compile: doit
+       dont_compile=`echo $(DONTCOMPILE)`;                     \
+       for el in $(EL); do                                     \
+         compile_it=y;                                         \
+         for dont in $$dont_compile; do                        \
+           if test $$el = $$dont; then                         \
+             compile_it=n;                                     \
+            fi;                                                        \
+          done;                                                        \
+          if test $$compile_it = y; then                       \
+            els="$$el $$els";                                  \
+            echo "Compile $$el";                               \
+          else                                                 \
+            echo "Don't compile $$el";                         \
+          fi;                                                  \
+       done;                                                   \
+       chmod +w $$els;                                         \
+        $(emacs) -f batch-byte-compile $$els;
+
+# 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: doit
+       $(emacs) -f batch-byte-recompile-directory .
+
+# Build loaddefs.el but with an Emacs executable which was not built
+# in the current directory tree.  The problem in this case is that
+# autoload.el reads and writes loaddefs.el in its `source-directory'.
+# If that's different from the current directory tree, we can't build
+# loaddefs.el.
+
+autoloads-with-other-emacs: doit
+       subdirs=`find . -type d -print`;                        \
+       for file in $$subdirs; do                               \
+          case $$file in */Old | */RCS | */CVS | */=* ) ;;     \
+               *) wins="$$wins $$file" ;;                      \
+          esac;                                                \
+        done;                                                  \
+       echo Directories: $$wins;                               \
+       $(emacs) --eval '(setq source-directory ".")'           \
+               -f batch-update-autoloads $$wins
+
+# Makefile ends here.