# 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, 2010
# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# ==================== Things `configure' Might Edit ====================
CC=@CC@
-CPP=@CPP@
-C_SWITCH_SYSTEM=@c_switch_system@
-ALLOCA=@ALLOCA@
-LN_S=@LN_S@
CFLAGS=@CFLAGS@
LDFLAGS=@LDFLAGS@
CPPFLAGS=@CPPFLAGS@
-C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
-LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@
EXEEXT=@EXEEXT@
MAKEINFO=@MAKEINFO@
# 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 epa erc eshell eudc \
- flymake forms gnus idlwave info 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
+INFO_FILES=ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse \
+ ede ediff edt eieio 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 semantic 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@
removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
# Generate epaths.h from epaths.in. This target is invoked by `configure'.
+# See comments in configure.in for why it is done this way, as opposed
+# to just letting configure generate epaths.h from epaths.in in a
+# similar way to how Makefile is made from Makefile.in.
epaths-force: FRC
@(lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \
# 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}'
+
# 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).
# 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
+src: Makefile FRC
boot=bootstrap-emacs$(EXEEXT); \
- if [ -x "src/$$boot" ]; then boot=""; fi; \
+ if [ ! -x "src/$$boot" ]; then \
+ cd $@; $(MAKE) all $(MFLAGS) \
+ CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
+ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \
+ fi;
+ if [ -r .bzr/checkout/dirstate ]; then \
+ vcswitness="$$(pwd)/.bzr/checkout/dirstate"; \
+ fi; \
cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
- LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"
+ LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="" \
+ VCSWITNESS="$$vcswitness"
blessmail: Makefile src FRC
cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
cd ${srcdir} && autoconf
$(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
- @true
+ @ # Usually, there's no need to rebuild src/config.in just
+ @ # because stamp-h.in has changed (since building stamp-h.in
+ @ # refreshes config.in as well), but if config.in is missing
+ @ # then we really need to do something more.
+ [ -r "$@" ] || ( cd ${srcdir} && autoheader )
$(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
cd ${srcdir} && autoheader
rm -f $(srcdir)/src/stamp-h.in
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 \
+ if test "${ns_appresdir}" != ""; then \
( cd ${ns_appresdir} ; \
- if test -d share/emacs ; then mv -f share/emacs/*/* . ; fi ; \
- if test -d info ; then mv -f share/info . ; fi ; \
+ 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 ; mv -f emacs/*/*/* . ; rm -fr emacs ) ; \
- ( cd ${ns_appbindir}/bin ; rm -f emacs emacs-23* ; \
+ ( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
+ rm -fr emacs ) ; \
+ ( cd ${ns_appbindir}bin ; rm -f emacs emacs-24* ; \
ln -sf ../libexec/* .) ; \
else true ; fi
+## FIXME is the emacs-24* bit above really necessary and correct?
+## What if I have 24.1 and 24.2 installed at the same time?
+## In any case, it should use something like echo $version | sed 's/\..*//'
+## instead of hard-coding a version.
+
## 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} \
| (cd $${dest}; umask 022; \
tar -xvf - && cat > /dev/null) || exit 1; \
find $${dest} -exec chown $${installuser} {} ';' ;\
- for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \
+ for subdir in `find $${dest} -type d -print` ; do \
chmod a+rx $${subdir} ; \
- 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}/*~ ; \
rm -f $${subdir}/*.orig ; \
[ "$${dir}" != "${srcdir}/etc" ] && \
- rm -f $${subdir}/[mM]akefile* ; \
+ rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \
+ $${subdir}/[mM]akefile ; \
rm -f $${subdir}/ChangeLog* ; \
- rm -f $${subdir}/dired.todo ; \
done) ; \
done
-rm -f $(DESTDIR)${lispdir}/subdirs.el
then \
docfile="DOC-$${fullversion}"; \
else \
- docfile="DOC-${version}*"; \
+ docfile="DOC"; \
fi; \
echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
(cd ./etc; tar -chf - $${docfile}) \
${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done; \
else true; fi
- -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
+ -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
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.
### we may be creating several layers of directories (for example,
### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use mkinstalldirs
### instead of mkdir. Not all systems' mkdir programs have the `-p' flag.
+### We set the umask so that any created directories are world-readable.
+### FIXME it would be good to warn about non-standard permissions of
+### pre-existing directories, but that does not seem easy.
mkdir: FRC
- if [ -d $(DESTDIR)${datadir} ]; then true; else \
- $(srcdir)/mkinstalldirs $(DESTDIR)${datadir}; \
- chmod a+r $(DESTDIR)${datadir};\
- fi
icondirs= ; \
for dir in $(iconsrcdir)/*/*/apps $(iconsrcdir)/*/*/mimetypes; do \
if [ -d $${dir} ]; then \
fi ; \
done ; \
icondirs=`echo "$${icondirs}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},g'` ; \
- $(srcdir)/mkinstalldirs ${COPYDESTS} $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
+ umask 022 ; \
+ $(srcdir)/mkinstalldirs $(DESTDIR)${datadir} ${COPYDESTS} \
+ $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
$(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \
$(DESTDIR)${datadir}/emacs/site-lisp \
$(DESTDIR)${datadir}/emacs/${version}/site-lisp \
$(DESTDIR)${desktopdir} $${icondirs}
### Delete all the installed files that the `install' target would
-### create (but not the noninstalled files such as `make all' would
-### create).
+### create (but not the noninstalled files such as `make all' would create).
###
### Don't delete the lisp and etc directories if they're in the source tree.
uninstall:
esac ; \
fi ; \
done
- (cd $(DESTDIR)${archlibdir} && rm -f fns-*)
+ if [ -d $(DESTDIR)${archlibdir} ]; then \
+ (cd $(DESTDIR)${archlibdir} && rm -f fns-*) \
+ fi
-rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
(cd $(DESTDIR)${infodir} && \
for elt in $(INFO_FILES); do \
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:
.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)
+ (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),
+# Note that man/Makefile knows how to put the info files in $(srcdir),
# so we can do ok running make in the build dir.
+# This used to have a clause that exited with an error if MAKEINFO = no.
+# But it is inappropriate to do so without checking if makeinfo is
+# actually needed - it is not if the info files are up-to-date. (Bug#3982)
+# Only the doc/*/Makefiles can decide that, so we let those rules run
+# and give a standard error if makeinfo is needed but missing.
+# While it would be nice to give a more detailed error message, that
+# would require changing every rule in doc/ that builds an info file,
+# and it's not worth it. This case is only relevant if you download a
+# release, then change the .texi files.
info: force-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