Commit f6dce6c1 authored by Glenn Morris's avatar Glenn Morris
Browse files

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.
parent 6730259f
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:
......
...@@ -24,6 +24,9 @@ find some things, or what options to use. ...@@ -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. ...@@ -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 ...@@ -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
......
...@@ -60,8 +60,8 @@ ...@@ -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.
......
...@@ -441,8 +441,7 @@ AC_SUBST(PROFILING_CFLAGS) ...@@ -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.]) ...@@ -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. ...@@ -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.
......
...@@ -24,6 +24,9 @@ otherwise leave it unmarked. ...@@ -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
......
...@@ -2544,27 +2544,6 @@ occurring with older versions of GCC (e.g. 3.3.5). ...@@ -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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment