6 vpath
%.asm
$(SRC_PATH
)
8 vpath
%.texi
$(SRC_PATH
)
12 ECHO
= printf
"$(1)\t%s\n" $(2)
13 BRIEF
= CC AS YASM AR LD HOSTCC
14 SILENT
= DEPCC YASMDEP RM RANLIB
16 M
= @
$(call ECHO
,$(TAG
),$@
);
17 $(foreach VAR
,$(BRIEF
), \
18 $(eval
override $(VAR
) = @
$$(call ECHO
,$(VAR
),$$(MSG
)); $($(VAR
))))
19 $(foreach VAR
,$(SILENT
),$(eval
override $(VAR
) = @
$($(VAR
))))
20 $(eval INSTALL
= @
$(call ECHO
,INSTALL
,$$(^
:$(SRC_PATH
)/%=%)); $(INSTALL
))
23 IFLAGS
:= -I.
-I
$(SRC_PATH
)
24 CPPFLAGS
:= $(IFLAGS
) $(CPPFLAGS
)
27 YASMFLAGS
+= $(IFLAGS
) -Pconfig.asm
28 HOSTCFLAGS
+= $(IFLAGS
)
29 LDFLAGS
+= $(ALLFFLIBS
:%=-Llib
%)
33 $($(1)) $(CPPFLAGS
) $($(1)FLAGS
) $($(1)_DEPFLAGS
) -c
$($(1)_O
) $<
36 COMPILE_C
= $(call COMPILE
,CC
)
37 COMPILE_S
= $(call COMPILE
,AS
)
46 $(CC
) $(CPPFLAGS
) $(CFLAGS
) -Wno-unused
-c
-o
$@
-x c
$<
49 $(Q
)sed
's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^
> $@
53 PROGS-
$(CONFIG_FFMPEG
) += ffmpeg
54 PROGS-
$(CONFIG_FFPLAY
) += ffplay
55 PROGS-
$(CONFIG_FFPROBE
) += ffprobe
56 PROGS-
$(CONFIG_FFSERVER
) += ffserver
58 PROGS
:= $(PROGS-yes
:%=%$(EXESUF
))
59 OBJS
= $(PROGS-yes
:%=%.o
) cmdutils.o
60 TESTTOOLS
= audiogen videogen rotozoom tiny_psnr base64
61 HOSTPROGS
:= $(TESTTOOLS
:%=tests
/%)
62 TOOLS
= qt-faststart trasher
63 TOOLS-
$(CONFIG_ZLIB
) += cws2fws
65 BASENAMES
= ffmpeg ffplay ffprobe ffserver
66 ALLPROGS
= $(BASENAMES
:%=%$(EXESUF
))
67 ALLMANPAGES
= $(BASENAMES
:%=%.1)
69 ALLFFLIBS
= avcodec avdevice avfilter avformat avutil postproc swscale
71 FFLIBS-
$(CONFIG_AVDEVICE
) += avdevice
72 FFLIBS-
$(CONFIG_AVFILTER
) += avfilter
73 FFLIBS-
$(CONFIG_AVFORMAT
) += avformat
74 FFLIBS-
$(CONFIG_AVCODEC
) += avcodec
75 FFLIBS-
$(CONFIG_POSTPROC
) += postproc
76 FFLIBS-
$(CONFIG_SWSCALE
) += swscale
80 DATA_FILES
:= $(wildcard $(SRC_PATH
)/ffpresets
/*.ffpreset
)
82 SKIPHEADERS
= cmdutils_common_opts.h
84 include $(SRC_PATH
)/common.mak
86 FF_EXTRALIBS
:= $(FFEXTRALIBS
)
87 FF_DEP_LIBS
:= $(DEP_LIBS
)
89 all: $(FF_DEP_LIBS
) $(PROGS
)
91 $(TOOLS
): %$(EXESUF
): %.o
92 $(LD
) $(LDFLAGS
) -o
$@
$< $(ELIBS
)
94 tools
/cws2fws
$(EXESUF
): ELIBS
= -lz
97 .config
: $(wildcard $(FFLIBS
:%=$(SRC_PATH
)/lib
%/all*.c
))
98 @
-tput bold
2>/dev
/null
99 @
-printf
'\nWARNING: $(?F) newer than config.h, rerun configure\n\n'
100 @
-tput sgr0
2>/dev
/null
102 SUBDIR_VARS
:= OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \
103 ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT YASM-OBJS \
104 HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS ARMV6-OBJS TOOLS
112 $(foreach V
,$(SUBDIR_VARS
),$(eval
$(call RESET
,$(V
))))
114 include $(SRC_PATH
)/$(1)/Makefile
117 $(foreach D
,$(FFLIBS
),$(eval
$(call DOSUBDIR
,lib
$(D
))))
119 ffplay.o
: CFLAGS
+= $(SDL_CFLAGS
)
120 ffplay
$(EXESUF
): FF_EXTRALIBS
+= $(SDL_LIBS
)
121 ffserver
$(EXESUF
): LDFLAGS
+= $(FFSERVERLDFLAGS
)
123 $(PROGS
): %$(EXESUF
): %.o cmdutils.o
$(FF_DEP_LIBS
)
124 $(LD
) $(LDFLAGS
) -o
$@
$< cmdutils.o
$(FF_EXTRALIBS
)
128 -include $(wildcard tools
/*.d
)
130 VERSION_SH
= $(SRC_PATH
)/version.sh
131 GIT_LOG
= $(SRC_PATH
)/.git
/logs
/HEAD
133 .version
: $(wildcard $(GIT_LOG
)) $(VERSION_SH
) config.mak
137 $(M
)$(VERSION_SH
) $(SRC_PATH
) version.h
$(EXTRA_VERSION
)
140 # force version.sh to run whenever version might have changed
144 install: install-progs install-data
147 install: install-libs install-headers
149 install-libs
: install-libs-yes
152 install-progs-
$(CONFIG_SHARED
): install-libs
154 install-progs
: install-progs-yes
$(PROGS
)
155 $(Q
)mkdir
-p
"$(BINDIR)"
156 $(INSTALL
) -c
-m
755 $(PROGS
) "$(BINDIR)"
158 install-data
: $(DATA_FILES
)
159 $(Q
)mkdir
-p
"$(DATADIR)"
160 $(INSTALL
) -m
644 $(DATA_FILES
) "$(DATADIR)"
162 uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data
165 $(RM
) $(addprefix "$(BINDIR)/", $(ALLPROGS
))
168 $(RM
) -r
"$(DATADIR)"
172 $(RM
) $(CLEANSUFFIXES
)
174 $(RM
) $(CLEANSUFFIXES
:%=tools
/%)
177 $(RM
) $(DISTCLEANSUFFIXES
)
178 $(RM
) config.
* .version version.h libavutil
/avconfig.h
181 $(SRC_PATH
)/configure
$(value LIBAV_CONFIGURATION
)
183 include $(SRC_PATH
)/doc
/Makefile
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
*clean config examples
install*
198 .PHONY
: testprogs
uninstall*