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
36 TESTTOOLS
= audiogen videogen rotozoom tiny_psnr tiny_ssim base64
37 HOSTPROGS
:= $(TESTTOOLS
:%=tests
/%) doc
/print_options
38 TOOLS
= qt-faststart trasher uncoded_frame
39 TOOLS-
$(CONFIG_ZLIB
) += cws2fws
41 # $(FFLIBS-yes) needs to be in linking order
42 FFLIBS-
$(CONFIG_AVDEVICE
) += avdevice
43 FFLIBS-
$(CONFIG_AVFILTER
) += avfilter
44 FFLIBS-
$(CONFIG_AVFORMAT
) += avformat
45 FFLIBS-
$(CONFIG_AVCODEC
) += avcodec
46 FFLIBS-
$(CONFIG_AVRESAMPLE
) += avresample
47 FFLIBS-
$(CONFIG_POSTPROC
) += postproc
48 FFLIBS-
$(CONFIG_SWRESAMPLE
) += swresample
49 FFLIBS-
$(CONFIG_SWSCALE
) += swscale
53 DATA_FILES
:= $(wildcard $(SRC_PATH
)/presets
/*.ffpreset
) $(SRC_PATH
)/doc
/ffprobe.xsd
54 EXAMPLES_FILES
:= $(wildcard $(SRC_PATH
)/doc
/examples
/*.c
) $(SRC_PATH
)/doc
/examples
/Makefile
$(SRC_PATH
)/doc
/examples
/README
56 SKIPHEADERS
= cmdutils_common_opts.h compat
/w32pthreads.h
58 include $(SRC_PATH
)/common.mak
60 FF_EXTRALIBS
:= $(FFEXTRALIBS
)
61 FF_DEP_LIBS
:= $(DEP_LIBS
)
65 $(TOOLS
): %$(EXESUF
): %.o
$(EXEOBJS
)
66 $(LD
) $(LDFLAGS
) $(LDEXEFLAGS
) $(LD_O
) $^
$(ELIBS
)
68 tools
/cws2fws
$(EXESUF
): ELIBS
= $(ZLIB
)
69 tools
/uncoded_frame
$(EXESUF
): $(FF_DEP_LIBS
)
70 tools
/uncoded_frame
$(EXESUF
): ELIBS
= $(FF_EXTRALIBS
)
73 .config
: $(wildcard $(FFLIBS
:%=$(SRC_PATH
)/lib
%/all*.c
))
74 @
-tput bold
2>/dev
/null
75 @
-printf
'\nWARNING: $(?F) newer than config.h, rerun configure\n\n'
76 @
-tput sgr0
2>/dev
/null
78 SUBDIR_VARS
:= CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \
79 HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \
80 ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \
81 ALTIVEC-OBJS MMX-OBJS YASM-OBJS \
82 MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS \
83 OBJS SLIBOBJS HOSTOBJS TESTOBJS
91 $(foreach V
,$(SUBDIR_VARS
),$(eval
$(call RESET
,$(V
))))
93 include $(SRC_PATH
)/$(1)/Makefile
94 -include $(SRC_PATH
)/$(1)/$(ARCH
)/Makefile
95 -include $(SRC_PATH
)/$(1)/$(INTRINSICS
)/Makefile
96 include $(SRC_PATH
)/library.mak
99 $(foreach D
,$(FFLIBS
),$(eval
$(call DOSUBDIR
,lib
$(D
))))
101 include $(SRC_PATH
)/doc
/Makefile
104 OBJS-
$(1) += $(1).o
$(EXEOBJS
) $(OBJS-
$(1)-yes
)
105 $(1)$(PROGSSUF
)_g
$(EXESUF
): $$(OBJS-
$(1))
106 $$(OBJS-
$(1)): CFLAGS
+= $(CFLAGS-
$(1))
107 $(1)$(PROGSSUF
)_g
$(EXESUF
): LDFLAGS
+= $(LDFLAGS-
$(1))
108 $(1)$(PROGSSUF
)_g
$(EXESUF
): FF_EXTRALIBS
+= $(LIBS-
$(1))
109 -include $$(OBJS-
$(1):.o
=.d
)
112 $(foreach P
,$(PROGS
),$(eval
$(call DOPROG
,$(P
:$(PROGSSUF
)$(EXESUF
)=))))
114 ffprobe.o cmdutils.o
: libavutil
/ffversion.h
116 $(PROGS
): %$(PROGSSUF
)$(EXESUF
): %$(PROGSSUF
)_g
$(EXESUF
)
120 %$(PROGSSUF
)_g
$(EXESUF
): %.o
$(FF_DEP_LIBS
)
121 $(LD
) $(LDFLAGS
) $(LDEXEFLAGS
) $(LD_O
) $(OBJS-
$*) $(FF_EXTRALIBS
)
125 -include $(wildcard tools
/*.d
)
127 VERSION_SH
= $(SRC_PATH
)/version.sh
128 GIT_LOG
= $(SRC_PATH
)/.git
/logs
/HEAD
130 .version
: $(wildcard $(GIT_LOG
)) $(VERSION_SH
) config.mak
133 libavutil
/ffversion.h .version
:
134 $(M
)$(VERSION_SH
) $(SRC_PATH
) libavutil
/ffversion.h
$(EXTRA_VERSION
)
137 # force version.sh to run whenever version might have changed
141 install: install-progs install-data
144 install: install-libs install-headers
146 install-libs
: install-libs-yes
149 install-progs-
$(CONFIG_SHARED
): install-libs
151 install-progs
: install-progs-yes
$(AVPROGS
)
152 $(Q
)mkdir
-p
"$(BINDIR)"
153 $(INSTALL
) -c
-m
755 $(INSTPROGS
) "$(BINDIR)"
155 install-data
: $(DATA_FILES
) $(EXAMPLES_FILES
)
156 $(Q
)mkdir
-p
"$(DATADIR)/examples"
157 $(INSTALL
) -m
644 $(DATA_FILES
) "$(DATADIR)"
158 $(INSTALL
) -m
644 $(EXAMPLES_FILES
) "$(DATADIR)/examples"
160 uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data
163 $(RM
) $(addprefix "$(BINDIR)/", $(ALLAVPROGS
))
166 $(RM
) -r
"$(DATADIR)"
169 $(RM
) $(ALLAVPROGS
) $(ALLAVPROGS_G
)
170 $(RM
) $(CLEANSUFFIXES
)
171 $(RM
) $(CLEANSUFFIXES
:%=tools
/%)
172 $(RM
) -r coverage-html
173 $(RM
) -rf coverage.
info lcov
176 $(RM
) $(DISTCLEANSUFFIXES
)
177 $(RM
) config.
* .config libavutil
/avconfig.h .version version.h libavutil
/ffversion.h libavcodec
/codec_names.h
180 $(SRC_PATH
)/configure
$(value FFMPEG_CONFIGURATION
)
182 check: all alltools examples testprogs fate
184 include $(SRC_PATH
)/tests
/Makefile
189 # Dummy rule to stop make trying to rebuild removed or renamed headers
193 # Disable suffix rules. Most of the builtin rules are suffix rules,
194 # so this saves some time on slow systems.
197 .PHONY
: all all-yes alltools
check *clean config
install*
198 .PHONY
: testprogs
uninstall*