• Paul Eggert's avatar
    Switch from Automake to GNU Make · 65faa7bc
    Paul Eggert authored
    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.
    65faa7bc
copyright 23.9 KB