PR #23593 opened by Kacper Michajłow (kasper93)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23593
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23593.patch


From a28f7d755c34115568bb221985bc248c1890b248 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
Date: Thu, 25 Jun 2026 00:55:21 +0200
Subject: [PATCH 1/2] Makefile: create output directories during the makefile
 parse phase
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Output directories were created by a rule, with the relevant targets
carrying them as order-only prerequisites. Under parallel make this
still raced: intermediate resource targets such as
fftools/resources/graph.css.min and graph.html.gz reach their recipes
without carrying the directory as a prerequisite, so the shell redirect
into the not-yet-created directory fails:

  /bin/sh: cannot create fftools/resources/graph.css.min: Directory nonexistent
  make: *** [ffbuild/common.mak:145: fftools/resources/graph.css.min] Error 2

Create every output directory while the makefile is parsed instead, so
all of them exist before the first recipe runs and the race is no longer
possible.

Reported-by: Alexander Kanavin <[email protected]>
Co-Authored-By: Ramiro Polla <[email protected]>
Signed-off-by: Kacper Michajłow <[email protected]>
---
 Makefile | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index ca55556cee..d2302826c1 100644
--- a/Makefile
+++ b/Makefile
@@ -208,8 +208,11 @@ check: all alltools examples testprogs fate
 
 include $(SRC_PATH)/tests/Makefile
 
-$(sort $(OUTDIRS)):
-       $(Q)mkdir -p $@
+# Create all output directories during the parse phase, before any target is
+# built. Doing it here rather than via a rule guarantees the directories exist
+# before the first recipe runs, avoiding races between directory creation and
+# the rules that write into them under parallel make.
+$(foreach dir,$(sort $(OUTDIRS)),$(if $(wildcard $(dir)),,$(shell mkdir -p 
$(dir))))
 
 # Dummy rule to stop make trying to rebuild removed or renamed headers
 %.h:
-- 
2.52.0


From 9204c9be292cb69241701de02c31d8d4296edb45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
Date: Thu, 25 Jun 2026 01:01:46 +0200
Subject: [PATCH 2/2] Makefile: drop now-redundant order-only directory
 prerequisites
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Kacper Michajłow <[email protected]>
---
 doc/Makefile                |  2 --
 doc/examples/Makefile       |  1 -
 ffbuild/common.mak          |  8 --------
 ffbuild/library.mak         |  4 ++--
 fftools/Makefile            |  3 +--
 tests/Makefile              | 22 ++++++++++-----------
 tests/api/Makefile          |  1 -
 tests/checkasm/Makefile     |  1 -
 tests/fate/dashenc.mak      |  2 +-
 tests/fate/demux.mak        |  4 ++--
 tests/fate/ffmpeg.mak       |  2 +-
 tests/fate/ffprobe.mak      |  2 +-
 tests/fate/filter-audio.mak |  4 ++--
 tests/fate/filter-video.mak |  2 +-
 tests/fate/fits.mak         |  2 +-
 tests/fate/generic-tags.mak |  2 +-
 tests/fate/hap.mak          |  4 ++--
 tests/fate/hevc.mak         |  2 +-
 tests/fate/hlsenc.mak       | 38 ++++++++++++++++++-------------------
 tests/fate/libavdevice.mak  |  2 +-
 tests/fate/mov.mak          |  2 +-
 tests/fate/seek.mak         |  2 +-
 tests/fate/segment.mak      | 10 +++++-----
 tools/Makefile              |  2 --
 24 files changed, 54 insertions(+), 70 deletions(-)

diff --git a/doc/Makefile b/doc/Makefile
index 7b683afa17..6dd9455a53 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -100,8 +100,6 @@ doc/%.1: doc/%.pod $(GENTEXI)
 doc/%.3: doc/%.pod $(GENTEXI)
        $(M)pod2man --section=3 --center=" " --release=" " --date=" " $< > $@
 
-$(DOCS) doc/doxy/html: | doc/
-
 DOXY_INPUT      = $(INSTHEADERS)
 DOXY_INPUT_DEPS = $(addprefix $(SRC_PATH)/, $(DOXY_INPUT)) ffbuild/config.mak
 
diff --git a/doc/examples/Makefile b/doc/examples/Makefile
index 4efed6b11d..4c38f7b0db 100644
--- a/doc/examples/Makefile
+++ b/doc/examples/Makefile
@@ -37,7 +37,6 @@ $(EXAMPLES_G): %$(PROGSSUF)_g$(EXESUF): %.o
 
 examples: $(EXAMPLES)
 
-$(EXAMPLES:%$(PROGSSUF)$(EXESUF)=%.o): | doc/examples
 OUTDIRS += doc/examples
 
 DOXY_INPUT += $(EXAMPLES:%$(PROGSSUF)$(EXESUF)=%.c)
diff --git a/ffbuild/common.mak b/ffbuild/common.mak
index 059de5abf3..bff7e30f8e 100644
--- a/ffbuild/common.mak
+++ b/ffbuild/common.mak
@@ -244,14 +244,6 @@ $(HOSTOBJS): %.o: %.c
 $(HOSTPROGS): %$(HOSTEXESUF): %.o
        $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $^ $(HOSTEXTRALIBS)
 
-$(OBJS):     | $(sort $(dir $(OBJS)))
-$(HOBJS):    | $(sort $(dir $(HOBJS)))
-$(HOSTOBJS): | $(sort $(dir $(HOSTOBJS)))
-$(SHLIBOBJS): | $(sort $(dir $(SHLIBOBJS)))
-$(STLIBOBJS): | $(sort $(dir $(STLIBOBJS)))
-$(TESTOBJS): | $(sort $(dir $(TESTOBJS)))
-$(TOOLOBJS): | tools
-
 OUTDIRS := $(OUTDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SHLIBOBJS) 
$(STLIBOBJS) $(TESTOBJS))
 
 CLEANSUFFIXES     = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.objs *.pc *.ptx 
*.ptx.gz *.ptx.c *.spv *.spv.gz *.spv.c *.gen.asm *.gen.c *.gen.S *.ver 
*.version *.html.gz *.html.c *.css.min.gz *.css.min *.css.c *~ *.ilk *.pdb
diff --git a/ffbuild/library.mak b/ffbuild/library.mak
index 5ab7eb4615..9b389f59a8 100644
--- a/ffbuild/library.mak
+++ b/ffbuild/library.mak
@@ -60,10 +60,10 @@ $(NAME)LINK_EXTRA = $(FFEXTRALIBS)
 $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
        $$(call LINK,$$(call $(NAME)LINK_EXE_ARGS) $$(LD_O) $$(filter %.o,$$^) 
$$(THISLIB) $$(call $(NAME)LINK_EXTRA) $$(EXTRALIBS-$$(*F)) $$(ELIBS))
 
-$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h $(SUBDIR)version_major.h | 
$(SUBDIR)
+$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h $(SUBDIR)version_major.h
        $$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$^ > $$@
 
-$(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h ffbuild/config.sh | $(SUBDIR)
+$(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h ffbuild/config.sh
        $$(M) $$(SRC_PATH)/ffbuild/pkgconfig_generate.sh $(NAME) "$(DESC)"
 
 $(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS)
diff --git a/fftools/Makefile b/fftools/Makefile
index 01b16fa8f4..fcdefd4f07 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -60,7 +60,6 @@ ifdef HAVE_GNU_WINDRES
 OBJS-$(1) += fftools/fftoolsres.o
 endif
 $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1))
-$$(OBJS-$(1)): | fftools fftools/textformat fftools/resources fftools/graph
 $$(OBJS-$(1)): CFLAGS  += $(CFLAGS-$(1))
 $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1))
 $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(EXTRALIBS-$(1))
@@ -71,7 +70,7 @@ $(foreach P,$(AVPROGS-yes),$(eval $(call DOFFTOOL,$(P))))
 
 all: $(AVPROGS)
 
-fftools/ffprobe.o fftools/cmdutils.o: libavutil/ffversion.h | fftools
+fftools/ffprobe.o fftools/cmdutils.o: libavutil/ffversion.h
 OUTDIRS += fftools
 OUTDIRS += fftools/textformat
 OUTDIRS += fftools/resources
diff --git a/tests/Makefile b/tests/Makefile
index 8c7d4539a3..d5522cfbc8 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -26,25 +26,25 @@ APITESTSDIR := tests/api
 FATE_OUTDIRS = tests/data tests/data/fate tests/data/filtergraphs 
tests/data/maps tests/data/streamgroups tests/data/lavf tests/data/lavf-fate 
tests/data/pixfmt tests/vsynth1 $(APITESTSDIR)
 OUTDIRS += $(FATE_OUTDIRS)
 
-$(VREF): tests/videogen$(HOSTEXESUF) | tests/vsynth1
+$(VREF): tests/videogen$(HOSTEXESUF)
        $(M)./$< 'tests/vsynth1/'
 
-$(AREF): tests/audiogen$(HOSTEXESUF) | tests/data
+$(AREF): tests/audiogen$(HOSTEXESUF)
        $(M)./$< $@
 
-tests/data/asynth-%.wav: tests/audiogen$(HOSTEXESUF) | tests/data
+tests/data/asynth-%.wav: tests/audiogen$(HOSTEXESUF)
        $(M)./$< $@ $(subst -, ,$*)
 
-tests/data/vsynth1.yuv: tests/videogen$(HOSTEXESUF) | tests/data
+tests/data/vsynth1.yuv: tests/videogen$(HOSTEXESUF)
        $(M)$< $@
 
-tests/data/vsynth2.yuv: tests/rotozoom$(HOSTEXESUF) | tests/data
+tests/data/vsynth2.yuv: tests/rotozoom$(HOSTEXESUF)
        $(M)$< $(SRC_PATH)/tests/reference.pnm $@
 
-tests/data/vsynth_lena.yuv: tests/rotozoom$(HOSTEXESUF) | tests/data
+tests/data/vsynth_lena.yuv: tests/rotozoom$(HOSTEXESUF)
        $(M)$< $(SAMPLES)/lena.pnm $@
 
-tests/data/vsynth3.yuv: tests/videogen$(HOSTEXESUF) | tests/data
+tests/data/vsynth3.yuv: tests/videogen$(HOSTEXESUF)
        $(M)$< $@ $(FATEW) $(FATEH)
 
 tests/test_copy.ffmeta: TAG = COPY
@@ -54,15 +54,15 @@ tests/test_copy.ffmeta: tests/data
 tests/data/%.sw tests/data/asynth% tests/data/vsynth%.yuv tests/vsynth%/00.pgm 
tests/data/%.nut: TAG = GEN
 
 tests/data/filtergraphs/%: TAG = COPY
-tests/data/filtergraphs/%: $(SRC_PATH)/tests/filtergraphs/% | 
tests/data/filtergraphs
+tests/data/filtergraphs/%: $(SRC_PATH)/tests/filtergraphs/%
        $(M)cp $< $@
 
 tests/data/maps/%: TAG = COPY
-tests/data/maps/%: $(SRC_PATH)/tests/maps/% | tests/data/maps
+tests/data/maps/%: $(SRC_PATH)/tests/maps/%
        $(M)cp $< $@
 
 tests/data/streamgroups/%: TAG = COPY
-tests/data/streamgroups/%: $(SRC_PATH)/tests/streamgroups/% | 
tests/data/streamgroups
+tests/data/streamgroups/%: $(SRC_PATH)/tests/streamgroups/%
        $(M)cp $< $@
 
 RUNNING_FATE := $(filter check fate%,$(filter-out fate-rsync,$(MAKECMDGOALS)))
@@ -322,7 +322,7 @@ FATE += $(FATE_HW-yes)
 $(FATE): export PROGSUF = $(PROGSSUF)
 $(FATE): export EXECSUF = $(EXESUF)
 $(FATE): export HOSTEXECSUF = $(HOSTEXESUF)
-$(FATE): $(FATE_UTILS:%=tests/%$(HOSTEXESUF)) | $(FATE_OUTDIRS)
+$(FATE): $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
        @echo "TEST    $(@:fate-%=%)$(FATE_SUFFIX)"
        $(Q)$(SRC_PATH)/tests/fate-run.sh $@$(FATE_SUFFIX) "$(TARGET_SAMPLES)" 
"$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' 
'$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' 
'$(SIZE_TOLERANCE)' '$(CMP_UNIT)' '$(GEN)' '$(HWACCEL)' '$(REPORT)' 
'$(KEEP_FILES)'
 
diff --git a/tests/api/Makefile b/tests/api/Makefile
index 987db1b785..f6633cecbd 100644
--- a/tests/api/Makefile
+++ b/tests/api/Makefile
@@ -11,7 +11,6 @@ APITESTOBJS  := $(APITESTOBJS:%=$(APITESTSDIR)%) 
$(APITESTPROGS:%=$(APITESTSDIR)
 APITESTPROGS := $(APITESTPROGS:%=$(APITESTSDIR)/%-test$(EXESUF))
 -include $(wildcard $(APITESTOBJS:.o=.d))
 
-$(APITESTOBJS): | $(sort $(dir $(APITESTOBJS)))
 $(APITESTOBJS) $(APITESTOBJS:.o=.i): CPPFLAGS += -DTEST
 $(APITESTOBJS) $(APITESTOBJS:.o=.i): CFLAGS += -Umain
 
diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile
index c154d19ed4..10d2e0a26f 100644
--- a/tests/checkasm/Makefile
+++ b/tests/checkasm/Makefile
@@ -140,7 +140,6 @@ CHECKASMOBJS := $(sort $(CHECKASMOBJS:%=tests/checkasm/%))
 -include $(CHECKASMOBJS:.o=.d)
 
 CHECKASMDIRS := $(sort $(dir $(CHECKASMOBJS)))
-$(CHECKASMOBJS): | $(CHECKASMDIRS)
 # Prepend the local checkasm include path before any potential external
 # (possibly outdated) version of libcheckasm.
 $(CHECKASMOBJS): CFLAGS  := -I$(SRC_PATH)/tests/checkasm/ext/include $(CFLAGS)
diff --git a/tests/fate/dashenc.mak b/tests/fate/dashenc.mak
index df9571f0b4..acefdfde74 100644
--- a/tests/fate/dashenc.mak
+++ b/tests/fate/dashenc.mak
@@ -1,5 +1,5 @@
 tests/data/dash_mpd_timing.mpd: TAG = GEN
-tests/data/dash_mpd_timing.mpd: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/dash_mpd_timing.mpd: ffmpeg$(PROGSSUF)$(EXESUF)
        $(RM) $(TARGET_PATH)/tests/data/dash_mpd_timing*
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin -loglevel error -re \
        -f lavfi -i "testsrc2=size=128x72:rate=1" -map 0:v \
diff --git a/tests/fate/demux.mak b/tests/fate/demux.mak
index 4cdc1a583f..fc1ebf8a05 100644
--- a/tests/fate/demux.mak
+++ b/tests/fate/demux.mak
@@ -176,10 +176,10 @@ FATE_FFPROBE_DEMUX-$(CONFIG_MPEGTS_DEMUXER) += 
fate-ts-timed-id3-demux
 fate-ts-timed-id3-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/mpegts/id3.ts
 
 tests/data/id3.ts: TAG = GEN
-tests/data/id3.ts: $(SAMPLES)/mpegts/id3.ts | tests/data
+tests/data/id3.ts: $(SAMPLES)/mpegts/id3.ts
        $(Q)cp $< $@
 
-tests/data/id3.m3u8: tests/data/id3.ts | tests/data
+tests/data/id3.m3u8: tests/data/id3.ts
        $(Q)printf 
'#EXTM3U\n#EXT-X-TARGETDURATION:2\n#EXTINF:2,\nid3.ts\n#EXT-X-ENDLIST\n' > $@
 
 FATE_FFPROBE_DEMUX-$(call DEMDEC, MPEGTS HLS) += fate-ts-timed-id3-hls-demux
diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
index cd00275638..03794516ca 100644
--- a/tests/fate/ffmpeg.mak
+++ b/tests/fate/ffmpeg.mak
@@ -186,7 +186,7 @@ fate-ffmpeg-streamloop-copy: CMD = framemd5 -stream_loop 2 
-i $(TARGET_SAMPLES)/
 
 tests/data/audio_shorter_than_video.nut: TAG = GEN
 tests/data/audio_shorter_than_video.nut: tests/data/vsynth_lena.yuv
-tests/data/audio_shorter_than_video.nut: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/audio_shorter_than_video.nut: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact 
-idct simple -f rawvideo -s 352x288 -pix_fmt yuv420p -i 
$(TARGET_PATH)/tests/data/vsynth_lena.yuv \
         -f lavfi -i "sine=1000:d=1" \
diff --git a/tests/fate/ffprobe.mak b/tests/fate/ffprobe.mak
index f09e0ce3e8..d86b871374 100644
--- a/tests/fate/ffprobe.mak
+++ b/tests/fate/ffprobe.mak
@@ -1,4 +1,4 @@
-tests/data/ffprobe-test.nut: ffmpeg$(PROGSSUF)$(EXESUF) tests/test_copy.ffmeta 
| tests/data
+tests/data/ffprobe-test.nut: ffmpeg$(PROGSSUF)$(EXESUF) tests/test_copy.ffmeta
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -i "aevalsrc=sin(400*PI*2*t):d=0.125[out0]; 
testsrc=d=0.125[out1]; testsrc=s=100x100:d=0.125[out2]" \
         -f ffmetadata -i $(TARGET_PATH)/tests/test_copy.ffmeta \
diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak
index 526645a634..2116864bfd 100644
--- a/tests/fate/filter-audio.mak
+++ b/tests/fate/filter-audio.mak
@@ -215,7 +215,7 @@ fate-filter-compand: SRC = 
$(TARGET_PATH)/tests/data/asynth-44100-2.wav
 fate-filter-compand: CMD = framecrc -auto_conversion_filters -i $(SRC) 
-frames:a 20 -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/compand
 
 tests/data/hls-list.m3u8: TAG = GEN
-tests/data/hls-list.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls-list.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f 
segment -segment_time 10 -map 0 -flags +bitexact -codec:a mp2fixed \
         -segment_list $(TARGET_PATH)/$@ -y 
$(TARGET_PATH)/tests/data/hls-out-%03d.ts 2>/dev/null
@@ -225,7 +225,7 @@ fate-filter-hls: tests/data/hls-list.m3u8
 fate-filter-hls: CMD = framecrc -flags +bitexact -i 
$(TARGET_PATH)/tests/data/hls-list.m3u8 -af aresample
 
 tests/data/hls-list-append.m3u8: TAG = GEN
-tests/data/hls-list-append.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls-list-append.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f 
segment -segment_time 10 -map 0 -flags +bitexact -codec:a mp2fixed \
         -segment_list $(TARGET_PATH)/$@ -y 
$(TARGET_PATH)/tests/data/hls-append-out-%03d.ts 2>/dev/null; \
diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index d16fff4d6c..2cb7c0d5e8 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -653,7 +653,7 @@ fate-filter-drawvg-video: $(DRAWVG_SCRIPT_VIDEO)
 fate-filter-drawvg-video: CMD = video_filter 
scale,format=bgr0,drawvg=file=$(DRAWVG_SCRIPT_VIDEO)
 
 tests/pixfmts.mak: TAG = GEN
-tests/pixfmts.mak: ffmpeg$(PROGSSUF)$(EXESUF) | tests
+tests/pixfmts.mak: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)printf "PIXFMTS = " > $@
        $(Q)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin -pix_fmts list 2> 
/dev/null | awk 'NR > 8 && /^IO/ { printf $$2 " " }' >> $@
        $(Q)printf "\n" >> $@
diff --git a/tests/fate/fits.mak b/tests/fate/fits.mak
index 408a0cf23d..10b67d60a9 100644
--- a/tests/fate/fits.mak
+++ b/tests/fate/fits.mak
@@ -1,5 +1,5 @@
 tests/data/fits-multi.fits: TAG = GEN
-tests/data/fits-multi.fits: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/fits-multi.fits: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -i $(TARGET_SAMPLES)/gif/m4nb.gif \
         -y $(TARGET_PATH)/$(@) 2>/dev/null
diff --git a/tests/fate/generic-tags.mak b/tests/fate/generic-tags.mak
index a30a65d2b5..e3bf7e98a2 100644
--- a/tests/fate/generic-tags.mak
+++ b/tests/fate/generic-tags.mak
@@ -1,5 +1,5 @@
 tests/data/generic-tags.mp3: TAG = GEN
-tests/data/generic-tags.mp3: ffmpeg$(PROGSSUF)$(EXESUF) 
$(SRC_PATH)/tests/generic-tags.ffmeta | tests/data
+tests/data/generic-tags.mp3: ffmpeg$(PROGSSUF)$(EXESUF) 
$(SRC_PATH)/tests/generic-tags.ffmeta
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
            -i $(TARGET_SAMPLES)/audiomatch/square3.mp3 \
         -f ffmetadata -i $(SRC_PATH)/tests/generic-tags.ffmeta \
diff --git a/tests/fate/hap.mak b/tests/fate/hap.mak
index 8268798f4a..36ed6c7b2a 100644
--- a/tests/fate/hap.mak
+++ b/tests/fate/hap.mak
@@ -48,13 +48,13 @@ FATE_HAPQA_EXTRACT_BSF-$(call REMUX, FRAMECRC MOV, 
HAPQA_EXTRACT_BSF) += $(FATE_
 
 #Test bsf conversion and mov
 tests/data/hapq_nosnappy.mov: TAG = GEN
-tests/data/hapq_nosnappy.mov: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hapq_nosnappy.mov: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -i $(TARGET_SAMPLES)/hap/HAPQA_NoSnappy_127x1.mov -nostdin -c:v copy 
-bsf:v hapqa_extract=texture=color \
         -tag:v HapY -metadata:s:v:0 encoder="HAPQ" $(TARGET_PATH)/$@ -y 
2>/dev/null
 
 tests/data/hapalphaonly_nosnappy.mov: TAG = GEN
-tests/data/hapalphaonly_nosnappy.mov: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hapalphaonly_nosnappy.mov: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -i $(TARGET_SAMPLES)/hap/HAPQA_NoSnappy_127x1.mov -nostdin -c:v copy 
-bsf:v hapqa_extract=texture=alpha \
         -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" $(TARGET_PATH)/$@ 
-y 2>/dev/null
diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak
index 7ce9ff403b..5a8a01e2ea 100644
--- a/tests/fate/hevc.mak
+++ b/tests/fate/hevc.mak
@@ -225,7 +225,7 @@ fate-hevc-paramchange-yuv420p-yuv420p10: CMD = framecrc -i 
$(TARGET_SAMPLES)/hev
 FATE_HEVC-$(call FRAMECRC, HEVC, HEVC, HEVC_PARSER SCALE_FILTER LARGE_TESTS) 
+= fate-hevc-paramchange-yuv420p-yuv420p10
 
 tests/data/hevc-mp4.mov: TAG = GEN
-tests/data/hevc-mp4.mov: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hevc-mp4.mov: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -i $(TARGET_SAMPLES)/hevc-conformance/WPP_A_ericsson_MAIN10_2.bit -c 
copy -flags +bitexact $(TARGET_PATH)/$@ -y 2>/dev/null
 
diff --git a/tests/fate/hlsenc.mak b/tests/fate/hlsenc.mak
index cd6cd60365..6603e0b2c2 100644
--- a/tests/fate/hlsenc.mak
+++ b/tests/fate/hlsenc.mak
@@ -1,5 +1,5 @@
 tests/data/live_no_endlist.m3u8: TAG = GEN
-tests/data/live_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/live_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -v verbose -i 
"aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls -hls_time 3 -map 0 \
         -hls_flags omit_endlist -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/live_no_endlist_%03d.ts \
@@ -13,7 +13,7 @@ fate-hls-live-no-endlist: CMP = oneline
 fate-hls-live-no-endlist: REF = e038bb8e65d4c1745b9b3ed643e607a3
 
 tests/data/event_no_endlist.m3u8: TAG = GEN
-tests/data/event_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/event_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -v verbose -i 
"aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls -hls_time 3 -map 0 \
         -hls_playlist_type event -hls_flags omit_endlist -hls_list_size 0 
-codec:a mp2fixed \
@@ -28,7 +28,7 @@ fate-hls-event-no-endlist: CMP = oneline
 fate-hls-event-no-endlist: REF = d9cd56b6aaebf67a52a63dd44ec5b085
 
 tests/data/live_last_endlist.m3u8: TAG = GEN
-tests/data/live_last_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/live_last_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -v verbose -i 
"aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls -hls_time 3 -map 0 \
         -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/live_last_endlist_%03d.ts \
@@ -43,7 +43,7 @@ fate-hls-live-last-endlist: REF = 
2ca8567092dcf01e37bedd50454d1ab7
 
 
 tests/data/live_endlist.m3u8: TAG = GEN
-tests/data/live_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/live_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls 
-hls_time 3 -map 0 \
         -hls_list_size 0 -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/live_endlist_%d.ts \
@@ -57,7 +57,7 @@ fate-hls-live-endlist: CMP = oneline
 fate-hls-live-endlist: REF = e189ce781d9c87882f58e3929455167b
 
 tests/data/hls_segment_size.m3u8: TAG = GEN
-tests/data/hls_segment_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_segment_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls 
-hls_segment_size 300000 -map 0 \
        -hls_list_size 0 -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/hls_segment_size_%d.ts \
@@ -68,7 +68,7 @@ fate-hls-segment-size: tests/data/hls_segment_size.m3u8
 fate-hls-segment-size: CMD = framecrc -auto_conversion_filters -flags 
+bitexact -i $(TARGET_PATH)/tests/data/hls_segment_size.m3u8 -vf setpts=N*23
 
 tests/data/hls_segment_single.m3u8: TAG = GEN
-tests/data/hls_segment_single.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_segment_single.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls 
-hls_flags single_file -map 0 \
        -hls_list_size 0 -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/hls_segment_single.ts \
@@ -79,7 +79,7 @@ fate-hls-segment-single: tests/data/hls_segment_single.m3u8
 fate-hls-segment-single: CMD = framecrc -auto_conversion_filters -flags 
+bitexact -i $(TARGET_PATH)/tests/data/hls_segment_single.m3u8 -vf setpts=N*23
 
 tests/data/hls_init_time.m3u8: TAG = GEN
-tests/data/hls_init_time.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_init_time.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=11" -f hls 
-hls_init_time 1 -hls_time 3 -map 0 \
        -hls_list_size 5 -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/hls_init_time_%d.ts \
@@ -90,7 +90,7 @@ fate-hls-init-time: tests/data/hls_init_time.m3u8
 fate-hls-init-time: CMD = framecrc -auto_conversion_filters -flags +bitexact 
-i $(TARGET_PATH)/tests/data/hls_init_time.m3u8 -vf setpts=N*23
 
 tests/data/hls_list_size.m3u8: TAG = GEN
-tests/data/hls_list_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_list_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=20" -f hls 
-hls_time 4 -map 0 \
        -hls_list_size 4 -codec:a mp2fixed -hls_segment_filename 
$(TARGET_PATH)/tests/data/hls_list_size_%d.ts \
@@ -101,7 +101,7 @@ fate-hls-list-size: tests/data/hls_list_size.m3u8
 fate-hls-list-size: CMD = framecrc -auto_conversion_filters -flags +bitexact 
-i $(TARGET_PATH)/tests/data/hls_list_size.m3u8 -vf setpts=N*23
 
 tests/data/hls_fmp4.m3u8: TAG = GEN
-tests/data/hls_fmp4.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_fmp4.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -re -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=5" -map 0 
-codec:a mp2fixed \
        -hls_segment_type mpegts -hls_fmp4_init_filename now.mp4 -hls_list_size 
0 \
@@ -113,7 +113,7 @@ fate-hls-fmp4: tests/data/hls_fmp4.m3u8
 fate-hls-fmp4: CMD = framecrc -auto_conversion_filters -flags +bitexact -i 
$(TARGET_PATH)/tests/data/hls_fmp4.m3u8 -vf setpts=N*23
 
 tests/data/hls_fmp4_ac3.m3u8: TAG = GEN
-tests/data/hls_fmp4_ac3.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_fmp4_ac3.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -stream_loop 4 -i $(TARGET_SAMPLES)/ac3/monsters_inc_5.1_448_small.ac3 
-c copy -map 0 \
        -hls_segment_type fmp4 -hls_fmp4_init_filename now_ac3.mp4 
-hls_list_size 0 \
@@ -128,7 +128,7 @@ fate-hls-fmp4_ac3: CMD = probeaudiostream 
$(TARGET_PATH)/tests/data/now_ac3.mp4
 
 
 tests/data/hls_cmfa.m3u8: TAG = GEN
-tests/data/hls_cmfa.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_cmfa.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -i $(TARGET_SAMPLES)/aac/al06_44.mp4 -c copy -map 0 \
        -hls_segment_type fmp4 -hls_fmp4_init_filename now.cmfa -hls_list_size 
0 \
@@ -147,7 +147,7 @@ FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_HLSENC_PROBE-yes)
 # -- Tests below do not require FATE samples (lavfi-generated input only) --
 
 tests/data/hls_playlist_type_vod.m3u8: TAG = GEN
-tests/data/hls_playlist_type_vod.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_playlist_type_vod.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_playlist_type vod -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -160,7 +160,7 @@ fate-hls-playlist-type-vod: CMD = sed -n -e 
/^\#EXT-X-PLAYLIST-TYPE:/p -e /^\#EX
 fate-hls-playlist-type-vod: CMP = diff
 
 tests/data/hls_playlist_type_event.m3u8: TAG = GEN
-tests/data/hls_playlist_type_event.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/hls_playlist_type_event.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_playlist_type event -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -173,7 +173,7 @@ fate-hls-playlist-type-event: CMD = sed -n -e 
/^\#EXT-X-PLAYLIST-TYPE:/p -e /^\#
 fate-hls-playlist-type-event: CMP = diff
 
 tests/data/hls_round_durations.m3u8: TAG = GEN
-tests/data/hls_round_durations.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_round_durations.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_flags round_durations -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -186,7 +186,7 @@ fate-hls-round-durations: CMD = sed -n -e /^\#EXTINF:/p 
$(TARGET_PATH)/tests/dat
 fate-hls-round-durations: CMP = diff
 
 tests/data/hls_discont_start.m3u8: TAG = GEN
-tests/data/hls_discont_start.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_discont_start.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_flags discont_start -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -199,7 +199,7 @@ fate-hls-discont-start: CMD = sed -n -e 
/^\#EXT-X-DISCONTINUITY/p -e /^\#EXTINF:
 fate-hls-discont-start: CMP = diff
 
 tests/data/hls_independent_segments.m3u8: TAG = GEN
-tests/data/hls_independent_segments.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/hls_independent_segments.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_flags independent_segments -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -212,7 +212,7 @@ fate-hls-independent-segments: CMD = sed -n -e 
/^\#EXT-X-INDEPENDENT-SEGMENTS/p
 fate-hls-independent-segments: CMP = diff
 
 tests/data/hls_start_number.m3u8: TAG = GEN
-tests/data/hls_start_number.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls_start_number.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -start_number 100 -hls_list_size 0 -c:v mpeg2video -g 1 \
@@ -225,7 +225,7 @@ fate-hls-start-number: CMD = sed -n -e 
/^\#EXT-X-MEDIA-SEQUENCE:/p -e /^[^\#]/p
 fate-hls-start-number: CMP = diff
 
 tests/data/hls_iframes_single_mpegts.m3u8: TAG = GEN
-tests/data/hls_iframes_single_mpegts.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/hls_iframes_single_mpegts.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_list_size 0 -c:v mpeg2video -g 1 -bitexact \
@@ -239,7 +239,7 @@ fate-hls-iframes-single-mpegts: CMD = sed -n -e 
/^\#EXT-X-BYTERANGE:/p $(TARGET_
 fate-hls-iframes-single-mpegts: CMP = diff
 
 tests/data/hls_iframes_single_fmp4.m3u8: TAG = GEN
-tests/data/hls_iframes_single_fmp4.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/hls_iframes_single_fmp4.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
        -f lavfi -i "testsrc2=size=128x72:rate=1:d=3" -f hls -hls_time 1 -map 
0:v \
        -hls_list_size 0 -c:v mpeg2video -g 1 -bitexact -dct int \
diff --git a/tests/fate/libavdevice.mak b/tests/fate/libavdevice.mak
index 3ccbf0731d..3a2cbde456 100644
--- a/tests/fate/libavdevice.mak
+++ b/tests/fate/libavdevice.mak
@@ -2,7 +2,7 @@ FATE_LIBAVDEVICE-$(CONFIG_JACK_INDEV) += fate-timefilter
 fate-timefilter: libavdevice/tests/timefilter$(EXESUF)
 fate-timefilter: CMD = run libavdevice/tests/timefilter
 
-tests/data/alsa_nodesc.conf: | tests/data
+tests/data/alsa_nodesc.conf:
        $(Q)printf 'pcm.nodesc {\n\ttype null\n\thint {\n\t\tshow on\n\t}\n}\n' 
> $@
 
 FATE_FFMPEG-$(CONFIG_ALSA_INDEV) += fate-alsa-device-list-nodesc
diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
index 5b45ea675c..5530427d9b 100644
--- a/tests/fate/mov.mak
+++ b/tests/fate/mov.mak
@@ -321,7 +321,7 @@ fate-mov-mp4-iamf-5_1_4: CMD = transcode wav $(SRC) mp4 
"-auto_conversion_filter
 # Test muxing an IAMF track alongside a video one, with video as the first 
track.
 tests/data/mov-mp4-iamf-7_1_4-video-first.mp4: TAG = GEN
 tests/data/mov-mp4-iamf-7_1_4-video-first.mp4: tests/data/asynth-44100-12.wav 
tests/data/vsynth1.yuv tests/data/filtergraphs/iamf_7_1_4 
tests/data/streamgroups/audio_element-7_1_4-2 
tests/data/streamgroups/mix_presentation-7_1_4
-tests/data/mov-mp4-iamf-7_1_4-video-first.mp4: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
+tests/data/mov-mp4-iamf-7_1_4-video-first.mp4: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
   -f wav -i $(TARGET_PATH)/tests/data/asynth-44100-12.wav \
   -f rawvideo -s 352x288 -pix_fmt yuv420p -flags +bitexact -sws_flags 
+accurate_rnd+bitexact -i $(TARGET_PATH)/tests/data/vsynth1.yuv \
diff --git a/tests/fate/seek.mak b/tests/fate/seek.mak
index 106cc0578d..90cc6c999f 100644
--- a/tests/fate/seek.mak
+++ b/tests/fate/seek.mak
@@ -200,7 +200,7 @@ fate-seek-cache-pipe: CMD = cat 
$(SAMPLES)/gapless/gapless.mp3 | run libavformat
 fate-seek-mkv-codec-delay:   CMD = run libavformat/tests/seek$(EXESUF) 
$(TARGET_SAMPLES)/mkv/codec_delay_opus.mkv
 
 # A master playlist with separate audio and video media playlists with 
different DTS.
-tests/data/hls-seek.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/hls-seek.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -f lavfi -i "testsrc2=size=128x72:rate=10:d=6" \
         -f lavfi -i "aevalsrc=cos(2*PI*t)*sin(2*PI*(440+4*t)*t):d=6" \
diff --git a/tests/fate/segment.mak b/tests/fate/segment.mak
index 8537462762..32b4b974fa 100644
--- a/tests/fate/segment.mak
+++ b/tests/fate/segment.mak
@@ -1,19 +1,19 @@
 tests/data/mp4-to-ts.m3u8: TAG = GEN
-tests/data/mp4-to-ts.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/mp4-to-ts.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -i $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 \
         -f ssegment -segment_time 1 -map 0 -flags +bitexact -codec copy \
         -segment_list $(TARGET_PATH)/$@ -y 
$(TARGET_PATH)/tests/data/mp4-to-ts-%03d.ts 2>/dev/null
 
 tests/data/adts-to-mkv.m3u8: TAG = GEN
-tests/data/adts-to-mkv.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/adts-to-mkv.m3u8: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a \
         -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy 
-segment_format_options live=1 \
         -segment_list $(TARGET_PATH)/$@ -y 
$(TARGET_PATH)/tests/data/adts-to-mkv-%03d.mkv 2>/dev/null
 
 tests/data/adts-to-mkv-header.mkv: TAG = GEN
-tests/data/adts-to-mkv-header.mkv: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+tests/data/adts-to-mkv-header.mkv: ffmpeg$(PROGSSUF)$(EXESUF)
        $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \
         -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a \
         -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy 
-segment_format_options live=1 \
@@ -25,11 +25,11 @@ tests/data/adts-to-mkv-header-%.mkv: 
tests/data/adts-to-mkv-header.mkv ;
 FATE_SEGMENT_PARTS += 000 001 002
 
 tests/data/adts-to-mkv-cated-all.mkv: TAG = GEN
-tests/data/adts-to-mkv-cated-all.mkv: tests/data/adts-to-mkv-header.mkv 
$(FATE_SEGMENT_PARTS:%=tests/data/adts-to-mkv-header-%.mkv) | tests/data
+tests/data/adts-to-mkv-cated-all.mkv: tests/data/adts-to-mkv-header.mkv 
$(FATE_SEGMENT_PARTS:%=tests/data/adts-to-mkv-header-%.mkv)
        $(M)cat $^ >$@
 
 tests/data/adts-to-mkv-cated-%.mkv: TAG = GEN
-tests/data/adts-to-mkv-cated-%.mkv: tests/data/adts-to-mkv-header.mkv 
tests/data/adts-to-mkv-header-%.mkv | tests/data
+tests/data/adts-to-mkv-cated-%.mkv: tests/data/adts-to-mkv-header.mkv 
tests/data/adts-to-mkv-header-%.mkv
        $(M)cat $^ >$@
 
 FATE_SEGMENT += fate-segment-mp4-to-ts
diff --git a/tools/Makefile b/tools/Makefile
index 7ae6e3cb75..bb80ba5e80 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -30,8 +30,6 @@ tools/enc_recon_frame_test$(EXESUF): tools/decode_simple.o
 tools/venc_data_dump$(EXESUF): tools/decode_simple.o
 tools/scale_slice_test$(EXESUF): tools/decode_simple.o
 
-tools/decode_simple.o: | tools
-
 OUTDIRS += tools
 
 clean::
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to