diff options
| author | Glenn Morris | 2014-03-27 15:41:57 -0400 |
|---|---|---|
| committer | Glenn Morris | 2014-03-27 15:41:57 -0400 |
| commit | f6dce6c1d61bd1fd946f453c6fec30fa89e0181e (patch) | |
| tree | 36fbc6945e87ef614475902c18358910e68f54ca | |
| parent | 6730259fea22fcd4b7d28f3b57fef2d5776a2dad (diff) | |
| download | emacs-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-- | ChangeLog | 5 | ||||
| -rw-r--r-- | INSTALL | 12 | ||||
| -rw-r--r-- | Makefile.in | 4 | ||||
| -rw-r--r-- | configure.ac | 44 | ||||
| -rw-r--r-- | etc/NEWS | 3 | ||||
| -rw-r--r-- | etc/PROBLEMS | 21 |
6 files changed, 37 insertions, 52 deletions
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-03-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * configure.ac: Require GNU make. | ||
| 4 | (HAVE_GNU_MAKE): Remove. | ||
| 5 | |||
| 1 | 2014-03-26 Paul Eggert <eggert@cs.ucla.edu> | 6 | 2014-03-26 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 7 | ||
| 3 | Merge from gnulib, incorporating: | 8 | Merge from gnulib, incorporating: |
| @@ -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. |
| 25 | Running the `make' utility then builds the package for your system. | 25 | Running the `make' utility then builds the package for your system. |
| 26 | 26 | ||
| 27 | Building Emacs requires GNU make, <http://www.gnu.org/software/make/>. | ||
| 28 | On most systems that Emacs supports, this is the default `make' program. | ||
| 29 | |||
| 27 | Here's the procedure to build Emacs using `configure' on systems which | 30 | Here's the procedure to build Emacs using `configure' on systems which |
| 28 | are supported by it. In some cases, if the simplified procedure fails, | 31 | are supported by it. In some cases, if the simplified procedure fails, |
| 29 | you might need to use various non-default options, and maybe perform | 32 | you 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 | |||
| 435 | where Emacs's configure script is located. `configure' looks for the | 437 | where Emacs's configure script is located. `configure' looks for the |
| 436 | Emacs source code in the directory that `configure' is in. | 438 | Emacs source code in the directory that `configure' is in. |
| 437 | 439 | ||
| 438 | To 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 |
| 439 | that supports the `VPATH' variable, such as GNU `make'. | 441 | the 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 | ||
| 442 | to the real source directory--there is no need, and installation will | ||
| 443 | fail.) | ||
| 444 | 442 | ||
| 445 | 4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs | 443 | 4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs |
| 446 | Lisp code you want Emacs to load before it is dumped out. Use | 444 | Lisp 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 | ||
| 61 | SHELL = @SHELL@ | 61 | SHELL = @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. |
| 65 | CDPATH= | 65 | CDPATH= |
| 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) | |||
| 441 | AC_ARG_ENABLE(autodepend, | 441 | AC_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 | ||
| 448 | AC_ARG_ENABLE(gtk-deprecation-warnings, | 447 | AC_ARG_ENABLE(gtk-deprecation-warnings, |
| @@ -659,6 +658,18 @@ Check `etc/MACHINES' for recognized configuration names.]) | |||
| 659 | fi | 658 | fi |
| 660 | 659 | ||
| 661 | 660 | ||
| 661 | AC_MSG_CHECKING([whether we are using GNU Make]) | ||
| 662 | testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'` | ||
| 663 | if test "x$testval" != x; then | ||
| 664 | AC_MSG_RESULT([yes]) | ||
| 665 | else | ||
| 666 | AC_MSG_RESULT([no]) | ||
| 667 | AC_MSG_ERROR([Building Emacs requires GNU make. | ||
| 668 | If you have it installed under a name other than 'make', | ||
| 669 | set the MAKE environment variable, and try again.]) | ||
| 670 | fi | ||
| 671 | |||
| 672 | |||
| 662 | #### Choose a compiler. | 673 | #### Choose a compiler. |
| 663 | 674 | ||
| 664 | dnl Sets GCC=yes if using gcc. | 675 | dnl Sets GCC=yes if using gcc. |
| @@ -1526,27 +1537,16 @@ dnl AC_PROG_MAKE_SET is done by Automake. | |||
| 1526 | DEPFLAGS= | 1537 | DEPFLAGS= |
| 1527 | MKDEPDIR=":" | 1538 | MKDEPDIR=":" |
| 1528 | deps_frag=deps.mk | 1539 | deps_frag=deps.mk |
| 1529 | dnl check for GNU Make if we have GCC and autodepend is on. | 1540 | dnl check if we have GCC and autodepend is on. |
| 1530 | if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then | 1541 | if 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. |
| @@ -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). | |||
| 2544 | This is due to a bug in the bcopy implementation in openSUSE 10.3. | 2544 | This is due to a bug in the bcopy implementation in openSUSE 10.3. |
| 2545 | It is/will be fixed in an openSUSE update. | 2545 | It 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 | |||
| 2551 | The Emacs configuration process allows you to configure the | ||
| 2552 | build environment so that you can build emacs in a directory | ||
| 2553 | outside of the distribution tree. When installing Emacs from an | ||
| 2554 | out-of-tree build directory on Solaris, you may need to use GNU | ||
| 2555 | make. The make programs bundled with Solaris support the VPATH | ||
| 2556 | macro but use it differently from the way the VPATH macro is | ||
| 2557 | used by GNU make. The differences will cause the "make install" | ||
| 2558 | step to fail, leaving you with an incomplete emacs | ||
| 2559 | installation. GNU make is available in /usr/sfw/bin on Solaris | ||
| 2560 | 10 and can be installed as /opt/sfw/bin/gmake from the Solaris 9 | ||
| 2561 | Software Companion CDROM. | ||
| 2562 | |||
| 2563 | The problems due to the VPATH processing differences affect only | ||
| 2564 | out of tree builds so, if you are on a Solaris installation | ||
| 2565 | without GNU make, you can install Emacs completely by installing | ||
| 2566 | from 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. |