summaryrefslogtreecommitdiff
path: root/autogen.sh
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2017-03-17 11:33:47 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2017-03-17 11:42:34 -0700
commit65faa7bcb59421603ed2b6e961fe4b9ea8cb91b9 (patch)
tree7081fb93f2e3faec4481ff390f26eb198c013736 /autogen.sh
parent9c07e888a7d226f9d84a859b5179b5bc2fd6614d (diff)
downloademacs-65faa7bcb59421603ed2b6e961fe4b9ea8cb91b9.tar.gz
Switch from Automake to GNU Make
Emacs assumes GNU Make, and GNU Make has much of the functionality of Automake built-in. The Emacs build process uses Automake primarily because Emacs uses some Gnulib code and Gnulib formerly required Automake. Now that Gnulib no longer requires Automake, Emacs can stop using Automake and this should simplify Emacs maintenance in the future (Bug#26100). Although this patch may look long, most of it is generated automatically: the changes to build-aux/config.guess, build-aux/config.sub, build-aux/install-sh, and lib/gnulib.mk.in are all done by admin/merge-gnulib. * .gitignore: Remove build-aux/ar-lib, build-aux/compile, build-aux/config.guess, build-aux/config.sub, build-aux/depcomp, build-aux/install-sh, build-aux/missing, and lib/Makefile.in, as they are no longer built by autogen.sh. Add lib/gnulib.mk, as it is now built by 'configure'. Remove nt/gnulib.mk, as it is no longer built by 'make'. * INSTALL.REPO, README, admin/make-tarball.txt: Remove mention of Automake. * Makefile.in (AUTOCONF, AUTOMAKE, AUTOHEADER, ACLOCAL, lib) (AUTOCONF_INPUTS, ACLOCAL_PATH, ACLOCAL_INPUTS) ($(srcdir)/aclocal.m4, AUTOMAKE_INPUTS) ($(srcdir)/lib/Makefile.in, $(srcdir)/nt/gnulib.mk, am--refresh): Remove. ($(MAKEFILE_NAME)): Depend on lib/gnulib.mk.in. ($(srcdir)/configure, $(srcdir)/src/stamp-h.in) ($(srcdir)/src/config.in): Use autogen.sh instead of doing it by hand. * admin/merge-gnulib (AVOIDED_MODULES, avoided_flags)): New vars, to simplify processing of avoided modules. (GNULIB_TOOL_FLAGS): Move --avoid flags into AVOIDED_MODULES. Add --gnu-make, and change makefile name to gnulib.mk.in. Copy config.guess, config.sub, and install-sh too, since Automake no longer does that for us. * admin/notes/copyright: * admin/update_autogen (genfiles): Update list of files. Remove hack for nt/gnulib.mk, a file that is no longer needed. * autogen.sh (progs): Remove Automake. (automake_min): Remove. Build aclocal.m4 so that autoreconf need not use aclocal. * build-aux/config.guess, build-aux/config.sub: * build-aux/install-sh: New files, copied from Gnulib. These are now updated by admin/merge-gnulib instead by autogen.sh. * configure.ac (AC_PROG_MAKE_SET, ACLOCAL_PATH, AM_CONDITIONAL): Remove. (AM_INIT_AUTOMAKE, AM_SILENT_RULES): Remove call. (AC_PROG_CC_C_O): Call this instead of AM_PROG_CC_C_O. (BUILDING_FOR_WINDOWSNT, HYBRID_MALLOC_LIB): Remove; no longer needed. (--disable-silent-rules): New option, since Automake no longer does this for us. (AM_V, AM_DEFAULT_V): Set unconditionally, and do not bother with AM_SUBST_NOTMAKE. (AC_PROG_INSTALL): Add call. (MAKEINFO): Do not bother with the 'missing' program. (MAKEINFO, SYSTEM_TYPE): AC_SUBST. (AC_CONFIG_FILES): Add Makefile, lib/gnulib.mk. (SUBDIR_MAKEFILES): Remove duplication. * lib/Makefile.am: Remove, replacing with: * lib/Makefile.in: New file, with the old Makefile.am contents and with the following changes: (AUTOMAKE_OPTIONS, BUILT_SOURCES, CLEANFILES, EXTRA_DIST) (MOSTLYCLEANDIRS, MOSTLYCLEANFILES, noinst_LIBRARIES, SUFFIXES) (AM_CFLAGS, DEFAULT_INCLUDES, libegnu_a_SOURCES, libegnu_a_LIBADD) (EXTRA_libegnu_a_SOURCES, libegnu_a_SHORTNAME, libegnu_a_CPPFLAGS): Remove. (VPATH, abs_top_builddir, top_builddir, top_srcdir, all, AM_V_AR) (AM_V_CC, AM_V_GEN, AM_V_at, DEPDIR, DEPFLAGS, MKDEPDIR, SYSTEM_TYPE) (libgnu.a, libegnu.a, ETAGS, $(ETAGS), tags, TAGS, clean) (mostlyclean, distclean, bootstrap-clean, maintainer-clean): New macros and rules, since Automake no longer does them. Include ../nt/gnulib-cfg.mk if SYSTEM_TYPE is windows-nt, instead of including ../nt/gnulib.mk if BUILDING_FOR_WINDOWS_NT. Include dependency files if AUTO_DEPEND. (ALL_CFLAGS, AUTOCONF_INPUTS, libgnu_a_OBJECTS, libegnu_a_OBJECTS): New macros. (bootstrap-clean): Depend on distclean, not maintainer-clean, and remove gnulib.mk. (AUTOCONF_INPUTS, $(top_srcdir)/configure, ../config.status, Makefile): New macros and rules, copied from ../Makefile.in. ($(libegnu_a_OBJECTS), $(libgnu_a_OBJECTS)): Depend on BUILT_SOURCES. (.c.o, e-%.o): New generic rules. * lib/gnulib.mk: Remove. * lib/gnulib.mk.in: New file, which is built by autogen.sh and contains much of what used to be in lib/gnulib.mk. * m4/gnulib-common.m4: Copy from gnulib. * make-dist: Do not distribute build-aux/compile, build-aux/depcomp, build-aux/missing, build-aux/ar-lib, lib/Makefile.am, nt/gnulib.mk, nt/gnulib-modules-to-delete.cfg. Distribute lib/Makefile.in, lib/gnulib.mk.in, and nt/gnulib-cfg.mk instead. * nt/Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0) (am__v_GEN_1, ${srcdir}/gnulib.mk): Remove. * nt/gnulib-cfg.mk: New file, which supersedes ... * nt/gnulib-modules-to-delete.cfg: ... this file, which is removed. * src/Makefile.in (ACLOCAL_INPUTS): Remove. (AUTOCONF_INPUTS): Merge ACLOCAL_INPUTS into it. ($(top_srcdir)/configure, ../config.status, config.in Makefile): Defer to parent Makefile.
Diffstat (limited to 'autogen.sh')
-rwxr-xr-xautogen.sh30
1 files changed, 15 insertions, 15 deletions
diff --git a/autogen.sh b/autogen.sh
index bb3f8185f79..f8e71cb747a 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -32,15 +32,11 @@
## Tools we need:
## Note that we respect the values of AUTOCONF etc, like autoreconf does.
-progs="autoconf automake"
+progs="autoconf"
## Minimum versions we need:
autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
-## This will need improving if more options are ever added to the
-## AM_INIT_AUTOMAKE call.
-automake_min=`sed -n 's/^ *AM_INIT_AUTOMAKE(\([0-9\.]*\)).*/\1/p' configure.ac`
-
## $1 = program, eg "autoconf".
## Echo the version string, eg "2.59".
@@ -75,7 +71,7 @@ minor_version ()
## Return 3 for unexpected error (eg failed to parse version).
check_version ()
{
- ## Respect eg $AUTOMAKE if it is set, like autoreconf does.
+ ## Respect, e.g., $AUTOCONF if it is set, like autoreconf does.
uprog=`echo $1 | sed -e 's/-/_/g' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
eval uprog=\$${uprog}
@@ -131,7 +127,7 @@ case $do_autoconf,$do_git in
do_autoconf=true;;
esac
-# Generate Autoconf and Automake related files, if requested.
+# Generate Autoconf-related files, if requested.
if $do_autoconf; then
@@ -229,19 +225,23 @@ Please report any problems with this script to bug-gnu-emacs@gnu.org .'
fi # do_check
- ## Create nt/gnulib.mk if it doesn't exist, as autoreconf will need it.
- if test ! -f nt/gnulib.mk; then
- echo 'Inferring nt/gnulib.mk from lib/gnulib.mk ...'
- metascript='/^[^#]/s|^.*$|/^## begin *gnulib module &/,/^## end *gnulib module &/d|p'
- script=`sed -n "$metascript" nt/gnulib-modules-to-delete.cfg` || exit
- sed "$script" lib/gnulib.mk > nt/gnulib.mk || exit
- fi
+ # Build aclocal.m4 here so that autoreconf need not use aclocal.
+ # aclocal is part of Automake and might not be installed, and
+ # autoreconf skips aclocal if aclocal.m4 is already supplied.
+ ls m4/*.m4 | LC_ALL=C sort | sed 's,.*\.m4$,m4_include([&]),' \
+ > aclocal.m4.tmp || exit
+ if cmp -s aclocal.m4.tmp aclocal.m4; then
+ rm -f aclocal.m4.tmp
+ else
+ echo "Building aclocal.m4 ..."
+ mv aclocal.m4.tmp aclocal.m4
+ fi || exit
echo "Running 'autoreconf -fi -I m4' ..."
## Let autoreconf figure out what, if anything, needs doing.
## Use autoreconf's -f option in case autoreconf itself has changed.
- autoreconf -fi -I m4 || exit $?
+ autoreconf -fi -I m4 || exit
## Create a timestamp, so that './autogen.sh; make' doesn't
## cause 'make' to needlessly run 'autoheader'.