# DIST: make most of the changes to this file you might want, so try
# DIST: that first.
-# Copyright (C) 1992-2011 Free Software Foundation, Inc.
+# Copyright (C) 1992-2012 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# ==================== Things `configure' Might Edit ====================
+MAINTAINER_MODE_FLAG = --disable-maintainer-mode
+@MAINT@MAINTAINER_MODE_FLAG = --enable-maintainer-mode
+cache_file = @cache_file@
+CONFIGURE_FLAGS = --cache-file=$(cache_file) $(MAINTAINER_MODE_FLAG)
+
CC=@CC@
CFLAGS=@CFLAGS@
LDFLAGS=@LDFLAGS@
libexecdir=@libexecdir@
# 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).
+# Note they contain cross-references that expect them to be in section 1.
mandir=@mandir@
man1dir=$(mandir)/man1
-MAN_PAGES=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.
+# Where to install and expect the info files describing Emacs.
infodir=@infodir@
-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 \
- ert 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
+# Info files not in the doc/misc directory (we get those via make echo-info).
+INFO_EXT=@INFO_EXT@
+INFO_NONMISC=emacs$(INFO_EXT) eintr$(INFO_EXT) elisp$(INFO_EXT)
# If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
HAVE_MAKEINFO=@HAVE_MAKEINFO@
# building. This is only used during the process of
# compiling Emacs, to help Emacs find its lisp files
# before they've been installed in their final location.
-# It's usually identical to lisppath, except that
-# it does not include locallisppath, and the
-# entry for the directory containing the installed lisp
-# files has been replaced with ../lisp. This should be a
-# colon-separated list of directories.
+# This should be a colon-separated list of directories.
+# Normally it points to the lisp/ directory in the sources.
buildlisppath=${srcdir}/lisp
# Where to install the other architecture-independent
# ==================== Utility Programs for the Build ====================
# Allow the user to specify the install program.
+# Note that if the system does not provide a suitable install,
+# configure will use build-aux/install-sh. Annoyingly, it does
+# not use an absolute path. So we must take care to always run
+# INSTALL-type commands from the top-level directory.
+# This explains (I think) the cd thisdir seen in several install rules.
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
SUBDIR = lib lib-src src lisp
# The subdir makefiles created by config.status.
-SUBDIR_MAKEFILES = lib/Makefile 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 test/automated/Makefile
+SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
+SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'`
# Subdirectories to install, and where they'll go.
# lib-src's makefile knows how to install it, so we don't do that here.
-e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
-e 's;\(#.*PATH_GAME\).*$$;\1 "${gamedir}";' \
-e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') && \
- ${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
+ ${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
# For parallel make, src should be built before leim.
# "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 Makefile FRC
- (export PARALLEL; PARALLEL=0; cd $@; $(MAKE) all $(MFLAGS) \
- CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
- LDFLAGS='${LDFLAGS}' MAKE='${MAKE}')
+ cd leim && PARALLEL=0 $(MAKE) all $(MFLAGS)
lib-src src: lib
# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools
# as per $(gnulib_srcdir)/DEPENDENCIES.
GNULIB_MODULES = \
- careadlinkat crypto/md5 dtoastr filemode getloadavg getopt-gnu \
- ignore-value intprops lstat mktime readlink \
- socklen stdarg stdio strftime strtoumax symlink sys_stat
+ alloca-opt \
+ careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr \
+ dup2 \
+ filemode getloadavg getopt-gnu ignore-value intprops lstat \
+ manywarnings mktime pthread_sigmask readlink \
+ socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat \
+ warnings
GNULIB_TOOL_FLAGS = \
+ --avoid=msvc-inval --avoid=msvc-nothrow \
+ --avoid=raise --avoid=threadlib \
--conditional-dependencies --import --no-changelog --no-vc-files \
--makefile-name=gnulib.mk
sync-from-gnulib: $(gnulib_srcdir)
cp $(gnulib_srcdir)/build-aux/texinfo.tex $(srcdir)/doc/misc
cp \
$(gnulib_srcdir)/build-aux/move-if-change \
- $(srcdir)
+ $(srcdir)/build-aux
cd $(srcdir) && autoreconf -i -I m4
.PHONY: sync-from-gnulib
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \
fi;
if [ -r .bzr/checkout/dirstate ]; then \
- vcswitness="$$(pwd)/.bzr/checkout/dirstate"; \
+ vcswitness="`pwd`/.bzr/checkout/dirstate"; \
fi; \
cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
# 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/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 \
- $(srcdir)/test/automated/Makefile.in
+ $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
./config.status
# Don't erase config.status if make is interrupted while refreshing it.
if [ -x ./config.status ]; then \
./config.status --recheck; \
else \
- ./configure; \
+ ./configure $(CONFIGURE_FLAGS); \
fi
AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/aclocal.m4
$(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS)
cd $(srcdir) && aclocal -I m4
-AUTOMAKE_INPUTS = @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am
+AUTOMAKE_INPUTS = @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am $(srcdir)/lib/gnulib.mk
$(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS)
cd $(srcdir) && automake --gnu -a -c lib/Makefile
am--refresh: $(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/src/config.in
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-24* ; \
- ln -sf ../libexec/* .) ; \
+ ( cd ${ns_appbindir} ; \
+ if cd libexec ; then dir=emacs/*/*/* ; $(MV_DIRS); \
+ rm -fr emacs; if cd ../bin; then rm -f emacs emacs-24*; \
+ ln -sf ../libexec/* . ; fi ; fi ) ; \
else true ; fi
## FIXME is the emacs-24* bit above really necessary and correct?
## Note that we copy DOC* and then delete DOC
## as a workaround for a bug in tar on Ultrix 4.2.
+## Ultrix is no longer supported since 23.1, but the relevant line
+## has another effect. We copy the entire etc/ directory from the
+## source tree first. For an in-tree build, this will include
+## any DOC* files there may be. So rm DOC does have an effect.
+## FIXME When we copy etc we should exclude DOC*, then copy only
+## the relevant one. We cannot delete DOC* from the destination directory,
+## because that may include pre-existing files from another emacs.
## We install only the relevant DOC file if possible
## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
+## (Note "otherwise" is inaccurate since 2009-08-23.)
## If people complain about the h flag in tar command, take that out.
## That flag is also used in leim/Makefile.in
rm -f $${subdir}/*~ ; \
rm -f $${subdir}/*.orig ; \
[ "$${dir}" != "${srcdir}/etc" ] && \
- rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \
- $${subdir}/[mM]akefile ; \
+ rm -f $${subdir}/[mM]akefile*[.-]in $${subdir}/[mM]akefile ; \
rm -f $${subdir}/ChangeLog* ; \
done) ; \
done
${INSTALL_DATA} ${srcdir}/info/dir $(DESTDIR)${infodir}/dir; \
chmod a+r $(DESTDIR)${infodir}/dir); \
fi; \
+ info_misc=`cd $${thisdir}/doc/misc; ${MAKE} echo-info | sed '/ing directory/d'`; \
cd ${srcdir}/info ; \
- for elt in $(INFO_FILES); do \
- test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
+ for elt in ${INFO_NONMISC} $${info_misc}; do \
+ test "$(HAVE_MAKEINFO)" = "no" && test ! -f $$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; \
+ (cd $${thisdir}; \
+ ${INSTALL_DATA} ${srcdir}/info/$$f $(DESTDIR)${infodir}/$$f); \
chmod a+r $(DESTDIR)${infodir}/$$f; \
if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
rm -f $(DESTDIR)${infodir}/$$f.gz; \
${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \
else true; fi; \
done; \
+ (cd $${thisdir}; \
+ ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done); \
else true; fi
- -unset CDPATH; \
- thisdir=`/bin/pwd`; \
- if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
- then \
- for elt in $(INFO_FILES); do \
- test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
- (cd $${thisdir}; \
- ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
- done; \
- else true; fi
-chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
- for page in ${MAN_PAGES}; do \
+ for page in *.1; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
chmod a+r $(DESTDIR)${man1dir}/$${page}; \
### Install LEIM files. Although they are machine-independent, we
### have separate target here instead of including it in
### `install-arch-indep'. People who extracted LEIM files after they
-### insalled Emacs itself can install only LEIM files by this target.
+### installed Emacs itself can install only LEIM files by this target.
install-leim: leim/Makefile mkdir
- cd leim; $(MAKE) install
+ cd leim && $(MAKE) $(MFLAGS) install
### Build Emacs and install it, stripping binaries while installing them.
install-strip:
- $(MAKE) INSTALL_STRIP=-s install
+ $(MAKE) $(MFLAGS) INSTALL_STRIP=-s install
### Build all the directories we're going to install Emacs in. Since
### we may be creating several layers of directories (for example,
done ; \
icondirs=`echo "$${icondirs}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},g'` ; \
umask 022 ; \
- $(srcdir)/install-sh -d $(DESTDIR)${datadir} ${COPYDESTS} \
+ $(srcdir)/build-aux/install-sh -d $(DESTDIR)${datadir} ${COPYDESTS} \
$(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
$(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \
$(DESTDIR)${datadir}/emacs/site-lisp \
fi ; \
done
-rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
- (cd $(DESTDIR)${infodir} && \
- for elt in $(INFO_FILES); do \
- $(INSTALL_INFO) --remove --info-dir=. $$elt; \
- for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
- rm -f $$f; \
- done; \
+ thisdir=`/bin/pwd`; \
+ (info_misc=`cd doc/misc; ${MAKE} echo-info | sed '/ing directory/d'`; \
+ cd $(DESTDIR)${infodir} && \
+ for elt in ${INFO_NONMISC} $${info_misc}; do \
+ (cd $${thisdir}; \
+ $(INSTALL_INFO) --remove --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
+ if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
+ ext=.gz; else ext=; fi; \
+ rm -f $$elt$$ext $$elt-[1-9]$$ext $$elt-[1-9][0-9]$$ext; \
done;)
- (cd $(DESTDIR)${man1dir} && rm -f $(MAN_PAGES))
+ (if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
+ ext=.gz; else ext=; fi; \
+ cd ${mansrcdir} && for page in *.1; do \
+ rm -f $(DESTDIR)${man1dir}/$$page$$ext; done )
(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
-(cd doc/lispintro && $(MAKE) $(MFLAGS) maintainer-clean)
(cd leim; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
- [ ! -e config.log ] || mv -f config.log config.log~
+ [ ! -f config.log ] || mv -f config.log config.log~
${top_bootclean}
## configure; make bootstrap replaces the real config.log from configure
## with the truncated one from config.status. The former is more useful.
# The src subdir knows how to do the right thing
# even when the build directory and source dir are different.
TAGS tags: lib lib-src src
- cd src; $(MAKE) tags
+ cd src; $(MAKE) $(MFLAGS) tags
check:
- cd test/automated; $(MAKE) check
+ @if test ! -d test/automated; then \
+ echo "You do not seem to have the test/ directory."; \
+ echo "Maybe you are using a release tarfile, rather than a repository checkout."; \
+ else \
+ cd test/automated && $(MAKE) $(MFLAGS) check; \
+ fi
dist:
cd ${srcdir}; ./make-dist
case $${file} in \
*-[0-9]*|COPYING|dir) continue ;; \
esac ; \
+ file=`echo $${file} | sed 's/\.info//'` ; \
grep -q -F ": ($${file})." dir || missing="$${missing} $${file}" ; \
done ; \
if test -n "$${missing}"; then \
if [ -x ./config.status ]; then \
./config.status; \
else \
- ./configure --enable-maintainer-mode; \
+ ./configure $(CONFIGURE_FLAGS); \
fi
$(MAKE) $(MFLAGS) info all
.PHONY: check-declare
check-declare:
- @if [ ! -e $(srcdir)/src/emacs ]; then \
+ @if [ ! -f $(srcdir)/src/emacs ]; then \
echo "You must build Emacs to use this command"; \
exit 1; \
fi