Makefile 71.2 KB
Newer Older
Christophe Mutricy's avatar
Christophe Mutricy committed
1
#***************************************************************************
2
3
# src/Makefile : Dearchive and compile all files necessary
# ***************************************************************************
4
# Copyright (C) 2003 - 2007 the VideoLAN team
5
6
7
8
# $Id$
#
# Authors: Christophe Massiot <massiot@via.ecp.fr>
#          Derk-Jan Hartman <hartman at videolan dot org>
9
#          Eric Petit <titer@m0k.org>
10
#          Felix Kühne <fkuehne@users.sourceforge.net>
Christophe Mutricy's avatar
Christophe Mutricy committed
11
#          Christophe Mutricy <xtophe AT xtelevision.com>
12
#          Gildas Bazin <gbazin at videolan dot org>
13
#          Damien Fouilleul <damienf at videolan dot org>
14
#          Jean-Baptiste Kempf <jb at videolan dot org>
15
16
17
18
19
20
21
22
23
24
25
26
27
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
dionoea's avatar
dionoea committed
28
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
29
30
31
32
33
34
35
36
37
# ***************************************************************************

include ../config.mak
include ./packages.mak

# ***************************************************************************
# Set a clean environment
# ***************************************************************************

38
39
export PATH := $(PREFIX)/bin:$(EXTRA_PATH):$(PATH)
export PKG_CONFIG_PATH
40
export PKG_CONFIG_LIBDIR = $(PREFIX)/lib/pkgconfig
41
export MACOSX_DEPLOYMENT_TARGET = $(SDK_TARGET)
42
export LIBRARY_PATH := $(PREFIX)/lib:$(LIBRARY_PATH)
43
44
45
export CFLAGS = -I$(PREFIX)/include $(EXTRA_CFLAGS) $(EXTRA_CPPFLAGS)
export CPPFLAGS = -I$(PREFIX)/include $(EXTRA_CFLAGS) $(EXTRA_CPPFLAGS)
export CXXFLAGS = -I$(PREFIX)/include $(EXTRA_CFLAGS) $(EXTRA_CPPFLAGS)
46
47
48
49
50
51
52
53
54
export LDFLAGS = -L$(PREFIX)/lib $(EXTRA_LDFLAGS)

# ***************************************************************************
# Cross compilation variables
# We'll usually use --host=<platform>, except for a few libraries which
# don't handle it (gotta set CC/CXX/etc), and obviously FFmpeg has its own
# way of doing it... ;)
# ***************************************************************************

55
56
57
58
59
60
ifneq ($(CC),)
HOSTCC+= CC="$(CC)"
endif
ifneq ($(CXX),)
HOSTCC+= CXX="$(CXX)"
endif
61
62
63
ifneq ($(LD),)
HOSTCC+= LD="$(LD)"
endif
64
65
66
67
68
69
ifneq ($(RANLIB),)
HOSTCC+= RANLIB="$(RANLIB)"
endif
ifneq ($(AR),)
HOSTCC+= AR="$(AR)"
endif
70
71
72
73
ifneq ($(STRIP),)
HOSTCC+= STRIP="$(STRIP)"
endif

74

75
76
77
78
79
# Define ranlib on non-cross compilation setups
ifeq ($(RANLIB),)
RANLIB=ranlib
endif

80
81
82
# For libebml/libmatroska. Grrr.
ifneq ($(AR),)
HOSTCC2=$(HOSTCC) AR="$(AR) rcvu"
83
84
else
HOSTCC2=$(HOSTCC)
85
86
endif

87
88
89
90
91
# For ffmpeg if not cross compiling
ifneq ($(CC),)
  FFMPEGCONF=--cc="$(CC)"
endif

92
#
93
# cross compiling
94
#
95
96
#This should be inside the if block but some config scripts are buggy
HOSTCONF=--target=$(HOST) --host=$(HOST) --build=$(BUILD) --program-prefix=""
97
98
99
100
101
ifneq ($(BUILD),$(HOST))
    #
    # Compiling for MinGW under Cygwin could be deemed as cross compiling
    # unfortunately there isn't a complete separate GCC toolchain for MinGW under Cygwin
    #
102
    ifndef HAVE_CYGWIN
103
        # We are REALLY cross compiling
104
        FFMPEGCONF=--cross-prefix=$(HOST)- --cross-compile
105
        X264CONF=--host=$(HOST)
106
        PTHREADSCONF="CROSS=$(HOST)-"
107
108
    else
        # We are compiling for MinGW on Cygwin
109
        PTHREADSCONF=$(HOSTCC)
110
    endif
111
endif
112
113

#
114
# Special target-dependant options
115
#
116
ifdef HAVE_WIN32
117
HOSTCONF+= --without-pic --disable-shared --enable-msw --with-included-opencdk --with-included-libtasn1 --disable-dependency-tracking
118
FFMPEGCONF+= --target-os=mingw32 --enable-memalign-hack --cpu=i686 --disable-debug
gbazin's avatar
gbazin committed
119
120
121
122
endif

ifdef HAVE_WINCE
HOSTCONF+= --without-pic --disable-shared
123
FFMPEGCONF+= --enable-mingwce --cpu=armv4l --disable-debug --disable-encoders --disable-muxers --disable-mpegaudio-hp --disable-decoder=snow --disable-decoder=vc9 --disable-decoder=wmv3 --disable-decoder=vorbis --disable-decoder=dvdsub --disable-decoder=dvbsub --disable-protocols
124
125
126
endif

ifdef HAVE_UCLIBC
127
ifdef HAVE_BIGENDIAN
128
FFMPEGCONF+= --arch=armeb --enable-armv5te --enable-iwmmxt
129
130
131
else
FFMPEGCONF+= --arch=armv4l
endif
132
FFMPEGCONF+= --enable-small --disable-debug --disable-mpegaudio-hp
133
FFMPEG_CFLAGS += -DHAVE_LRINTF --std=c99
gbazin's avatar
gbazin committed
134
else
135
FFMPEGCONF+= --enable-libmp3lame --enable-libfaac --enable-liba52 --enable-swscaler
136
137
endif

138
ifdef HAVE_BEOS
139
FFMPEGCONF+= --cpu=x86 --disable-debug --disable-audio-beos
140
141
endif

142
ifdef HAVE_DARWIN_OS_ON_INTEL
143
FFMPEGCONF += --enable-memalign-hack --cpu=pentium-m
144
145
endif

146
ifdef NO_TEXT_RELOCATION
147
148
149
FFMPEGCONF += --disable-mmx
endif

150
ifdef HAVE_DARWIN_OS
151
X264CONF += --enable-pic
152
ifdef HAVE_DARWIN_OS_ON_INTEL
153
154
FFMPEG_CFLAGS += -DHAVE_LRINTF
endif
155
156
endif

157
ifdef HAVE_AMR
158
FFMPEGCONF+= --enable-libamr-nb --enable-libamr-wb --enable-nonfree
159
160
endif

161
162
DATE=`date +%Y-%m-%d`

163
164
165
# ***************************************************************************
# Standard rules
# ***************************************************************************
166
167
168
# Generated by ./bootstrap from default configuration in src/Distributions
# 
include ../distro.mak
169
170
171
172
173
174
175
176

FORCE:

# ***************************************************************************
# Useful macros
# ***************************************************************************

define EXTRACT_GZ
177
	rm -rf $@ || true
Christophe Mutricy's avatar
oups    
Christophe Mutricy committed
178
	gunzip -c $< | tar xf - --exclude='[*?:<>\|]' 
179
180
	mv $(patsubst %.tar.gz,%,$(patsubst %.tgz,%,$(notdir $<))) $@ || true
	touch $@
181
182
183
endef

define EXTRACT_BZ2
184
185
186
187
	rm -rf $@ || true
	bunzip2 -c $< | tar xf - --exclude='[*?:<>\|]' 
	mv $(patsubst %.tar.bz2,%,$(notdir $<)) $@ || true
	touch $@
188
189
endef

190
define EXTRACT_ZIP
191
192
193
194
	rm -rf $@ || true
	unzip $<
	mv $(patsubst %.zip,%,$(notdir $<)) $@ || true
	touch $@
195
196
endef

197
198
199
200
201
202
### Darwin-specific ###
# These macros prepare the dynamic libraries for inclusion in the Mac OS X
# bundle. For instance if you're building a library named libtoto.dylib,
# which depends on the contrib library libtata.dylib, you should have the
# following entry :
# .toto: toto_directory .tata
203
204
205
206
207
#	cd $< ; ./configure --prefix=$(PREFIX)
#	$(MAKE) -C $<
#	$(MAKE) -C $< install
#	$(INSTALL_NAME)
#	touch $@
208
209
210
211
212

ifeq ($(HOST),i586-pc-beos)
# We test if the file actually exists, as sometimes (but not always)
# libtool won't accept to build the shared library
define INSTALL_NAME
213
214
215
216
217
	if test -f $(PREFIX)/lib/lib$(patsubst .%,%,$@).so ; then \
		mkdir -p $(PREFIX)/vlc-lib ; \
		cp $(PREFIX)/lib/lib$(patsubst .%,%,$@).so \
		  $(PREFIX)/vlc-lib/ ; \
	fi
218
219
220
221
222
223
224
225
226
endef
endif

# ***************************************************************************
# perl
# ***************************************************************************

ifeq ($(BUILD),i586-pc-beos)
perl-$(PERL_VERSION).tar.gz:
227
	$(WGET) $(PERL_URL)
228
229

perl: perl-$(PERL_VERSION).tar.gz
230
231
	$(EXTRACT_GZ)
	sed -i.orig 's%prefix="/boot/home/config"%prefix="$(PREFIX)"%'  perl/hints/beos.sh
232
233

.perl: perl
234
235
	(cd $<; ./Configure -d -e && make && make install && ln -sf perl5/$(PERL_VERSION)/BePC-beos/CORE/libperl.so $(PREFIX)/lib/libperl.so)
	touch $@
236
237
238
239
240
241
242
243
244
245

CLEAN_FILE += .perl
CLEAN_PKG += perl
DISTCLEAN_PKG += perl-$(PERL_VERSION).tar.gz
endif

# ***************************************************************************
# autoconf
# ***************************************************************************

246
autoconf-$(AUTOCONF_VERSION).tar.bz2:
247
	$(WGET) $(AUTOCONF_URL)
248

249
autoconf: autoconf-$(AUTOCONF_VERSION).tar.bz2
250
	$(EXTRACT_BZ2)
251
252

.autoconf: autoconf
253
254
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@
255
256
257

CLEAN_FILE += .autoconf
CLEAN_PKG += autoconf
258
DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.bz2
259

260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# ***************************************************************************
# CMake
# ***************************************************************************

cmake-$(CMAKE_VERSION).tar.gz:
	$(WGET) $(CMAKE_URL)

cmake: cmake-$(CMAKE_VERSION).tar.gz
	$(EXTRACT_GZ)

.cmake: cmake
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@

CLEAN_FILE += .cmake
CLEAN_PKG += cmake
DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz

278
279
280
281
282
# ***************************************************************************
# libtool
# ***************************************************************************

ifdef HAVE_DARWIN_OS
283
284
285
286
287
288
289
290
libtool-$(LIBTOOL_VERSION).tar.gz:
	$(WGET) $(LIBTOOL_URL)

libtool: libtool-$(LIBTOOL_VERSION).tar.gz
	$(EXTRACT_GZ)

.libtool: libtool
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
291
292
	ln -sf libtool $(PREFIX)/bin/glibtool
	ln -sf libtoolize $(PREFIX)/bin/glibtoolize
293
	touch $@
294
295
296

CLEAN_PKG += libtool
DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
297
298
CLEAN_FILE += .libtool

299
300
301
302
endif

ifeq ($(BUILD),i586-pc-beos)
libtool-$(LIBTOOL_VERSION).tar.gz:
303
	$(WGET) $(LIBTOOL_URL)
304
305

libtool: libtool-$(LIBTOOL_VERSION).tar.gz
306
	$(EXTRACT_GZ)
307
308

.libtool: libtool
309
310
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@
311
312
313
314
315

CLEAN_PKG += libtool
DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
CLEAN_FILE += .libtool

316
317
endif

318
319
320
321
322
# ***************************************************************************
# automake
# ***************************************************************************

automake-$(AUTOMAKE_VERSION).tar.gz:
323
	$(WGET) $(AUTOMAKE_URL)
324
325

automake: automake-$(AUTOMAKE_VERSION).tar.gz
326
	$(EXTRACT_GZ)
327
328

.automake: automake
329
330
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@
331
332
333
334
335
336
337
338
339

CLEAN_FILE += .automake
CLEAN_PKG += automake
DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz

# ***************************************************************************
# pkgconfig
# ***************************************************************************

340
pkg-config-$(PKGCFG_VERSION).tar.gz:
341
	$(WGET) $(PKGCFG_URL)
342

343
pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
344
345
346
	$(EXTRACT_GZ)
	patch -d pkgconfig/glib-1.2.8 -p 1 < Patches/glib.patch
	patch -d pkgconfig -p0 < Patches/pkgcfg.patch
347
348

.pkgcfg: pkgconfig
349
350
	(cd pkgconfig; autoconf && ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
	touch $@
351
352
353

CLEAN_FILE += .pkgcfg
CLEAN_PKG += pkgconfig
354
DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
355
356
357
358
359
360

# ***************************************************************************
# gettext
# ***************************************************************************

gettext-$(GETTEXT_VERSION).tar.gz:
361
	$(WGET) $(GETTEXT_URL)
362
363

gettext: gettext-$(GETTEXT_VERSION).tar.gz
364
	$(EXTRACT_GZ)
365
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
366
	patch -p0 < Patches/gettext-win32.patch
367
endif
368

369
.intl: gettext .iconv
370
ifdef HAVE_WIN32
371
	( cd $< && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-relocatable --with-iconv-prefix=$(PREFIX) --disable-java --disable-native-java)
372
else
373
	( cd $< && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-java --disable-native-java --without-emacs)
374
endif
375
376
377
ifeq ($(BUILD),i586-pc-beos)
# The ugliest kludge ever - so libtool correctly links shared libraries
# on BeOS. Sorry, I just can't figure out how libtool works
378
	( cd $< && for f in `find . -name libtool`; do  sed -e 's/ -shared / -nostart /' -e 's/^predep_objects.*/predep_objects=""/' -i  $$f; chmod +x $$f; done )
379
380
endif
ifneq ($(HOST),$(BUILD))
381
382
  ifndef HAVE_CYGWIN
    # We'll use the installed gettext and only need to cross-compile libintl, also build autopoint and gettextsize tools need for VLC bootstrap
383
	( cd $< && make -C gettext-runtime/intl && patch -p1 < ../Patches/libintl.patch && make -C gettext-runtime/intl install && make -C gettext-tools/misc install )
384
385
386
387
  else
    # We are compiling for MinGW on Cygwin -- build the full current gettext
	( cd $< && make && patch -p1 < ../Patches/libintl.patch && make install )
  endif
388
389
else
# Build and install the whole gettext
390
	( cd $< && make && patch -p1 < ../Patches/libintl.patch && make install )
391
392
393
endif
# Work around another non-sense of autoconf.
ifdef HAVE_WIN32
394
	(cd ../include; sed -i.orig '311 c #if 0' libintl.h)
395
endif
396
397
	$(INSTALL_NAME)
	touch $@
398
399
400
401
402
403
404
405
406
407

CLEAN_FILE += .intl
CLEAN_PKG += gettext
DISTCLEAN_PKG += gettext-$(GETTEXT_VERSION).tar.gz

# ***************************************************************************
# libiconv
# ***************************************************************************

libiconv-$(LIBICONV_VERSION).tar.gz:
408
	$(WGET) $(LIBICONV_URL)
409
410

libiconv: libiconv-$(LIBICONV_VERSION).tar.gz
411
	$(EXTRACT_GZ)
412
ifdef HAVE_DARWIN_OS
Rafaël Carré's avatar
Rafaël Carré committed
413
	patch -p0 < Patches/libiconv.patch
414
endif
415
	patch -p0 < Patches/libiconv-autoconf-uclibc.patch
416

417
ifdef HAVE_DARWIN_OS
418
.iconv:
419
	touch $@
420
else
421
.iconv: libiconv
422
423
424
	(cd libiconv; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-nls && make && make install)
	$(INSTALL_NAME)
	touch $@
425
endif
426
427
428
429
430

CLEAN_FILE += .iconv
CLEAN_PKG += libiconv
DISTCLEAN_PKG += libiconv-$(LIBICONV_VERSION).tar.gz

431
432
433
434
435
436
437
# ***************************************************************************
# fontconfig
# ***************************************************************************

fontconfig-$(FONTCONFIG_VERSION).tar.gz:
	$(WGET) $(FONTCONFIG_URL)

438
fontconfig: fontconfig-$(FONTCONFIG_VERSION).tar.gz Patches/fontconfig.patch
439
440
	$(EXTRACT_GZ)
	patch -p0 < Patches/fontconfig.patch
441
	patch -p0 < Patches/fontconfig-nodocs.patch
442
443
444
445

.fontconfig: fontconfig
ifdef HAVE_WIN32
  ifdef HAVE_CYGWIN
446
	(cd $<; autoreconf && LIBXML2_CFLAGS=`$(PREFIX)/bin/xml2-config --cflags` ./configure --target=$(HOST) --disable-pic --disable-shared --disable-docs --with-cache-dir=WINDOWSTEMPDIR --with-arch=i686 --prefix=$(PREFIX) --with-freetype-config=$(PREFIX)/bin/freetype-config --enable-libxml2 && make && make install)
447
  else
448
	(cd $<; autoreconf && $(HOSTCC) LIBXML2_CFLAGS=`$(PREFIX)/bin/xml2-config --cflags` ./configure $(HOSTCONF) --with-cache-dir=WINDOWSTEMPDIR --with-arch=i686 --prefix=$(PREFIX) --with-freetype-config=$(PREFIX)/bin/freetype-config --enable-libxml2 --disable-docs && make && make install)
449
450
  endif
else
bitmap's avatar
bitmap committed
451
  ifdef HAVE_DARWIN_OS
452
	(cd $<; autoreconf && $(HOSTCC) LIBXML2_CFLAGS=`xml2-config --cflags` LIBXML2_LIBS=`xml2-config --libs` ./configure $(HOSTCONF) --with-cache-dir=/var/cache/fontconfig --with-confdir=/etc/fonts --prefix=$(PREFIX) --with-freetype-config=$(PREFIX)/bin/freetype-config --enable-libxml2 --disable-docs && make && make install-exec && (cd fontconfig ; make install-data))
bitmap's avatar
bitmap committed
453
  else
454
	(cd $<; autoreconf && $(HOSTCC) LIBXML2_CFLAGS=`$(PREFIX)/bin/xml2-config --cflags` ./configure $(HOSTCONF) --prefix=$(PREFIX) --with-freetype-config=$(PREFIX)/bin/freetype-config --enable-libxml2 --disable-docs && make && make install)
bitmap's avatar
bitmap committed
455
  endif
456
457
458
459
460
461
462
463
endif
	$(INSTALL_NAME)
	touch $@

CLEAN_FILE += .fontconfig
CLEAN_PKG += fontconfig
DISTCLEAN_PKG += fontconfig-$(FONTCONFIG_VERSION).tar.gz

464
465
466
467
468
# ***************************************************************************
# freetype2
# ***************************************************************************

freetype-$(FREETYPE2_VERSION).tar.gz:
469
	$(WGET) $(FREETYPE2_URL)
470
471

freetype2: freetype-$(FREETYPE2_VERSION).tar.gz
472
	$(EXTRACT_GZ)
473
	patch -p0 < Patches/freetype-cross.patch
474
475

.freetype: freetype2
476
ifdef HAVE_CYGWIN
477
	(cd $<; ./configure --target=$(HOST) --disable-pic --disable-shared --prefix=$(PREFIX) && make && make install)
478
else
479
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && make && make install)
480
endif
481
482
	$(INSTALL_NAME)
	touch $@
483
484
485
486
487
488
489
490
491

CLEAN_FILE += .freetype
CLEAN_PKG += freetype2
DISTCLEAN_PKG += freetype-$(FREETYPE2_VERSION).tar.gz

# ***************************************************************************
# fribidi
# ***************************************************************************

damienf's avatar
damienf committed
492
fribidi-$(FRIBIDI_VERSION).tar.gz:
493
	$(WGET) $(FRIBIDI_URL)
494

damienf's avatar
damienf committed
495
496
fribidi: fribidi-$(FRIBIDI_VERSION).tar.gz
	$(EXTRACT_GZ)
497
	patch -p0 < Patches/fribidi.patch
498

499
.fribidi: fribidi .iconv
500
501
502
	(cd $<; rm -f configure; ./bootstrap && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX)  && make && make install)
	$(INSTALL_NAME)
	touch $@
503
504
505

CLEAN_FILE += .fribidi
CLEAN_PKG += fribidi
damienf's avatar
damienf committed
506
DISTCLEAN_PKG += fribidi-$(FRIBIDI_VERSION).tar.gz
507
508
509
510
511
512

# ***************************************************************************
# liba52
# ***************************************************************************

a52dec-$(A52DEC_VERSION).tar.gz:
513
	$(WGET) $(A52DEC_URL)
514
515

a52dec: a52dec-$(A52DEC_VERSION).tar.gz
516
	$(EXTRACT_GZ)
517
518

.a52: a52dec
519
520
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && cd liba52 && make && make install && cd ../include && make && make install)
	touch $@
521
522
523
524
525
526
527
528
529
530

CLEAN_FILE += .a52
CLEAN_PKG += a52dec
DISTCLEAN_PKG += a52dec-$(A52DEC_VERSION).tar.gz

# ***************************************************************************
# mpeg2dec
# ***************************************************************************

#mpeg2dec:
531
532
533
534
#	@echo "*** Please press return here : ***"
#	cvs -d $(MPEG2DEC_CVSROOT) login
#	cvs -d $(MPEG2DEC_CVSROOT) co mpeg2dec
#	(cd $@; ./bootstrap)
535

hartman's avatar
hartman committed
536
mpeg2dec-$(MPEG2DEC_VERSION).tar.gz:
537
	$(WGET) $(MPEG2DEC_URL)
538
539

# It is easier to use bootstrapped versions...
hartman's avatar
hartman committed
540
#mpeg2dec-$(MPEG2DEC_VERSION).tar.gz:
541
542
#	$(WGET) $(MPEG2DEC_SNAPSHOT)
#	mv mpeg2dec-$(MPEG2DEC_DATE).tar.gz $@
543
544

mpeg2dec: mpeg2dec-$(MPEG2DEC_VERSION).tar.gz
545
	$(EXTRACT_GZ)
546
547

.mpeg2: mpeg2dec
548
549
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --without-x --disable-sdl && cd libmpeg2 && make && make install && cd ../include && make && make install)
	touch $@
550
551
552
553
554
555
556
557
558
559
560

CLEAN_FILE += .mpeg2
CLEAN_PKG += mpeg2dec
#DISTCLEAN_PKG += mpeg2dec-$(MPEG2DEC_VERSION)-cvs.tar.gz
DISTCLEAN_PKG += mpeg2dec-$(MPEG2DEC_VERSION).tar.gz

# ***************************************************************************
# libid3tag
# ***************************************************************************

libid3tag-$(LIBID3TAG_VERSION).tar.gz:
561
	$(WGET) $(LIBID3TAG_URL)
562
563

libid3tag: libid3tag-$(LIBID3TAG_VERSION).tar.gz
564
	$(EXTRACT_GZ)
565
566

.id3tag: libid3tag
567
568
569
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && make && make install)
	$(INSTALL_NAME)
	touch $@
570
571
572
573
574

CLEAN_FILE += .id3tag
CLEAN_PKG += libid3tag
DISTCLEAN_PKG += libid3tag-$(LIBID3TAG_VERSION).tar.gz

575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
# ***************************************************************************
# lua
# ***************************************************************************

ifdef HAVE_WIN32
LUA_MAKEPLATEFORM=mingw
else
ifdef HAVE_DARWIN_OS
LUA_MAKEPLATEFORM=macosx
else
ifdef HAVE_LINUX
LUA_MAKEPLATEFORM=linux
else
ifdef HAVE_BSD
LUA_MAKEPLATEFORM=bsd
else
LUA_MAKEPLATEFORM=generic
endif
endif
endif
endif

lua-$(LUA_VERSION).tar.gz:
	$(WGET) $(LUA_URL)

lua: lua-$(LUA_VERSION).tar.gz
	$(EXTRACT_GZ)

.lua: lua
604
ifdef HAVE_WIN32
605
	( cd $<; sed -i.orig 's/lua luac/lua.exe/' Makefile ; cd src; sed -i.orig 's/CC=/#CC=/' Makefile; cd ../..;)
606
607
	(cd $<; $(HOSTCC) make $(LUA_MAKEPLATEFORM); cd src; $(HOSTCC) make liblua.a; cd ..;$(HOSTCC) make install INSTALL_TOP=$(PREFIX); $(RANLIB) $(PREFIX)/lib/liblua.a)
	(cd $<; sed -i.orig 's@prefix= /usr/local@prefix= $(PREFIX)@' etc/lua.pc; mkdir -p $(PREFIX)/lib/pkgconfig; cp etc/lua.pc $(PREFIX)/lib/pkgconfig)
608
else 
609
	(cd $<; $(HOSTCC) make $(LUA_MAKEPLATEFORM) && make install INSTALL_TOP=$(PREFIX))
610
endif
611
612
613
614
615
616
	touch $@

CLEAN_FILE += .lua
CLEAN_PKG += lua
DISTCLEAN_PKG += lua-$(LUA_VERSION).tar.gz

617
618
619
620
621
# ***************************************************************************
# libmad
# ***************************************************************************

libmad-$(LIBMAD_VERSION).tar.gz:
622
	$(WGET) $(LIBMAD_URL)
623
624

libmad: libmad-$(LIBMAD_VERSION).tar.gz
625
	$(EXTRACT_GZ)
626
627

.mad: libmad
628
629
630
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) CFLAGS="-O3" && make && make install)
	$(INSTALL_NAME)
	touch $@
631
632
633
634
635
636
637
638
639
640

CLEAN_FILE += .mad
CLEAN_PKG += libmad
DISTCLEAN_PKG += libmad-$(LIBMAD_VERSION).tar.gz

# ***************************************************************************
# ogg
# ***************************************************************************

libogg-$(OGG_VERSION).tar.gz:
641
	$(WGET) $(OGG_URL)
642
643

libogg: libogg-$(OGG_VERSION).tar.gz
644
	$(EXTRACT_GZ)
Rafaël Carré's avatar
Rafaël Carré committed
645
646
	patch -p0 < Patches/ogg.patch
	patch -p0 < Patches/libogg-1.1.patch
gbazin's avatar
gbazin committed
647
ifdef HAVE_WINCE
Rafaël Carré's avatar
Rafaël Carré committed
648
	patch -p0 < Patches/libogg-wince.patch
gbazin's avatar
gbazin committed
649
endif
650
	(cd $@; autoconf)
651
652

.ogg: libogg
653
654
655
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && make install)
	$(INSTALL_NAME)
	touch $@
656
657
658
659
660
661
662
663
664
665

CLEAN_FILE += .ogg
CLEAN_PKG += libogg
DISTCLEAN_PKG += libogg-$(OGG_VERSION).tar.gz

# ***************************************************************************
# vorbis
# ***************************************************************************

#vorbis:
666
667
668
669
#	@echo "*** Please type \"anoncvs\" here : ***"
#	cvs -d $(OGG_CVSROOT) login
#	cvs -d $(OGG_CVSROOT) co vorbis
#	(cd $@; ./autogen.sh)
670
671

libvorbis-$(VORBIS_VERSION).tar.gz:
672
	$(WGET) $(VORBIS_URL)
673
674

libvorbis: libvorbis-$(VORBIS_VERSION).tar.gz
675
	$(EXTRACT_GZ)
676
	patch -p0 < Patches/libvorbis.patch
677
	(cd $@; autoconf)
678
679

.vorbis: libvorbis .ogg
680
681
# FIXME: shared libs disabled for now because of linking errors
#   -- titer 2005/09/16
682
683
684
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-shared && make && make install)
#	$(INSTALL_NAME)
	touch $@
685
686

.vorbisenc: .vorbis .ogg
687
688
#	$(INSTALL_NAME)
	touch $@
689
690
691
692
693

CLEAN_FILE += .vorbis .vorbisenc
CLEAN_PKG += libvorbis
DISTCLEAN_PKG += libvorbis-$(VORBIS_VERSION).tar.gz

gbazin's avatar
gbazin committed
694
695
696
697
698
699
# ***************************************************************************
# tremor
# ***************************************************************************

ifdef SVN
tremor: 
700
	$(SVN) co http://svn.xiph.org/trunk/Tremor tremor
701
702
	(cd $@ && patch -p0 < ../Patches/tremor.patch)
	(cd $@; rm -f ogg.h && echo "#include <ogg/ogg.h>" > ogg.h && rm -f os_types.h && echo "#include <ogg/os_types.h>" > os_types.h && ./autogen.sh)
gbazin's avatar
gbazin committed
703
704
else
tremor-$(TREMOR_VERSION).tar.bz2:
705
706
	echo "tremor snapshot does not exist, you MUST use subversion !"
	exit -1
707
	$(WGET) $(TREMOR_URL)
gbazin's avatar
gbazin committed
708
709

tremor: tremor-$(TREMOR_VERSION).tar.bz2
710
	$(EXTRACT_BZ2)
gbazin's avatar
gbazin committed
711
712
713
endif

.tremor: tremor .ogg
714
715
716
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-shared && make && make install)
	$(INSTALL_NAME)
	touch $@
gbazin's avatar
gbazin committed
717

718
719
ifdef SVN
tremor-source: tremor
720
	tar cfvz tremor-$(DATE).tar.gz tremor
721
722
723
724

SOURCE += tremor-source
endif

gbazin's avatar
gbazin committed
725
726
CLEAN_FILE += .tremor
CLEAN_PKG += tremor
727
#DISTCLEAN_PKG += tremor-$(TREMOR_VERSION).tar.bz2 #no tremor snapshot
gbazin's avatar
gbazin committed
728

729
730
731
732
733
# ***************************************************************************
# theora
# ***************************************************************************

libtheora-$(THEORA_VERSION).tar.bz2:
734
	$(WGET) $(THEORA_URL)
735
736

libtheora: libtheora-$(THEORA_VERSION).tar.bz2
737
738
739
	$(EXTRACT_BZ2)
	patch -p0 < Patches/theora.patch
	(cd $@; autoconf)
740

741
.theora: libtheora .ogg
742
ifdef HAVE_BEOS
743
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-sdltest --disable-oggtest --disable-vorbistest --disable-asm --disable-examples && make && make install)
744
else
745
  ifdef NO_TEXT_RELOCATION
746
747
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-asm --disable-sdltest --disable-oggtest --disable-vorbistest --disable-asm --disable-examples && make && make install)
  else
748
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-sdltest --disable-oggtest --disable-vorbistest --disable-examples && make && make install)
749
  endif
750
endif
751
752
	$(INSTALL_NAME)
	touch $@
753
754
755
756
757

CLEAN_FILE += .theora
CLEAN_PKG += libtheora
DISTCLEAN_PKG += libtheora-$(THEORA_VERSION).tar.bz2

hartman's avatar
hartman committed
758
759
760
761
762
# ***************************************************************************
# shout
# ***************************************************************************

libshout-$(SHOUT_VERSION).tar.gz:
763
	$(WGET) $(SHOUT_URL)
hartman's avatar
hartman committed
764
765

libshout: libshout-$(SHOUT_VERSION).tar.gz
766
	$(EXTRACT_GZ)
Christophe Mutricy's avatar
Christophe Mutricy committed
767
ifdef HAVE_WIN32
768
	patch -p0 < Patches/libshout-win32.patch
769
	(cd $@; autoreconf && automake)
Christophe Mutricy's avatar
Christophe Mutricy committed
770
771
endif
  
772
.shout: libshout .theora .ogg .speex .vorbis
773
774
775
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) &&  make && make install )
	$(INSTALL_NAME)
	touch $@
hartman's avatar
hartman committed
776
777
778
779
780

CLEAN_FILE += .shout
CLEAN_PKG += libshout
DISTCLEAN_PKG += libshout-$(SHOUT_VERSION).tar.gz

781
782
783
784
785
# ***************************************************************************
# flac
# ***************************************************************************

flac-$(FLAC_VERSION).tar.gz:
786
	$(WGET) $(FLAC_URL)
787
788

flac: flac-$(FLAC_VERSION).tar.gz
789
	$(EXTRACT_GZ)
790
ifdef HAVE_WIN32
791
	patch -p0 < Patches/flac-win32.patch
792
endif
793
794

FLAC_DISABLE_FLAGS = --disable-oggtest --disable-xmms-plugin --disable-cpplibs
795

damienf's avatar
damienf committed
796
.flac: flac .ogg 
797
ifdef HAVE_WIN32
798
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) $(FLAC_DISABLE_FLAGS) && cd src&& make -C libFLAC&& make -C libFLAC install && cd .. && make -C include install)
799
else
800
ifdef HAVE_DARWIN_OS
801
ifdef HAVE_DARWIN_OS_ON_INTEL
802
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-asm-optimizations && cd src && make -C libFLAC && make -C libFLAC install  && cd .. && make -C include install)
803
else
804
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) $(FLAC_DISABLE_FLAGS) && cd src && make -C libFLAC && make -C libFLAC install  && cd .. && make -C include install)
805
endif
806
else
807
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX)  $(FLAC_DISABLE_FLAGS) && cd src && make -C libFLAC && make -C libFLAC install  && cd .. && make -C include install)
808
endif
809
endif
810
811
	$(INSTALL_NAME)
	touch $@
812

damienf's avatar
damienf committed
813
CLEAN_FILE += .flac
814
815
816
817
818
819
820
821
CLEAN_PKG += flac
DISTCLEAN_PKG += flac-$(FLAC_VERSION).tar.gz

# ***************************************************************************
# speex
# ***************************************************************************

speex-$(SPEEX_VERSION).tar.gz:
822
	$(WGET) $(SPEEX_URL)
823
824

speex: speex-$(SPEEX_VERSION).tar.gz
825
826
	$(EXTRACT_GZ)
	patch -p0 < Patches/speex.patch
827
ifdef HAVE_BEOS
828
	patch -p0 < Patches/speex-BeOS.patch
829
endif
830
831

.speex: speex
832
833
834
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --enable-ogg=no && make && make install)
	$(INSTALL_NAME)
	touch $@
835
836
837
838
839
840
841
842
843

CLEAN_FILE += .speex
CLEAN_PKG += speex
DISTCLEAN_PKG += speex-$(SPEEX_VERSION).tar.gz

# ***************************************************************************
# faad2
# ***************************************************************************

844
faad2-$(FAAD2_VERSION).tar.gz:
845
	$(WGET) $(FAAD2_URL)
846

847
848
849
faad2: faad2-$(FAAD2_VERSION).tar.gz
	$(EXTRACT_GZ)
	(cd $@; ./bootstrap)
850

851
.faad: faad2
852
	(cd $< && $(HOSTCC) ./configure $(HOSTCONF) --disable-shared --prefix=$(PREFIX) CFLAGS="-O3" && sed -i.orig "s/shrext_cmds/shrext/g" libtool && make -C libfaad && make -C libfaad install)
853
	touch $@
854
855

CLEAN_FILE += .faad
856
857
CLEAN_PKG += faad2
DISTCLEAN_PKG += faad2-$(FAAD2_VERSION).tar.gz
858
859
860
861
862

# ***************************************************************************
# faac
# ***************************************************************************

863
faac-$(FAAC_VERSION).tar.gz:
864
	$(WGET) $(FAAC_URL)
865

866
867
faac: faac-$(FAAC_VERSION).tar.gz
	$(EXTRACT_GZ)
868
869

.faac: faac
870
	(cd $<; ./bootstrap && $(HOSTCC) ./configure $(HOSTCONF) --without-mp4v2 --prefix=$(PREFIX) --disable-shared && make && make install)
871
	touch $@
872
873
874

CLEAN_FILE += .faac
CLEAN_PKG += faac
875
DISTCLEAN_PKG += faac-$(FAAC_VERSION).tar.gz
876
877
878
879
880
881

# ***************************************************************************
# lame
# ***************************************************************************

lame-$(LAME_VERSION).tar.gz:
882
	$(WGET) $(LAME_URL)
883
884

lame: lame-$(LAME_VERSION).tar.gz
885
	$(EXTRACT_GZ)
886
887

.lame: lame
888
889
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-analyser-hooks --disable-decoder --disable-shared --disable-gtktest --disable-frontend && make && make install)
	touch $@
890
891
892
893
894
895
896
897
898
899

CLEAN_FILE += .lame
CLEAN_PKG += lame
DISTCLEAN_PKG += lame-$(LAME_VERSION).tar.gz

# ***************************************************************************
# libebml
# ***************************************************************************

libebml-$(LIBEBML_VERSION).tar.bz2:
900
	$(WGET) $(LIBEBML_URL)
901

902
903
904
## No reasons to use SVN anymore
#ifdef SVN
#libebml:
905
#	$(SVN) co http://svn.matroska.org/svn/matroska/trunk/libebml libebml
906
#else
907
libebml: libebml-$(LIBEBML_VERSION).tar.bz2
908
	$(EXTRACT_BZ2)
909
910
#endif

911
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
912
	(cd $@; patch -p0 < ../Patches/libebml-svn-win32.patch)
913
endif
914
915

.ebml: libebml
916
ifdef HAVE_WIN32
917
	(cd $<; make -C make/mingw32 prefix=$(PREFIX) $(HOSTCC2) CFLAGS="$(CFLAGS) -DWIN32" SHARED=no && make -C make/linux install_staticlib install_headers prefix=$(PREFIX) $(HOSTCC2))
918
else
919
920
921
922
	(cd $<; make -C make/linux prefix=$(PREFIX) $(HOSTCC2) staticlib && make -C make/linux install_staticlib install_headers prefix=$(PREFIX))
	$(RANLIB) $(PREFIX)/lib/libebml.a
endif	
	touch $@
923
924
925
926
927
928
## No reasons to use SVN anymore
#ifdef SVN
#libebml-source: libebml
#	tar cfvz  libebml-$(DATE).tar.gz libebml
#SOURCE += libebml-source	
#endif
929

930
931
932
933
934
935
936
937
CLEAN_FILE += .ebml
CLEAN_PKG += libebml
DISTCLEAN_PKG += libebml-$(LIBEBML_VERSION).tar.bz2

# ***************************************************************************
# libmatroska
# ***************************************************************************

938
939
940
libmatroska-$(LIBMATROSKA_VERSION).tar.bz2:
	$(WGET) $(LIBMATROSKA_URL)

941
942
943
## No reasons to use SVN anymore
#if SVN
#libmatroska:
944
#	$(SVN) co http://svn.matroska.org/svn/matroska/trunk/libmatroska libmatroska
945
#else
946
libmatroska: libmatroska-$(LIBMATROSKA_VERSION).tar.bz2
947
	$(EXTRACT_BZ2)
948
949
#endif 

950
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
951
	(cd $@; patch -p0 < ../Patches/libmatroska-win32.patch)
952
endif
953

954
955
.matroska: libmatroska .ebml
ifdef HAVE_WIN32
956
	(cd $<; make -C make/mingw32 prefix=$(PREFIX) $(HOSTCC2) SHARED=no EBML_DLL=no libmatroska.a && make -C make/linux install_staticlib install_headers prefix=$(PREFIX) $(HOSTCC2))
957
else
958
959
	(cd $<; make -C make/linux prefix=$(PREFIX) $(HOSTCC2) staticlib && make -C make/linux install_staticlib install_headers prefix=$(PREFIX))
	$(RANLIB) $(PREFIX)/lib/libmatroska.a
960
endif
961
	touch $@
962

963
964
965
966
967
968
969
## No reasons to use SVN anymore
#ifdef SVN
#libmatroska-source: libmatroska
#	tar cfvz libmatroska-$(DATE).tar.gz libmatroska
#
#SOURCE += libmatroska-source
#endif
970

971
972
973
974
975
CLEAN_FILE += .matroska
CLEAN_PKG += libmatroska
DISTCLEAN_PKG += libmatroska-$(LIBMATROSKA_VERSION).tar.bz2

# ***************************************************************************
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
# libamrnb
# ***************************************************************************

amrnb-$(LIBAMR_NB_VERSION).tar.bz2:
	$(WGET) $(LIBAMR_NB)

libamrnb: amrnb-$(LIBAMR_NB_VERSION).tar.bz2
	$(EXTRACT_BZ2)

.libamrnb: libamrnb
	(cd $<; $(HOSTCC) ./configure --prefix=$(PREFIX) --enable-shared && make && make install)
	touch $@

CLEAN_FILE += .libamrnb
CLEAN_PKG += libamrnb
DISTCLEAN_PKG += amrnb-$(LIBAMR_NB_VERSION).tar.bz2

# ***************************************************************************
# libamrwb
# ***************************************************************************

amrwb-$(LIBAMR_WB_VERSION).tar.bz2:
	$(WGET) $(LIBAMR_WB)

libamrwb: amrwb-$(LIBAMR_WB_VERSION).tar.bz2
	$(EXTRACT_BZ2)

.libamrwb: libamrwb
	(cd $<; $(HOSTCC) ./configure --prefix=$(PREFIX) --enable-shared && make && make install)
	touch $@


CLEAN_FILE += .libamrwb
CLEAN_PKG += libamrwb
1010
DISTCLEAN_PKG += amrwb-$(LIBAMR_WB_VERSION).tar.bz2
1011
1012
1013

# ***************************************************************************

1014
1015
1016
# ffmpeg
# ***************************************************************************

1017
ifdef SVN
1018
ffmpeg:
Felix Paul Kühne's avatar
Felix Paul Kühne committed
1019
	$(SVN) co $(FFMPEG_SVN) ffmpeg
1020
ifeq ($(HOST),i586-pc-beos)
Rafaël Carré's avatar
Rafaël Carré committed
1021
	(cd $@; patch -p0 < ../Patches/ffmpeg-svn-beos.patch)
1022
endif
gbazin's avatar
gbazin committed
1023
ifdef HAVE_WINCE
Rafaël Carré's avatar
Rafaël Carré committed
1024
	patch -p1 < Patches/ffmpeg-svn-wince.patch
gbazin's avatar
gbazin committed
1025
endif
1026
1027
1028
ifdef HAVE_BEOS
	(cd $@; patch -p0 < ../Patches/ffmpeg-alignment.patch)
endif
1029
ifdef HAVE_DARWIN_OS
1030
	(cd $@; patch -p0 < ../Patches/ffmpeg-macosx-intel-mmx.patch)
1031
endif
1032
ifdef NO_TEXT_RELOCATION
1033
1034
	(cd $@; patch -p0 < ../Patches/ffmpeg-svn-mmx_removal-darwin9.patch)
endif
1035
ifdef HAVE_UCLIBC
1036
1037
	patch -p0 < Patches/ffmpeg-svn-uclibc.patch
	patch -p0 < Patches/ffmpeg-svn-internal-define.patch