emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master bf8cf95: Streamline dependency-file generation


From: Paul Eggert
Subject: [Emacs-diffs] master bf8cf95: Streamline dependency-file generation
Date: Tue, 21 Mar 2017 12:59:36 -0400 (EDT)

branch: master
commit bf8cf95d7d13ebc5d351cc2a8048f6695ab9faca
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Streamline dependency-file generation
    
    * configure.ac (AUTODEPEND_PARENTS): New var.
    mkdir the dependency directories here, to simplify ‘make’.
    Remove dependency files just before outputting Makefiles, so that
    they are preserved if ‘configure’ exits early due to some other problem.
    * lib/Makefile.in, lwlib/Makefile.in, oldXMenu/Makefile.in:
    * src/Makefile.in: Adjust deps strategies to be similar, as follows:
    (MKDEPDIR): Remove.  All uses removed.  This cuts down on the
    number of processes spun off by ‘make’.
    (clean mostlyclean): Remove $(DEPDIR) contents, not $(DEPDIR) itself.
    (distclean): Remove $(DEPDIR) itself.
    * lwlib/Makefile.in (all): Move to front, so that depdir includes
    do not alter default action.
---
 configure.ac         | 13 ++++++++++---
 lib/Makefile.in      | 10 ++--------
 lwlib/Makefile.in    | 28 ++++++++++------------------
 oldXMenu/Makefile.in | 22 +++++++---------------
 src/Makefile.in      | 25 +++++++------------------
 5 files changed, 36 insertions(+), 62 deletions(-)

diff --git a/configure.ac b/configure.ac
index 48fcb3f..833aaa5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1730,6 +1730,7 @@ dnl AC_C_BIGENDIAN is done by gnulib.
 dnl check for Make feature
 
 AUTO_DEPEND=no
+AUTODEPEND_PARENTS='lib src'
 dnl check if we have GCC and autodepend is on.
 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
    AC_MSG_CHECKING([whether gcc understands -MMD -MF])
@@ -1742,9 +1743,6 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = 
yes; then
    AC_MSG_RESULT([$ac_enable_autodepend])
    if test $ac_enable_autodepend = yes; then
       AUTO_DEPEND=yes
-      for depdir in */deps; do
-       test ! -d "$depdir" || rm -fr "$depdir"/../*.o "$depdir" || exit
-      done
    fi
 fi
 AC_SUBST(AUTO_DEPEND)
@@ -5016,8 +5014,10 @@ if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; 
then
   LIBXMENU=
 elif test "$USE_X_TOOLKIT" = none; then
   LIBXMENU='$(oldXMenudir)/libXMenu11.a'
+  AUTODEPEND_PARENTS="$AUTODEPEND_PARENTS oldXMenu"
 else
   LIBXMENU='$(lwlibdir)/liblw.a'
+  AUTODEPEND_PARENTS="$AUTODEPEND_PARENTS lwlib"
 fi
 AC_SUBST(LIBXMENU)
 
@@ -5473,6 +5473,13 @@ ${MAKE-make} -s MAKEFILE_NAME=do-not-make-Makefile 
etc-emacsver || \
 AC_MSG_ERROR(['etc/refcards/emacsver.tex' could not be made.])
 ])
 
+if test $AUTO_DEPEND = yes; then
+   for dir in $AUTODEPEND_PARENTS; do
+     rm -f $dir/*.o $dir/deps/*
+     AS_MKDIR_P([$dir/deps])
+   done
+fi
+
 AC_OUTPUT
 
 if test ! "$with_mailutils"; then
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 4e51ac6..832704f 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -65,16 +65,12 @@ 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
@@ -90,10 +86,8 @@ 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)
@@ -118,10 +112,10 @@ TAGS: $(ETAGS) $(tagsfiles)
 .PHONY: $(ETAGS) tags
 
 clean mostlyclean:
-       rm -f *.[ao] \#*
-       -rm -rf $(DEPDIR)
+       rm -f *.[ao] \#* $(DEPDIR)/*
 distclean: clean
        rm -f Makefile $(BUILT_SOURCES)
+       rm -fr $(DEPDIR)
 bootstrap-clean: distclean
        rm -f TAGS
 maintainer-clean: bootstrap-clean
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in
index d6a8f50..ee7a204 100644
--- a/lwlib/Makefile.in
+++ b/lwlib/Makefile.in
@@ -22,6 +22,9 @@
 # This was taken from the output of Imake using Lucid's Imakefile.
 # and set up to be configured by ../configure.
 
+all: liblw.a
+.PHONY: all
+
 address@hidden@
 # MinGW CPPFLAGS may use this.
 address@hidden@
@@ -71,15 +74,14 @@ am__v_at_ = $(address@hidden@)
 am__v_at_0 = @
 am__v_at_1 =
 
-DEPDIR = deps
 AUTO_DEPEND = @AUTO_DEPEND@
-
+DEPDIR = deps
 ifeq ($(AUTO_DEPEND),yes)
-DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
-MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+  DEPFLAGS = -MMD -MF $(DEPDIR)/$*.d -MP
+  -include $(ALLOBJS:%.o=$(DEPDIR)/%.d)
 else
-DEPFLAGS =
-MKDEPDIR = :
+  DEPFLAGS =
+  include $(srcdir)/deps.mk
 endif
 
 ## ../src is where the generated file (config.h, globals.h) are.
@@ -94,11 +96,7 @@ ALL_CFLAGS= $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
   -Demacs -I../src \
   -I$(srcdir) -I$(srcdir)/../src -I../lib -I$(srcdir)/../lib
 
-all: liblw.a
-.PHONY: all
-
 .c.o:
-       @$(MKDEPDIR)
        $(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
 
 liblw.a: $(OBJS)
@@ -110,20 +108,14 @@ globals_h = ../src/globals.h
 $(globals_h):
        $(MAKE) -C ../src globals.h
 
-ifeq ($(AUTO_DEPEND),yes)
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
-else
-include $(srcdir)/deps.mk
-endif
-
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
 clean mostlyclean:
-       rm -f *.o liblw.a \#*
-       -rm -rf ${DEPDIR}
+       rm -f *.o liblw.a \#* $(DEPDIR)/*
 
 distclean: clean
        rm -f Makefile
+       rm -fr $(DEPDIR)
 
 bootstrap-clean maintainer-clean: distclean
        rm -f TAGS
diff --git a/oldXMenu/Makefile.in b/oldXMenu/Makefile.in
index 46061ab..7a5c998 100644
--- a/oldXMenu/Makefile.in
+++ b/oldXMenu/Makefile.in
@@ -111,15 +111,14 @@ am__v_at_ = $(address@hidden@)
 am__v_at_0 = @
 am__v_at_1 =
 
-DEPDIR = deps
 AUTO_DEPEND = @AUTO_DEPEND@
-
+DEPDIR = deps
 ifeq ($(AUTO_DEPEND),yes)
-DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
-MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+  DEPFLAGS = -MMD -MF $(DEPDIR)/$*.d -MP
+  -include $(ALLOBJS:%.o=$(DEPDIR)/%.d)
 else
-DEPFLAGS =
-MKDEPDIR = :
+  DEPFLAGS =
+  include $(srcdir)/deps.mk
 endif
 
 ALL_CFLAGS=$(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
@@ -129,7 +128,6 @@ ALL_CFLAGS=$(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
   -I../src -I../lib -I${srcdir} -I${srcdir}/../src -I${srcdir}/../lib
 
 .c.o:
-       @$(MKDEPDIR)
        $(AM_V_CC)$(CC) -c ${ALL_CFLAGS} $<
 
 libXMenu11.a: $(OBJS) $(EXTRA)
@@ -137,20 +135,14 @@ libXMenu11.a: $(OBJS) $(EXTRA)
        $(AM_V_at)$(AR) $(ARFLAGS) $@ $(OBJS) $(EXTRA)
        $(AM_V_at)$(RANLIB) $@
 
-ifeq ($(AUTO_DEPEND),yes)
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
-else
-include $(srcdir)/deps.mk
-endif
-
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
 clean mostlyclean:
-       rm -f libXMenu11.a *.o
-       -rm -rf ${DEPDIR}
+       rm -f libXMenu11.a *.o $(DEPDIR)/*
 
 bootstrap-clean maintainer-clean distclean: clean
        rm -f Makefile
+       rm -fr $(DEPDIR)
 
 ETAGS = ../lib-src/etags${EXEEXT}
 
diff --git a/src/Makefile.in b/src/Makefile.in
index 60aa686..5a3d0bd 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -347,15 +347,14 @@ am__v_at_ = $(address@hidden@)
 am__v_at_0 = @
 am__v_at_1 =
 
-DEPDIR=deps
 AUTO_DEPEND = @AUTO_DEPEND@
-
+DEPDIR = deps
 ifeq ($(AUTO_DEPEND),yes)
-DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP
-MKDEPDIR = ${MKDIR_P} ${DEPDIR}
+  DEPFLAGS = -MMD -MF $(DEPDIR)/$*.d -MP
+  -include $(ALLOBJS:%.o=$(DEPDIR)/%.d)
 else
-DEPFLAGS =
-MKDEPDIR = :
+  DEPFLAGS =
+  include $(srcdir)/deps.mk
 endif
 
 # Flags that might be in WARN_CFLAGS but are not valid for Objective C.
@@ -383,10 +382,8 @@ ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \
 
 .SUFFIXES: .m
 .c.o:
-       @$(MKDEPDIR)
        $(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $(PROFILING_CFLAGS) $<
 .m.o:
-       @$(MKDEPDIR)
        $(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $(PROFILING_CFLAGS) $<
 
 ## lastfile must follow all files whose initialized data areas should
@@ -650,8 +647,7 @@ mostlyclean:
        rm -f globals.h gl-stamp
        rm -f *.res *.tmp
 clean: mostlyclean
-       rm -f emacs-*.*.*$(EXEEXT) emacs$(EXEEXT)
-       -rm -rf $(DEPDIR)
+       rm -f emacs-*.*.*$(EXEEXT) emacs$(EXEEXT) $(DEPDIR)/*
 
 ## bootstrap-clean is used to clean up just before a bootstrap.
 ## It should remove all files generated during a compilation/bootstrap,
@@ -666,6 +662,7 @@ bootstrap-clean: clean
 
 distclean: bootstrap-clean
        rm -f Makefile lisp.mk
+       rm -fr $(DEPDIR)
 
 maintainer-clean: distclean
        rm -f TAGS
@@ -755,11 +752,3 @@ else
 endif
        @: Compile some files earlier to speed up further compilation.
        $(MAKE) -C ../lisp compile-first EMACS="$(bootstrap_exe)"
-
-ifeq ($(AUTO_DEPEND),yes)
--include $(ALLOBJS:%.o=${DEPDIR}/%.d)
-else
-include $(srcdir)/deps.mk
-endif
-
-### Makefile.in ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]