Commit 82c3d67a authored by Andreas Schwab's avatar Andreas Schwab

Use absolute directory names substituted by configure

* lisp/ (top_srcdir): Define.
(abs_top_builddir): Define.
(srcdir): Don't append `/..'.
(EMACS): Use ${abs_top_builddir}.
(all, compile, compile-always, compile-last): Don't set emacswd.
(update-subdirs, update-authors): Use $(top_srcdir) instead of
(lisp): Use $(srcdir) instead of @srcdir@.
* src/ (abs_builddir): Define.
(bootstrap_exe): Use it.
(VPATH): Use $(srcdir) instead of @srcdir@.
parent c0282183
2010-03-21 Andreas Schwab <>
* (top_srcdir): Define.
(abs_top_builddir): Define.
(srcdir): Don't append `/..'.
(EMACS): Use ${abs_top_builddir}.
(all, compile, compile-always, compile-last): Don't set emacswd.
(update-subdirs, update-authors): Use $(top_srcdir) instead of
(lisp): Use $(srcdir) instead of @srcdir@.
2010-03-21 Juri Linkov <>
Fix message of multi-line occur regexps and multi-buffer header lines.
......@@ -19,22 +19,19 @@
SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
abs_top_builddir = @abs_top_builddir@
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 aboluste file name. But there's no standard way
# in a makefile to get the pwd, so we simply rely on a shell
# "$emacswd" var that needs to be set wherever we use $(EMACS) (or
# $(emacs)). Yet, it is setup in such a way that if you forget to set
# $emacswd, it will still work, so long as you did not
# change directory.
EMACS = $$emacswd../src/emacs
# to use an aboluste file name.
EMACS = ${abs_top_builddir}/src/emacs
# Command line flags for Emacs. This must include --multibyte,
# otherwise some files will not compile.
......@@ -119,7 +116,7 @@ setwins_for_subdirs=subdirs=`(find . -type d -print)`; \
# we add them here to make sure they get built.
all: compile-main $(lisp)/cus-load.el $(lisp)/finder-inf.el
@: Let us check that we byte-compiled all the files.
emacswd=`pwd`/; $(MAKE) $(MFLAGS) compile-last EMACS=$(EMACS)
$(MAKE) $(MFLAGS) compile-last EMACS=$(EMACS)
......@@ -140,14 +137,14 @@ doit:
$(MAKE) $(MFLAGS) custom-deps
custom-deps: doit
emacswd=`pwd`/; cd $(lisp); $(setwins_almost); \
cd $(lisp); $(setwins_almost); \
echo Directories: $$wins; \
$(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins
$(MAKE) $(MFLAGS) finder-data
finder-data: doit
emacswd=`pwd`/; cd $(lisp); $(setwins_almost); \
cd $(lisp); $(setwins_almost); \
echo Directories: $$wins; \
$(emacs) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins
......@@ -157,7 +154,7 @@ autoloads: $(LOADDEFS) doit
chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \
$(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \
$(lisp)/dired.el $(lisp)/ibuffer.el
emacswd=`pwd`/; cd $(lisp); $(setwins_almost); \
cd $(lisp); $(setwins_almost); \
echo Directories: $$wins; \
$(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
......@@ -168,7 +165,7 @@ $(lisp)/subdirs.el:
update-subdirs: doit
cd $(lisp); $(setwins_for_subdirs); \
for file in $$wins; do \
$(srcdir)/update-subdirs $$file; \
$(top_srcdir)/update-subdirs $$file; \
updates: update-subdirs autoloads finder-data custom-deps
......@@ -182,7 +179,7 @@ cvs-update: bzr-update
# Update the AUTHORS file.
$(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
$(emacs) -l authors -f batch-update-authors $(top_srcdir)/etc/AUTHORS $(top_srcdir)
TAGS TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
els=`echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | sed -e "s,$(lisp)/[^ ]*loaddefs[^ ]*,," -e "s,$(lisp)/ldefs-boot[^ ]*,,"`; \
......@@ -1513,8 +1510,7 @@ compile-main: $(ELCFILES)
# Explicitly pass EMACS (sometimes ../src/bootstrap-emacs) to those
# sub-makes that run rules that use it, for the sake of some non-GNU makes.
compile: $(LOADDEFS) autoloads compile-first
emacswd=`pwd`/; \
$(MAKE) $(MFLAGS) compile-main EMACS=$(EMACS); \
$(MAKE) $(MFLAGS) compile-main EMACS=$(EMACS)
$(MAKE) $(MFLAGS) compile-last EMACS=$(EMACS)
## Doing this causes make install to dump another emacs.
......@@ -1525,12 +1521,11 @@ compile: $(LOADDEFS) autoloads compile-first
# set the local variable no-byte-compile.
compile-always: doit
cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc
emacswd=`pwd`/; \
$(MAKE) $(MFLAGS) compile EMACS=$(EMACS)
## In case any files are missing from ELCFILES.
@emacswd=`pwd`/; cd $(lisp); $(setwins); \
@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; \
2010-03-21 Andreas Schwab <>
* (.el.elc): Expand ${bootstrap_exe} before chdir.
(${lispsource}loaddefs.el): Likewise.
(bootstrap-emacs${EXEEXT}): Likewise.
* (abs_builddir): Define.
(bootstrap_exe): Use it.
(VPATH): Use $(srcdir) instead of @srcdir@.
2010-03-20 Stefan Monnier <>
......@@ -33,16 +33,17 @@
# Here are the things that we expect ../configure to edit.
# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir = @srcdir@
abs_builddir = @abs_builddir@
VPATH = $(srcdir)
CC = @CC@
LN_S = @LN_S@
version = @version@
# Substitute an assignment for the MAKE variable, because
# BSD doesn't have it as a default.
......@@ -63,7 +64,7 @@ M_FILE = ${srcdir}/@machfile@
S_FILE = ${srcdir}/@opsysfile@
config_h = config.h $(M_FILE) $(S_FILE)
bootstrap_exe = `pwd`/bootstrap-emacs${EXEEXT}
bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
......@@ -1332,15 +1333,14 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS
separately below.
With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */
@EMACS=${bootstrap_exe}; \
cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile THEFILE=$< EMACS=$$EMACS
@cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
THEFILE=$< EMACS=${bootstrap_exe}
/* Since the .el.elc rule cannot specify an extra dependency, we do it here. */
${lispsource}loaddefs.el: $(BOOTSTRAPEMACS)
EMACS=${bootstrap_exe}; \
cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=$$EMACS
cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
/* Dump an Emacs executable named bootstrap-emacs containing the
files from loadup.el in source form. */
......@@ -1354,8 +1354,7 @@ bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
#endif /* ! defined (CANNOT_DUMP) */
@: Compile some files earlier to speed up further compilation.
EMACS=${bootstrap_exe}; \
cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=$$EMACS
cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
ALLOBJS=$(STARTFILES) ${obj} ${otherobj} prefix-args.o
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment