OSDN Git Service

202df5c057324a6faa38b1776bc7f2a0f5f6412b
[handbrake-jp/handbrake-jp-git.git] / contrib / Jamfile
1 SubDir TOP contrib ;
2
3 # Use curl on Mac OS X since it's always installed, and assume wget
4 # is installed for all other systems
5 if $(OS) = MACOSX
6 {
7     WGET = curl -L -o ;
8 }
9 else
10 {
11     WGET = wget -O ;
12 }
13
14 if $(OS) = UNKNOWN
15 {
16     OS = CYGWIN ;
17 }
18
19 if $(OS) = SOLARIS
20 {
21     PATCH = gpatch ;
22     STRIP = echo ;
23 }
24 else
25 {
26     PATCH = patch ;
27     STRIP = strip -S ;
28 }
29
30 # Wget rule: downloads $(<) from the link in $(>)
31 rule Wget
32 {
33     Depends $(<) : $(>) ;
34 }
35 actions Wget
36 {
37     $(RM) $(<) &&
38     $(WGET) $(<) `cat $(>)` &&
39     ( touch $(<) || true )
40 }
41
42 # liba52
43 rule LibA52
44 {
45     Depends $(<) : $(>) ;
46     Depends lib  : $(<) ;
47 }
48 actions LibA52
49 {
50
51     cd `dirname $(>)` && CONTRIB=`pwd` &&
52     rm -rf a52dec && (gzip -dc a52dec.tar.gz | tar xf -) && 
53     cd a52dec && $(PATCH) -p1 < ../patch-a52dec.patch &&
54     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install &&
55     $(STRIP) $CONTRIB/lib/liba52.a
56 }
57 Wget   $(SUBDIR)/a52dec.tar.gz : $(SUBDIR)/version_a52dec.txt ;
58 LibA52 $(SUBDIR)/lib/liba52.a  : $(SUBDIR)/a52dec.tar.gz ;
59
60 # libavcodec
61 rule LibAvCodec
62 {
63     FFMPEG_PATCH = "$(PATCH) -p0 < ../patch-ffmpeg.patch" ;
64     if $(OS) = CYGWIN
65     {
66         FFMPEG_PATCH += " && $(PATCH) -p1 < ../patch-ffmpeg-cygwin.patch " ;
67     }
68     else if $(OS) = SOLARIS
69     {
70         FFMPEG_PATCH += " && $(PATCH) -p1 < ../patch-ffmpeg-solaris.patch " ;
71         FFMPEG_OPTIONS = " --disable-mmx --extra-cflags=-fpic " ;
72     }
73     Depends $(<) : $(>) ;
74     Depends lib  : $(<) ;
75 }
76 actions LibAvCodec
77 {
78     cd `dirname $(>)` && CONTRIB=`pwd` &&
79     rm -rf ffmpeg && (gzip -dc ffmpeg.tar.gz | tar xf -) &&
80     cd ffmpeg && $(FFMPEG_PATCH) &&
81     ./configure --prefix=$CONTRIB --enable-gpl --enable-pthreads --enable-swscaler --disable-audio-beos --disable-shared --enable-static \
82         --disable-decoders --enable-decoder=mp2 --disable-parsers --enable-parser=mpegaudio \
83         --disable-encoders --enable-encoder=mpeg4 --enable-encoder=ac3 --enable-encoder=snow \
84         --disable-muxers --enable-muxer=ipod --disable-demuxers --disable-protocols --disable-bsfs &&
85     $(MAKE) && $(MAKE) install &&
86     $(STRIP) $CONTRIB/lib/libavcodec.a
87 }
88 Wget       $(SUBDIR)/ffmpeg.tar.gz    : $(SUBDIR)/version_ffmpeg.txt ;
89 LibAvCodec $(SUBDIR)/lib/libavcodec.a : $(SUBDIR)/ffmpeg.tar.gz ;
90
91 rule LibAvUtil
92 {
93     Depends $(<) : $(>) ;
94     Depends lib  : $(<) ;
95 }
96 actions LibAvUtil
97 {
98     $(STRIP) $(<)
99 }
100 LibAvUtil $(SUBDIR)/lib/libavutil.a : $(SUBDIR)/lib/libavcodec.a ;
101 LibAvUtil $(SUBDIR)/lib/libavformat.a : $(SUBDIR)/lib/libavcodec.a ;
102 LibAvUtil $(SUBDIR)/lib/libswscale.a : $(SUBDIR)/lib/libavcodec.a ;
103
104 # HandBrake does not include a DVD decrypting library,
105 # so if a user requests it, let them download and compile it from a 3rd party
106 if $(CSS) = 1
107 {
108     # libdvdcss
109     # We need libdvdcss.so for libdvdread's configure to work...
110     rule LibDvdCss
111     {
112         Depends $(<) : $(>) ;
113         Depends lib  : $(<) ;
114     }
115     actions LibDvdCss
116     {
117         cd `dirname $(>)` && CONTRIB=`pwd` &&
118         rm -rf libdvdcss-1.2.9 && (gzip -dc libdvdcss.tar.gz | tar xf - ) && 
119         cd libdvdcss-1.2.9 &&
120         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install &&
121         $(STRIP) $CONTRIB/lib/libdvdcss.a
122     }
123     Wget      $(SUBDIR)/libdvdcss.tar.gz : $(SUBDIR)/version_libdvdcss.txt ;
124     LibDvdCss $(SUBDIR)/lib/libdvdcss.a  : $(SUBDIR)/libdvdcss.tar.gz ;
125 }
126
127 # libdca
128 rule LibDCA
129 {
130     Depends $(<) : $(>) ;
131     Depends lib  : $(<) ;
132 }
133 actions LibDCA
134 {
135     cd `dirname $(>)` && CONTRIB=`pwd` &&
136     rm -rf libdca && (gzip -dc libdca.tar.gz | tar xf - ) && 
137     cd libdca && $(PATCH) -p1 < ../patch-libdca.patch &&
138     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install &&
139     $(STRIP) $CONTRIB/lib/libdca.a
140 }
141 Wget   $(SUBDIR)/libdca.tar.gz : $(SUBDIR)/version_libdca.txt ;
142 LibDCA $(SUBDIR)/lib/libdca.a  : $(SUBDIR)/libdca.tar.gz ;
143
144 # libdvdread
145 rule LibDvdRead
146 {
147     Depends $(<) : $(>) ;
148     Depends lib  : $(<) ;
149     
150     if $(OS) = MACOSX
151     {
152         DVDREAD_PATCH = "$(PATCH) -p0 < ../patch-libdvdread-css-vlc-dylib.patch &&" ;
153     }
154     
155 }
156 if $(CSS) = 1 # Include CSS support in libdvdread if requested
157 {
158     actions LibDvdRead
159     {
160         cd `dirname $(>)` && CONTRIB=`pwd` &&
161         rm -rf libdvdread && (gzip -dc libdvdread.tar.gz | tar xf - ) && 
162         cd libdvdread &&
163         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --with-libdvdcss=$CONTRIB &&
164         $(MAKE) && $(MAKE) install &&
165         $(STRIP) $CONTRIB/lib/libdvdread.a
166     }
167 }
168 else {
169     # Cygwin/Windows doesn't use CSS as of now, so don't include it on the
170     # configure line.
171     # MacOSX uses a dylib for CSS, so it doesn't need including there either.
172     actions LibDvdRead
173     {
174         cd `dirname $(>)` && CONTRIB=`pwd` &&
175         rm -rf libdvdread && (gzip -dc libdvdread.tar.gz | tar xf - ) &&
176         cd libdvdread && $(DVDREAD_PATCH)
177         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
178         $(MAKE) && $(MAKE) install &&
179         $(STRIP) $CONTRIB/lib/libdvdread.a
180     }
181 }
182 Wget       $(SUBDIR)/libdvdread.tar.gz : $(SUBDIR)/version_libdvdread.txt ;
183 LibDvdRead $(SUBDIR)/lib/libdvdread.a  : $(SUBDIR)/libdvdread.tar.gz ;
184
185 # libfaac
186 rule LibFaac
187 {
188     Depends $(<) : $(>) ;
189     Depends lib  : $(<) ;
190 }
191 actions LibFaac
192 {
193     cd `dirname $(>)` && CONTRIB=`pwd` &&
194     rm -rf faac && (gzip -dc faac.tar.gz | tar xf - ) && cd faac &&
195     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --enable-static &&
196     $(MAKE) && $(MAKE) install &&
197     $(STRIP) $CONTRIB/lib/libfaac.a
198 }
199 Wget    $(SUBDIR)/faac.tar.gz   : $(SUBDIR)/version_faac.txt ;
200 LibFaac $(SUBDIR)/lib/libfaac.a : $(SUBDIR)/faac.tar.gz ;
201
202 # libmp3lame
203 rule LibMp3Lame
204 {
205     Depends $(<) : $(>) ;
206     Depends lib  : $(<) ;
207 }
208 actions LibMp3Lame
209 {
210     cd `dirname $(>)` && CONTRIB=`pwd` &&
211     rm -rf lame && (gzip -dc lame.tar.gz | tar xf - ) && cd lame &&
212     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
213     $(MAKE) && $(MAKE) install &&
214     $(STRIP) $CONTRIB/lib/libmp3lame.a
215 }
216 Wget       $(SUBDIR)/lame.tar.gz      : $(SUBDIR)/version_lame.txt ;
217 LibMp3Lame $(SUBDIR)/lib/libmp3lame.a : $(SUBDIR)/lame.tar.gz ;
218
219 # libmp4v2
220 rule LibMp4v2
221 {
222     LIBMP4V2_PATCH = "" ;
223     if $(OS) = CYGWIN
224     {
225         LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch_mpeg4ip_cygwin.patch && " ;
226     }
227     LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip.patch && " ;
228     LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip-nasm-2.00-configure.patch && " ;
229     LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip-ac3.patch && " ;
230     Depends $(<) : $(>) ;
231     Depends lib  : $(<) ;
232 }
233 actions LibMp4v2
234 {
235     cd `dirname $(>)` && CONTRIB=`pwd` &&
236     rm -rf mpeg4ip && (gzip -dc mpeg4ip.tar.gz | tar xf - ) &&
237     cd mpeg4ip && $(LIBMP4V2_PATCH)
238     ./bootstrap --cache-file=$CONTRIB/config.cache --disable-mp3lame --disable-faac --disable-x264 --disable-server --disable-player &&
239     $(MAKE) -C lib/mp4v2 libmp4v2.la && cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
240     cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
241         include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include &&
242     $(STRIP) $CONTRIB/lib/libmp4v2.a
243 }
244 Wget     $(SUBDIR)/mpeg4ip.tar.gz : $(SUBDIR)/version_mpeg4ip.txt ;
245 LibMp4v2 $(SUBDIR)/lib/libmp4v2.a : $(SUBDIR)/mpeg4ip.tar.gz ;
246
247 rule LibMkv
248 {
249     Depends $(<) : $(>) ;
250     Depends lib  : $(<) ;
251 }
252 actions LibMkv
253 {
254     cd `dirname $(>)` && CONTRIB=`pwd` &&
255     rm -rf libmkv && (gzip -dc libmkv.tar.gz | tar xf - ) && 
256     cd libmkv &&
257     ./configure --disable-shared --enable-static --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache &&
258     $(MAKE) && $(MAKE) install &&
259     $(STRIP) $CONTRIB/lib/libmkv.a
260 }
261 Wget    $(SUBDIR)/libmkv.tar.gz : $(SUBDIR)/version_libmkv.txt ;
262 LibMkv  $(SUBDIR)/lib/libmkv.a  : $(SUBDIR)/libmkv.tar.gz ;
263
264 # libmpeg2
265 rule LibMpeg2
266 {
267     Depends $(<) : $(>) ;
268     Depends lib  : $(<) ;
269 }
270 actions LibMpeg2
271 {
272     cd `dirname $(>)` && CONTRIB=`pwd` &&
273     rm -rf mpeg2dec && (gzip -dc mpeg2dec.tar.gz | tar xf - ) && 
274     cd mpeg2dec && $(PATCH) -p1 < ../patch-libmpeg2.patch &&
275     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --disable-sdl &&
276     $(MAKE) && $(MAKE) install &&
277     $(STRIP) $CONTRIB/lib/libmpeg2.a
278 }
279 Wget     $(SUBDIR)/mpeg2dec.tar.gz : $(SUBDIR)/version_mpeg2dec.txt ;
280 LibMpeg2 $(SUBDIR)/lib/libmpeg2.a  : $(SUBDIR)/mpeg2dec.tar.gz ;
281
282 # libogg
283 rule LibOgg
284 {
285     Depends $(<) : $(>) ;
286     Depends lib  : $(<) ;
287 }
288 actions LibOgg
289 {
290     cd `dirname $(>)` && CONTRIB=`pwd` &&
291     rm -rf libogg && (gzip -dc libogg.tar.gz | tar xf - ) && 
292     cd libogg &&
293     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
294     $(MAKE) && $(MAKE) install &&
295     $(STRIP) $CONTRIB/lib/libogg.a
296 }
297 Wget   $(SUBDIR)/libogg.tar.gz : $(SUBDIR)/version_libogg.txt ;
298 LibOgg $(SUBDIR)/lib/libogg.a  : $(SUBDIR)/libogg.tar.gz ;
299
300 # libsamplerate
301 rule LibSampleRate
302 {
303     Depends $(<) : $(>) ;
304     Depends lib  : $(<) ;
305 }
306 actions LibSampleRate
307 {
308     cd `dirname $(>)` && CONTRIB=`pwd` &&
309     rm -rf libsamplerate && (gzip -dc libsamplerate.tar.gz | tar xf - ) && 
310     cd libsamplerate &&
311     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
312     $(MAKE) && $(MAKE) install &&
313     $(STRIP) $CONTRIB/lib/libsamplerate.a
314 }
315 Wget          $(SUBDIR)/libsamplerate.tar.gz : $(SUBDIR)/version_libsamplerate.txt ;
316 LibSampleRate $(SUBDIR)/lib/libsamplerate.a  : $(SUBDIR)/libsamplerate.tar.gz ;
317
318 # libvorbis
319 rule LibVorbis
320 {
321     Depends $(<) : $(>) ;
322     Depends lib  : $(<) ;
323 }
324 actions LibVorbis
325 {
326     cd `dirname $(>)` && CONTRIB=`pwd` &&
327     rm -rf libvorbis && (gzip -dc libvorbis.tar.gz | tar xf - ) &&
328     cd libvorbis &&
329     ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
330     $(MAKE) && $(MAKE) install &&
331     $(STRIP) $CONTRIB/lib/libvorbis.a
332 }
333 Wget      $(SUBDIR)/libvorbis.tar.gz : $(SUBDIR)/version_libvorbis.txt ;
334 LibVorbis $(SUBDIR)/lib/libvorbis.a  : $(SUBDIR)/libvorbis.tar.gz ;
335
336 rule LibVorbisEnc
337 {
338     Depends $(<) : $(>) ;
339     Depends lib  : $(<) ;
340 }
341 actions LibVorbisEnc
342 {
343     $(STRIP) $(<)
344 }
345 LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ;
346
347 # libtheora
348 rule LibTheora
349 {
350     Depends $(<) : $(>) ;
351     Depends lib  : $(<) ;
352 }
353 actions LibTheora
354 {
355     cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf libtheora &&
356     (gzip -dc libtheora.tar.gz | tar xf - ) && cd libtheora &&
357     ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --with-vorbis=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared \
358             --disable-oggtest --disable-vorbistest --disable-sdltest --disable-examples &&
359     $(MAKE) && $(MAKE) install &&
360     $(STRIP) $CONTRIB/lib/libtheora.a
361 }
362 Wget      $(SUBDIR)/libtheora.tar.gz : $(SUBDIR)/version_libtheora.txt ;
363 LibTheora $(SUBDIR)/lib/libtheora.a  : $(SUBDIR)/libtheora.tar.gz ;
364
365 # libx264
366 rule LibX264
367 {
368     LIBX264_PATCH = "" ;
369     if $(OS) = CYGWIN
370     {
371         LIBX264_PATCH += "$(PATCH) -p1 < ../patch-x264-cygwin.patch && " ;
372     }
373     else if $(OS) = SOLARIS
374     {
375         LIBX264_PATCH += " $(PATCH) -p1 < ../patch-x264-solaris.patch && " ;
376     }
377     LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-idr.patch && " ;
378         LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-vbv-1pass.patch && " ;
379     LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-vbv-2pass.patch && " ;
380     Depends $(<) : $(>) ;
381     Depends lib  : $(<) ;
382 }
383 actions LibX264
384 {
385     cd `dirname $(>)` && CONTRIB=`pwd` &&
386     rm -rf x264 && (gzip -dc x264.tar.gz | tar xf - ) && 
387     cd x264 && $(LIBX264_PATCH)
388     bash ./configure --prefix=$CONTRIB --enable-pthread &&
389     $(MAKE) libx264.a && cp libx264.a $CONTRIB/lib/ && cp x264.h $CONTRIB/include/ && $(STRIP) $CONTRIB/lib/libx264.a
390 }
391 Wget    $(SUBDIR)/x264.tar.gz   : $(SUBDIR)/version_x264.txt ;
392 LibX264 $(SUBDIR)/lib/libx264.a : $(SUBDIR)/x264.tar.gz ;
393
394 # libxvidcore
395 rule LibXvidCore
396 {
397     LIBXVIDCORE_PATCH = "" ;
398     if $(OS) = MACOSX
399     {
400         LIBXVIDCORE_PATCH = "$(PATCH) -p1 < ../patch-xvidcore-macosx.patch && " ;
401     }
402     else if $(OS) = CYGWIN
403     {
404         LIBXVIDCORE_PATCH = "$(PATCH) -p1 < ../patch-xvidcore-cygwin.patch && " ;
405     }
406     LIBXVIDCORE_PATCH += "$(PATCH) -p1 < ../patch-xvidcore-nasm-2.00-configure.patch && " ;
407     LIBXVIDCORE_PATCH += "$(PATCH) -p1 < ../patch-xvidcore-fdct.patch && " ;
408     Depends $(<) : $(>) ;
409     Depends lib  : $(<) ;
410 }
411 actions LibXvidCore
412 {
413     cd `dirname $(>)` && CONTRIB=`pwd` &&
414     rm -rf xvidcore && (gzip -dc xvidcore.tar.gz | tar xf - ) &&
415     cd xvidcore && $(LIBXVIDCORE_PATCH)
416     cd build/generic/ && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) libxvidcore.a &&
417     cp ./=build/libxvidcore.a $CONTRIB/lib/ &&
418     cp ../../src/xvid.h $CONTRIB/include/ &&
419     $(STRIP) $CONTRIB/lib/libxvidcore.a
420 }
421 Wget        $(SUBDIR)/xvidcore.tar.gz   : $(SUBDIR)/version_xvidcore.txt ;
422 LibXvidCore $(SUBDIR)/lib/libxvidcore.a : $(SUBDIR)/xvidcore.tar.gz ;
423
424 # zlib
425 if $(OS) = CYGWIN
426 {
427     rule Zlib
428     {
429         Depends $(<) : $(>) ;
430         Depends lib  : $(<) ;
431     }
432     actions Zlib
433     {
434         cd `dirname $(>)` && CONTRIB=`pwd` &&
435         rm -rf zlib && (gzip -dc zlib.tar.gz | tar xf - ) &&
436         cd zlib && ./configure --prefix=$CONTRIB &&
437         $(MAKE) && $(MAKE) install && touch $CONTRIB/.contrib &&
438         $(STRIP) $CONTRIB/lib/libz.a
439     }
440     Wget  $(SUBDIR)/zlib.tar.gz : $(SUBDIR)/version_zlib.txt ;
441     Zlib  $(SUBDIR)/lib/libz.a  : $(SUBDIR)/zlib.tar.gz ;
442 }