SHELL = @SHELL@
srcdir = @srcdir@
-abs_srcdir = @abs_srcdir@
top_srcdir = @top_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_lisp = $(abs_srcdir)
lisp = $(srcdir)
VPATH = $(srcdir)
# 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.
# 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
$(lisp)/emacs-lisp/autoload.elc
# The actual Emacs command run in the targets below.
-
-emacs = EMACSLOADPATH="$(abs_lisp)" LC_ALL=C "$(EMACS)" $(EMACSOPT)
+# Prevent any setting of EMACSLOADPATH in user environment causing problems.
+emacs = unset EMACSLOADPATH; LC_ALL=C "$(EMACS)" $(EMACSOPT)
# Common command to find subdirectories
setwins=subdirs=`find . -type d -print`; \
$(lisp)/cus-load.el:
$(MAKE) $(MFLAGS) custom-deps
custom-deps: doit
- cd $(lisp) && $(setwins_almost); \
+ thisdir=`pwd`; cd $(lisp) && $(setwins_almost); cd "$$thisdir"; \
echo Directories: $$wins; \
- $(emacs) -l cus-dep -f custom-make-dependencies $$wins
+ $(emacs) --chdir $(lisp) -l cus-dep -f custom-make-dependencies $$wins
$(lisp)/finder-inf.el:
$(MAKE) $(MFLAGS) finder-data
finder-data: doit
- cd $(lisp) && $(setwins_almost); \
+ thisdir=`pwd`; cd $(lisp) && $(setwins_almost); cd "$$thisdir"; \
echo Directories: $$wins; \
- $(emacs) -l finder -f finder-compile-keywords-make-dist $$wins
+ $(emacs) --chdir $(lisp) -l finder \
+ -f finder-compile-keywords-make-dist $$wins
# The chmod +w is to handle env var CVSREAD=1.
-# Use expand-file-name rather than $abs_lisp so that Emacs does not
+# Use expand-file-name rather than $abs_scrdir so that Emacs does not
# get confused when it compares file-names for equality.
autoloads: $(LOADDEFS) doit
cd $(lisp) && chmod +w $(AUTOGEN_VCS)
- cd $(lisp) && $(setwins_almost); \
+ thisdir=`pwd`; cd $(lisp) && $(setwins_almost); cd "$$thisdir"; \
echo Directories: $$wins; \
- $(emacs) -l autoload \
+ $(emacs) --chdir $(lisp) -l autoload \
--eval '(setq autoload-builtin-package-versions t)' \
--eval '(setq generated-autoload-file (expand-file-name "loaddefs.el"))' \
-f batch-update-autoloads $$wins
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
-rm -f ./Makefile $(lisp)/loaddefs.el~
maintainer-clean: distclean bootstrap-clean
+ rm -f TAGS
.PHONY: check-declare