Makefile 71.3 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
# ***************************************************************************
# CMake
# ***************************************************************************
Pierre d'Herbemont's avatar
Pierre d'Herbemont committed
263
CMake: 
264
	cvs -d :pserver:anonymous:cmake@www.cmake.org:/cvsroot/CMake co cmake
265

Pierre d'Herbemont's avatar
Pierre d'Herbemont committed
266
.cmake: CMake
267
268
269
270
271
272
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@

CLEAN_FILE += .cmake
CLEAN_PKG += cmake

273
274
275
276
277
# ***************************************************************************
# libtool
# ***************************************************************************

ifdef HAVE_DARWIN_OS
278
279
280
281
282
283
284
285
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)
286
287
	ln -sf libtool $(PREFIX)/bin/glibtool
	ln -sf libtoolize $(PREFIX)/bin/glibtoolize
288
	touch $@
289
290
291

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

294
295
296
297
endif

ifeq ($(BUILD),i586-pc-beos)
libtool-$(LIBTOOL_VERSION).tar.gz:
298
	$(WGET) $(LIBTOOL_URL)
299
300

libtool: libtool-$(LIBTOOL_VERSION).tar.gz
301
	$(EXTRACT_GZ)
302
303

.libtool: libtool
304
305
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@
306
307
308
309
310

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

311
312
endif

313
314
315
316
317
# ***************************************************************************
# automake
# ***************************************************************************

automake-$(AUTOMAKE_VERSION).tar.gz:
318
	$(WGET) $(AUTOMAKE_URL)
319
320

automake: automake-$(AUTOMAKE_VERSION).tar.gz
321
	$(EXTRACT_GZ)
322
323

.automake: automake
324
325
	(cd $<; ./configure --prefix=$(PREFIX) && make && make install)
	touch $@
326
327
328
329
330
331
332
333
334

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

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

335
pkg-config-$(PKGCFG_VERSION).tar.gz:
336
	$(WGET) $(PKGCFG_URL)
337

338
pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
339
340
341
	$(EXTRACT_GZ)
	patch -d pkgconfig/glib-1.2.8 -p 1 < Patches/glib.patch
	patch -d pkgconfig -p0 < Patches/pkgcfg.patch
342
343

.pkgcfg: pkgconfig
344
345
	(cd pkgconfig; autoconf && ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
	touch $@
346
347
348

CLEAN_FILE += .pkgcfg
CLEAN_PKG += pkgconfig
349
DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
350
351
352
353
354
355

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

gettext-$(GETTEXT_VERSION).tar.gz:
356
	$(WGET) $(GETTEXT_URL)
357
358

gettext: gettext-$(GETTEXT_VERSION).tar.gz
359
	$(EXTRACT_GZ)
360
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
361
	patch -p0 < Patches/gettext-win32.patch
362
endif
363

364
.intl: gettext .iconv
365
ifdef HAVE_WIN32
366
	( cd $< && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-relocatable --with-iconv-prefix=$(PREFIX) --disable-java --disable-native-java)
367
else
368
	( cd $< && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-java --disable-native-java --without-emacs)
369
endif
370
371
372
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
373
	( 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 )
374
375
endif
ifneq ($(HOST),$(BUILD))
376
377
  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
378
	( cd $< && make -C gettext-runtime/intl && patch -p1 < ../Patches/libintl.patch && make -C gettext-runtime/intl install && make -C gettext-tools/misc install )
379
380
381
382
  else
    # We are compiling for MinGW on Cygwin -- build the full current gettext
	( cd $< && make && patch -p1 < ../Patches/libintl.patch && make install )
  endif
383
384
else
# Build and install the whole gettext
385
	( cd $< && make && patch -p1 < ../Patches/libintl.patch && make install )
386
387
388
endif
# Work around another non-sense of autoconf.
ifdef HAVE_WIN32
389
	(cd ../include; sed -i.orig '311 c #if 0' libintl.h)
390
endif
391
392
	$(INSTALL_NAME)
	touch $@
393
394
395
396
397
398
399
400
401
402

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

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

libiconv-$(LIBICONV_VERSION).tar.gz:
403
	$(WGET) $(LIBICONV_URL)
404
405

libiconv: libiconv-$(LIBICONV_VERSION).tar.gz
406
	$(EXTRACT_GZ)
407
ifdef HAVE_DARWIN_OS
Rafaël Carré's avatar
Rafaël Carré committed
408
	patch -p0 < Patches/libiconv.patch
409
endif
410
	patch -p0 < Patches/libiconv-autoconf-uclibc.patch
411

412
ifdef HAVE_DARWIN_OS
413
.iconv:
414
	touch $@
415
else
416
.iconv: libiconv
417
418
419
	(cd libiconv; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-nls && make && make install)
	$(INSTALL_NAME)
	touch $@
420
endif
421
422
423
424
425

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

426
427
428
429
430
431
432
# ***************************************************************************
# fontconfig
# ***************************************************************************

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

433
fontconfig: fontconfig-$(FONTCONFIG_VERSION).tar.gz Patches/fontconfig.patch
434
435
	$(EXTRACT_GZ)
	patch -p0 < Patches/fontconfig.patch
436
	patch -p0 < Patches/fontconfig-nodocs.patch
437
438
439
440

.fontconfig: fontconfig
ifdef HAVE_WIN32
  ifdef HAVE_CYGWIN
441
	(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)
442
  else
443
	(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)
444
445
  endif
else
bitmap's avatar
bitmap committed
446
  ifdef HAVE_DARWIN_OS
447
	(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
448
  else
449
	(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
450
  endif
451
452
453
454
455
456
457
458
endif
	$(INSTALL_NAME)
	touch $@

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

459
460
461
462
463
# ***************************************************************************
# freetype2
# ***************************************************************************

freetype-$(FREETYPE2_VERSION).tar.gz:
464
	$(WGET) $(FREETYPE2_URL)
465
466

freetype2: freetype-$(FREETYPE2_VERSION).tar.gz
467
	$(EXTRACT_GZ)
468
	patch -p0 < Patches/freetype-cross.patch
469
470

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

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

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

damienf's avatar
damienf committed
487
fribidi-$(FRIBIDI_VERSION).tar.gz:
488
	$(WGET) $(FRIBIDI_URL)
489

damienf's avatar
damienf committed
490
491
fribidi: fribidi-$(FRIBIDI_VERSION).tar.gz
	$(EXTRACT_GZ)
492
	patch -p0 < Patches/fribidi.patch
493

494
.fribidi: fribidi .iconv
495
496
497
	(cd $<; rm -f configure; ./bootstrap && $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX)  && make && make install)
	$(INSTALL_NAME)
	touch $@
498
499
500

CLEAN_FILE += .fribidi
CLEAN_PKG += fribidi
damienf's avatar
damienf committed
501
DISTCLEAN_PKG += fribidi-$(FRIBIDI_VERSION).tar.gz
502
503
504
505
506
507

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

a52dec-$(A52DEC_VERSION).tar.gz:
508
	$(WGET) $(A52DEC_URL)
509
510

a52dec: a52dec-$(A52DEC_VERSION).tar.gz
511
	$(EXTRACT_GZ)
512
513

.a52: a52dec
514
515
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && cd liba52 && make && make install && cd ../include && make && make install)
	touch $@
516
517
518
519
520
521
522
523
524
525

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

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

#mpeg2dec:
526
527
528
529
#	@echo "*** Please press return here : ***"
#	cvs -d $(MPEG2DEC_CVSROOT) login
#	cvs -d $(MPEG2DEC_CVSROOT) co mpeg2dec
#	(cd $@; ./bootstrap)
530

hartman's avatar
hartman committed
531
mpeg2dec-$(MPEG2DEC_VERSION).tar.gz:
532
	$(WGET) $(MPEG2DEC_URL)
533
534

# It is easier to use bootstrapped versions...
hartman's avatar
hartman committed
535
#mpeg2dec-$(MPEG2DEC_VERSION).tar.gz:
536
537
#	$(WGET) $(MPEG2DEC_SNAPSHOT)
#	mv mpeg2dec-$(MPEG2DEC_DATE).tar.gz $@
538
539

mpeg2dec: mpeg2dec-$(MPEG2DEC_VERSION).tar.gz
540
	$(EXTRACT_GZ)
541
542

.mpeg2: mpeg2dec
543
544
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --without-x --disable-sdl && cd libmpeg2 && make && make install && cd ../include && make && make install)
	touch $@
545
546
547
548
549
550
551
552
553
554
555

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:
556
	$(WGET) $(LIBID3TAG_URL)
557
558

libid3tag: libid3tag-$(LIBID3TAG_VERSION).tar.gz
559
	$(EXTRACT_GZ)
560
561

.id3tag: libid3tag
562
563
564
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && make && make install)
	$(INSTALL_NAME)
	touch $@
565
566
567
568
569

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

570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
# ***************************************************************************
# 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
599
ifdef HAVE_WIN32
600
	( cd $<; sed -i.orig 's/lua luac/lua.exe/' Makefile ; cd src; sed -i.orig 's/CC=/#CC=/' Makefile; cd ../..;)
601
602
	(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)
603
else 
604
	(cd $<; $(HOSTCC) make $(LUA_MAKEPLATEFORM) && make install INSTALL_TOP=$(PREFIX))
605
endif
606
607
608
609
610
611
	touch $@

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

612
613
614
615
616
# ***************************************************************************
# libmad
# ***************************************************************************

libmad-$(LIBMAD_VERSION).tar.gz:
617
	$(WGET) $(LIBMAD_URL)
618
619

libmad: libmad-$(LIBMAD_VERSION).tar.gz
620
	$(EXTRACT_GZ)
621
622

.mad: libmad
623
624
625
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) CFLAGS="-O3" && make && make install)
	$(INSTALL_NAME)
	touch $@
626
627
628
629
630
631
632
633
634
635

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

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

libogg-$(OGG_VERSION).tar.gz:
636
	$(WGET) $(OGG_URL)
637
638

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

.ogg: libogg
648
649
650
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) && make install)
	$(INSTALL_NAME)
	touch $@
651
652
653
654
655
656
657
658
659
660

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

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

#vorbis:
661
662
663
664
#	@echo "*** Please type \"anoncvs\" here : ***"
#	cvs -d $(OGG_CVSROOT) login
#	cvs -d $(OGG_CVSROOT) co vorbis
#	(cd $@; ./autogen.sh)
665
666

libvorbis-$(VORBIS_VERSION).tar.gz:
667
	$(WGET) $(VORBIS_URL)
668
669

libvorbis: libvorbis-$(VORBIS_VERSION).tar.gz
670
	$(EXTRACT_GZ)
671
	patch -p0 < Patches/libvorbis.patch
672
	(cd $@; autoconf)
673
674

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

.vorbisenc: .vorbis .ogg
682
683
#	$(INSTALL_NAME)
	touch $@
684
685
686
687
688

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

gbazin's avatar
gbazin committed
689
690
691
692
693
694
# ***************************************************************************
# tremor
# ***************************************************************************

ifdef SVN
tremor: 
695
	$(SVN) co http://svn.xiph.org/trunk/Tremor tremor
696
697
	(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
698
699
else
tremor-$(TREMOR_VERSION).tar.bz2:
700
701
	echo "tremor snapshot does not exist, you MUST use subversion !"
	exit -1
702
	$(WGET) $(TREMOR_URL)
gbazin's avatar
gbazin committed
703
704

tremor: tremor-$(TREMOR_VERSION).tar.bz2
705
	$(EXTRACT_BZ2)
gbazin's avatar
gbazin committed
706
707
708
endif

.tremor: tremor .ogg
709
710
711
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-shared && make && make install)
	$(INSTALL_NAME)
	touch $@
gbazin's avatar
gbazin committed
712

713
714
ifdef SVN
tremor-source: tremor
715
	tar cfvz tremor-$(DATE).tar.gz tremor
716
717
718
719

SOURCE += tremor-source
endif

gbazin's avatar
gbazin committed
720
721
CLEAN_FILE += .tremor
CLEAN_PKG += tremor
722
#DISTCLEAN_PKG += tremor-$(TREMOR_VERSION).tar.bz2 #no tremor snapshot
gbazin's avatar
gbazin committed
723

724
725
726
727
728
# ***************************************************************************
# theora
# ***************************************************************************

libtheora-$(THEORA_VERSION).tar.bz2:
729
	$(WGET) $(THEORA_URL)
730
731

libtheora: libtheora-$(THEORA_VERSION).tar.bz2
732
733
734
	$(EXTRACT_BZ2)
	patch -p0 < Patches/theora.patch
	(cd $@; autoconf)
735

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

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

hartman's avatar
hartman committed
753
754
755
756
757
# ***************************************************************************
# shout
# ***************************************************************************

libshout-$(SHOUT_VERSION).tar.gz:
758
	$(WGET) $(SHOUT_URL)
hartman's avatar
hartman committed
759
760

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

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

776
777
778
779
780
# ***************************************************************************
# flac
# ***************************************************************************

flac-$(FLAC_VERSION).tar.gz:
781
	$(WGET) $(FLAC_URL)
782
783

flac: flac-$(FLAC_VERSION).tar.gz
784
	$(EXTRACT_GZ)
785
ifdef HAVE_WIN32
786
	patch -p0 < Patches/flac-win32.patch
787
endif
788
789

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

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

damienf's avatar
damienf committed
808
CLEAN_FILE += .flac
809
810
811
812
813
814
815
816
CLEAN_PKG += flac
DISTCLEAN_PKG += flac-$(FLAC_VERSION).tar.gz

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

speex-$(SPEEX_VERSION).tar.gz:
817
	$(WGET) $(SPEEX_URL)
818
819

speex: speex-$(SPEEX_VERSION).tar.gz
820
821
	$(EXTRACT_GZ)
	patch -p0 < Patches/speex.patch
822
ifdef HAVE_BEOS
823
	patch -p0 < Patches/speex-BeOS.patch
824
endif
825
826

.speex: speex
827
828
829
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --enable-ogg=no && make && make install)
	$(INSTALL_NAME)
	touch $@
830
831
832
833
834
835
836
837
838

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

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

839
faad2-$(FAAD2_VERSION).tar.gz:
840
	$(WGET) $(FAAD2_URL)
841

842
843
844
faad2: faad2-$(FAAD2_VERSION).tar.gz
	$(EXTRACT_GZ)
	(cd $@; ./bootstrap)
845

846
.faad: faad2
847
	(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)
848
	touch $@
849
850

CLEAN_FILE += .faad
851
852
CLEAN_PKG += faad2
DISTCLEAN_PKG += faad2-$(FAAD2_VERSION).tar.gz
853
854
855
856
857

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

858
faac-$(FAAC_VERSION).tar.gz:
859
	$(WGET) $(FAAC_URL)
860

861
862
faac: faac-$(FAAC_VERSION).tar.gz
	$(EXTRACT_GZ)
863
864

.faac: faac
865
	(cd $<; ./bootstrap && $(HOSTCC) ./configure $(HOSTCONF) --without-mp4v2 --prefix=$(PREFIX) --disable-shared && make && make install)
866
	touch $@
867
868
869

CLEAN_FILE += .faac
CLEAN_PKG += faac
870
DISTCLEAN_PKG += faac-$(FAAC_VERSION).tar.gz
871
872
873
874
875
876

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

lame-$(LAME_VERSION).tar.gz:
877
	$(WGET) $(LAME_URL)
878
879

lame: lame-$(LAME_VERSION).tar.gz
880
	$(EXTRACT_GZ)
881
882

.lame: lame
883
884
	(cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-analyser-hooks --disable-decoder --disable-shared --disable-gtktest --disable-frontend && make && make install)
	touch $@
885
886
887
888
889
890
891
892
893
894

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

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

libebml-$(LIBEBML_VERSION).tar.bz2:
895
	$(WGET) $(LIBEBML_URL)
896

897
898
899
## No reasons to use SVN anymore
#ifdef SVN
#libebml:
900
#	$(SVN) co http://svn.matroska.org/svn/matroska/trunk/libebml libebml
901
#else
902
libebml: libebml-$(LIBEBML_VERSION).tar.bz2
903
	$(EXTRACT_BZ2)
904
905
#endif

906
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
907
	(cd $@; patch -p0 < ../Patches/libebml-svn-win32.patch)
908
endif
909
910

.ebml: libebml
911
ifdef HAVE_WIN32
912
	(cd $<; make -C make/mingw32 prefix=$(PREFIX) $(HOSTCC2) CFLAGS="$(CFLAGS) -DWIN32" SHARED=no && make -C make/linux install_staticlib install_headers prefix=$(PREFIX) $(HOSTCC2))
913
else
914
915
916
917
	(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 $@
918
919
920
921
922
923
## No reasons to use SVN anymore
#ifdef SVN
#libebml-source: libebml
#	tar cfvz  libebml-$(DATE).tar.gz libebml
#SOURCE += libebml-source	
#endif
924

925
926
927
928
929
930
931
932
CLEAN_FILE += .ebml
CLEAN_PKG += libebml
DISTCLEAN_PKG += libebml-$(LIBEBML_VERSION).tar.bz2

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

933
934
935
libmatroska-$(LIBMATROSKA_VERSION).tar.bz2:
	$(WGET) $(LIBMATROSKA_URL)

936
937
938
## No reasons to use SVN anymore
#if SVN
#libmatroska:
939
#	$(SVN) co http://svn.matroska.org/svn/matroska/trunk/libmatroska libmatroska
940
#else
941
libmatroska: libmatroska-$(LIBMATROSKA_VERSION).tar.bz2
942
	$(EXTRACT_BZ2)
943
944
#endif 

945
ifdef HAVE_WIN32
Rafaël Carré's avatar
Rafaël Carré committed
946
	(cd $@; patch -p0 < ../Patches/libmatroska-win32.patch)
947
endif
948

949
950
.matroska: libmatroska .ebml
ifdef HAVE_WIN32
951
	(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))
952
else
953
954
	(cd $<; make -C make/linux prefix=$(PREFIX) $(HOSTCC2) staticlib && make -C make/linux install_staticlib install_headers prefix=$(PREFIX))
	$(RANLIB) $(PREFIX)/lib/libmatroska.a
955
endif
956
	touch $@
957

958
959
960
961
962
963
964
## No reasons to use SVN anymore
#ifdef SVN
#libmatroska-source: libmatroska
#	tar cfvz libmatroska-$(DATE).tar.gz libmatroska
#
#SOURCE += libmatroska-source
#endif
965

966
967
968
969
970
CLEAN_FILE += .matroska
CLEAN_PKG += libmatroska
DISTCLEAN_PKG += libmatroska-$(LIBMATROSKA_VERSION).tar.bz2

# ***************************************************************************
971
972
973
974
975
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
# 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
1005
DISTCLEAN_PKG += amrwb-$(LIBAMR_WB_VERSION).tar.bz2
1006
1007
1008

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

1009
1010
1011
# ffmpeg
# ***************************************************************************

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

1036
else
1037
ffmpeg-$(FFMPEG_VERSION).tar.gz:
1038
1039
	echo "ffmpeg snapshot is too old, you MUST use subversion !"
	exit -1