Use a stamp file for init.c
authorTom Tromey <tom@tromey.com>
Mon, 2 Jul 2018 13:03:13 +0000 (07:03 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 9 Jul 2018 14:03:49 +0000 (08:03 -0600)
This introduces a stamp file for init.c.  This prevents constant
rebuilds of init.o, by arranging for init.c to only be modified when
its contents change.  (FWIW this is a standard idiom in use by
Automake and by gdb itself for many years.)

gdb/ChangeLog
2018-07-09  Tom Tromey  <tom@tromey.com>

* Makefile.in (init.c): Depend on stamp-init.
(stamp-init): New rule, from init.c rule.
(clean mostlyclean): Remove stamp-init.

gdb/ChangeLog
gdb/Makefile.in

index 93f972b36aa6f53369630142eaf8511ff0879163..7e39800cfd4e8bc493a7b823a22391c27438d2d3 100644 (file)
@@ -1,3 +1,9 @@
+2018-07-09  Tom Tromey  <tom@tromey.com>
+
+       * Makefile.in (init.c): Depend on stamp-init.
+       (stamp-init): New rule, from init.c rule.
+       (clean mostlyclean): Remove stamp-init.
+
 2018-07-09  Tom Tromey  <tom@tromey.com>
 
        * Makefile.in (INIT_FILES): Remove CONFIG_SRCS,
index b35ca2e7aefa06625bc8339ab62ce217867bd7da..d14e86727b8a937c1779ab9b807c40bb796b9651 100644 (file)
@@ -1849,7 +1849,8 @@ test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY)
 # in sub-directories such as cli/ and mi/.
 
 INIT_FILES = $(COMMON_OBS)
-init.c: $(INIT_FILES)
+init.c: stamp-init; @true
+stamp-init: $(INIT_FILES)
        @$(ECHO_INIT_C) echo "Making init.c"
        @rm -f init.c-tmp init.l-tmp
        @touch init.c-tmp
@@ -1879,8 +1880,8 @@ init.c: $(INIT_FILES)
        @echo '{' >>init.c-tmp
        @sed -e 's/\(.*\)/  _initialize_\1 ();/' <init.l-tmp >>init.c-tmp
        @echo '}' >>init.c-tmp
-       @rm init.l-tmp
-       @mv init.c-tmp init.c
+       @$(SHELL) $(srcdir)/../move-if-change init.c-tmp init.c
+       @echo stamp > stamp-init
 
 .PRECIOUS: init.c
 
@@ -1947,7 +1948,7 @@ tags: TAGS
 clean mostlyclean: $(CONFIG_CLEAN)
        @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do
        rm -f *.o *.a $(ADD_FILES) *~ init.c-tmp init.l-tmp version.c-tmp
-       rm -f init.c version.c
+       rm -f init.c stamp-init version.c
        rm -f gdb$(EXEEXT) core make.log
        rm -f gdb[0-9]$(EXEEXT)
        rm -f test-cp-name-parser$(EXEEXT)