Subject: Re: bug#46837: Makefile dependencies for info files

From: Glenn Morris <[email-masked]>
Date: Thu, 04 Mar 2021 23:45:26 -0500

Glenn Morris wrote:

>> 1) Catering for systems without makeinfo - I would suggest dropping this.
>
> By which I meant, remove configure --without-makeinfo and special-casing
> HAVE_MAKEINFO=no in the Makefile, thus removing the need for the
> "info-real" target.
>
> configure not finding makeinfo would continue to be non-fatal if
> info/emacs.info exists, to cater for release tarfiles where info files
> are pre-built.

diff --git i/Makefile.in w/Makefile.in
index 856c29a453..85d063d8f6 100644
--- i/Makefile.in
+++ w/Makefile.in
@@ -166,9 +166,6 @@ infodir=@infodir@
 # Info files not in the doc/misc directory (we get those via make echo-info).
 INFO_NONMISC=emacs.info eintr.info elisp.info
 
-# If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
-HAVE_MAKEINFO=@HAVE_MAKEINFO@
-
 # Directory for local state files for all programs.
 localstatedir=@localstatedir@
 
@@ -650,9 +647,6 @@ install-etcdoc: src install-arch-indep
 ## If info/dir is missing, but we have install-info, we should let
 ## that handle it.  If info/dir is present and we do not have install-info,
 ## we should check for missing entries and add them by hand.
-##
-## FIXME:
-## If HAVE_MAKEINFO = no and there are no info files, do not install info/dir.
 install-info: info
 	umask 022; ${MKDIR_P} "$(DESTDIR)${infodir}"
 	-unset CDPATH; \
@@ -667,7 +661,6 @@ install-info: info
 	   info_misc=`$(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
 	   cd ${srcdir}/info ; \
 	   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 \
 	       (cd "$${thisdir}"; \
 	        ${INSTALL_DATA} ${srcdir}/info/$$f "$(DESTDIR)${infodir}/$$f"); \
@@ -987,13 +980,13 @@ $(DOCS):
 	$(MAKE) -C doc/$(subst -, ,$@)
 
 .PHONY: $(DOCS) docs pdf ps
-.PHONY: info dvi dist html info-real info-dir check-info
+.PHONY: info dvi dist html info-dir check-info
 
 ## TODO add etc/refcards.
 docs: $(DOCS)
 dvi: $(DVIS)
 html: $(HTMLS)
-info-real: $(INFOS)
+info: $(INFOS) info-dir
 pdf: $(PDFS)
 ps: $(PSS)
 
@@ -1027,7 +1020,7 @@ info_dir_deps = \
 ## installation location by the install-info rule, but we also
 ## need one in the source directory for people running uninstalled.
 ## FIXME it would be faster to use the install-info program if we have it,
-## but then we would need to depend on info-real, which would
+## but then we would need to depend on ${INFOS}, which would
 ## slow down parallelization.
 ${srcdir}/info/dir: ${info_dir_deps}
 	$(AM_V_at)${MKDIR_P} ${srcdir}/info
@@ -1082,24 +1075,6 @@ uninstall-html: $(UNINSTALL_HTML)
 uninstall-pdf: $(UNINSTALL_PDF)
 uninstall-ps: $(UNINSTALL_PS)
 
-
-# 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.
-ifneq ($(HAVE_MAKEINFO),no)
-info: info-real info-dir
-else
-info:
-endif
-
 ## build-aux/make-info-dir expects only certain dircategories.
 check-info: info
 	cd info ; \
diff --git i/configure.ac w/configure.ac
index 11a06a39be..385a126dd3 100644
--- i/configure.ac
+++ w/configure.ac
@@ -506,11 +506,6 @@ otherwise for the first of 'inotify', 'kqueue' or 'gfile' that is usable.])
 OPTION_DEFAULT_OFF([xwidgets],
   [enable use of xwidgets in Emacs buffers (requires gtk3 or macOS Cocoa)])
 
-## For the times when you want to build Emacs but don't have
-## a suitable makeinfo, and can live without the manuals.
-dnl https://lists.gnu.org/r/emacs-devel/2008-04/msg01844.html
-OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
-
 ## Makefile.in needs the cache file name.
 AC_SUBST(cache_file)
 
@@ -1344,14 +1339,13 @@ if test -n "$BREW"; then
 fi
 
 ## Require makeinfo >= 4.13 (last of the 4.x series) to build the manuals.
-if test "${MAKEINFO:=makeinfo}" != "no"; then
-  case `($MAKEINFO --version) 2>/dev/null` in
-    *' (GNU texinfo) '4.1[[3-9]]* | \
-    *' (GNU texinfo) '[[5-9]]* | \
-    *' (GNU texinfo) '[[1-9][0-9]]* ) ;;
-    *) MAKEINFO=no;;
-  esac
-fi
+: ${MAKEINFO:=makeinfo}
+case `($MAKEINFO --version) 2>/dev/null` in
+  *' (GNU texinfo) '4.1[[3-9]]* | \
+  *' (GNU texinfo) '[[5-9]]* | \
+  *' (GNU texinfo) '[[1-9][0-9]]* ) ;;
+  *) MAKEINFO=no;;
+esac
 
 ## Makeinfo is unusual.  For a released Emacs, the manuals are
 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
@@ -1362,21 +1356,19 @@ fi
 ## should test for it as it does for any other build requirement.
 ## We use the presence of $srcdir/info/emacs to distinguish a release,
 ## with pre-built manuals, from a repository checkout.
-HAVE_MAKEINFO=yes
-
 if test "$MAKEINFO" = "no"; then
   MAKEINFO=makeinfo
-  if test "x${with_makeinfo}" = "xno"; then
-    HAVE_MAKEINFO=no
-  elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
+  if test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.13, and your
 source tree does not seem to have pre-built manuals in the 'info' directory.
-Either install a suitable version of makeinfo, or re-run configure
-with the '--without-makeinfo' option to build without the manuals.] )
+Please install a suitable version of makeinfo.] )
+  else
+    AC_MSG_WARN( [You do not seem to have makeinfo >= 4.13.
+You will not be able to rebuild the manuals if you delete them or change
+their sources.] )
   fi
 fi
 AC_SUBST([MAKEINFO])
-AC_SUBST(HAVE_MAKEINFO)
 
 if test $opsys = mingw32; then
    DOCMISC_W32=efaq-w32
diff --git i/etc/NEWS w/etc/NEWS
index 3522fce03a..ff2fe656ec 100644
--- i/etc/NEWS
+++ w/etc/NEWS
@@ -66,6 +66,9 @@ shaping, so 'configure' now recommends that combination.
 ** The ftx font backend driver has been removed.
 It was declared obsolete in Emacs 27.1.
 
+---
+** The configure option '--without-makeinfo' has been removed.
+
 ---
 ** Support for building with '-fcheck-pointer-bounds' has been removed.
 GCC has withdrawn the '-fcheck-pointer-bounds' option and support for