X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6be0e22b4f0f6a4ab6362a915d0e3f9bb4d2af2e..f4da4720dfdefbdace402201c6a5fc8017bb98aa:/lisp/Makefile.in diff --git a/lisp/Makefile.in b/lisp/Makefile.in index a7f63f4f7b..9673be3060 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 2000-2014 Free Software Foundation, Inc. # This file is part of GNU Emacs. @@ -20,11 +20,7 @@ SHELL = @SHELL@ srcdir = @srcdir@ -abs_srcdir = @abs_srcdir@ top_srcdir = @top_srcdir@ -abs_top_srcdir = @abs_top_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_lisp = $(abs_srcdir) lisp = $(srcdir) VPATH = $(srcdir) @@ -35,10 +31,10 @@ XARGS_LIMIT = @XARGS_LIMIT@ # You can specify a different executable on the make command line, # e.g. "make EMACS=../src/emacs ...". -# We sometimes change directory before running Emacs (typically when -# building out-of-tree, we chdir to the source directory), so we need -# to use an absolute file name. -EMACS = ${abs_top_builddir}/src/emacs +# We never change directory before running Emacs, so a relative file +# name is fine, and makes life easier. If we need to change +# directory, we can use emacs --chdir. +EMACS = ../src/emacs # Command line flags for Emacs. @@ -50,12 +46,6 @@ BYTE_COMPILE_EXTRA_FLAGS = # 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. -lisptagsfiles1 = $(lisp)/*.el -lisptagsfiles2 = $(lisp)/*/*.el -lisptagsfiles3 = $(lisp)/*/*/*.el -lisptagsfiles4 = $(lisp)/*/*/*/*.el -ETAGS = ../lib-src/etags - # Automatically generated autoload files, apart from lisp/loaddefs.el. # Note this includes only those files that need special rules to # build; ie it does not need to include things created via @@ -77,7 +67,8 @@ AUTOGENEL = loaddefs.el \ eshell/esh-groups.el \ cedet/semantic/loaddefs.el \ cedet/ede/loaddefs.el \ - cedet/srecode/loaddefs.el + cedet/srecode/loaddefs.el \ + org/org-loaddefs.el # Versioned files that are the value of someone's `generated-autoload-file'. # Note that update_loaddefs parses this. @@ -88,7 +79,8 @@ AUTOGEN_VCS = \ dired.el \ ibuffer.el \ htmlfontify.el \ - emacs-lisp/eieio.el + emacs-lisp/eieio.el \ + textmodes/reftex.el # Value of max-lisp-eval-depth when compiling initially. # During bootstrapping the byte-compiler is run interpreted when compiling @@ -97,7 +89,9 @@ AUTOGEN_VCS = \ BIG_STACK_DEPTH = 2200 BIG_STACK_OPTS = --eval "(setq max-lisp-eval-depth $(BIG_STACK_DEPTH))" -BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) $(BYTE_COMPILE_EXTRA_FLAGS) +# Set load-prefer-newer for the benefit of the non-bootstrappers. +BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) \ + --eval '(setq load-prefer-newer t)' $(BYTE_COMPILE_EXTRA_FLAGS) # Files to compile before others during a bootstrap. This is done to # speed up the bootstrap process. They're ordered by size, so we use @@ -113,31 +107,41 @@ COMPILE_FIRST = \ $(lisp)/emacs-lisp/bytecomp.elc \ $(lisp)/emacs-lisp/autoload.elc -# The actual Emacs command run in the targets below. +# Prevent any settings in the user environment causing problems. +unexport EMACSDATA EMACSDOC EMACSPATH -emacs = EMACSLOADPATH="$(abs_lisp)" LC_ALL=C "$(EMACS)" $(EMACSOPT) +# The actual Emacs command run in the targets below. +# Prevent any setting of EMACSLOADPATH in user environment causing problems. +emacs = EMACSLOADPATH= '$(EMACS)' $(EMACSOPT) # Common command to find subdirectories -setwins=subdirs=`find . -type d -print`; \ - for file in $$subdirs; do \ - case $$file in */.* | */.*/* | */=* ) ;; \ +setwins=for file in `find . -type d -print`; do \ + case $$file in */.* ) ;; \ *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ - done + done # Find all subdirectories except `obsolete' and `term'. -setwins_almost=subdirs=`find . -type d -print`; \ - for file in $$subdirs; do \ - case $$file in */.* | */.*/* | */=* | */obsolete | */term ) ;; \ - *) wins="$$wins$${wins:+ }$$file" ;; \ +setwins_almost=for file in `find ${srcdir} -type d -print`; do \ + case $$file in ${srcdir}*/obsolete | ${srcdir}*/term ) ;; \ + *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done -# Find all subdirectories in which we might want to create subdirs.el -setwins_for_subdirs=subdirs=`find . -type d -print`; \ - for file in $$subdirs; do \ - case $$file in */.* | */.*/* | */=* | */cedet* ) ;; \ - *) wins="$$wins$${wins:+ }$$file" ;; \ +# Find all subdirectories except `obsolete', `term', and `leim' (and subdirs). +# We don't want the leim files listed as packages, especially +# since many share basenames with files in language/. +setwins_finder=for file in `find ${srcdir} -type d -print`; do \ + case $$file in ${srcdir}*/obsolete | ${srcdir}*/term | ${srcdir}*/leim* ) ;; \ + *) wins="$$wins$${wins:+ }$$file" ;; \ + esac; \ + done + +# Find all subdirectories in which we might want to create subdirs.el. +setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \ + case $$file in \ + ${srcdir}*/cedet* | ${srcdir}*/leim* ) ;; \ + *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done @@ -166,35 +170,56 @@ doit: $(lisp)/cus-load.el: $(MAKE) $(MFLAGS) custom-deps custom-deps: doit - cd $(lisp); $(setwins_almost); \ + $(setwins_almost); \ echo Directories: $$wins; \ - $(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file (unmsys--file-name "$(abs_lisp)/cus-load.el"))' -f custom-make-dependencies $$wins + $(emacs) -l cus-dep \ + --eval '(setq generated-custom-dependencies-file (unmsys--file-name "$(srcdir)/cus-load.el"))' \ + -f custom-make-dependencies $$wins $(lisp)/finder-inf.el: $(MAKE) $(MFLAGS) finder-data finder-data: doit - cd $(lisp); $(setwins_almost); \ + $(setwins_finder); \ echo Directories: $$wins; \ - $(emacs) -l finder --eval '(setq generated-finder-keywords-file (unmsys--file-name "$(abs_lisp)/finder-inf.el"))' -f finder-compile-keywords-make-dist $$wins + $(emacs) -l finder \ + --eval '(setq generated-finder-keywords-file (unmsys--file-name "$(srcdir)/finder-inf.el"))' \ + -f finder-compile-keywords-make-dist $$wins # The chmod +w is to handle env var CVSREAD=1. +# Use expand-file-name rather than $abs_scrdir so that Emacs does not +# get confused when it compares file-names for equality. +# +# Note that we set no-update-autoloads in _generated_ leim files. +# If you want to allow autoloads in such files, remove that, +# and make this depend on leim. autoloads: $(LOADDEFS) doit cd $(lisp) && chmod +w $(AUTOGEN_VCS) - cd $(lisp); $(setwins_almost); \ + $(setwins_almost); \ echo Directories: $$wins; \ $(emacs) -l autoload \ --eval '(setq autoload-builtin-package-versions t)' \ - --eval '(setq generated-autoload-file (unmsys--file-name "$(abs_lisp)/loaddefs.el"))' \ + --eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$(srcdir)/loaddefs.el")))' \ -f batch-update-autoloads $$wins + $(MAKE) $(MFLAGS) obsolete-autoloads + +# The obsolete/ subdirectory is normally not scanned for autoloads. +# Sometimes we still want to autoload something from that directory, +# eg iswitchb. +.PHONY: obsolete-autoloads +obsolete-autoloads: ${lisp}/obsolete/*.el + $(emacs) -l autoload \ + --eval '(setq generate-autoload-cookie ";;;###obsolete-autoload")' \ + --eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$(srcdir)/loaddefs.el")))' \ + -f batch-update-autoloads ${lisp}/obsolete # This is required by the bootstrap-emacs target in ../src/Makefile, so # we know that if we have an emacs executable, we also have a subdirs.el. $(lisp)/subdirs.el: $(MAKE) $(MFLAGS) update-subdirs update-subdirs: doit - cd $(lisp); $(setwins_for_subdirs); \ + $(setwins_for_subdirs); \ for file in $$wins; do \ - $(abs_top_srcdir)/build-aux/update-subdirs $$file; \ + $(srcdir)/../build-aux/update-subdirs $$file; \ done; .PHONY: updates bzr-update update-authors @@ -215,10 +240,28 @@ bzr-update: compile finder-data custom-deps update-authors: $(emacs) -l authors -f batch-update-authors $(top_srcdir)/etc/AUTHORS $(top_srcdir) -TAGS TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) - rm -f $@; touch $@; \ - echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | sed -e "s,$(lisp)/[^ ]*loaddefs[^ ]*,," -e "s,$(lisp)/ldefs-boot[^ ]*,," | \ - xargs $(XARGS_LIMIT) ${ETAGS} -a -o $@ + +ETAGS = ../lib-src/etags + +lisptagsfiles1 = $(srcdir)/*.el +lisptagsfiles2 = $(srcdir)/*/*.el +lisptagsfiles3 = $(srcdir)/*/*/*.el +lisptagsfiles4 = $(srcdir)/*/*/*/*.el + +## The echo | sed | xargs is to stop the command line getting too long +## on MS Windows, when the MSYS Bash passes it to a MinGW compiled +## etags. It might be better to use find in a similar way to +## compile-main. But maybe this is not even necessary any more now +## that this uses relative filenames. +TAGS: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) + rm -f $@ + touch $@ + echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | \ + sed -e 's,$(srcdir)/[^ ]*loaddefs[^ ]*,,g' \ + -e 's,$(srcdir)/ldefs-boot[^ ]*,,' \ + -e 's,$(srcdir)/[^ ]*esh-groups.el[^ ]*,,' | \ + xargs $(XARGS_LIMIT) "$(ETAGS)" -a -o $@ + # The src/Makefile.in has its own set of dependencies and when they decide # that one Lisp file needs to be re-compiled, we had better recompile it as @@ -279,8 +322,8 @@ compile-targets: $(TARGETS) # Compile all the Elisp files that need it. Beware: it approximates # `no-byte-compile', so watch out for false-positives! -compile-main: compile-clean - @(cd $(lisp); $(setwins); \ +compile-main: leim semantic compile-clean + @(cd $(lisp) && $(setwins); \ els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \ for el in $$els; do \ test -f $$el || continue; \ @@ -294,7 +337,7 @@ compile-main: compile-clean .PHONY: compile-clean # Erase left-over .elc files that do not have a corresponding .el file. compile-clean: - @cd $(lisp); $(setwins); \ + @cd $(lisp) && $(setwins); \ elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \ for el in `echo $$elcs | sed -e 's/\.elc/\.el/g'`; do \ if test -f "$$el" -o \! -f "$${el}c"; then :; else \ @@ -303,6 +346,18 @@ compile-clean: fi \ done +.PHONY: leim semantic +leim: + cd ../leim && $(MAKE) $(MFLAGS) all EMACS="$(EMACS)" + +# FIXME. Yuck. +semantic: + case ${EMACS} in \ + .*) EMACS="../${EMACS}" ;; \ + *) EMACS="${EMACS}" ;; \ + esac; \ + cd ../admin/grammars && $(MAKE) $(MFLAGS) all EMACS="$${EMACS}" + # Compile all Lisp files, but don't recompile those that are up to # date. Some .el files don't get compiled because they set the # local variable no-byte-compile. @@ -316,16 +371,10 @@ compile: $(LOADDEFS) autoloads compile-first # unconditionally. Some files don't actually get compiled because they # set the local variable no-byte-compile. compile-always: doit - cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc + cd $(lisp) && rm -f *.elc */*.elc */*/*.elc */*/*/*.elc $(MAKE) $(MFLAGS) compile EMACS="$(EMACS)" -.PHONY: compile-calc backup-compiled-files compile-after-backup - -compile-calc: - for el in $(lisp)/calc/*.el; do \ - echo Compiling $$el; \ - $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $$el || exit 1;\ - done +.PHONY: backup-compiled-files compile-after-backup # Backup compiled Lisp files in elc.tar.gz. If that file already # exists, make a backup of it. @@ -382,7 +431,6 @@ $(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC) $(emacs) -l autoload \ --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \ --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ - --eval "(setq make-backup-files nil)" \ -f batch-update-autoloads $(MH_E_DIR) # Update TRAMP internal autoloads. Maybe we could move tramp*.el into @@ -400,7 +448,6 @@ $(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) $(emacs) -l autoload \ --eval "(setq generate-autoload-cookie \";;;###tramp-autoload\")" \ --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ - --eval "(setq make-backup-files nil)" \ -f batch-update-autoloads $(TRAMP_DIR) CAL_DIR = $(lisp)/calendar @@ -422,32 +469,30 @@ $(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC) $(emacs) -l autoload \ --eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \ --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ - --eval "(setq make-backup-files nil)" \ -f batch-update-autoloads $(CAL_DIR) $(CAL_DIR)/diary-loaddefs.el: $(CAL_SRC) $(emacs) -l autoload \ --eval "(setq generate-autoload-cookie \";;;###diary-autoload\")" \ --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ - --eval "(setq make-backup-files nil)" \ -f batch-update-autoloads $(CAL_DIR) $(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC) $(emacs) -l autoload \ --eval "(setq generate-autoload-cookie \";;;###holiday-autoload\")" \ --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ - --eval "(setq make-backup-files nil)" \ -f batch-update-autoloads $(CAL_DIR) .PHONY: bootstrap-clean distclean maintainer-clean bootstrap-clean: - cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc $(AUTOGENEL) + -cd $(lisp) && rm -f *.elc */*.elc */*/*.elc */*/*/*.elc $(AUTOGENEL) distclean: -rm -f ./Makefile $(lisp)/loaddefs.el~ maintainer-clean: distclean bootstrap-clean + rm -f TAGS .PHONY: check-declare @@ -456,6 +501,13 @@ check-declare: # Dependencies +## None of the following matters for bootstrap, which is the only way +## to ensure a correct compilation of all lisp files. +## Manually specifying dependencies of a handful of lisp files, (and +## ones that don't change very often at that) seems pretty pointless +## to me. + +# http://debbugs.gnu.org/1004 # CC Mode uses a compile time macro system which causes a compile time # dependency in cc-*.elc files on the macros in other cc-*.el and the # version string in cc-defs.el. @@ -500,59 +552,4 @@ $(lisp)/progmodes/cc-styles.elc: $(lisp)/progmodes/cc-vars.elc \ $(lisp)/progmodes/cc-vars.elc: $(lisp)/custom.elc $(lisp)/widget.elc -# MH-E dependencies, mainly to prevent failures with parallel -# compilation, due to race conditions between writing a given FOO.elc -# file and another file being compiled that says "(require FOO)", -# which causes Emacs to try to read FOO.elc. -$(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-comp.elc $(MH_E_DIR)/mh-folder.elc\ - $(MH_E_DIR)/mh-funcs.elc $(MH_E_DIR)/mh-identity.elc $(MH_E_DIR)/mh-inc.elc\ - $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-limit.elc\ - $(MH_E_DIR)/mh-mime.elc $(MH_E_DIR)/mh-print.elc $(MH_E_DIR)/mh-scan.elc\ - $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc\ - $(MH_E_DIR)/mh-speed.elc $(MH_E_DIR)/mh-thread.elc $(MH_E_DIR)/mh-tool-bar.elc\ - $(MH_E_DIR)/mh-utils.elc $(MH_E_DIR)/mh-xface.elc:\ - $(MH_E_DIR)/mh-e.elc - -$(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-e.elc $(MH_E_DIR)/mh-folder.elc\ - $(MH_E_DIR)/mh-inc.elc $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-limit.elc\ - $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-speed.elc\ - $(MH_E_DIR)/mh-utils.elc $(MH_E_DIR)/mh-xface.elc:\ - $(lisp)/emacs-lisp/cl.elc - -$(MH_E_DIR)/mh-comp.elc $(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-funcs.elc\ - $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-limit.elc $(MH_E_DIR)/mh-print.elc\ - $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc $(MH_E_DIR)/mh-thread.elc:\ - $(MH_E_DIR)/mh-scan.elc - -$(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-mime.elc\ - $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-show.elc $(MH_E_DIR)/mh-speed.elc:\ - $(lisp)/gnus/gnus-util.elc - -$(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-search.elc:\ - $(lisp)/progmodes/which-func.elc - -$(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc\ - $(MH_E_DIR)/mh-utils.elc:\ - $(lisp)/font-lock.elc - -$(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-show.elc: $(lisp)/net/goto-addr.elc - -$(MH_E_DIR)/mh-comp.elc: $(lisp)/mail/sendmail.elc - -$(MH_E_DIR)/mh-e.elc: $(MH_E_DIR)/mh-buffers.elc $(lisp)/gnus/gnus.elc \ - $(lisp)/cus-face.elc - -$(MH_E_DIR)/mh-letter.elc: $(lisp)/gnus/mailcap.elc $(lisp)/gnus/mm-decode.elc \ - $(lisp)/gnus/mm-view.elc $(lisp)/gnus/mml.elc $(lisp)/gnus/message.elc - -$(MH_E_DIR)/mh-print.elc: $(lisp)/ps-print.elc - -$(MH_E_DIR)/mh-search.elc: $(lisp)/imenu.elc - -$(MH_E_DIR)/mh-show.elc: $(lisp)/gnus/gnus-cite.elc - -$(MH_E_DIR)/mh-speed.elc: $(lisp)/speedbar.elc $(lisp)/emacs-lisp/timer.elc - -$(MH_E_DIR)/mh-tool-bar.elc: $(lisp)/tool-bar.elc - # Makefile ends here.