This fixes some minor problems introduced in the recent switch to GNU Make, discovered by further testing. Without some of these changes 'make -j' would sometimes have race conditions caused by missing dependencies. (Bug#26100) * .gitignore: Remove src/stamp-h.in, src/stamp-h1. * Makefile.in ($(MAKEFILE_NAME)): Depend on configure, not src/config.in, since the former's timestamp now represents the latter's. ($(srcdir)/configure): Use plain ./autogen.sh, for consistency with other autogen.sh invocations. ($(srcdir)/src/stamp-h.in): Remove rule, as this file is no longer created. * Makefile.in (top_distclean): * src/Makefile.in (bootstrap-clean): No need to remove stamp-h1, as that was an Automake byproduct and Automake is no longer in use. * lib/Makefile.in, src/Makefile.in: (AUTOCONF_INPUTS, $(top_srcdir)/configure): Remove. (../config.status, Makefile): Simplify by limiting dependencies to files we care about and files in the repository, and by using just one file to represent the timestamps on multiple targets updated by the same rule. * autogen.sh: Do not create or use src/stamp-h.in. Instead, have 'find' test the two output files directly.
133 lines
3.6 KiB
Makefile
133 lines
3.6 KiB
Makefile
### @configure_input@
|
|
|
|
# Copyright 2017 Free Software Foundation, Inc.
|
|
|
|
# This file is part of GNU Emacs.
|
|
|
|
# GNU Emacs is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# GNU Emacs is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
VPATH = @srcdir@
|
|
|
|
# Variables substituted by 'configure', and not autogenerated in gnulib.mk,
|
|
# or needed before gnulib.mk is included.
|
|
abs_top_srcdir = @abs_top_srcdir@
|
|
top_builddir = @top_builddir@
|
|
top_srcdir = @top_srcdir@
|
|
|
|
all:
|
|
.PHONY: all
|
|
|
|
# 'make' verbosity.
|
|
AM_V_AR = $(am__v_AR_@AM_V@)
|
|
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
|
am__v_AR_0 = @echo " AR " $@;
|
|
am__v_AR_1 =
|
|
|
|
AM_V_CC = $(am__v_CC_@AM_V@)
|
|
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
|
am__v_CC_0 = @echo " CC " $@;
|
|
am__v_CC_1 =
|
|
|
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
|
am__v_GEN_0 = @echo " GEN " $@;
|
|
am__v_GEN_1 =
|
|
|
|
AM_V_at = $(am__v_at_@AM_V@)
|
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
|
am__v_at_0 = @
|
|
am__v_at_1 =
|
|
|
|
ALL_CFLAGS= \
|
|
$(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) $(DEPFLAGS) \
|
|
$(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS) $(PROFILING_CFLAGS) $(CFLAGS) \
|
|
-I. -I../src -I$(srcdir) -I$(srcdir)/../src \
|
|
$(if $(patsubst e-%,,$(notdir $<)),,-Demacs)
|
|
|
|
SYSTEM_TYPE = @SYSTEM_TYPE@
|
|
ifeq ($(SYSTEM_TYPE),windows-nt)
|
|
include ../nt/gnulib-cfg.mk
|
|
endif
|
|
include gnulib.mk
|
|
ifneq ($(SYSTEM_TYPE),windows-nt)
|
|
libgnu_a_SOURCES += openat-die.c save-cwd.c
|
|
endif
|
|
|
|
# Dependencies. When !AUTO_DEPEND, don't bother with a dependencies file,
|
|
# as the default dependencies are often adequate.
|
|
DEPDIR = deps
|
|
ifeq ($(AUTO_DEPEND),yes)
|
|
DEPFLAGS = -MMD -MF $(DEPDIR)/$*.d -MP
|
|
MKDEPDIR = $(MKDIR_P) $(DEPDIR)
|
|
-include $(ALLOBJS:%.o=$(DEPDIR)/%.d)
|
|
else
|
|
DEPFLAGS =
|
|
MKDEPDIR = :
|
|
endif
|
|
|
|
.PRECIOUS: ../config.status Makefile
|
|
../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
|
|
$(MAKE) -C .. $(notdir $@)
|
|
Makefile: ../config.status $(srcdir)/Makefile.in
|
|
$(MAKE) -C .. src/$@
|
|
|
|
libgnu_a_OBJECTS = $(gl_LIBOBJS) \
|
|
$(patsubst %.c,%.o,$(filter %.c,$(libgnu_a_SOURCES)))
|
|
libegnu_a_OBJECTS = $(patsubst %.o,e-%.o,$(libgnu_a_OBJECTS))
|
|
|
|
$(libegnu_a_OBJECTS) $(libgnu_a_OBJECTS): $(BUILT_SOURCES)
|
|
|
|
.c.o:
|
|
@$(MKDEPDIR)
|
|
$(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
|
|
e-%.o: %.c
|
|
@$(MKDEPDIR)
|
|
$(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) -Demacs -o $@ $<
|
|
|
|
all: libgnu.a $(if $(HYBRID_MALLOC),libegnu.a)
|
|
|
|
libgnu.a: $(libgnu_a_OBJECTS)
|
|
$(AM_V_at)rm -f $@
|
|
$(AM_V_AR)$(AR) $(ARFLAGS) $@ $(libgnu_a_OBJECTS)
|
|
$(AM_V_at)$(RANLIB) $@
|
|
|
|
libegnu.a: $(libegnu_a_OBJECTS)
|
|
$(AM_V_at)rm -f $@
|
|
$(AM_V_AR)$(AR) $(ARFLAGS) $@ $(libegnu_a_OBJECTS)
|
|
$(AM_V_at)$(RANLIB) $@
|
|
|
|
ETAGS = ../lib-src/etags$(EXEEXT)
|
|
$(ETAGS):
|
|
$(MAKE) -C $(dir $@) $(notdir $@)
|
|
tagsfiles= $(wildcard $(srcdir)/*.[ch])
|
|
tags: TAGS
|
|
TAGS: $(ETAGS) $(tagsfiles)
|
|
$(ETAGS) $(tagsfiles)
|
|
.PHONY: $(ETAGS) tags
|
|
|
|
clean mostlyclean:
|
|
rm -f *.[ao] \#*
|
|
-rm -rf $(DEPDIR)
|
|
distclean: clean
|
|
rm -f Makefile $(BUILT_SOURCES)
|
|
bootstrap-clean: distclean
|
|
rm -f TAGS
|
|
maintainer-clean: bootstrap-clean
|
|
rm -f gnulib.mk
|
|
.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
|
|
|
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
.NOEXPORT:
|