mkm3u: Produce makefile fragments for tracking dependencies.
[epls] / Makefile
index 33136ba..316f3ea 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,9 @@ all:
 clean::; rm -f $(CLEANFILES)
 realclean::; rm -f $(REALCLEANFILES)
 force:
-.PHONY: all clean
+.PHONY: all clean force
 .SECONDEXPANSION: # not sorry
+SHELL = bash
 
 V                      ?= 0
 V_AT                    = $(V_AT_$V)
@@ -178,7 +179,9 @@ $(call declare-playlist, drwho-war-games, D/Doctor Who/S06E07 ZZ. The War Games)
 $(call declare-playlist, drwho-silurians, D/Doctor Who/S07E02 BBB. Doctor Who and the Silurians)
 
 M3US                    = $(addsuffix .m3u8,$(PLAYLISTS))
+DEPFILES               += $(addsuffix .dep,$(PLAYLISTS))
 TARGETS                        += $(M3US)
+CLEANFILES             += $(DEPFILES)
 
 CLEANFILES             += mkm3u.cache-stamp
 mkm3u.cache-stamp:
@@ -190,7 +193,7 @@ mkm3u.cache-stamp:
 CLEANFILES             += *.m3u8.new
 $(M3US): %.m3u8: $$($$*_EPLS) mkm3u mkm3u.cache-stamp
        $(call v-tag,MKM3U)./mkm3u $(MKM3UFLAGS) $($*_MKM3UFLAGS) \
-               "$<" >"$@.new" && mv "$@.new" "$@"
+               -M$*.dep -O$@ -o"$@.new" "$<" && mv "$@.new" "$@"
 
 CHECKS                  = $(foreach p,$(PLAYLISTS), check/$p)
 check: $(CHECKS)
@@ -236,6 +239,14 @@ $(FORCE_SAVE): force-save/%: %.m3u8
                fi
 .PHONY: save $(SAVE)
 
+comma                   = ,
+check-deps              = $(shell if [ -f $1 ]; then for i in $2; do \
+                                 if ! [ "$$i" -ot $1 ]; then \
+                                   echo force; break; \
+                                 fi; \
+                               done; fi)
+-include $(DEPFILES)
+
 all: $(TARGETS)
 
 p:; : $p