very tiny script to remove tabs and trailing whitespace from patches
[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
bb4c2140
MN
294ifeq ($(CONFIG_LIBGSM),yes)
295OBJS += libgsm.o
296EXTRALIBS += -lgsm
297endif
298
43f1708f
J
299ifeq ($(TARGET_GPROF),yes)
300CFLAGS+=-p
301LDFLAGS+=-p
302endif
303
de6d9b64 304# i386 mmx specific stuff
980fc7b8 305ifeq ($(TARGET_MMX),yes)
4300403e 306OBJS += i386/fdct_mmx.o i386/cputest.o \
de1ee36a 307 i386/dsputil_mmx.o i386/mpegvideo_mmx.o \
57514323 308 i386/idct_mmx.o i386/motion_est_mmx.o \
38acbc3c
MM
309 i386/simple_idct_mmx.o i386/fft_sse.o i386/vp3dsp_mmx.o \
310 i386/vp3dsp_sse2.o
a968e365
FB
311ifdef TARGET_BUILTIN_VECTOR
312i386/fft_sse.o: CFLAGS+= -msse
148beec7 313depend: CFLAGS+= -msse
a968e365 314endif
de6d9b64
FB
315endif
316
3d03c0a2
FB
317# armv4l specific stuff
318ifeq ($(TARGET_ARCH_ARMV4L),yes)
bd7d1ea7 319ASM_OBJS += armv4l/jrevdct_arm.o armv4l/simple_idct_arm.o
676e200c 320OBJS += armv4l/dsputil_arm.o armv4l/mpegvideo_arm.o
3d03c0a2
FB
321endif
322
c34270f5
FB
323# sun mediaLib specific stuff
324# currently only works when libavcodec is used in mplayer
325ifeq ($(HAVE_MLIB),yes)
326OBJS += mlib/dsputil_mlib.o
327CFLAGS += $(MLIB_INC)
328endif
329
1e98dffb
NK
330# alpha specific stuff
331ifeq ($(TARGET_ARCH_ALPHA),yes)
8b313a47
FH
332OBJS += alpha/dsputil_alpha.o alpha/mpegvideo_alpha.o \
333 alpha/simple_idct_alpha.o alpha/motion_est_alpha.o
f9bb4bdf 334ASM_OBJS += alpha/dsputil_alpha_asm.o alpha/motion_est_mvi_asm.o
647b610c 335CFLAGS += -fforce-addr
1e98dffb
NK
336endif
337
59925ef2 338ifeq ($(TARGET_ARCH_POWERPC),yes)
05c4072b 339OBJS += ppc/dsputil_ppc.o ppc/mpegvideo_ppc.o
ab6c65f6
BF
340endif
341
d46aba26 342ifeq ($(TARGET_MMI),yes)
5917d17c 343OBJS += ps2/dsputil_mmi.o ps2/idct_mmi.o ps2/mpegvideo_mmi.o
d46aba26
LS
344endif
345
ab6c65f6 346ifeq ($(TARGET_ALTIVEC),yes)
8d268a7d 347OBJS += ppc/dsputil_altivec.o ppc/mpegvideo_altivec.o ppc/idct_altivec.o \
a6a12a8a
RD
348 ppc/fft_altivec.o ppc/gmc_altivec.o ppc/fdct_altivec.o \
349 ppc/dsputil_h264_altivec.o
59925ef2
BF
350endif
351
0c6bd2ea
B
352ifeq ($(TARGET_ARCH_SH4),yes)
353OBJS+= sh4/idct_sh4.o sh4/dsputil_sh4.o sh4/dsputil_align.o
354endif
355
bb476ff3 356ifeq ($(TARGET_ARCH_SPARC),yes)
44f54ceb 357OBJS+=sparc/dsputil_vis.o
bb476ff3
JM
358sparc/%.o: sparc/%.c
359 $(CC) -mcpu=ultrasparc -mtune=ultrasparc $(CFLAGS) -c -o $@ $<
360endif
361ifeq ($(TARGET_ARCH_SPARC64),yes)
44f54ceb
MN
362CFLAGS+= -mcpu=ultrasparc -mtune=ultrasparc
363endif
364
bb7d4939 365SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S)
ff4ec49e 366OBJS := $(OBJS) $(ASM_OBJS)
980fc7b8 367
f3ec2d46 368LIB= $(LIBPREF)avcodec$(LIBSUF)
0fd94442 369ifeq ($(BUILD_SHARED),yes)
f3ec2d46 370SLIB= $(SLIBPREF)avcodec$(SLIBSUF)
0fd94442 371endif
6d2abd6b 372TESTS= imgresample-test dct-test motion-test fft-test
de6d9b64 373
0fd94442 374all: $(LIB) $(SLIB)
ff4ec49e 375
bc634f6f
ZK
376amrlibs:
377 $(MAKE) -C amr spclib fipoplib
378
c10e9f70 379tests: apiexample cpuid_test $(TESTS)
de6d9b64 380
bc634f6f 381$(LIB): $(OBJS) $(AMRLIBS)
de6d9b64 382 rm -f $@
bc634f6f 383 $(AR) rc $@ $(OBJS) $(AMREXTRALIBS)
be7109c1 384 $(RANLIB) $@
ff4ec49e 385
811b32ed 386$(SLIB): $(OBJS)
91378af4 387ifeq ($(CONFIG_PP),yes)
8b8e1c55 388 $(MAKE) -C libpostproc
91378af4 389endif
cf7412b5
FB
390ifeq ($(CONFIG_WIN32),yes)
391 $(CC) $(SHFLAGS) -Wl,--output-def,$(@:.dll=.def) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS)
392 -lib /machine:i386 /def:$(@:.dll=.def)
393else
1b8b121f 394 $(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(AMREXTRALIBS) $(LDFLAGS)
cf7412b5 395endif
de6d9b64
FB
396
397dsputil.o: dsputil.c dsputil.h
398
bba9b16c
MN
399libpostproc/libpostproc.a:
400 $(MAKE) -C libpostproc
401
de6d9b64
FB
402%.o: %.c
403 $(CC) $(CFLAGS) -c -o $@ $<
404
3d03c0a2
FB
405%.o: %.S
406 $(CC) $(CFLAGS) -c -o $@ $<
407
811b32ed 408depend: $(SRCS)
a968e365 409 $(CC) -MM $(CFLAGS) $^ 1>.depend
e51d4def 410
980fc7b8
FB
411dep: depend
412
bc634f6f 413clean: $(CLEANAMR)
77b71ddc 414 rm -f *.o *.d *~ .depend $(LIB) $(SLIB) *.so i386/*.o i386/*~ \
3d03c0a2 415 armv4l/*.o armv4l/*~ \
c34270f5 416 mlib/*.o mlib/*~ \
1e98dffb 417 alpha/*.o alpha/*~ \
59925ef2 418 ppc/*.o ppc/*~ \
d46aba26 419 ps2/*.o ps2/*~ \
0c6bd2ea 420 sh4/*.o sh4/*~ \
bb476ff3 421 sparc/*.o sparc/*~ \
57514323
ZK
422 liba52/*.o liba52/*~ \
423 apiexample $(TESTS)
64094f37 424 $(MAKE) -C libpostproc clean
de6d9b64 425
800d7ceb 426distclean: clean
980fc7b8
FB
427 rm -f Makefile.bak .depend
428
bc634f6f
ZK
429cleanamr:
430 $(MAKE) -C amr clean
431
432cleanamrfloat:
433 rm -f amr_float/*.o
434
d663a1fd
MN
435cleanamrwbfloat:
436 $(MAKE) -C amrwb_float -f makefile.gcc clean
437
de6d9b64
FB
438# api example program
439apiexample: apiexample.c $(LIB)
cfda33cb 440 $(CC) $(CFLAGS) -o $@ $< $(LIB) $(EXTRALIBS) -lm
de6d9b64 441
c10e9f70
NK
442# cpuid test
443cpuid_test: i386/cputest.c
444 $(CC) $(CFLAGS) -D__TEST__ -o $@ $<
445
de6d9b64
FB
446# testing progs
447
448imgresample-test: imgresample.c
6acce86b 449 $(CC) $(CFLAGS) -DTEST -o $@ $^ -lm
de6d9b64 450
9ebc63a9 451dct-test: dct-test.o fdctref.o $(LIB)
90cee0c3 452 $(CC) -o $@ $^ -lm
d771bcae 453
4300403e 454motion-test: motion_test.o $(LIB)
6acce86b 455 $(CC) -o $@ $^ -lm
4300403e 456
923ceff8 457fft-test: fft-test.o $(LIB)
6d2abd6b
FB
458 $(CC) -o $@ $^ -lm
459
0fd94442 460ifeq ($(BUILD_SHARED),yes)
cb728d79
FB
461install: all install-headers
462ifeq ($(CONFIG_WIN32),yes)
65d1bea2 463 install $(INSTALLSTRIP) -m 755 $(SLIB) "$(prefix)"
cb728d79 464else
cc973ecb
LB
465 install -d $(libdir)
466 install $(INSTALLSTRIP) -m 755 $(SLIB) $(libdir)/libavcodec-$(VERSION).so
467 ln -sf libavcodec-$(VERSION).so $(libdir)/libavcodec.so
f39e56a8 468 $(LDCONFIG) || true
cb728d79 469endif
91378af4 470ifeq ($(CONFIG_PP),yes)
8b8e1c55 471 $(MAKE) -C libpostproc $@
91378af4 472endif
cb728d79
FB
473else
474install:
0fd94442 475endif
773cefc6 476
cb728d79 477installlib: all install-headers
cc973ecb 478 install -m 644 $(LIB) "$(libdir)"
cb728d79
FB
479
480install-headers:
481 mkdir -p "$(prefix)/include/ffmpeg"
07bd15c3
FR
482 install -m 644 $(SRC_PATH)/libavcodec/avcodec.h \
483 $(SRC_PATH)/libavcodec/common.h \
484 $(SRC_PATH)/libavcodec/rational.h \
cb728d79 485 "$(prefix)/include/ffmpeg"
def4272a
AJ
486 install -d $(libdir)/pkgconfig
487 install -m 644 ../libavcodec.pc $(libdir)/pkgconfig
773cefc6 488
d771bcae
FB
489#
490# include dependency files if they exist
491#
492ifneq ($(wildcard .depend),)
493include .depend
494endif