]> git.eshelyaron.com Git - emacs.git/commitdiff
Streamline dependency-file generation
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Mar 2017 16:59:10 +0000 (09:59 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Mar 2017 16:59:31 +0000 (09:59 -0700)
* 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
lib/Makefile.in
lwlib/Makefile.in
oldXMenu/Makefile.in
src/Makefile.in

index 48fcb3f33aa0691c578593714ce34a838e74a4cc..833aaa5eb27d967f7653b4aa4e751ba9d774c6a3 100644 (file)
@@ -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
index 4e51ac6b0297753d35b12b65a86c963e82ac899e..832704f3a8d95af27a8e023b3f7bc13727d249f7 100644 (file)
@@ -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
index d6a8f50ce747d71437b414162cbec82bcb662dad..ee7a2040e890e5bb1ecad15250ba743d5c6ce247 100644 (file)
@@ -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
+
 srcdir=@srcdir@
 # MinGW CPPFLAGS may use this.
 abs_top_srcdir=@abs_top_srcdir@
@@ -71,15 +74,14 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 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
index 46061ab7ae45a2783f2daf1fc77c3000247dc56a..7a5c998592047064e176c2bd642a577d5fac998d 100644 (file)
@@ -111,15 +111,14 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 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}
 
index 60aa6866718a3fac5bce2427099bd9f432d1853a..5a3d0bd0445a3c2c6ac8c18b3500d020b1859e93 100644 (file)
@@ -347,15 +347,14 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 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