av_find_stream_info() end check fixes
[libav.git] / libavcodec / Makefile
CommitLineData
4cc281d9
FB
1#
2# libavcodec Makefile
6d6d7970 3# (c) 2000-2005 Fabrice Bellard
4cc281d9 4#
980fc7b8
FB
5include ../config.mak
6
4cc281d9
FB
7VPATH=$(SRC_PATH)/libavcodec
8
ff4ec49e 9# NOTE: -I.. is needed to include config.h
2a515c08 10CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE $(AMR_CFLAGS)
de6d9b64 11
caa336b4 12OBJS= bitstream.o utils.o mem.o allcodecs.o \
1d0d55da 13 mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o\
7b1fa7db 14 mpegaudio.o ac3enc.o mjpeg.o resample.o resample2.o dsputil.o \
1d0d55da 15 motion_est.o imgconvert.o imgresample.o \
4f1bb8a9 16 mpeg12.o mpegaudiodec.o pcm.o simple_idct.o \
8b975b7c
MN
17 ratecontrol.o adpcm.o eval.o error_resilience.o \
18 fft.o mdct.o raw.o golomb.o cabac.o\
19 dpcm.o adx.o rational.o faandct.o parser.o g726.o \
20 vp3dsp.o integer.o h264idct.o rangecoder.o pnm.o h263.o msmpeg4.o h263dec.o
21
22ifeq ($(CONFIG_AASC_DECODER),yes)
23 OBJS+= aasc.o
24endif
25ifeq ($(CONFIG_ALAC_DECODER),yes)
26 OBJS+= alac.o
27endif
28ifneq ($(CONFIG_ASV1_DECODER)$(CONFIG_ASV1_ENCODER)$(CONFIG_ASV2_DECODER)$(CONFIG_ASV2_ENCODER),)
29 OBJS+= asv1.o
30endif
31ifeq ($(CONFIG_CINEPAK_DECODER),yes)
32 OBJS+= cinepak.o
33endif
34ifneq ($(CONFIG_CLJR_DECODER)$(CONFIG_CLJR_ENCODER),)
35 OBJS+= cljr.o
36endif
37ifeq ($(CONFIG_CYUV_DECODER),yes)
38 OBJS+= cyuv.o
39endif
40ifneq ($(CONFIG_DVVIDEO_DECODER)$(CONFIG_DVVIDEO_ENCODER),)
41 OBJS+= dv.o
42endif
43ifeq ($(CONFIG_EIGHTBPS_DECODER),yes)
44 OBJS+= 8bps.o
45endif
46ifneq ($(CONFIG_FFV1_DECODER)$(CONFIG_FFV1_ENCODER),)
47 OBJS+= ffv1.o
48endif
49ifeq ($(CONFIG_FLAC_DECODER),yes)
50 OBJS+= flac.o
51endif
52ifeq ($(CONFIG_FLIC_DECODER),yes)
53 OBJS+= flicvideo.o
54endif
55ifeq ($(CONFIG_FOURXM_DECODER),yes)
56 OBJS+= 4xm.o
57endif
b81f8949
MM
58ifeq ($(CONFIG_FRAPS_DECODER),yes)
59 OBJS+= fraps.o
60endif
8b975b7c
MN
61ifneq ($(CONFIG_H261_DECODER)$(CONFIG_H261_ENCODER),)
62 OBJS+= h261.o
63endif
64ifneq ($(CONFIG_H264_DECODER)$(CONFIG_SVQ3_DECODER),)
65 OBJS+= h264.o
66endif
67ifneq ($(CONFIG_HUFFYUV_DECODER)$(CONFIG_HUFFYUV_ENCODER)$(CONFIG_FFVHUFF_DECODER)$(CONFIG_FFVHUFF_ENCODER),)
68 OBJS+= huffyuv.o
69endif
70ifeq ($(CONFIG_IDCIN_DECODER),yes)
71 OBJS+= idcinvideo.o
72endif
73ifeq ($(CONFIG_INDEO2_DECODER),yes)
74 OBJS+= indeo2.o
75endif
76ifeq ($(CONFIG_INDEO3_DECODER),yes)
77 OBJS+= indeo3.o
78endif
79ifeq ($(CONFIG_INTERPLAY_VIDEO_DECODER),yes)
80 OBJS+= interplayvideo.o
81endif
82ifneq ($(CONFIG_MSZH_DECODER)$(CONFIG_ZLIB_DECODER)$(CONFIG_ZLIB_ENCODER),)
83 OBJS+= lcl.o
84endif
85ifeq ($(CONFIG_LOCO_DECODER),yes)
86 OBJS+= loco.o
87endif
88ifneq ($(CONFIG_MACE3_DECODER)$(CONFIG_MACE6_DECODER),)
89 OBJS+= mace.o
90endif
91ifeq ($(CONFIG_MSRLE_DECODER),yes)
92 OBJS+= msrle.o
93endif
94ifeq ($(CONFIG_MSVIDEO1_DECODER),yes)
95 OBJS+= msvideo1.o
96endif
97ifneq ($(CONFIG_PNG_DECODER)$(CONFIG_PNG_ENCODER),)
98 OBJS+= png.o
99endif
100ifeq ($(CONFIG_QDRAW_DECODER),yes)
101 OBJS+= qdrw.o
102endif
103ifeq ($(CONFIG_QPEG_DECODER),yes)
104 OBJS+= qpeg.o
105endif
106ifeq ($(CONFIG_QTRLE_DECODER),yes)
107 OBJS+= qtrle.o
108endif
109ifeq ($(CONFIG_RA_144_DECODER),yes)
110 OBJS+= ra144.o
111endif
112ifeq ($(CONFIG_RA_288_DECODER),yes)
113 OBJS+= ra288.o
114endif
115ifeq ($(CONFIG_ROQ_DECODER),yes)
116 OBJS+= roqvideo.o
117endif
118ifeq ($(CONFIG_RPZA_DECODER),yes)
119 OBJS+= rpza.o
120endif
121ifneq ($(CONFIG_RV10_DECODER)$(CONFIG_RV20_DECODER)$(CONFIG_RV10_ENCODER)$(CONFIG_RV20_ENCODER),)
122 OBJS+= rv10.o
123endif
124ifeq ($(CONFIG_SHORTEN_DECODER),yes)
125 OBJS+= shorten.o
126endif
127ifeq ($(CONFIG_SMC_DECODER),yes)
128 OBJS+= smc.o
129endif
0de1318a 130ifneq ($(CONFIG_SNOW_DECODER)$(CONFIG_SNOW_ENCODER),)
8b975b7c
MN
131 OBJS+= snow.o
132endif
133ifneq ($(CONFIG_SONIC_DECODER)$(CONFIG_SONIC_ENCODER)$(CONFIG_SONIC_LS_ENCODER),)
134 OBJS+= sonic.o
135endif
136ifneq ($(CONFIG_SVQ1_DECODER)$(CONFIG_SVQ1_ENCODER),)
137 OBJS+= svq1.o
138endif
139ifeq ($(CONFIG_TRUEMOTION1_DECODER),yes)
140 OBJS+= truemotion1.o
141endif
142ifeq ($(CONFIG_TSCC_DECODER),yes)
143 OBJS+= tscc.o
144endif
145ifeq ($(CONFIG_ULTI_DECODER),yes)
146 OBJS+= ulti.o
147endif
148ifneq ($(CONFIG_VC9_DECODER)$(CONFIG_WMV3_DECODER),)
149 OBJS+= vc9.o
150endif
151ifneq ($(CONFIG_VCR1_DECODER)$(CONFIG_VCR1_ENCODER),)
152 OBJS+= vcr1.o
153endif
154ifneq ($(CONFIG_VMDVIDEO_DECODER)$(CONFIG_VMDAUDIO_DECODER),)
155 OBJS+= vmdav.o
156endif
0bde73d9
MN
157ifeq ($(CONFIG_VORBIS_DECODER),yes)
158 OBJS+= vorbis.o
159endif
8b975b7c
MN
160ifneq ($(CONFIG_VP3_DECODER)$(CONFIG_THEORA_DECODER),)
161 OBJS+= vp3.o
162endif
163ifeq ($(CONFIG_VQA_DECODER),yes)
164 OBJS+= vqavideo.o
165endif
166ifneq ($(CONFIG_WMAV1_DECODER)$(CONFIG_WMAV2_DECODER),)
167 OBJS+= wmadec.o
168endif
169ifeq ($(CONFIG_WNV1_DECODER),yes)
170 OBJS+= wnv1.o
171endif
172ifeq ($(CONFIG_WS_SND1_DECODER),yes)
173 OBJS+= ws-snd1.o
174endif
175ifneq ($(CONFIG_XAN_WC3_DECODER)$(CONFIG_XAN_WC4_DECODER),)
176 OBJS+= xan.o
177endif
178ifeq ($(CONFIG_XL_DECODER),yes)
179 OBJS+= xl.o
180endif
181
182
4d4bb927 183AMROBJS=
891f64b3 184ifeq ($(AMR_NB),yes)
bc634f6f 185ifeq ($(AMR_NB_FIXED),yes)
4d4bb927 186AMROBJS= amr.o
bc634f6f
ZK
187AMREXTRALIBS+= amr/*.o
188AMRLIBS=amrlibs
189CLEANAMR=cleanamr
190else
4d4bb927
RT
191AMROBJS= amr.o
192OBJS+= amr_float/sp_dec.o amr_float/sp_enc.o amr_float/interf_dec.o amr_float/interf_enc.o
bc634f6f
ZK
193CLEANAMR=cleanamrfloat
194endif
891f64b3 195endif
196
9c3d33d6
MN
197ifeq ($(HAVE_PTHREADS),yes)
198OBJS+= pthread.o
199endif
200
16806499
MN
201ifeq ($(HAVE_W32THREADS),yes)
202OBJS+= w32thread.o
203endif
204
2450cff2
FR
205ifeq ($(HAVE_BEOSTHREADS),yes)
206OBJS+= beosthread.o
207endif
208
d663a1fd 209ifeq ($(AMR_WB),yes)
4d4bb927
RT
210AMROBJS= amr.o
211OBJS+= amrwb_float/dec_acelp.o amrwb_float/dec_dtx.o amrwb_float/dec_gain.o \
d663a1fd
MN
212 amrwb_float/dec_if.o amrwb_float/dec_lpc.o amrwb_float/dec_main.o \
213 amrwb_float/dec_rom.o amrwb_float/dec_util.o amrwb_float/enc_acelp.o \
214 amrwb_float/enc_dtx.o amrwb_float/enc_gain.o amrwb_float/enc_if.o \
215 amrwb_float/enc_lpc.o amrwb_float/enc_main.o amrwb_float/enc_rom.o \
216 amrwb_float/enc_util.o amrwb_float/if_rom.o
217endif
4d4bb927 218OBJS+= $(AMROBJS)
d663a1fd 219CLEANAMRWB=cleanamrwbfloat
980fc7b8 220ASM_OBJS=
de6d9b64 221
4f1bb8a9
IK
222ifeq ($(HAVE_XVMC_ACCEL),yes)
223OBJS+= xvmcvideo.o
224endif
225
57514323 226# currently using liba52 for ac3 decoding
d771bcae 227ifeq ($(CONFIG_AC3),yes)
57514323 228OBJS+= a52dec.o
57514323
ZK
229
230# using builtin liba52 or runtime linked liba52.so.0
ff4ec49e 231ifneq ($(CONFIG_A52BIN),yes)
57514323 232OBJS+= liba52/bit_allocate.o liba52/bitstream.o liba52/downmix.o \
521221cf 233 liba52/imdct.o liba52/parse.o liba52/crc.o liba52/resample.o
d771bcae 234endif
ff4ec49e 235endif
de6d9b64 236
23c99253
MN
237# currently using libdts for dts decoding
238ifeq ($(CONFIG_DTS),yes)
239OBJS+= dtsdec.o
c5c97a8d
MN
240CFLAGS += $(DTS_INC)
241EXTRALIBS += -ldts
23c99253
MN
242endif
243
280bd7b7
ZK
244ifeq ($(CONFIG_FAAD),yes)
245OBJS+= faad.o
445ad18d
ZK
246ifeq ($(CONFIG_FAADBIN),yes)
247# no libs needed
248else
249EXTRALIBS += -lfaad
250endif
280bd7b7
ZK
251endif
252
29d48296
MN
253ifeq ($(CONFIG_FAAC),yes)
254OBJS+= faac.o
255EXTRALIBS += -lfaac
256endif
257
1ddadfa9
AT
258ifeq ($(CONFIG_XVID),yes)
259OBJS+= xvidff.o
260EXTRALIBS += -lxvidcore
261endif
262
6662ec29
MN
263ifeq ($(CONFIG_X264),yes)
264OBJS+= x264.o
7c653cc9 265EXTRALIBS += -lx264
6662ec29
MN
266endif
267
bba9b16c
MN
268ifeq ($(CONFIG_PP),yes)
269ifeq ($(SHARED_PP),yes)
7919d97e 270EXTRALIBS += -Llibpostproc -lpostproc$(BUILDSUF)
bba9b16c
MN
271else
272# LIBS += libpostproc/libpostproc.a ... should be fixed
273OBJS += libpostproc/postprocess.o
274endif
275endif
276
5798368b
J
277ifeq ($(CONFIG_MP3LAME),yes)
278OBJS += mp3lameaudio.o
2a2a98c0 279EXTRALIBS += -lmp3lame
5798368b
J
280endif
281
5c5dea3f 282ifeq ($(CONFIG_LIBOGG),yes)
5c5dea3f 283ifeq ($(CONFIG_LIBVORBIS),yes)
81e0d0b4 284OBJS += oggvorbis.o
078a8dd6 285EXTRALIBS += -lvorbisenc -lvorbis
81e0d0b4 286endif
5c5dea3f
NB
287ifeq ($(CONFIG_LIBTHEORA), yes)
288OBJS += oggtheora.o
289EXTRALIBS += -ltheora
290endif
078a8dd6 291EXTRALIBS += -logg
5c5dea3f 292endif
81e0d0b4 293
43f1708f
J
294ifeq ($(TARGET_GPROF),yes)
295CFLAGS+=-p
296LDFLAGS+=-p
297endif
298
de6d9b64 299# i386 mmx specific stuff
980fc7b8 300ifeq ($(TARGET_MMX),yes)
4300403e 301OBJS += i386/fdct_mmx.o i386/cputest.o \
de1ee36a 302 i386/dsputil_mmx.o i386/mpegvideo_mmx.o \
57514323 303 i386/idct_mmx.o i386/motion_est_mmx.o \
38acbc3c
MM
304 i386/simple_idct_mmx.o i386/fft_sse.o i386/vp3dsp_mmx.o \
305 i386/vp3dsp_sse2.o
a968e365
FB
306ifdef TARGET_BUILTIN_VECTOR
307i386/fft_sse.o: CFLAGS+= -msse
148beec7 308depend: CFLAGS+= -msse
a968e365 309endif
de6d9b64
FB
310endif
311
3d03c0a2
FB
312# armv4l specific stuff
313ifeq ($(TARGET_ARCH_ARMV4L),yes)
bd7d1ea7 314ASM_OBJS += armv4l/jrevdct_arm.o armv4l/simple_idct_arm.o
676e200c 315OBJS += armv4l/dsputil_arm.o armv4l/mpegvideo_arm.o
3d03c0a2
FB
316endif
317
c34270f5
FB
318# sun mediaLib specific stuff
319# currently only works when libavcodec is used in mplayer
320ifeq ($(HAVE_MLIB),yes)
321OBJS += mlib/dsputil_mlib.o
322CFLAGS += $(MLIB_INC)
323endif
324
1e98dffb
NK
325# alpha specific stuff
326ifeq ($(TARGET_ARCH_ALPHA),yes)
8b313a47
FH
327OBJS += alpha/dsputil_alpha.o alpha/mpegvideo_alpha.o \
328 alpha/simple_idct_alpha.o alpha/motion_est_alpha.o
f9bb4bdf 329ASM_OBJS += alpha/dsputil_alpha_asm.o alpha/motion_est_mvi_asm.o
647b610c 330CFLAGS += -fforce-addr
1e98dffb
NK
331endif
332
59925ef2 333ifeq ($(TARGET_ARCH_POWERPC),yes)
05c4072b 334OBJS += ppc/dsputil_ppc.o ppc/mpegvideo_ppc.o
ab6c65f6
BF
335endif
336
d46aba26 337ifeq ($(TARGET_MMI),yes)
5917d17c 338OBJS += ps2/dsputil_mmi.o ps2/idct_mmi.o ps2/mpegvideo_mmi.o
d46aba26
LS
339endif
340
ab6c65f6 341ifeq ($(TARGET_ALTIVEC),yes)
8d268a7d 342OBJS += ppc/dsputil_altivec.o ppc/mpegvideo_altivec.o ppc/idct_altivec.o \
a6a12a8a
RD
343 ppc/fft_altivec.o ppc/gmc_altivec.o ppc/fdct_altivec.o \
344 ppc/dsputil_h264_altivec.o
59925ef2
BF
345endif
346
0c6bd2ea
B
347ifeq ($(TARGET_ARCH_SH4),yes)
348OBJS+= sh4/idct_sh4.o sh4/dsputil_sh4.o sh4/dsputil_align.o
349endif
350
bb476ff3 351ifeq ($(TARGET_ARCH_SPARC),yes)
44f54ceb 352OBJS+=sparc/dsputil_vis.o
bb476ff3
JM
353sparc/%.o: sparc/%.c
354 $(CC) -mcpu=ultrasparc -mtune=ultrasparc $(CFLAGS) -c -o $@ $<
355endif
356ifeq ($(TARGET_ARCH_SPARC64),yes)
44f54ceb
MN
357CFLAGS+= -mcpu=ultrasparc -mtune=ultrasparc
358endif
359
bb7d4939 360SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S)
ff4ec49e 361OBJS := $(OBJS) $(ASM_OBJS)
980fc7b8 362
f3ec2d46 363LIB= $(LIBPREF)avcodec$(LIBSUF)
0fd94442 364ifeq ($(BUILD_SHARED),yes)
f3ec2d46 365SLIB= $(SLIBPREF)avcodec$(SLIBSUF)
0fd94442 366endif
6d2abd6b 367TESTS= imgresample-test dct-test motion-test fft-test
de6d9b64 368
0fd94442 369all: $(LIB) $(SLIB)
ff4ec49e 370
bc634f6f
ZK
371amrlibs:
372 $(MAKE) -C amr spclib fipoplib
373
c10e9f70 374tests: apiexample cpuid_test $(TESTS)
de6d9b64 375
bc634f6f 376$(LIB): $(OBJS) $(AMRLIBS)
de6d9b64 377 rm -f $@
bc634f6f 378 $(AR) rc $@ $(OBJS) $(AMREXTRALIBS)
be7109c1 379 $(RANLIB) $@
ff4ec49e 380
811b32ed 381$(SLIB): $(OBJS)
91378af4 382ifeq ($(CONFIG_PP),yes)
8b8e1c55 383 $(MAKE) -C libpostproc
91378af4 384endif
cf7412b5
FB
385ifeq ($(CONFIG_WIN32),yes)
386 $(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS)
387 -lib /machine:i386 /def:$(@:.dll=.def)
388else
1b8b121f 389 $(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS) $(LDFLAGS)
cf7412b5 390endif
de6d9b64
FB
391
392dsputil.o: dsputil.c dsputil.h
393
bba9b16c
MN
394libpostproc/libpostproc.a:
395 $(MAKE) -C libpostproc
396
de6d9b64
FB
397%.o: %.c
398 $(CC) $(CFLAGS) -c -o $@ $<
399
3d03c0a2
FB
400%.o: %.S
401 $(CC) $(CFLAGS) -c -o $@ $<
402
811b32ed 403depend: $(SRCS)
a968e365 404 $(CC) -MM $(CFLAGS) $^ 1>.depend
e51d4def 405
980fc7b8
FB
406dep: depend
407
bc634f6f 408clean: $(CLEANAMR)
77b71ddc 409 rm -f *.o *.d *~ .depend $(LIB) $(SLIB) *.so i386/*.o i386/*~ \
3d03c0a2 410 armv4l/*.o armv4l/*~ \
c34270f5 411 mlib/*.o mlib/*~ \
1e98dffb 412 alpha/*.o alpha/*~ \
59925ef2 413 ppc/*.o ppc/*~ \
d46aba26 414 ps2/*.o ps2/*~ \
0c6bd2ea 415 sh4/*.o sh4/*~ \
bb476ff3 416 sparc/*.o sparc/*~ \
57514323
ZK
417 liba52/*.o liba52/*~ \
418 apiexample $(TESTS)
64094f37 419 $(MAKE) -C libpostproc clean
de6d9b64 420
800d7ceb 421distclean: clean
980fc7b8
FB
422 rm -f Makefile.bak .depend
423
bc634f6f
ZK
424cleanamr:
425 $(MAKE) -C amr clean
426
427cleanamrfloat:
428 rm -f amr_float/*.o
429
d663a1fd
MN
430cleanamrwbfloat:
431 $(MAKE) -C amrwb_float -f makefile.gcc clean
432
de6d9b64
FB
433# api example program
434apiexample: apiexample.c $(LIB)
cfda33cb 435 $(CC) $(CFLAGS) -o $@ $< $(LIB) $(EXTRALIBS) -lm
de6d9b64 436
c10e9f70
NK
437# cpuid test
438cpuid_test: i386/cputest.c
439 $(CC) $(CFLAGS) -D__TEST__ -o $@ $<
440
de6d9b64
FB
441# testing progs
442
443imgresample-test: imgresample.c
6acce86b 444 $(CC) $(CFLAGS) -DTEST -o $@ $^ -lm
de6d9b64 445
9ebc63a9 446dct-test: dct-test.o fdctref.o $(LIB)
90cee0c3 447 $(CC) -o $@ $^ -lm
d771bcae 448
4300403e 449motion-test: motion_test.o $(LIB)
6acce86b 450 $(CC) -o $@ $^ -lm
4300403e 451
923ceff8 452fft-test: fft-test.o $(LIB)
6d2abd6b
FB
453 $(CC) -o $@ $^ -lm
454
0fd94442 455ifeq ($(BUILD_SHARED),yes)
cb728d79
FB
456install: all install-headers
457ifeq ($(CONFIG_WIN32),yes)
65d1bea2 458 install $(INSTALLSTRIP) -m 755 $(SLIB) "$(prefix)"
cb728d79 459else
cc973ecb
LB
460 install -d $(libdir)
461 install $(INSTALLSTRIP) -m 755 $(SLIB) $(libdir)/libavcodec-$(VERSION).so
462 ln -sf libavcodec-$(VERSION).so $(libdir)/libavcodec.so
c1325d18 463 ldconfig || true
cb728d79 464endif
91378af4 465ifeq ($(CONFIG_PP),yes)
8b8e1c55 466 $(MAKE) -C libpostproc $@
91378af4 467endif
cb728d79
FB
468else
469install:
0fd94442 470endif
773cefc6 471
cb728d79 472installlib: all install-headers
cc973ecb 473 install -m 644 $(LIB) "$(libdir)"
cb728d79
FB
474
475install-headers:
476 mkdir -p "$(prefix)/include/ffmpeg"
07bd15c3
FR
477 install -m 644 $(SRC_PATH)/libavcodec/avcodec.h \
478 $(SRC_PATH)/libavcodec/common.h \
479 $(SRC_PATH)/libavcodec/rational.h \
cb728d79 480 "$(prefix)/include/ffmpeg"
def4272a
AJ
481 install -d $(libdir)/pkgconfig
482 install -m 644 ../libavcodec.pc $(libdir)/pkgconfig
773cefc6 483
d771bcae
FB
484#
485# include dependency files if they exist
486#
487ifneq ($(wildcard .depend),)
488include .depend
489endif