From f6dce6c1d61bd1fd946f453c6fec30fa89e0181e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 27 Mar 2014 15:41:57 -0400 Subject: [PATCH] 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. --- ChangeLog | 5 +++++ INSTALL | 12 +++++------- Makefile.in | 4 ++-- configure.ac | 44 ++++++++++++++++++++++---------------------- etc/NEWS | 3 +++ etc/PROBLEMS | 21 --------------------- 6 files changed, 37 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index d019c1e489..b19428baa9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-03-27 Glenn Morris + + * configure.ac: Require GNU make. + (HAVE_GNU_MAKE): Remove. + 2014-03-26 Paul Eggert Merge from gnulib, incorporating: diff --git a/INSTALL b/INSTALL index e35d036809..496c6c8c37 100644 --- a/INSTALL +++ b/INSTALL @@ -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, . +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 diff --git a/Makefile.in b/Makefile.in index be68df1fd6..b2887472dd 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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. diff --git a/configure.ac b/configure.ac index a4a6125051..73b385f28c 100644 --- a/configure.ac +++ b/configure.ac @@ -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. diff --git a/etc/NEWS b/etc/NEWS index 7019619ee9..2ddcf845b7 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -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 diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 6978d79c63..58c2ceaf68 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -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. -- 2.20.1