2013-11-05 Glenn Morris <rgm@gnu.org>
+ Get rid of --chdir usage.
+ * automated/Makefile.in (EMACSOPT): Move -L here.
+ (emacs): Set EMACS_TEST_DIRECTORY in the environment.
+ (setwins): Don't assume called from srcdir. Remove legacy stuff.
+ (.el.elc): No more need to pass -L here.
+ (compile-main): Get rid of sub-shell and cd.
+ (compile-clean, check): Get rid of cd.
+
Make it possible to run tests with a different working directory.
* automated/flymake-tests.el (flymake-tests-data-directory): New.
(flymake-tests--current-face): Use flymake-tests-data-directory.
EMACS = ../../src/emacs
# Command line flags for Emacs.
-EMACSOPT = -batch --no-site-file --no-site-lisp
+EMACSOPT = -batch --no-site-file --no-site-lisp -L :$(srcdir)
# Extra flags to pass to the byte compiler.
BYTE_COMPILE_EXTRA_FLAGS =
# The actual Emacs command run in the targets below.
# Prevent any setting of EMACSLOADPATH in user environment causing problems.
-emacs = unset EMACSLOADPATH; LC_ALL=C "$(EMACS)" $(EMACSOPT)
+emacs = unset EMACSLOADPATH; \
+ LC_ALL=C EMACS_TEST_DIRECTORY=$(srcdir) "$(EMACS)" $(EMACSOPT)
# Common command to find subdirectories
-setwins=subdirs=`find . -type d -print`; \
+setwins=subdirs=`find $(srcdir) -type d -print`; \
for file in $$subdirs; do \
- case $$file in */.* | */.*/* | */=* | ./data* ) ;; \
+ case $$file in */data* | */flymake* ) ;; \
*) wins="$$wins$${wins:+ }$$file" ;; \
esac; \
done
.el.elc:
@echo Compiling $<
- @$(emacs) -L :$(srcdir) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
+ @$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
.PHONY: compile-targets compile-main compile-clean
# 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 $(srcdir) && $(setwins); \
+ @$(setwins); \
els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
for el in $$els; do \
test -f $$el || continue; \
test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \
echo "$${el}c"; \
- done | xargs echo) | \
+ done | xargs echo | \
while read chunk; do \
$(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \
done
# Erase left-over .elc files that do not have a corresponding .el file.
compile-clean:
- @cd $(srcdir) && $(setwins); \
+ @$(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 \
check: compile-main
- @thisdir=`pwd`; cd $(srcdir) && $(setwins); \
+ @$(setwins); \
pattern=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
for el in $$pattern; do \
test -f $$el || continue; \
els="$$els $$el"; \
done; \
echo Testing $$els; \
- cd "$$thisdir"; \
- $(emacs) --chdir $(srcdir) -L :. $$args -f ert-run-tests-batch-and-exit
+ $(emacs) $$args -f ert-run-tests-batch-and-exit
# Makefile ends here.