ffmpeg / Makefile @ 86be2bc3
History | View | Annotate | Download (11.2 KB)
1 |
include config.mak |
---|---|
2 |
|
3 |
SRC_DIR = $(SRC_PATH_BARE) |
4 |
|
5 |
vpath %.texi $(SRC_PATH_BARE) |
6 |
|
7 |
PROGS-$(CONFIG_FFMPEG) += ffmpeg |
8 |
PROGS-$(CONFIG_FFPLAY) += ffplay |
9 |
PROGS-$(CONFIG_FFPROBE) += ffprobe |
10 |
PROGS-$(CONFIG_FFSERVER) += ffserver |
11 |
|
12 |
PROGS := $(addsuffix $(EXESUF), $(PROGS-yes)) |
13 |
PROGS_G = $(addsuffix _g$(EXESUF), $(PROGS-yes)) |
14 |
OBJS = $(addsuffix .o, $(PROGS-yes)) cmdutils.o |
15 |
MANPAGES = $(addprefix doc/, $(addsuffix .1, $(PROGS-yes))) |
16 |
TOOLS = $(addprefix tools/, $(addsuffix $(EXESUF), cws2fws pktdumper probetest qt-faststart trasher)) |
17 |
HOSTPROGS = $(addprefix tests/, audiogen videogen rotozoom tiny_psnr) |
18 |
|
19 |
BASENAMES = ffmpeg ffplay ffprobe ffserver |
20 |
ALLPROGS = $(addsuffix $(EXESUF), $(BASENAMES)) |
21 |
ALLPROGS_G = $(addsuffix _g$(EXESUF), $(BASENAMES)) |
22 |
ALLMANPAGES = $(addsuffix .1, $(BASENAMES)) |
23 |
|
24 |
FFLIBS-$(CONFIG_AVDEVICE) += avdevice |
25 |
FFLIBS-$(CONFIG_AVFILTER) += avfilter |
26 |
FFLIBS-$(CONFIG_AVFORMAT) += avformat |
27 |
FFLIBS-$(CONFIG_AVCODEC) += avcodec |
28 |
FFLIBS-$(CONFIG_POSTPROC) += postproc |
29 |
FFLIBS-$(CONFIG_SWSCALE) += swscale |
30 |
|
31 |
FFLIBS := avutil |
32 |
|
33 |
DATA_FILES := $(wildcard $(SRC_DIR)/ffpresets/*.ffpreset) |
34 |
|
35 |
SKIPHEADERS = cmdutils_common_opts.h |
36 |
|
37 |
include common.mak |
38 |
|
39 |
FF_LDFLAGS := $(FFLDFLAGS) |
40 |
FF_EXTRALIBS := $(FFEXTRALIBS) |
41 |
FF_DEP_LIBS := $(DEP_LIBS) |
42 |
|
43 |
ALL_TARGETS-$(CONFIG_DOC) += documentation |
44 |
|
45 |
ifdef PROGS |
46 |
INSTALL_TARGETS-yes += install-progs install-data |
47 |
INSTALL_TARGETS-$(CONFIG_DOC) += install-man |
48 |
endif |
49 |
INSTALL_PROGS_TARGETS-$(CONFIG_SHARED) = install-libs |
50 |
|
51 |
all: $(FF_DEP_LIBS) $(PROGS) $(ALL_TARGETS-yes) |
52 |
|
53 |
$(PROGS): %$(EXESUF): %_g$(EXESUF) |
54 |
$(CP) $< $@ |
55 |
$(STRIP) $@ |
56 |
|
57 |
SUBDIR_VARS := OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \ |
58 |
ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT YASM-OBJS \ |
59 |
HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS |
60 |
|
61 |
define RESET |
62 |
$(1) := |
63 |
$(1)-yes := |
64 |
endef |
65 |
|
66 |
define DOSUBDIR |
67 |
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) |
68 |
SUBDIR := $(1)/ |
69 |
include $(1)/Makefile |
70 |
endef |
71 |
|
72 |
$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) |
73 |
|
74 |
ffplay_g$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) |
75 |
ffserver_g$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS) |
76 |
|
77 |
%_g$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) |
78 |
$(LD) $(FF_LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS) |
79 |
|
80 |
tools/%$(EXESUF): tools/%.o |
81 |
$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS) |
82 |
|
83 |
tools/%.o: tools/%.c |
84 |
$(CC) $(CPPFLAGS) $(CFLAGS) $(CC_O) $< |
85 |
|
86 |
ffplay.o ffplay.d: CFLAGS += $(SDL_CFLAGS) |
87 |
|
88 |
cmdutils.o cmdutils.d: version.h |
89 |
|
90 |
alltools: $(TOOLS) |
91 |
|
92 |
documentation: $(addprefix doc/, developer.html faq.html ffmpeg-doc.html \ |
93 |
ffplay-doc.html ffprobe-doc.html ffserver-doc.html \ |
94 |
general.html libavfilter.html $(ALLMANPAGES)) |
95 |
|
96 |
doc/%.html: MSG = HTML |
97 |
doc/%.html: doc/%.texi |
98 |
$(M)cd doc && texi2html -monolithic -number $(<:doc/%=%) |
99 |
|
100 |
doc/%.pod: MSG = POD |
101 |
doc/%.pod: doc/%-doc.texi |
102 |
$(M)doc/texi2pod.pl $< $@ |
103 |
|
104 |
doc/%.1: MSG = MAN |
105 |
doc/%.1: doc/%.pod |
106 |
$(M)pod2man --section=1 --center=" " --release=" " $< > $@ |
107 |
|
108 |
install: $(INSTALL_TARGETS-yes) |
109 |
|
110 |
install-progs: $(PROGS) $(INSTALL_PROGS_TARGETS-yes) |
111 |
$(Q)mkdir -p "$(BINDIR)" |
112 |
$(INSTALL) -c -m 755 $(PROGS) "$(BINDIR)" |
113 |
|
114 |
install-data: $(DATA_FILES) |
115 |
$(Q)mkdir -p "$(DATADIR)" |
116 |
$(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" |
117 |
|
118 |
install-man: $(MANPAGES) |
119 |
$(Q)mkdir -p "$(MANDIR)/man1" |
120 |
$(INSTALL) -m 644 $(MANPAGES) "$(MANDIR)/man1" |
121 |
|
122 |
uninstall: uninstall-progs uninstall-data uninstall-man |
123 |
|
124 |
uninstall-progs: |
125 |
$(RM) $(addprefix "$(BINDIR)/", $(ALLPROGS)) |
126 |
|
127 |
uninstall-data: |
128 |
$(RM) -r "$(DATADIR)" |
129 |
|
130 |
uninstall-man: |
131 |
$(RM) $(addprefix "$(MANDIR)/man1/",$(ALLMANPAGES)) |
132 |
|
133 |
testclean: |
134 |
$(RM) -r tests/vsynth1 tests/vsynth2 tests/data |
135 |
$(RM) $(addprefix tests/,$(CLEANSUFFIXES)) |
136 |
$(RM) tests/seek_test$(EXESUF) tests/seek_test.o |
137 |
$(RM) $(addprefix tests/,$(addsuffix $(HOSTEXESUF),audiogen videogen rotozoom tiny_psnr)) |
138 |
|
139 |
clean:: testclean |
140 |
$(RM) $(ALLPROGS) $(ALLPROGS_G) |
141 |
$(RM) $(CLEANSUFFIXES) |
142 |
$(RM) doc/*.html doc/*.pod doc/*.1 |
143 |
$(RM) $(TOOLS) |
144 |
|
145 |
distclean:: |
146 |
$(RM) $(DISTCLEANSUFFIXES) |
147 |
$(RM) version.h config.* libavutil/avconfig.h |
148 |
|
149 |
config: |
150 |
$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION) |
151 |
|
152 |
# regression tests |
153 |
|
154 |
check: test checkheaders |
155 |
|
156 |
fulltest test: codectest lavftest seektest |
157 |
|
158 |
FFSERVER_REFFILE = $(SRC_PATH)/tests/ffserver.regression.ref |
159 |
SEEK_REFFILE = $(SRC_PATH)/tests/seek.regression.ref |
160 |
|
161 |
ENCDEC = $(and $(CONFIG_$(1)_ENCODER),$(CONFIG_$(1)_DECODER)) |
162 |
MUXDEM = $(and $(CONFIG_$(1)_MUXER),$(CONFIG_$(or $(2),$(1))_DEMUXER)) |
163 |
|
164 |
VCODEC_TESTS = |
165 |
VCODEC_TESTS-$(call ENCDEC,ASV1) += asv1 |
166 |
VCODEC_TESTS-$(call ENCDEC,ASV2) += asv2 |
167 |
VCODEC_TESTS-$(call ENCDEC,DNXHD) += dnxhd_1080i dnxhd_720p dnxhd_720p_rd |
168 |
VCODEC_TESTS-$(call ENCDEC,DVVIDEO) += dv dv50 |
169 |
VCODEC_TESTS-$(call ENCDEC,FFV1) += ffv1 |
170 |
VCODEC_TESTS-$(call ENCDEC,FLASHSV) += flashsv |
171 |
VCODEC_TESTS-$(call ENCDEC,FLV) += flv |
172 |
VCODEC_TESTS-$(call ENCDEC,H261) += h261 |
173 |
VCODEC_TESTS-$(call ENCDEC,H263) += h263 h263p |
174 |
VCODEC_TESTS-$(call ENCDEC,HUFFYUV) += huffyuv |
175 |
VCODEC_TESTS-$(call ENCDEC,JPEGLS) += jpegls |
176 |
VCODEC_TESTS-$(call ENCDEC,MJPEG) += mjpeg ljpeg |
177 |
VCODEC_TESTS-$(call ENCDEC,MPEG1VIDEO) += mpeg mpeg1b |
178 |
VCODEC_TESTS-$(call ENCDEC,MPEG2VIDEO) += mpeg2 mpeg2thread |
179 |
VCODEC_TESTS-$(call ENCDEC,MPEG4) += mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc |
180 |
VCODEC_TESTS-$(call ENCDEC,MSMPEG4V1) += msmpeg4 |
181 |
VCODEC_TESTS-$(call ENCDEC,MSMPEG4V2) += msmpeg4v2 |
182 |
VCODEC_TESTS-$(call ENCDEC,ROQ) += roq |
183 |
VCODEC_TESTS-$(call ENCDEC,RV10) += rv10 |
184 |
VCODEC_TESTS-$(call ENCDEC,RV20) += rv20 |
185 |
VCODEC_TESTS-$(call ENCDEC,SNOW) += snow snowll |
186 |
VCODEC_TESTS-$(call ENCDEC,SVQ1) += svq1 |
187 |
VCODEC_TESTS-$(call ENCDEC,WMV1) += wmv1 |
188 |
VCODEC_TESTS-$(call ENCDEC,WMV2) += wmv2 |
189 |
|
190 |
ACODEC_TESTS = |
191 |
ACODEC_TESTS-$(call ENCDEC,AC3) += ac3 |
192 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_G726) += g726 |
193 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_IMA_QT) += adpcm_ima_qt |
194 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_IMA_WAV) += adpcm_ima_wav |
195 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_MS) += adpcm_ms |
196 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_SWF) += adpcm_swf |
197 |
ACODEC_TESTS-$(call ENCDEC,ADPCM_YAMAHA) += adpcm_yam |
198 |
ACODEC_TESTS-$(call ENCDEC,ALAC) += alac |
199 |
ACODEC_TESTS-$(call ENCDEC,FLAC) += flac |
200 |
ACODEC_TESTS-$(call ENCDEC,MP2) += mp2 |
201 |
ACODEC_TESTS-$(call ENCDEC,PCM_S16LE) += pcm # fixme |
202 |
ACODEC_TESTS-$(call ENCDEC,WMAV1) += wmav1 |
203 |
ACODEC_TESTS-$(call ENCDEC,WMAV1) += wmav2 |
204 |
|
205 |
LAVF_TESTS = |
206 |
LAVF_TESTS-$(call MUXDEM,AIFF) += aiff |
207 |
LAVF_TESTS-$(call MUXDEM,PCM_ALAW) += alaw |
208 |
LAVF_TESTS-$(call MUXDEM,ASF) += asf |
209 |
LAVF_TESTS-$(call MUXDEM,AU) += au |
210 |
LAVF_TESTS-$(call MUXDEM,AVI) += avi |
211 |
LAVF_TESTS-$(call ENCDEC,BMP) += bmp |
212 |
LAVF_TESTS-$(call MUXDEM,DV) += dv_fmt |
213 |
LAVF_TESTS-$(call MUXDEM,FFM) += ffm |
214 |
LAVF_TESTS-$(call MUXDEM,FLV) += flv_fmt |
215 |
LAVF_TESTS-$(call ENCDEC,GIF) += gif |
216 |
LAVF_TESTS-$(call MUXDEM,GXF) += gxf |
217 |
LAVF_TESTS-$(call ENCDEC,MJPEG) += jpg |
218 |
LAVF_TESTS-$(call MUXDEM,MATROSKA) += mkv |
219 |
LAVF_TESTS-$(call MUXDEM,MMF) += mmf |
220 |
LAVF_TESTS-$(call MUXDEM,MOV) += mov |
221 |
LAVF_TESTS-$(call MUXDEM,MPEG1SYSTEM,MPEGPS) += mpg |
222 |
LAVF_TESTS-$(call MUXDEM,PCM_MULAW) += mulaw |
223 |
LAVF_TESTS-$(call MUXDEM,MXF) += mxf |
224 |
LAVF_TESTS-$(call MUXDEM,NUT) += nut |
225 |
LAVF_TESTS-$(call MUXDEM,OGG) += ogg |
226 |
LAVF_TESTS-$(call ENCDEC,PBM) += pbmpipe |
227 |
LAVF_TESTS-$(call ENCDEC,PCX) += pcx |
228 |
LAVF_TESTS-$(call ENCDEC,PGM) += pgm pgmpipe |
229 |
LAVF_TESTS-$(call MUXDEM,RAWVIDEO) += pixfmt |
230 |
LAVF_TESTS-$(call ENCDEC,PPM) += ppm ppmpipe |
231 |
LAVF_TESTS-$(call MUXDEM,RM) += rm |
232 |
LAVF_TESTS-$(call ENCDEC,SGI) += sgi |
233 |
LAVF_TESTS-$(call MUXDEM,SWF) += swf |
234 |
LAVF_TESTS-$(call ENCDEC,TARGA) += tga |
235 |
LAVF_TESTS-$(call ENCDEC,TIFF) += tiff |
236 |
LAVF_TESTS-$(call MUXDEM,MPEGTS) += ts |
237 |
LAVF_TESTS-$(call MUXDEM,VOC) += voc |
238 |
LAVF_TESTS-$(call MUXDEM,WAV) += wav |
239 |
LAVF_TESTS-$(call MUXDEM,YUV4MPEGPIPE) += yuv4mpeg |
240 |
|
241 |
LAVFI_TESTS = |
242 |
|
243 |
ACODEC_TESTS := $(addprefix regtest-, $(ACODEC_TESTS) $(ACODEC_TESTS-yes)) |
244 |
VCODEC_TESTS := $(addprefix regtest-, $(VCODEC_TESTS) $(VCODEC_TESTS-yes)) |
245 |
LAVF_TESTS := $(addprefix regtest-, $(LAVF_TESTS) $(LAVF_TESTS-yes)) |
246 |
LAVFI_TESTS := $(addprefix regtest-, $(LAVFI_TESTS) $(LAVFI_TESTS-yes)) |
247 |
|
248 |
CODEC_TESTS = $(VCODEC_TESTS) $(ACODEC_TESTS) |
249 |
|
250 |
codectest: $(CODEC_TESTS) |
251 |
lavftest: $(LAVF_TESTS) |
252 |
|
253 |
# lavfitest: $(LAVFI_TESTS) |
254 |
|
255 |
$(ACODEC_TESTS): regtest-aref |
256 |
$(VCODEC_TESTS): regtest-vref |
257 |
$(LAVF_TESTS) $(LAVFI_TESTS): regtest-ref |
258 |
|
259 |
REFFILE = $(SRC_PATH)/tests/ref/$(1)/$(2:regtest-%=%) |
260 |
RESFILE = tests/data/$(2:regtest-%=%).$(1).regression |
261 |
|
262 |
define CODECTEST_CMD |
263 |
$(SRC_PATH)/tests/codec-regression.sh $@ vsynth1 tests/vsynth1 "$(TARGET_EXEC)" "$(TARGET_PATH)" |
264 |
$(SRC_PATH)/tests/codec-regression.sh $@ vsynth2 tests/vsynth2 "$(TARGET_EXEC)" "$(TARGET_PATH)" |
265 |
endef |
266 |
|
267 |
regtest-ref: regtest-aref regtest-vref |
268 |
|
269 |
regtest-vref: ffmpeg$(EXESUF) tests/vsynth1/00.pgm tests/vsynth2/00.pgm |
270 |
$(CODECTEST_CMD) |
271 |
|
272 |
regtest-aref: ffmpeg$(EXESUF) tests/data/asynth1.sw |
273 |
@$(SRC_PATH)/tests/codec-regression.sh $@ acodec tests/acodec "$(TARGET_EXEC)" "$(TARGET_PATH)" |
274 |
|
275 |
$(VCODEC_TESTS): tests/tiny_psnr$(HOSTEXESUF) |
276 |
@echo "TEST VCODEC $(@:regtest-%=%)" |
277 |
@$(CODECTEST_CMD) |
278 |
@diff -u -w $(call REFFILE,vsynth1,$@) $(call RESFILE,vsynth1,$@) |
279 |
@diff -u -w $(call REFFILE,vsynth2,$@) $(call RESFILE,vsynth2,$@) |
280 |
|
281 |
$(ACODEC_TESTS): tests/tiny_psnr$(HOSTEXESUF) |
282 |
@echo "TEST ACODEC $(@:regtest-%=%)" |
283 |
@$(SRC_PATH)/tests/codec-regression.sh $@ acodec tests/acodec "$(TARGET_EXEC)" "$(TARGET_PATH)" |
284 |
@diff -u -w $(call REFFILE,acodec,$@) $(call RESFILE,acodec,$@) |
285 |
|
286 |
$(LAVF_TESTS): |
287 |
@echo "TEST LAVF $(@:regtest-%=%)" |
288 |
@$(SRC_PATH)/tests/lavf-regression.sh $@ lavf tests/vsynth1 "$(TARGET_EXEC)" "$(TARGET_PATH)" |
289 |
@diff -u -w $(call REFFILE,lavf,$@) $(call RESFILE,lavf,$@) |
290 |
|
291 |
$(LAVFI_TESTS): |
292 |
@echo "TEST LAVFI $(@:regtest-%=%)" |
293 |
@$(SRC_PATH)/tests/lavfi-regression.sh $@ lavfi tests/vsynth1 "$(TARGET_EXEC)" "$(TARGET_PATH)" |
294 |
@diff -u -w $(call REFFILE,lavfi,$@) $(call RESFILE,lavfi,$@) |
295 |
|
296 |
seektest: codectest lavftest tests/seek_test$(EXESUF) |
297 |
$(SRC_PATH)/tests/seek-regression.sh $(SRC_PATH) "$(TARGET_EXEC)" "$(TARGET_PATH)" |
298 |
|
299 |
ffservertest: ffserver$(EXESUF) tests/vsynth1/00.pgm tests/data/asynth1.sw |
300 |
@echo |
301 |
@echo "Unfortunately ffserver is broken and therefore its regression" |
302 |
@echo "test fails randomly. Treat the results accordingly." |
303 |
@echo |
304 |
$(SRC_PATH)/tests/ffserver-regression.sh $(FFSERVER_REFFILE) $(SRC_PATH)/tests/ffserver.conf |
305 |
|
306 |
tests/vsynth1/00.pgm: tests/videogen$(HOSTEXESUF) |
307 |
mkdir -p tests/vsynth1 |
308 |
$(BUILD_ROOT)/$< 'tests/vsynth1/' |
309 |
|
310 |
tests/vsynth2/00.pgm: tests/rotozoom$(HOSTEXESUF) |
311 |
mkdir -p tests/vsynth2 |
312 |
$(BUILD_ROOT)/$< 'tests/vsynth2/' $(SRC_PATH)/tests/lena.pnm |
313 |
|
314 |
tests/data/asynth1.sw: tests/audiogen$(HOSTEXESUF) |
315 |
mkdir -p tests/data |
316 |
$(BUILD_ROOT)/$< $@ |
317 |
|
318 |
tests/seek_test$(EXESUF): tests/seek_test.o $(FF_DEP_LIBS) |
319 |
$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS) |
320 |
|
321 |
|
322 |
.PHONY: documentation *test regtest-* zlib-error alltools check config |