aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-03-27 15:41:57 -0400
committerGlenn Morris2014-03-27 15:41:57 -0400
commitf6dce6c1d61bd1fd946f453c6fec30fa89e0181e (patch)
tree36fbc6945e87ef614475902c18358910e68f54ca
parent6730259fea22fcd4b7d28f3b57fef2d5776a2dad (diff)
downloademacs-f6dce6c1d61bd1fd946f453c6fec30fa89e0181e.tar.gz
emacs-f6dce6c1d61bd1fd946f453c6fec30fa89e0181e.zip
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.
-rw-r--r--ChangeLog5
-rw-r--r--INSTALL12
-rw-r--r--Makefile.in4
-rw-r--r--configure.ac44
-rw-r--r--etc/NEWS3
-rw-r--r--etc/PROBLEMS21
6 files changed, 37 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog
index d019c1e4893..b19428baa99 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
12014-03-27 Glenn Morris <rgm@gnu.org>
2
3 * configure.ac: Require GNU make.
4 (HAVE_GNU_MAKE): Remove.
5
12014-03-26 Paul Eggert <eggert@cs.ucla.edu> 62014-03-26 Paul Eggert <eggert@cs.ucla.edu>
2 7
3 Merge from gnulib, incorporating: 8 Merge from gnulib, incorporating:
diff --git a/INSTALL b/INSTALL
index e35d036809d..496c6c8c376 100644
--- a/INSTALL
+++ b/INSTALL
@@ -24,6 +24,9 @@ find some things, or what options to use.
24`src/config.h' file containing system-dependent definitions. 24`src/config.h' file containing system-dependent definitions.
25Running the `make' utility then builds the package for your system. 25Running the `make' utility then builds the package for your system.
26 26
27Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
28On most systems that Emacs supports, this is the default `make' program.
29
27Here's the procedure to build Emacs using `configure' on systems which 30Here's the procedure to build Emacs using `configure' on systems which
28are supported by it. In some cases, if the simplified procedure fails, 31are supported by it. In some cases, if the simplified procedure fails,
29you might need to use various non-default options, and maybe perform 32you might need to use various non-default options, and maybe perform
@@ -49,7 +52,6 @@ sections if you need to.
49 SOURCE-DIR/configure 52 SOURCE-DIR/configure
50 53
51 where SOURCE-DIR is the top-level Emacs source directory. 54 where SOURCE-DIR is the top-level Emacs source directory.
52 This may not work unless you use GNU make.
53 55
54 3. When `configure' finishes, it prints several lines of details 56 3. When `configure' finishes, it prints several lines of details
55 about the system configuration. Read those details carefully 57 about the system configuration. Read those details carefully
@@ -435,12 +437,8 @@ SOURCE-DIR refers to the top-level Emacs source directory which is
435where Emacs's configure script is located. `configure' looks for the 437where Emacs's configure script is located. `configure' looks for the
436Emacs source code in the directory that `configure' is in. 438Emacs source code in the directory that `configure' is in.
437 439
438To build in a separate directory, you must use a version of `make' 440(Do not try to build in a separate directory by creating many links to
439that supports the `VPATH' variable, such as GNU `make'. 441the real source directory--there is no need, and installation will fail.)
440
441(Do not try to build in a separate directory by creating many links
442to the real source directory--there is no need, and installation will
443fail.)
444 442
4454) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs 4434) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
446Lisp code you want Emacs to load before it is dumped out. Use 444Lisp code you want Emacs to load before it is dumped out. Use
diff --git a/Makefile.in b/Makefile.in
index be68df1fd6d..b2887472dd4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -60,8 +60,8 @@
60 60
61SHELL = @SHELL@ 61SHELL = @SHELL@
62 62
63# This may not work with certain non-GNU make's. It only matters when 63# This only matters when inheriting a CDPATH not starting with the
64# inheriting a CDPATH not starting with the current directory. 64# current directory.
65CDPATH= 65CDPATH=
66 66
67# If Make doesn't predefine MAKE, set it here. 67# If Make doesn't predefine MAKE, set it here.
diff --git a/configure.ac b/configure.ac
index a4a6125051c..73b385f28ca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -441,8 +441,7 @@ AC_SUBST(PROFILING_CFLAGS)
441AC_ARG_ENABLE(autodepend, 441AC_ARG_ENABLE(autodepend,
442[AS_HELP_STRING([--enable-autodepend], 442[AS_HELP_STRING([--enable-autodepend],
443 [automatically generate dependencies to .h-files. 443 [automatically generate dependencies to .h-files.
444 Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is 444 Requires gcc, enabled if found.])],
445 found])],
446[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes]) 445[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
447 446
448AC_ARG_ENABLE(gtk-deprecation-warnings, 447AC_ARG_ENABLE(gtk-deprecation-warnings,
@@ -659,6 +658,18 @@ Check `etc/MACHINES' for recognized configuration names.])
659fi 658fi
660 659
661 660
661AC_MSG_CHECKING([whether we are using GNU Make])
662testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
663if test "x$testval" != x; then
664 AC_MSG_RESULT([yes])
665else
666 AC_MSG_RESULT([no])
667 AC_MSG_ERROR([Building Emacs requires GNU make.
668If you have it installed under a name other than 'make',
669set the MAKE environment variable, and try again.])
670fi
671
672
662#### Choose a compiler. 673#### Choose a compiler.
663 674
664dnl Sets GCC=yes if using gcc. 675dnl Sets GCC=yes if using gcc.
@@ -1526,27 +1537,16 @@ dnl AC_PROG_MAKE_SET is done by Automake.
1526DEPFLAGS= 1537DEPFLAGS=
1527MKDEPDIR=":" 1538MKDEPDIR=":"
1528deps_frag=deps.mk 1539deps_frag=deps.mk
1529dnl check for GNU Make if we have GCC and autodepend is on. 1540dnl check if we have GCC and autodepend is on.
1530if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then 1541if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1531 AC_MSG_CHECKING([whether we are using GNU Make]) 1542 AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1532 HAVE_GNU_MAKE=no 1543 SAVE_CFLAGS="$CFLAGS"
1533 testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'` 1544 CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1534 if test "x$testval" != x; then 1545 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1535 HAVE_GNU_MAKE=yes 1546 CFLAGS="$SAVE_CFLAGS"
1536 else 1547 test -f deps.d || ac_enable_autodepend=no
1537 ac_enable_autodepend=no 1548 rm -rf deps.d
1538 fi 1549 AC_MSG_RESULT([$ac_enable_autodepend])
1539 AC_MSG_RESULT([$HAVE_GNU_MAKE])
1540 if test $HAVE_GNU_MAKE = yes; then
1541 AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1542 SAVE_CFLAGS="$CFLAGS"
1543 CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1544 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1545 CFLAGS="$SAVE_CFLAGS"
1546 test -f deps.d || ac_enable_autodepend=no
1547 rm -rf deps.d
1548 AC_MSG_RESULT([$ac_enable_autodepend])
1549 fi
1550 if test $ac_enable_autodepend = yes; then 1550 if test $ac_enable_autodepend = yes; then
1551 DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP' 1551 DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1552 ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe. 1552 ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
diff --git a/etc/NEWS b/etc/NEWS
index 7019619ee9b..2ddcf845b78 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -24,6 +24,9 @@ otherwise leave it unmarked.
24 24
25* Installation Changes in Emacs 24.5 25* Installation Changes in Emacs 24.5
26 26
27+++
28** Building Emacs now requires GNU make.
29
27 30
28* Startup Changes in Emacs 24.5 31* Startup Changes in Emacs 24.5
29 32
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 6978d79c636..58c2ceaf68c 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2544,27 +2544,6 @@ occurring with older versions of GCC (e.g. 3.3.5).
2544This is due to a bug in the bcopy implementation in openSUSE 10.3. 2544This is due to a bug in the bcopy implementation in openSUSE 10.3.
2545It is/will be fixed in an openSUSE update. 2545It is/will be fixed in an openSUSE update.
2546 2546
2547** Installation
2548
2549*** On Solaris, use GNU Make when installing an out-of-tree build
2550
2551The Emacs configuration process allows you to configure the
2552build environment so that you can build emacs in a directory
2553outside of the distribution tree. When installing Emacs from an
2554out-of-tree build directory on Solaris, you may need to use GNU
2555make. The make programs bundled with Solaris support the VPATH
2556macro but use it differently from the way the VPATH macro is
2557used by GNU make. The differences will cause the "make install"
2558step to fail, leaving you with an incomplete emacs
2559installation. GNU make is available in /usr/sfw/bin on Solaris
256010 and can be installed as /opt/sfw/bin/gmake from the Solaris 9
2561Software Companion CDROM.
2562
2563The problems due to the VPATH processing differences affect only
2564out of tree builds so, if you are on a Solaris installation
2565without GNU make, you can install Emacs completely by installing
2566from a build environment using the original emacs distribution tree.
2567
2568** First execution 2547** First execution
2569 2548
2570*** Emacs binary is not in executable format, and cannot be run. 2549*** Emacs binary is not in executable format, and cannot be run.