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> 2014-03-26 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating: 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. `src/config.h' file containing system-dependent definitions.
Running the `make' utility then builds the package for your system. 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 Here's the procedure to build Emacs using `configure' on systems which
are supported by it. In some cases, if the simplified procedure fails, are supported by it. In some cases, if the simplified procedure fails,
you might need to use various non-default options, and maybe perform you might need to use various non-default options, and maybe perform
@ -49,7 +52,6 @@ sections if you need to.
SOURCE-DIR/configure SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory. 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 3. When `configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully 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 where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in. Emacs source code in the directory that `configure' is in.
To build in a separate directory, you must use a version of `make' (Do not try to build in a separate directory by creating many links to
that supports the `VPATH' variable, such as GNU `make'. 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 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 Lisp code you want Emacs to load before it is dumped out. Use

View file

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

View file

@ -441,8 +441,7 @@ AC_SUBST(PROFILING_CFLAGS)
AC_ARG_ENABLE(autodepend, AC_ARG_ENABLE(autodepend,
[AS_HELP_STRING([--enable-autodepend], [AS_HELP_STRING([--enable-autodepend],
[automatically generate dependencies to .h-files. [automatically generate dependencies to .h-files.
Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is Requires gcc, enabled if found.])],
found])],
[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes]) [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
AC_ARG_ENABLE(gtk-deprecation-warnings, AC_ARG_ENABLE(gtk-deprecation-warnings,
@ -659,6 +658,18 @@ Check `etc/MACHINES' for recognized configuration names.])
fi 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. #### Choose a compiler.
dnl Sets GCC=yes if using gcc. dnl Sets GCC=yes if using gcc.
@ -1526,27 +1537,16 @@ dnl AC_PROG_MAKE_SET is done by Automake.
DEPFLAGS= DEPFLAGS=
MKDEPDIR=":" MKDEPDIR=":"
deps_frag=deps.mk 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 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
AC_MSG_CHECKING([whether we are using GNU Make]) AC_MSG_CHECKING([whether gcc understands -MMD -MF])
HAVE_GNU_MAKE=no SAVE_CFLAGS="$CFLAGS"
testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'` CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
if test "x$testval" != x; then AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
HAVE_GNU_MAKE=yes CFLAGS="$SAVE_CFLAGS"
else test -f deps.d || ac_enable_autodepend=no
ac_enable_autodepend=no rm -rf deps.d
fi AC_MSG_RESULT([$ac_enable_autodepend])
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
if test $ac_enable_autodepend = yes; then if test $ac_enable_autodepend = yes; then
DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP' DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe. ## 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 * Installation Changes in Emacs 24.5
+++
** Building Emacs now requires GNU make.
* Startup Changes in Emacs 24.5 * 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. This is due to a bug in the bcopy implementation in openSUSE 10.3.
It is/will be fixed in an openSUSE update. 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 ** First execution
*** Emacs binary is not in executable format, and cannot be run. *** Emacs binary is not in executable format, and cannot be run.