# DIST: that first.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
-# GNU Emacs is free software; you can redistribute it and/or modify
+# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with GNU Emacs; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301, USA.
+# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+### Commentary:
# make all to compile and build Emacs.
# make install to install it.
# Still more severe - delete backup and autosave files, too.
#
# make bootstrap
-# Recompiles all the Emacs Lisp files using the latest source,
-# then rebuilds Emacs.
-#
-# make bootfast
-# Recompiles changed Emacs Lisp files using the latest C source,
-# then rebuilds Emacs. This is faster than `make bootstrap'
-# but once in a while an old .elc file can cause trouble.
+# Removes all the compiled files to force a new bootstrap from a
+# clean slate, and then build in the normal way.
SHELL = /bin/sh
C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@
EXEEXT=@EXEEXT@
+MAKEINFO=@MAKEINFO@
### These help us choose version- and architecture-specific directories
### to install files in.
# data. ${archlibdir} is a subdirectory of this.
libexecdir=@libexecdir@
-# Where to install Emacs's man pages, and what extension they should have.
+# Where to install Emacs's man pages.
+# This used to allow choice of the numeric extension, but this made
+# little sense since the files were always installed in man1/
+# (and they contain cross-references that expect them to be there).
mandir=@mandir@
-manext=.1
man1dir=$(mandir)/man1
+MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
+ grep-changelog.1 rcs-checkin.1
# Where to install and expect the info files describing Emacs. In the
# past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
# since there are now many packages documented with the texinfo
# system, it is inappropriate to imply that it is part of Emacs.
infodir=@infodir@
-INFO_FILES=ada-mode autotype calc ccmode cl dbus dired-x ebrowse ediff \
- efaq eintr elisp emacs emacs-mime erc eshell eudc flymake \
- forms gnus idlwave info message mh-e newsticker nxml-mode \
- org pcl-cvs pgg rcirc reftex remember sc ses sieve speedbar \
- tramp vip viper widget woman smtpmail url
+INFO_FILES=ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse \
+ ediff efaq eintr elisp emacs emacs-mime epa erc eshell eudc \
+ flymake forms gnus idlwave info mairix-el message mh-e \
+ newsticker nxml-mode org pcl-cvs pgg rcirc reftex remember \
+ sasl sc ses sieve smtpmail speedbar tramp url vip viper \
+ widget woman
# Directory for local state files for all programs.
localstatedir=@localstatedir@
# Where to find the application default.
x_default_search_path=@x_default_search_path@
-# Location to install Emacs.app on Mac OS X
-carbon_appdir=@carbon_appdir@
+# Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
+ns_appdir=@ns_appdir@
+ns_appbindir=@ns_appbindir@
+ns_appresdir=@ns_appresdir@
# Where the etc/emacs.desktop file is to be installed.
desktopdir=$(datarootdir)/applications
# Where the etc/images/icons/hicolor directory is to be installed.
icondir=$(datarootdir)/icons
+# The source directory for the icon files.
+iconsrcdir=$(srcdir)/etc/images/icons
+
# ==================== Emacs-specific directories ====================
# These variables hold the values Emacs will actually use. They are
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution.
# leim is not included because it needs special handling.
-SUBDIR = lib-src src
+#
+# Actually, we now include `lisp' as well, since the compiled files
+# are not included any more in case of bootstrap or in case Emacs was
+# checked out from a VCS.
+SUBDIR = lib-src src lisp
-# The makefiles of the directories in $SUBDIR.
-SUBDIR_MAKEFILES = lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile
+# The subdir makefiles created by config.status.
+SUBDIR_MAKEFILES = lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile
# Subdirectories to install, and where they'll go.
# lib-src's makefile knows how to install it, so we don't do that here.
# "export PARALLEL=0" is for SGI's Make, to prevent it from
# running more than 1 process in the leim directory, especially for
# the $TIT files there.
-leim: src ${SUBDIR_MAKEFILES} FRC
+leim: src Makefile FRC
(export PARALLEL; PARALLEL=0; cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}')
src: lib-src FRC
-lib-src: FRC src/config.stamp
-
.RECURSIVE: ${SUBDIR} leim
-${SUBDIR}: maybe_bootstrap ${SUBDIR_MAKEFILES} FRC
- cd $@; $(MAKE) all $(MFLAGS) \
+# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
+lisp: src
+
+# These targets should be "${SUBDIR} without `src'".
+lib-src lisp: Makefile FRC
+ cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
-blessmail: ${SUBDIR_MAKEFILES} src FRC
+# Pass to src/Makefile.in an additional BOOTSTRAPEMACS variable which
+# is either set to bootstrap-emacs (in case bootstrap-emacs has not been
+# constructed yet) or the empty string (otherwise).
+# src/Makefile.in uses it to implement conditional dependencies, so that
+# files that need bootstrap-emacs to be built do not additionally need
+# to be kept fresher than bootstrap-emacs. Otherwise changing a single
+# file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling
+# all preloaded elisp files, and only then dump the actual src/emacs, which
+# is not wrong, but is overkill in 99.99% of the cases.
+src: Makefile FRC
+ boot=bootstrap-emacs$(EXEEXT); \
+ if [ ! -x "src/$$boot" ]; then \
+ cd $@; $(MAKE) all $(MFLAGS) \
+ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
+ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \
+ fi;
+ cd $@; $(MAKE) all $(MFLAGS) \
+ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
+ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS=""
+
+blessmail: Makefile src FRC
cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
MAKE='${MAKE}' archlibdir='$(archlibdir)'
-Makefile: $(srcdir)/Makefile.in config.status
+# We used to have one rule per */Makefile.in, but that leads to race
+# conditions with parallel makes, so let's assume that the time stamp on
+# ./Makefile is representative of the time stamp on all the other Makefiles.
+Makefile: config.status $(srcdir)/src/config.in \
+ $(srcdir)/Makefile.in \
+ $(srcdir)/src/Makefile.in \
+ $(srcdir)/lib-src/Makefile.in \
+ $(srcdir)/doc/emacs/Makefile.in \
+ $(srcdir)/doc/misc/Makefile.in \
+ $(srcdir)/doc/lispref/Makefile.in \
+ $(srcdir)/doc/lispintro/Makefile.in \
+ $(srcdir)/oldXMenu/Makefile.in \
+ $(srcdir)/lwlib/Makefile.in \
+ $(srcdir)/leim/Makefile.in \
+ $(srcdir)/lisp/Makefile.in
./config.status
config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
rm -f $(srcdir)/src/stamp-h.in
echo timestamp > $(srcdir)/src/stamp-h.in
-src/Makefile: $(srcdir)/src/Makefile.in config.status
- ./config.status
-
-src/config.stamp: $(srcdir)/src/config.in config.status
- ./config.status
- touch src/config.stamp
-
-lib-src/Makefile: $(srcdir)/lib-src/Makefile.in config.status
- ./config.status
-
-doc/emacs/Makefile: $(srcdir)/doc/emacs/Makefile.in config.status
- ./config.status
-
-doc/misc/Makefile: $(srcdir)/doc/misc/Makefile.in config.status
- ./config.status
-
-doc/lispref/Makefile: $(srcdir)/doc/lispref/Makefile.in config.status
- ./config.status
-
-doc/lispintro/Makefile: $(srcdir)/doc/lispintro/Makefile.in config.status
- ./config.status
-
-oldXMenu/Makefile: $(srcdir)/oldXMenu/Makefile.in config.status
- ./config.status
-
-lwlib/Makefile: $(srcdir)/lwlib/Makefile.in config.status
- ./config.status
-
-leim/Makefile: $(srcdir)/leim/Makefile.in config.status
- ./config.status
-
# ==================== Installation ====================
## If we let lib-src do its own installation, that means we
install: all install-arch-indep install-arch-dep install-leim blessmail
@true
+MV_DIRS = for i in $$dir; do rm -fr `basename "$$i"` ; mv "$$i" . ; done
+
### Install the executables that were compiled specifically for this machine.
### It would be nice to do something for a parallel make
### to ensure that install-arch-indep finishes before this starts.
${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \
else true; fi ; \
done
- if test "${carbon_appdir}" != ""; then \
- umask 022; mkdir -p $(DESTDIR)${carbon_appdir}/Emacs.app; \
- (cd mac/Emacs.app; (tar -chf - . | \
- (cd $(DESTDIR)${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \
- && cat > /dev/null))) || exit 1; \
- fi
+ if test "${ns_appdir}" != ""; then \
+ ( cd ${ns_appresdir} ; \
+ if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\
+ if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \
+ rm -fr share ) ; \
+ ( cd ${ns_appbindir}/libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
+ rm -fr emacs ) ; \
+ ( cd ${ns_appbindir}/bin ; rm -f emacs emacs-23* ; \
+ ln -sf ../libexec/* .) ; \
+ else true ; fi
+
+## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
+## Needs to be the user running install, so configure can't set it.
+set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
+ `id -un 2> /dev/null`; do \
+ [ -n "$${installuser}" ] && break ; \
+ done
### Install the files that are machine-independent.
### Most of them come straight from the distribution;
## Note that the Makefiles in the etc directory are potentially useful
## in an installed Emacs, so should not be excluded.
-## installuser:
-## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
-## Nuisance because i) it needs to be the user running install, so
-## configure can't set it; ii) can't (?) use the result of rule
-## commands to set make variables.
install-arch-indep: mkdir info install-etc
-set ${COPYDESTS} ; \
unset CDPATH; \
mkdir ${COPYDESTS} ; \
chmod ugo+rx ${COPYDESTS} ; \
unset CDPATH; \
- for installuser in $${LOGNAME} $${USERNAME} $${USER} \
- `id -un 2> /dev/null`; do \
- [ -n "$${installuser}" ] && break ; \
- done ; \
+ $(set_installuser); \
for dir in ${COPYDIR} ; do \
dest=$$1 ; shift ; \
[ -d $${dir} ] \
rm -rf $${subdir}/RCS ; \
rm -rf $${subdir}/CVS ; \
rm -f $${subdir}/.cvsignore ; \
+ rm -f $${subdir}/.gitignore ; \
rm -f $${subdir}/.arch-inventory ; \
+ rm -f $${subdir}/.DS_Store ; \
rm -f $${subdir}/\#* ; \
rm -f $${subdir}/.\#* ; \
rm -f $${subdir}/*~ ; \
(cd ./etc; tar -chf - $${docfile}) \
|(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
(cd $(DESTDIR)$(docdir); \
- for installuser in $${LOGNAME} $${USERNAME} $${USER} \
- `id -un 2> /dev/null`; do \
- [ -n "$${installuser}" ] && break ; \
- done ; \
+ $(set_installuser); \
chown $${installuser} DOC*; chmod a+r DOC*; \
if test "`echo DOC-*`" != "DOC-*"; then rm -f DOC; fi); \
else true; fi
(cd lisp; tar -chf - *.el *.elc) \
|(cd $(DESTDIR)${lispdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
(cd $(DESTDIR)${lispdir}; \
- for installuser in $${LOGNAME} $${USERNAME} $${USER} \
- `id -un 2> /dev/null`; do \
- [ -n "$${installuser}" ] && break ; \
- done ; \
+ $(set_installuser); \
find . -exec chown $${installuser} {} ';') ; \
else true; fi
-unset CDPATH; \
fi; \
cd ${srcdir}/info ; \
for elt in $(INFO_FILES); do \
+ test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
${INSTALL_DATA} $$f $(DESTDIR)${infodir}/$$f; \
chmod a+r $(DESTDIR)${infodir}/$$f; \
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
then \
for elt in $(INFO_FILES); do \
+ test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done; \
-chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
- for page in emacs emacsclient etags ctags ; do \
+ for page in ${MAN_PAGES}; do \
(cd $${thisdir}; \
- ${INSTALL_DATA} ${mansrcdir}/$${page}.1 $(DESTDIR)${man1dir}/$${page}${manext}; \
- chmod a+r $(DESTDIR)${man1dir}/$${page}${manext}); \
+ ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
+ chmod a+r $(DESTDIR)${man1dir}/$${page}); \
done
## Install those items from etc/ that need to end up elsewhere.
install-etc: mkdir
${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \
$(DESTDIR)${desktopdir}/emacs.desktop
- for icon in $(srcdir)/etc/images/icons/*/*x*/apps/*.*; do \
+ for icon in $(iconsrcdir)/*/*/apps/*.* \
+ $(iconsrcdir)/*/*/mimetypes/*.*; do \
if [ -r $${icon} ]; then \
iicon=`echo "$${icon}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},'` ; \
${INSTALL_DATA} $${icon} $${iicon} ; \
chmod a+r $(DESTDIR)${datadir};\
fi
icondirs= ; \
- for dir in $(srcdir)/etc/images/icons/*/*x*/apps; do \
+ for dir in $(iconsrcdir)/*/*/apps $(iconsrcdir)/*/*/mimetypes; do \
if [ -d $${dir} ]; then \
icondirs="$${icondirs} $${dir}" ; \
fi ; \
rm -f $$f; \
done; \
done;)
- (cd $(DESTDIR)${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext})
+ (cd $(DESTDIR)${man1dir} && rm -f $(MAN_PAGES))
(cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS))
-
+ (cd $(DESTDIR)${icondir} && rm -f hicolor/*x*/apps/emacs.png hicolor/*x*/apps/emacs22.png hicolor/scalable/apps/emacs.svg hicolor/scalable/mimetypes/emacs-document.svg )
+ -rm -f $(DESTDIR)${desktopdir}/emacs.desktop
+ for file in snake-scores tetris-scores; do \
+ file=$(DESTDIR)${gamedir}/$${file}; \
+ [ -s $${file} ] || rm -f $$file; \
+ done
FRC:
-(cd doc/lispintro && $(MAKE) $(MFLAGS) clean)
(cd leim; $(MAKE) $(MFLAGS) clean)
+### `bootclean'
+### Delete all files that need to be remade for a clean bootstrap.
+top_bootclean=\
+ rm -f config.cache config.log
### `distclean'
### Delete all files from the current directory that are created by
### configuring or building the program. If you have unpacked the
### `make distclean' should leave only the files that were in the
### distribution.
top_distclean=\
- rm -f config.status config.cache config.log ; \
- rm -f Makefile ${SUBDIR_MAKEFILES} ; \
- if [ -d lock ] ; then (cd lock && (rm -f * || true)); else true; fi
+ ${top_bootclean}; \
+ rm -f config.status Makefile ${SUBDIR_MAKEFILES}
distclean: FRC
(cd src; $(MAKE) $(MFLAGS) distclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
(cd lisp; $(MAKE) $(MFLAGS) distclean)
${top_distclean}
+### `bootstrap-clean'
+### Delete everything that can be reconstructed by `make' and that
+### needs to be deleted in order to force a bootstrap from a clean state.
+bootstrap-clean: FRC
+ (cd src; $(MAKE) $(MFLAGS) bootstrap-clean)
+ (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
+ (cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean)
+ (cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean)
+ -(cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean)
+ -(cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean)
+ -(cd doc/lispref && $(MAKE) $(MFLAGS) maintainer-clean)
+ -(cd doc/lispintro && $(MAKE) $(MFLAGS) maintainer-clean)
+ (cd leim; $(MAKE) $(MFLAGS) maintainer-clean)
+ (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
+ ${top_bootclean}
+
### `maintainer-clean'
### Delete everything from the current directory that can be
### reconstructed with this Makefile. This typically includes
### Makefile. More generally, `make maintainer-clean' should not delete
### anything that needs to exist in order to run `configure' and then
### begin to build the program.
-maintainer-clean: FRC
+maintainer-clean: bootstrap-clean FRC
(cd src; $(MAKE) $(MFLAGS) maintainer-clean)
- (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
- (cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean)
- (cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean)
- -(cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean)
- -(cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean)
- -(cd doc/lispref && $(MAKE) $(MFLAGS) maintainer-clean)
- -(cd doc/lispintro && $(MAKE) $(MFLAGS) maintainer-clean)
- (cd leim; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lisp; $(MAKE) $(MFLAGS) maintainer-clean)
${top_distclean}
cd ${srcdir}; ./make-dist
.PHONY: info dvi dist check html
+
+info-real:
+ -(cd doc/emacs; $(MAKE) $(MFLAGS) info)
+ -(cd doc/misc; $(MAKE) $(MFLAGS) info)
+ -(cd doc/lispref; $(MAKE) $(MFLAGS) info)
+ -(cd doc/lispintro; $(MAKE) $(MFLAGS) info)
+
force-info:
# Note that man/Makefile knows how to
# put the info files in $(srcdir),
# so we can do ok running make in the build dir.
info: force-info
- -(cd doc/emacs; $(MAKE) $(MFLAGS) info)
- -(cd doc/misc; $(MAKE) $(MFLAGS) info)
- -(cd doc/lispref; $(MAKE) $(MFLAGS) info)
- -(cd doc/lispintro; $(MAKE) $(MFLAGS) info)
+ @if test "$(MAKEINFO)" = "off"; then \
+ echo "Configured --without-makeinfo, not building manuals" ; \
+ elif test "$(MAKEINFO)" = "no"; then \
+ echo "makeinfo is missing - cannot build manuals" ; \
+ exit 1 ; \
+ else \
+ $(MAKE) $(MFLAGS) info-real ; \
+ fi
+
+# The info/dir file must be updated by hand when new manuals are added.
+check-info-dir: info
+ cd info ; \
+ missing= ; \
+ for file in *; do \
+ test -f "$${file}" || continue ; \
+ case $${file} in \
+ *-[0-9]*|COPYING|dir) continue ;; \
+ esac ; \
+ grep -q -F ": ($${file})." dir || missing="$${missing} $${file}" ; \
+ done ; \
+ if test -n "$${missing}"; then \
+ echo "Missing info/dir entries: $${missing}" ; \
+ exit 1 ; \
+ fi ; \
+ echo "info/dir is OK"
+
dvi:
(cd doc/emacs; $(MAKE) $(MFLAGS) dvi)
(cd doc/misc; $(MAKE) $(MFLAGS) dvi)
#### Bootstrapping.
-### This is meant for Emacs maintainers only. It first cleans the
-### lisp subdirectory, removing all compiled Lisp files. Then a
-### special emacs executable is built from Lisp sources, which is then
-### used to compile Lisp files. The last step is a "normal" make.
+### This first cleans the lisp subdirectory, removing all compiled
+### Lisp files. Then re-run make to build all the files anew.
.PHONY: bootstrap
-.PHONY: bootstrap-build
-.PHONY: bootfast
-.PHONY: maybe_bootstrap
-
-maybe_bootstrap:
- @bar="`echo $(srcdir)/lisp/*.elc`"; \
- if [ \( "$$bar" = '$(srcdir)/lisp/*.elc' \) -o \( "$$bar" = '' \) ]; then \
- echo "Your tree does not include the compiled Lisp files."; \
- echo "You need to do \`make bootstrap' to build Emacs."; \
- exit 1;\
- fi
-
-bootstrap: bootstrap-clean-before FRC
- $(MAKE) $(MFLAGS) info bootstrap-build
-
-bootfast: bootstrap-clean-before-fast FRC
- $(MAKE) $(MFLAGS) info bootstrap-build
-
-bootstrap-build: FRC
- (cd lisp; $(MAKE) $(MFLAGS) bootstrap-prepare)
- (cd src; $(MAKE) $(MFLAGS) bootstrap)
- (cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT})
- (cd src; $(MAKE) $(MFLAGS) mostlyclean)
- $(MAKE) $(MFLAGS) all
- (cd lisp; $(MAKE) $(MFLAGS) bootstrap-after)
-
-### Used for `bootstrap' to avoid deleting existing dumped Emacs executables.
-bootstrap-clean-before: bootstrap-clean-before-fast FRC
- (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
- (cd leim; $(MAKE) $(MFLAGS) bootstrap-clean)
-### Used for `bootfast' to avoid deleting existing dumped Emacs executables
-### and compiled .elc files.
-bootstrap-clean-before-fast: FRC
- (cd src; $(MAKE) $(MFLAGS) mostlyclean)
- (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
- (cd lwlib; $(MAKE) $(MFLAGS) clean)
- (cd lib-src; $(MAKE) $(MFLAGS) clean)
- -(cd doc/emacs && $(MAKE) $(MFLAGS) clean)
- -(cd doc/misc && $(MAKE) $(MFLAGS) clean)
- -(cd doc/lispref && $(MAKE) $(MFLAGS) clean)
- -(cd doc/lispintro && $(MAKE) $(MFLAGS) clean)
- (cd leim; $(MAKE) $(MFLAGS) clean)
+bootstrap: bootstrap-clean FRC
+ if [ -x ./config.status ]; then \
+ ./config.status; \
+ else \
+ ./configure --enable-maintainer-mode; \
+ fi
+ $(MAKE) $(MFLAGS) info all
.PHONY: check-declare