[PATCH 2/3] Clean up: Makefile.in: Explicitly mark PHONY targets

Michael Witten mfwitten at gmail.com
Wed Jul 12 04:17:40 AWST 2017


This makefile is sprawling enough that there is more value in
placing `.PHONY' explicitly next to each phony target, rather
than trying to group all the phony targets together as
prerequisites to `.PHONY' target. In my experience, it's much
easier to know what's going on by being able to look at the
local, surrounding text.

Making this change helped discover numerous phony targets
that haven't even been marked as such until now.
---
 Makefile.in | 34 +++++++++++++++++++++++++++-------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index b7a4183..45092f4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -128,15 +128,19 @@ ifeq ($(SCPPROGRESS), 1)
 	CFLAGS+=-DPROGRESS_METER
 endif
 
+.PHONY: all
 all: $(TARGETS)
 
+.PHONY: strip
 strip: $(TARGETS)
 	$(STRIP) $^
 
 TARGETS_inst_=$(addprefix inst_, $(TARGETS_NAMES))
 
+.PHONY: install
 install: $(TARGETS_inst_)
 
+.PHONY: insmultidropbear
 insmultidropbear: dropbearmulti$(EXEEXT)
 	$(INSTALL) -d $(DESTDIR)$(sbindir)
 	-rm -f $(DESTDIR)$(sbindir)/dropbear$(EXEEXT)
@@ -144,7 +148,10 @@ insmultidropbear: dropbearmulti$(EXEEXT)
 	$(INSTALL) -d $(DESTDIR)$(mandir)/man8
 	$(INSTALL) -m 644 $(srcdir)/dropbear.8  $(DESTDIR)$(mandir)/man8/dropbear.8
 
-insmulti%: dropbearmulti$(EXEEXT)
+PROGRAMS_insmulti=$(addprefix insmulti, $(PROGRAMS))
+
+.PHONY: $(PROGRAMS_insmulti)
+$(filter-out insmultidropbear,$(PROGRAMS_insmulti)): insmulti%: dropbearmulti$(EXEEXT)
 	$(INSTALL) -d $(DESTDIR)$(bindir)
 	-rm -f $(DESTDIR)$(bindir)/$*$(EXEEXT) 
 	-ln -s $(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir)/$*$(EXEEXT) 
@@ -152,19 +159,22 @@ insmulti%: dropbearmulti$(EXEEXT)
 	if test -e $*.1; then $(INSTALL) -m 644 $*.1 $(DESTDIR)$(mandir)/man1/$*.1; fi
 
 # dropbear should go in sbin, so it needs a separate rule
+.PHONY: inst_dropbear
 inst_dropbear: dropbear$(EXEEXT)
 	$(INSTALL) -d $(DESTDIR)$(sbindir)
 	$(INSTALL) dropbear$(EXEEXT) $(DESTDIR)$(sbindir)
 	$(INSTALL) -d $(DESTDIR)$(mandir)/man8
 	$(INSTALL) -m 644 $(srcdir)/dropbear.8 $(DESTDIR)$(mandir)/man8/dropbear.8
 
-inst_%: %$(EXEEXT)
+.PHONY: $(TARGETS_inst_)
+$(filter-out inst_dropbear,$(TARGETS_inst_)): inst_%: %$(EXEEXT)
 	$(INSTALL) -d $(DESTDIR)$(bindir)
 	$(INSTALL) $*$(EXEEXT) $(DESTDIR)$(bindir)
 	$(INSTALL) -d $(DESTDIR)$(mandir)/man1
 	if test -e $*.1; then $(INSTALL) -m 644 $*.1 $(DESTDIR)$(mandir)/man1/$*.1; fi
 
-inst_dropbearmulti: $(addprefix insmulti, $(PROGRAMS)) 
+.PHONY: inst_dropbearmulti
+inst_dropbearmulti: $(PROGRAMS_insmulti)
 
 dropbear$(EXEEXT): $(HEADERS) $(dropbearobjs) $(LIBTOM_DEPS)
 	$(CC) $(LDFLAGS) -o $@ $(dropbearobjs) $(LIBTOM_LIBS) $(LIBS) @CRYPTLIB@
@@ -184,11 +194,16 @@ scp$(EXEEXT): $(HEADERS) $(scpobjs)
 dropbearmulti$(EXEEXT): $(HEADERS) $(dropbearmultiobjs) $(LIBTOM_DEPS)
 	$(CC) $(LDFLAGS) -o $@ $(dropbearmultiobjs) $(LIBTOM_LIBS) $(LIBS) @CRYPTLIB@
 
+.PHONY: multibinary
 multibinary: dropbearmulti$(EXEEXT)
 
-multilink: multibinary $(addprefix link, $(PROGRAMS))
+TARGETS_link=$(addprefix link, $(PROGRAMS))
+
+.PHONY: multilink
+multilink: multibinary $(TARGETS_link)
 
-link%:
+.PHONY: $(TARGETS_link)
+$(TARGETS_link): link%:
 	-rm -f $*$(EXEEXT)
 	-ln -s dropbearmulti$(EXEEXT) $*$(EXEEXT)
 
@@ -198,28 +213,33 @@ $(STATIC_LTC): options.h
 $(STATIC_LTM): options.h
 	$(MAKE) -C libtommath
 
-.PHONY : clean sizes thisclean distclean tidy ltc-clean ltm-clean
-
+.PHONY: ltc-clean
 ltc-clean:
 	$(MAKE) -C libtomcrypt clean
 
+.PHONY: ltm-clean
 ltm-clean:
 	$(MAKE) -C libtommath clean
 
+.PHONY: sizes
 sizes: dropbear
 	objdump -t dropbear|grep ".text"|cut -d "." -f 2|sort -rn
 
+.PHONY: clean
 clean: ltc-clean ltm-clean thisclean
 
+.PHONY: thisclean
 thisclean:
 	-rm -f dropbear$(EXEEXT) dbclient$(EXEEXT) dropbearkey$(EXEEXT) \
 			dropbearconvert$(EXEEXT) scp$(EXEEXT) scp-progress$(EXEEXT) \
 			dropbearmulti$(EXEEXT) *.o *.da *.bb *.bbg *.prof
 
+.PHONY: distclean
 distclean: clean tidy
 	-rm -f config.h
 	-rm -f Makefile
 
+.PHONY: tidy
 tidy:
 	-rm -f *~ *.gcov */*~
 
-- 
2.10.0



More information about the Dropbear mailing list