Require GNU make to build Emacs

Ref: http://debbugs.gnu.org/16717#45
If no-one objects, we can then start getting rid of some of the
convoluted Makefile hacks that exist to support non-GNU makes.

* configure.ac: Require GNU make.
(HAVE_GNU_MAKE): Remove.

* INSTALL, etc/NEWS, etc/PROBLEMS: Update for this change.

* Makefile.in: Comment.
This commit is contained in:
Glenn Morris 2014-03-27 15:41:57 -04:00
parent 6730259fea
commit f6dce6c1d6
6 changed files with 37 additions and 52 deletions

View file

@ -1,3 +1,8 @@
2014-03-27 Glenn Morris <rgm@gnu.org>
* configure.ac: Require GNU make.
(HAVE_GNU_MAKE): Remove.
2014-03-26 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:

12
INSTALL
View file

@ -24,6 +24,9 @@ find some things, or what options to use.
`src/config.h' file containing system-dependent definitions.
Running the `make' utility then builds the package for your system.
Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
On most systems that Emacs supports, this is the default `make' program.
Here's the procedure to build Emacs using `configure' on systems which
are supported by it. In some cases, if the simplified procedure fails,
you might need to use various non-default options, and maybe perform
@ -49,7 +52,6 @@ sections if you need to.
SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory.
This may not work unless you use GNU make.
3. When `configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
@ -435,12 +437,8 @@ SOURCE-DIR refers to the top-level Emacs source directory which is
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
To build in a separate directory, you must use a version of `make'
that supports the `VPATH' variable, such as GNU `make'.
(Do not try to build in a separate directory by creating many links
to the real source directory--there is no need, and installation will
fail.)
(Do not try to build in a separate directory by creating many links to
the real source directory--there is no need, and installation will fail.)
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use

View file

@ -60,8 +60,8 @@
SHELL = @SHELL@
# This may not work with certain non-GNU make's. It only matters when
# inheriting a CDPATH not starting with the current directory.
# This only matters when inheriting a CDPATH not starting with the
# current directory.
CDPATH=
# If Make doesn't predefine MAKE, set it here.

View file

@ -441,8 +441,7 @@ AC_SUBST(PROFILING_CFLAGS)
AC_ARG_ENABLE(autodepend,
[AS_HELP_STRING([--enable-autodepend],
[automatically generate dependencies to .h-files.
Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
found])],
Requires gcc, enabled if found.])],
[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
AC_ARG_ENABLE(gtk-deprecation-warnings,
@ -659,6 +658,18 @@ Check `etc/MACHINES' for recognized configuration names.])
fi
AC_MSG_CHECKING([whether we are using GNU Make])
testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
if test "x$testval" != x; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Building Emacs requires GNU make.
If you have it installed under a name other than 'make',
set the MAKE environment variable, and try again.])
fi
#### Choose a compiler.
dnl Sets GCC=yes if using gcc.
@ -1526,27 +1537,16 @@ dnl AC_PROG_MAKE_SET is done by Automake.
DEPFLAGS=
MKDEPDIR=":"
deps_frag=deps.mk
dnl check for GNU Make if we have GCC and autodepend is on.
dnl check if we have GCC and autodepend is on.
if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
AC_MSG_CHECKING([whether we are using GNU Make])
HAVE_GNU_MAKE=no
testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
if test "x$testval" != x; then
HAVE_GNU_MAKE=yes
else
ac_enable_autodepend=no
fi
AC_MSG_RESULT([$HAVE_GNU_MAKE])
if test $HAVE_GNU_MAKE = yes; then
AC_MSG_CHECKING([whether gcc understands -MMD -MF])
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
CFLAGS="$SAVE_CFLAGS"
test -f deps.d || ac_enable_autodepend=no
rm -rf deps.d
AC_MSG_RESULT([$ac_enable_autodepend])
fi
AC_MSG_CHECKING([whether gcc understands -MMD -MF])
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
CFLAGS="$SAVE_CFLAGS"
test -f deps.d || ac_enable_autodepend=no
rm -rf deps.d
AC_MSG_RESULT([$ac_enable_autodepend])
if test $ac_enable_autodepend = yes; then
DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.

View file

@ -24,6 +24,9 @@ otherwise leave it unmarked.
* Installation Changes in Emacs 24.5
+++
** Building Emacs now requires GNU make.
* Startup Changes in Emacs 24.5

View file

@ -2544,27 +2544,6 @@ occurring with older versions of GCC (e.g. 3.3.5).
This is due to a bug in the bcopy implementation in openSUSE 10.3.
It is/will be fixed in an openSUSE update.
** Installation
*** On Solaris, use GNU Make when installing an out-of-tree build
The Emacs configuration process allows you to configure the
build environment so that you can build emacs in a directory
outside of the distribution tree. When installing Emacs from an
out-of-tree build directory on Solaris, you may need to use GNU
make. The make programs bundled with Solaris support the VPATH
macro but use it differently from the way the VPATH macro is
used by GNU make. The differences will cause the "make install"
step to fail, leaving you with an incomplete emacs
installation. GNU make is available in /usr/sfw/bin on Solaris
10 and can be installed as /opt/sfw/bin/gmake from the Solaris 9
Software Companion CDROM.
The problems due to the VPATH processing differences affect only
out of tree builds so, if you are on a Solaris installation
without GNU make, you can install Emacs completely by installing
from a build environment using the original emacs distribution tree.
** First execution
*** Emacs binary is not in executable format, and cannot be run.