5 vpath
%.
cpp $(SRC_PATH
)
9 vpath
%.asm
$(SRC_PATH
)
10 vpath
%.rc
$(SRC_PATH
)
12 vpath
%.texi
$(SRC_PATH
)
13 vpath
%/fate_config.sh.template
$(SRC_PATH
)
15 AVPROGS-
$(CONFIG_FFMPEG
) += ffmpeg
16 AVPROGS-
$(CONFIG_FFPLAY
) += ffplay
17 AVPROGS-
$(CONFIG_FFPROBE
) += ffprobe
18 AVPROGS-
$(CONFIG_FFSERVER
) += ffserver
20 AVPROGS
:= $(AVPROGS-yes
:%=%$(PROGSSUF
)$(EXESUF
))
21 INSTPROGS
= $(AVPROGS-yes
:%=%$(PROGSSUF
)$(EXESUF
))
24 AVBASENAMES
= ffmpeg ffplay ffprobe ffserver
25 ALLAVPROGS
= $(AVBASENAMES
:%=%$(PROGSSUF
)$(EXESUF
))
26 ALLAVPROGS_G
= $(AVBASENAMES
:%=%$(PROGSSUF
)_g
$(EXESUF
))
28 $(foreach prog
,$(AVBASENAMES
),$(eval OBJS-
$(prog
) += cmdutils.o
))
29 $(foreach prog
,$(AVBASENAMES
),$(eval OBJS-
$(prog
)-$(CONFIG_OPENCL
) += cmdutils_opencl.o
))
31 OBJS-ffmpeg
+= ffmpeg_opt.o ffmpeg_filter.o
32 OBJS-ffmpeg-
$(HAVE_VDPAU_X11
) += ffmpeg_vdpau.o
33 OBJS-ffmpeg-
$(HAVE_DXVA2_LIB
) += ffmpeg_dxva2.o
34 OBJS-ffmpeg-
$(CONFIG_VDA
) += ffmpeg_vda.o
35 OBJS-ffserver
+= ffserver_config.o
37 TESTTOOLS
= audiogen videogen rotozoom tiny_psnr tiny_ssim base64
38 HOSTPROGS
:= $(TESTTOOLS
:%=tests
/%) doc
/print_options
39 TOOLS
= qt-faststart trasher uncoded_frame
40 TOOLS-
$(CONFIG_ZLIB
) += cws2fws
42 # $(FFLIBS-yes) needs to be in linking order
43 FFLIBS-
$(CONFIG_AVDEVICE
) += avdevice
44 FFLIBS-
$(CONFIG_AVFILTER
) += avfilter
45 FFLIBS-
$(CONFIG_AVFORMAT
) += avformat
46 FFLIBS-
$(CONFIG_AVCODEC
) += avcodec
47 FFLIBS-
$(CONFIG_AVRESAMPLE
) += avresample
48 FFLIBS-
$(CONFIG_POSTPROC
) += postproc
49 FFLIBS-
$(CONFIG_SWRESAMPLE
) += swresample
50 FFLIBS-
$(CONFIG_SWSCALE
) += swscale
54 DATA_FILES
:= $(wildcard $(SRC_PATH
)/presets
/*.ffpreset
) $(SRC_PATH
)/doc
/ffprobe.xsd
55 EXAMPLES_FILES
:= $(wildcard $(SRC_PATH
)/doc
/examples
/*.c
) $(SRC_PATH
)/doc
/examples
/Makefile
$(SRC_PATH
)/doc
/examples
/README
57 SKIPHEADERS
= cmdutils_common_opts.h compat
/w32pthreads.h
59 include $(SRC_PATH
)/common.mak
61 FF_EXTRALIBS
:= $(FFEXTRALIBS
)
62 FF_DEP_LIBS
:= $(DEP_LIBS
)
66 $(TOOLS
): %$(EXESUF
): %.o
$(EXEOBJS
)
67 $(LD
) $(LDFLAGS
) $(LDEXEFLAGS
) $(LD_O
) $^
$(ELIBS
)
69 tools
/cws2fws
$(EXESUF
): ELIBS
= $(ZLIB
)
70 tools
/uncoded_frame
$(EXESUF
): $(FF_DEP_LIBS
)
71 tools
/uncoded_frame
$(EXESUF
): ELIBS
= $(FF_EXTRALIBS
)
74 .config
: $(wildcard $(FFLIBS
:%=$(SRC_PATH
)/lib
%/all*.c
))
75 @
-tput bold
2>/dev
/null
76 @
-printf
'\nWARNING: $(?F) newer than config.h, rerun configure\n\n'
77 @
-tput sgr0
2>/dev
/null
79 SUBDIR_VARS
:= CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \
80 HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \
81 ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \
82 ALTIVEC-OBJS MMX-OBJS YASM-OBJS \
83 MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS \
84 OBJS SLIBOBJS HOSTOBJS TESTOBJS
92 $(foreach V
,$(SUBDIR_VARS
),$(eval
$(call RESET
,$(V
))))
94 include $(SRC_PATH
)/$(1)/Makefile
95 -include $(SRC_PATH
)/$(1)/$(ARCH
)/Makefile
96 -include $(SRC_PATH
)/$(1)/$(INTRINSICS
)/Makefile
97 include $(SRC_PATH
)/library.mak
100 $(foreach D
,$(FFLIBS
),$(eval
$(call DOSUBDIR
,lib
$(D
))))
102 include $(SRC_PATH
)/doc
/Makefile
105 OBJS-
$(1) += $(1).o
$(EXEOBJS
) $(OBJS-
$(1)-yes
)
106 $(1)$(PROGSSUF
)_g
$(EXESUF
): $$(OBJS-
$(1))
107 $$(OBJS-
$(1)): CFLAGS
+= $(CFLAGS-
$(1))
108 $(1)$(PROGSSUF
)_g
$(EXESUF
): LDFLAGS
+= $(LDFLAGS-
$(1))
109 $(1)$(PROGSSUF
)_g
$(EXESUF
): FF_EXTRALIBS
+= $(LIBS-
$(1))
110 -include $$(OBJS-
$(1):.o
=.d
)
113 $(foreach P
,$(PROGS
),$(eval
$(call DOPROG
,$(P
:$(PROGSSUF
)$(EXESUF
)=))))
115 ffprobe.o cmdutils.o libavcodec
/utils.o libavformat
/utils.o libavdevice
/avdevice.o libavfilter
/avfilter.o libavutil
/utils.o libpostproc
/postprocess.o libswresample
/swresample.o libswscale
/utils.o
: libavutil
/ffversion.h
117 $(PROGS
): %$(PROGSSUF
)$(EXESUF
): %$(PROGSSUF
)_g
$(EXESUF
)
121 %$(PROGSSUF
)_g
$(EXESUF
): %.o
$(FF_DEP_LIBS
)
122 $(LD
) $(LDFLAGS
) $(LDEXEFLAGS
) $(LD_O
) $(OBJS-
$*) $(FF_EXTRALIBS
)
126 -include $(wildcard tools
/*.d
)
128 VERSION_SH
= $(SRC_PATH
)/version.sh
129 GIT_LOG
= $(SRC_PATH
)/.git
/logs
/HEAD
131 .version
: $(wildcard $(GIT_LOG
)) $(VERSION_SH
) config.mak
134 libavutil
/ffversion.h .version
:
135 $(M
)$(VERSION_SH
) $(SRC_PATH
) libavutil
/ffversion.h
$(EXTRA_VERSION
)
138 # force version.sh to run whenever version might have changed
142 install: install-progs install-data
145 install: install-libs install-headers
147 install-libs
: install-libs-yes
150 install-progs-
$(CONFIG_SHARED
): install-libs
152 install-progs
: install-progs-yes
$(AVPROGS
)
153 $(Q
)mkdir
-p
"$(BINDIR)"
154 $(INSTALL
) -c
-m
755 $(INSTPROGS
) "$(BINDIR)"
156 install-data
: $(DATA_FILES
) $(EXAMPLES_FILES
)
157 $(Q
)mkdir
-p
"$(DATADIR)/examples"
158 $(INSTALL
) -m
644 $(DATA_FILES
) "$(DATADIR)"
159 $(INSTALL
) -m
644 $(EXAMPLES_FILES
) "$(DATADIR)/examples"
161 uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data
164 $(RM
) $(addprefix "$(BINDIR)/", $(ALLAVPROGS
))
167 $(RM
) -r
"$(DATADIR)"
170 $(RM
) $(ALLAVPROGS
) $(ALLAVPROGS_G
)
171 $(RM
) $(CLEANSUFFIXES
)
172 $(RM
) $(CLEANSUFFIXES
:%=tools
/%)
173 $(RM
) -r coverage-html
174 $(RM
) -rf coverage.
info lcov
177 $(RM
) $(DISTCLEANSUFFIXES
)
178 $(RM
) config.
* .config libavutil
/avconfig.h .version version.h libavutil
/ffversion.h libavcodec
/codec_names.h
181 $(SRC_PATH
)/configure
$(value FFMPEG_CONFIGURATION
)
183 check: all alltools examples testprogs fate
185 include $(SRC_PATH
)/tests
/Makefile
190 # Dummy rule to stop make trying to rebuild removed or renamed headers
194 # Disable suffix rules. Most of the builtin rules are suffix rules,
195 # so this saves some time on slow systems.
198 .PHONY
: all all-yes alltools
check *clean config
install*
199 .PHONY
: testprogs
uninstall*