### @configure_input@
-# Copyright (C) 1992-2015 Free Software Foundation, Inc.
+# Copyright (C) 1992-2016 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
#
# make docs
# Make Emacs documentation files from their sources; requires makeinfo.
+#
+# make check or make check-expensive
+# Run Emacs test suite. check-expensive runs also tests which
+# take more time to perform.
SHELL = @SHELL@
# The subdir makefiles created by config.status.
SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
-SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'`
+SUBDIR_MAKEFILES = $(patsubst ${srcdir}/%,%,${SUBDIR_MAKEFILES_IN:.in=})
# Subdirectories to install, and where they'll go. lib-src's and nt's
# makefiles know how to install them, so we don't do that here.
${srcdir}/build-aux/move-if-change emacsver.tex.$$$$ \
${srcdir}/etc/refcards/emacsver.tex
-removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g'
-
# Generate epaths.h from epaths.in. This target is invoked by 'configure'.
# See comments in configure.ac for why it is done this way, as opposed
# to just letting configure generate epaths.h from epaths.in in a
@for dir in '$(abs_srcdir)' '$(lispdir)' '$(archlibdir)'; do \
case $$dir in \
*:*) \
- echo >&2 "Build or installation directory '$$dir'"; \
+ printf >&2 "Build or installation directory '%s'\\n" "$$dir"; \
echo >&2 "cannot contain ':'."; \
exit 1;; \
esac; \
done
- @(standardlisppath=`echo "${standardlisppath}" | ${removenullpaths}` ; \
- locallisppath=`echo "${locallisppath}" | ${removenullpaths}` ; \
- buildlisppath=`echo "${buildlisppath}" | ${removenullpaths}` ; \
- x_default_search_path=`echo ${x_default_search_path}`; \
- gamedir=`echo ${gamedir}`; \
+ @(gamedir='${gamedir}'; \
sed < ${srcdir}/src/epaths.in > epaths.h.$$$$ \
- -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'"$${standardlisppath}"'";' \
- -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${locallisppath}"'";' \
- -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'"$${buildlisppath}"'";' \
+ -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "${standardlisppath}";' \
+ -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "${locallisppath}";' \
+ -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "${buildlisppath}";' \
+ -e '/^#define PATH_[^ ]*SEARCH /s/\([":]\):*/\1/g' \
+ -e '/^#define PATH_[^ ]*SEARCH /s/:"/"/' \
-e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";' \
-e 's;\(#.*PATH_INFO\).*$$;\1 "${infodir}";' \
-e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";' \
install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR)
umask 022; ${MKDIR_P} "$(DESTDIR)${bindir}"
$(MAKE) -C lib-src install
- if test "${ns_self_contained}" = "no"; then \
- ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)" || exit 1 ; \
- chmod 1755 "$(DESTDIR)${bindir}/$(EMACSFULL)" || true; \
- if test "x${NO_BIN_LINK}" = x; then \
- rm -f "$(DESTDIR)${bindir}/$(EMACS)" ; \
- cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS); \
- fi; \
- else \
- subdir=${ns_appresdir}/site-lisp; \
- ${write_subdir} || exit 1; \
- rm -rf ${ns_appresdir}/share; \
- fi
+ifeq (${ns_self_contained},no)
+ ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)"
+ -chmod 755 "$(DESTDIR)${bindir}/$(EMACSFULL)"
+ifndef NO_BIN_LINK
+ rm -f "$(DESTDIR)${bindir}/$(EMACS)"
+ cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) $(EMACSFULL) $(EMACS)
+endif
+else
+ subdir=${ns_appresdir}/site-lisp && ${write_subdir}
+ rm -rf ${ns_appresdir}/share
+endif
### Windows-specific install target for installing programs produced
### in nt/, and its Posix do-nothing shadow.
fi; \
rm -rf "$${dest}" ; \
umask 022; ${MKDIR_P} "$${dest}" ; \
- echo "Copying $${dir} to $${dest}..." ; \
+ printf 'Copying %s to %s...\n' "$$dir" "$$dest" ; \
(cd $${dir}; tar -chf - . ) \
| (cd "$${dest}"; umask 022; \
tar -xvf - && cat > /dev/null) || exit 1; \
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}/.#* ; \
rm -f $${subdir}/*~ ; \
rm -f $${subdir}/*.orig ; \
rm -f $${subdir}/ChangeLog* ; \
if [ "`cd ./etc; /bin/pwd`" != "$$exp_etcdocdir" ]; \
then \
docfile="DOC"; \
- echo "Copying etc/$${docfile} to $(DESTDIR)${etcdocdir} ..." ; \
+ printf 'Copying %s to %s ...\n' "etc/$$docfile" \
+ "$(DESTDIR)${etcdocdir}"; \
${INSTALL_DATA} etc/$${docfile} "$(DESTDIR)${etcdocdir}/$${docfile}"; \
$(set_installuser); \
chown $${installuser} "$(DESTDIR)${etcdocdir}/$${docfile}" || true ; \
for icon in $${dir}/${EMACS_ICON}[.-]*; do \
[ -r $${icon} ] || continue ; \
ext=`echo "$${icon}" | sed -e 's|.*\.||'`; \
- dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\.$${ext}$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \
+ dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\\.$${ext}\$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \
( cd "$${thisdir}"; \
${INSTALL_DATA} ${iconsrcdir}/$${icon} "$(DESTDIR)${icondir}/$${dir}/$${dest}" ) \
|| exit 1; \
TAGS tags: lib lib-src src
$(MAKE) -C src tags
-check: all
- @if test ! -d test/automated; then \
+.PHONY: have-tests
+have-tests:
+ @if test ! -d test; 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 \
- $(MAKE) -C test/automated check; \
+ exit 1; \
fi
+check check-maybe check-expensive: have-tests all
+ $(MAKE) -C test $@
+
dist:
cd ${srcdir}; ./make-dist
$(MAKE) -C doc/$(subst -, ,$@)
.PHONY: $(DOCS) docs pdf ps
-.PHONY: info dvi dist check html info-real info-dir check-info
+.PHONY: info dvi dist check check-maybe check-expensive html info-real info-dir check-info
## TODO add etc/refcards.
docs: $(DOCS)
$(MAKE) all
.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
-.PHONY: master-branch-is-current unchanged-history-files
+.PHONY: preferred-branch-is-current unchanged-history-files
CHANGELOG = ChangeLog
emacslog = build-aux/gitlog-to-emacslog
./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
# Check that we are in a good state for changing history.
-master-branch-is-current:
- git branch | grep -q '^\* master$$'
+PREFERRED_BRANCH = master
+preferred-branch-is-current:
+ git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
unchanged-history-files:
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
test -z "$$x"
+# Regular expression that matches the newest commit covered by a ChangeLog.
+new_commit_regexp = ^commit [0123456789abcdef]* (inclusive)
+
# Copy newer commit messages to the start of the ChangeLog history file,
# and consider them to be older.
-change-history-nocommit: master-branch-is-current unchanged-history-files
+change-history-nocommit: preferred-branch-is-current unchanged-history-files
-rm -f ChangeLog.tmp
$(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp
- (sed '/^See ChangeLog.[0-9]* for earlier/,$$d' <ChangeLog.tmp && cat $(CHANGELOG_N)) \
- >$(CHANGELOG_N).tmp
+ sed '/^This file records repository revisions/,$$d' \
+ ChangeLog.tmp >$(CHANGELOG_N).tmp
+ new_commit_line=`grep '$(new_commit_regexp)' ChangeLog.tmp` && \
+ sed 's/$(new_commit_regexp).*/'"$$new_commit_line/" \
+ $(CHANGELOG_N) >>$(CHANGELOG_N).tmp
rm ChangeLog.tmp
- new_origin=$$(git log --pretty=format:%H HEAD^!) && \
- sed 's/^\(gen_origin=\).*/\1'"$$new_origin/" \
- < $(emacslog) > $(emacslog).tmp && chmod +x $(emacslog).tmp
mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
- mv $(emacslog).tmp $(emacslog)
change-history: change-history-nocommit
$(MAKE) $@-commit