Makefile 11.2 KB
Newer Older
J
Justin Ruggles 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
include config.mak

SRC_DIR = $(SRC_PATH_BARE)

vpath %.texi $(SRC_PATH_BARE)

PROGS-$(CONFIG_FFMPEG)   += ffmpeg
PROGS-$(CONFIG_FFPLAY)   += ffplay
PROGS-$(CONFIG_FFSERVER) += ffserver

PROGS       = $(addsuffix   $(EXESUF), $(PROGS-yes))
PROGS_G     = $(addsuffix _g$(EXESUF), $(PROGS-yes))
OBJS        = $(addsuffix .o,          $(PROGS-yes)) cmdutils.o
MANPAGES    = $(addprefix doc/, $(addsuffix .1, $(PROGS-yes)))
D
Diego Biurrun 已提交
15
TOOLS       = $(addprefix tools/, $(addsuffix $(EXESUF), cws2fws pktdumper probetest qt-faststart trasher))
J
Justin Ruggles 已提交
16 17 18 19 20 21 22 23 24

BASENAMES   = ffmpeg ffplay ffserver
ALLPROGS    = $(addsuffix   $(EXESUF), $(BASENAMES))
ALLPROGS_G  = $(addsuffix _g$(EXESUF), $(BASENAMES))
ALLMANPAGES = $(addsuffix .1, $(BASENAMES))

FFLIBS-$(CONFIG_AVFILTER) += avfilter
FFLIBS-$(CONFIG_POSTPROC) += postproc

M
Michael Niedermayer 已提交
25
FFLIBS := avdevice avformat avcodec avutil swscale
J
Justin Ruggles 已提交
26

27 28
DATA_FILES := $(wildcard $(SRC_DIR)/ffpresets/*.ffpreset)

J
Justin Ruggles 已提交
29 30 31 32 33 34 35 36 37
include common.mak

FF_LDFLAGS   := $(FFLDFLAGS)
FF_EXTRALIBS := $(FFEXTRALIBS)
FF_DEP_LIBS  := $(DEP_LIBS)

ALL_TARGETS-$(BUILD_DOC)    += documentation

ifneq ($(PROGS),)
38
INSTALL_TARGETS-yes             += install-progs install-data
J
Justin Ruggles 已提交
39 40
INSTALL_TARGETS-$(BUILD_DOC)    += install-man
endif
41
INSTALL_PROGS_TARGETS-$(CONFIG_SHARED) = install-libs
J
Justin Ruggles 已提交
42 43 44 45 46 47 48

all: $(FF_DEP_LIBS) $(PROGS) $(ALL_TARGETS-yes)

$(PROGS): %$(EXESUF): %_g$(EXESUF)
	cp -p $< $@
	$(STRIP) $@

49
SUBDIR_VARS := OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \
50
               ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT YASM-OBJS
J
Justin Ruggles 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

define RESET
$(1) :=
$(1)-yes :=
endef

define DOSUBDIR
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
SUBDIR := $(1)/
include $(1)/Makefile
endef

$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))

ffplay_g$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS)
ffserver_g$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS)

%_g$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS)
69
	$(LD) $(FF_LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS)
J
Justin Ruggles 已提交
70

M
Måns Rullgård 已提交
71 72 73
tools/%$(EXESUF): tools/%.o
	$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)

74
tools/%.o: tools/%.c
M
Måns Rullgård 已提交
75
	$(CC) $(CPPFLAGS) $(CFLAGS) $(CC_O) $<
J
Justin Ruggles 已提交
76 77 78

ffplay.o ffplay.d: CFLAGS += $(SDL_CFLAGS)

79 80
cmdutils.o cmdutils.d: version.h

81
alltools: $(TOOLS)
82

83
documentation: $(addprefix doc/, developer.html faq.html ffmpeg-doc.html ffserver-doc.html \
84
                                 ffplay-doc.html general.html vfilters.html $(ALLMANPAGES))
J
Justin Ruggles 已提交
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

doc/%.html: doc/%.texi
	texi2html -monolithic -number $<
	mv $(@F) $@

doc/%.pod: doc/%-doc.texi
	doc/texi2pod.pl $< $@

doc/%.1: doc/%.pod
	pod2man --section=1 --center=" " --release=" " $< > $@

install: $(INSTALL_TARGETS-yes)

install-progs: $(PROGS) $(INSTALL_PROGS_TARGETS-yes)
	install -d "$(BINDIR)"
	install -c -m 755 $(PROGS) "$(BINDIR)"

102 103 104 105
install-data: $(DATA_FILES)
	install -d "$(DATADIR)"
	install -m 644 $(DATA_FILES) "$(DATADIR)"

J
Justin Ruggles 已提交
106 107 108 109
install-man: $(MANPAGES)
	install -d "$(MANDIR)/man1"
	install -m 644 $(MANPAGES) "$(MANDIR)/man1"

110
uninstall: uninstall-progs uninstall-data uninstall-man
J
Justin Ruggles 已提交
111 112 113 114

uninstall-progs:
	rm -f $(addprefix "$(BINDIR)/", $(ALLPROGS))

115 116 117
uninstall-data:
	rm -rf "$(DATADIR)"

J
Justin Ruggles 已提交
118 119 120
uninstall-man:
	rm -f $(addprefix "$(MANDIR)/man1/",$(ALLMANPAGES))

121
testclean:
122
	rm -rf tests/vsynth1 tests/vsynth2 tests/data tests/*~
123 124

clean:: testclean
125
	rm -f $(ALLPROGS) $(ALLPROGS_G)
126
	rm -f $(CLEANSUFFIXES)
J
Justin Ruggles 已提交
127
	rm -f doc/*.html doc/*.pod doc/*.1
128
	rm -f tests/seek_test$(EXESUF) tests/seek_test.o
129
	rm -f $(addprefix tests/,$(addsuffix $(HOSTEXESUF),audiogen videogen rotozoom tiny_psnr))
130
	rm -f $(TOOLS)
J
Justin Ruggles 已提交
131 132

distclean::
133
	rm -f $(DISTCLEANSUFFIXES)
134
	rm -f version.h config.*
J
Justin Ruggles 已提交
135

136 137 138
config:
	$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)

J
Justin Ruggles 已提交
139 140
# regression tests

141 142
check: test checkheaders

143
fulltest test: codectest lavftest seektest
J
Justin Ruggles 已提交
144 145

FFSERVER_REFFILE = $(SRC_PATH)/tests/ffserver.regression.ref
146
LAVF_REFFILE     = $(SRC_PATH)/tests/lavf.regression.ref
147
LAVFI_REFFILE    = $(SRC_PATH)/tests/lavfi.regression.ref
J
Justin Ruggles 已提交
148 149
ROTOZOOM_REFFILE = $(SRC_PATH)/tests/rotozoom.regression.ref
SEEK_REFFILE     = $(SRC_PATH)/tests/seek.regression.ref
150
VSYNTH_REFFILE   = $(SRC_PATH)/tests/vsynth.regression.ref
J
Justin Ruggles 已提交
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

CODEC_TESTS = $(addprefix regtest-,             \
        mpeg                                    \
        mpeg2                                   \
        mpeg2thread                             \
        msmpeg4v2                               \
        msmpeg4                                 \
        wmv1                                    \
        wmv2                                    \
        h261                                    \
        h263                                    \
        h263p                                   \
        mpeg4                                   \
        huffyuv                                 \
        rc                                      \
        mpeg4adv                                \
        mpeg4thread                             \
        error                                   \
        mpeg4nr                                 \
        mpeg1b                                  \
        mjpeg                                   \
        ljpeg                                   \
        jpegls                                  \
        rv10                                    \
        rv20                                    \
        asv1                                    \
        asv2                                    \
        flv                                     \
        ffv1                                    \
        snow                                    \
        snowll                                  \
        dv                                      \
        dv50                                    \
184 185 186
        dnxhd_1080i                             \
        dnxhd_720p                              \
        dnxhd_720p_rd                           \
J
Justin Ruggles 已提交
187 188 189 190 191 192 193 194 195 196
        svq1                                    \
        flashsv                                 \
        mp2                                     \
        ac3                                     \
        g726                                    \
        adpcm_ima_wav                           \
        adpcm_ima_qt                            \
        adpcm_ms                                \
        adpcm_yam                               \
        adpcm_swf                               \
197
        alac                                    \
J
Justin Ruggles 已提交
198 199 200 201 202 203 204 205 206 207
        flac                                    \
        wma                                     \
        pcm                                     \
    )

LAVF_TESTS = $(addprefix regtest-,              \
        avi                                     \
        asf                                     \
        rm                                      \
        mpg                                     \
208
        mxf                                     \
J
Justin Ruggles 已提交
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
        ts                                      \
        swf                                     \
        ffm                                     \
        flv_fmt                                 \
        mov                                     \
        dv_fmt                                  \
        gxf                                     \
        nut                                     \
        mkv                                     \
        pbmpipe                                 \
        pgmpipe                                 \
        ppmpipe                                 \
        gif                                     \
        yuv4mpeg                                \
        pgm                                     \
        ppm                                     \
        bmp                                     \
        tga                                     \
        tiff                                    \
        sgi                                     \
        jpg                                     \
        wav                                     \
        alaw                                    \
        mulaw                                   \
        au                                      \
        mmf                                     \
        aiff                                    \
        voc                                     \
        ogg                                     \
        pixfmt                                  \
239
        pcx                                     \
J
Justin Ruggles 已提交
240 241
    )

242 243 244
LAVFI_TESTS = $(addprefix regtest-,             \
    )

245
RESFILES = $(addprefix tests/data/,$(addsuffix .$(1),$(2:regtest-%=%)))
J
Justin Ruggles 已提交
246

247 248
ROTOZOOM_RESFILES = $(call RESFILES,rotozoom.regression,$(CODEC_TESTS))
VSYNTH_RESFILES   = $(call RESFILES,vsynth.regression,$(CODEC_TESTS))
J
Justin Ruggles 已提交
249

250
LAVF_RESFILES = $(call RESFILES,lavf.regression,$(LAVF_TESTS))
251
LAVFI_RESFILES = $(call RESFILES,lavfi.regression,$(LAVFI_TESTS))
J
Justin Ruggles 已提交
252

253
LAVF_RESFILE     = tests/data/lavf.regression
254
LAVFI_RESFILE    = tests/data/lavfi.regression
255 256
ROTOZOOM_RESFILE = tests/data/rotozoom.regression
VSYNTH_RESFILE   = tests/data/vsynth.regression
J
Justin Ruggles 已提交
257

258 259 260 261 262 263 264 265 266
ifneq ($(CONFIG_ZLIB),yes)
regtest-flashsv codectest: zlib-error
endif
zlib-error:
	@echo
	@echo "This regression test requires zlib."
	@echo
	@exit 1

267 268 269
codectest: $(VSYNTH_RESFILE) $(ROTOZOOM_RESFILE)
	diff -u -w $(VSYNTH_REFFILE)   $(VSYNTH_RESFILE)
	diff -u -w $(ROTOZOOM_REFFILE) $(ROTOZOOM_RESFILE)
J
Justin Ruggles 已提交
270

271 272
lavftest: $(LAVF_RESFILE)
	diff -u -w $(LAVF_REFFILE) $(LAVF_RESFILE)
J
Justin Ruggles 已提交
273

274 275 276 277
# lavfitest: $(LAVFI_RESFILE)
# 	diff -u -w $(LAVFI_REFFILE) $(LAVFI_RESFILE)

$(VSYNTH_RESFILE) $(ROTOZOOM_RESFILE) $(LAVF_RESFILE) $(LAVFI_RESFILE):
J
Justin Ruggles 已提交
278 279
	cat $^ > $@

280
$(LAVF_RESFILE):     $(LAVF_RESFILES)
281
$(LAVFI_RESFILE):    $(LAVFI_RESFILES)
282 283
$(ROTOZOOM_RESFILE): $(ROTOZOOM_RESFILES)
$(VSYNTH_RESFILE):   $(VSYNTH_RESFILES)
J
Justin Ruggles 已提交
284

285
$(VSYNTH_RESFILES) $(ROTOZOOM_RESFILES): $(CODEC_TESTS)
J
Justin Ruggles 已提交
286

287
$(LAVF_RESFILES): $(LAVF_TESTS)
288
$(LAVFI_RESFILES): $(LAVFI_TESTS)
J
Justin Ruggles 已提交
289

290
$(CODEC_TESTS) $(LAVF_TESTS) $(LAVFI_TESTS): regtest-ref
J
Justin Ruggles 已提交
291

292
regtest-ref: ffmpeg$(EXESUF) tests/vsynth1/00.pgm tests/vsynth2/00.pgm tests/data/asynth1.sw
J
Justin Ruggles 已提交
293

294
$(CODEC_TESTS) regtest-ref: tests/tiny_psnr$(HOSTEXESUF)
295 296
	$(SRC_PATH)/tests/codec-regression.sh $@ vsynth   tests/vsynth1 a "$(TARGET_EXEC)" "$(TARGET_PATH)"
	$(SRC_PATH)/tests/codec-regression.sh $@ rotozoom tests/vsynth2 a "$(TARGET_EXEC)" "$(TARGET_PATH)"
J
Justin Ruggles 已提交
297 298

$(LAVF_TESTS):
299
	$(SRC_PATH)/tests/codec-regression.sh $@ lavf tests/vsynth1 b "$(TARGET_EXEC)" "$(TARGET_PATH)"
J
Justin Ruggles 已提交
300

301 302 303
$(LAVFI_TESTS):
	$(SRC_PATH)/tests/codec-regression.sh $@ lavfi tests/vsynth1 b "$(TARGET_EXEC)" "$(TARGET_PATH)"

304
seektest: codectest lavftest tests/seek_test$(EXESUF)
305
	$(SRC_PATH)/tests/seek-regression.sh $(SEEK_REFFILE) "$(TARGET_EXEC)" "$(TARGET_PATH)"
J
Justin Ruggles 已提交
306

307
ffservertest: ffserver$(EXESUF) tests/vsynth1/00.pgm tests/data/asynth1.sw
J
Justin Ruggles 已提交
308 309 310 311
	@echo
	@echo "Unfortunately ffserver is broken and therefore its regression"
	@echo "test fails randomly. Treat the results accordingly."
	@echo
312
	$(SRC_PATH)/tests/ffserver-regression.sh $(FFSERVER_REFFILE) $(SRC_PATH)/tests/ffserver.conf
J
Justin Ruggles 已提交
313

314
tests/vsynth1/00.pgm: tests/videogen$(HOSTEXESUF)
J
Justin Ruggles 已提交
315 316 317
	mkdir -p tests/vsynth1
	$(BUILD_ROOT)/$< 'tests/vsynth1/'

318
tests/vsynth2/00.pgm: tests/rotozoom$(HOSTEXESUF)
J
Justin Ruggles 已提交
319 320 321
	mkdir -p tests/vsynth2
	$(BUILD_ROOT)/$< 'tests/vsynth2/' $(SRC_PATH)/tests/lena.pnm

322 323
tests/data/asynth1.sw: tests/audiogen$(HOSTEXESUF)
	mkdir -p tests/data
J
Justin Ruggles 已提交
324 325
	$(BUILD_ROOT)/$< $@

326
tests/%$(HOSTEXESUF): tests/%.c
327
	$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $< $(HOSTLIBS)
J
Justin Ruggles 已提交
328

329 330
tests/seek_test$(EXESUF): tests/seek_test.o $(FF_DEP_LIBS)
	$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
J
Justin Ruggles 已提交
331 332


333
.PHONY: documentation *test regtest-* zlib-error alltools check config