infodir=@infodir@
INFO_FILES=ada-mode autotype calc ccmode cl dbus dired-x ebrowse ediff \
efaq eintr elisp emacs emacs-mime epa 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
+ flymake forms gnus idlwave info mairix-el message mh-e \
+ newsticker ns-emacs nxml-mode org pcl-cvs pgg rcirc reftex \
+ remember sasl sc ses sieve speedbar tramp vip viper widget \
+ woman smtpmail url
# 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
# "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
# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
lisp: src
-${SUBDIR}: ${SUBDIR_MAKEFILES} FRC
- cd $@; $(MAKE) all $(MFLAGS) \
+# 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.
+${SUBDIR}: Makefile FRC
+ boot=bootstrap-emacs$(EXEEXT); \
+ if [ -x "src/$$boot" ]; then boot=""; fi; \
+ cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
- LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
+ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"
-blessmail: ${SUBDIR_MAKEFILES} src FRC
+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
-
-lisp/Makefile: $(srcdir)/lisp/Makefile.in config.status
- ./config.status
-
# ==================== Installation ====================
## If we let lib-src do its own installation, that means we
${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 mv -f share/emacs/*/* . ; fi ; \
+ if test -d share/info ; then mv -f share/info . ; fi ; \
+ rm -fr share ) ; \
+ ( cd ${ns_appbindir}/libexec ; mv -f emacs/*/*/* . ; 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.
### `bootclean'
### Delete all files that need to be remade for a clean bootstrap.
top_bootclean=\
- rm -f config.cache config.log ; \
- if [ -d lock ] ; then (cd lock && (rm -f * || true)); else true; fi
+ 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