OSDN Git Service

Optimize MP4 files for HTTP streaming (on the CLI it's -O or --optimize).
[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 # CSS doesn't work on Cygwin/Windows as of now, so don't use it.
105 if $(OS) != CYGWIN
106 {
107     # libdvdcss
108     # We need libdvdcss.so for libdvdread's configure to work...
109     rule LibDvdCss
110     {
111         Depends $(<) : $(>) ;
112         Depends lib  : $(<) ;
113     }
114     actions LibDvdCss
115     {
116         cd `dirname $(>)` && CONTRIB=`pwd` &&
117         rm -rf libdvdcss && (gzip -dc libdvdcss.tar.gz | tar xf - ) && 
118         cd libdvdcss &&
119         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install &&
120         $(STRIP) $CONTRIB/lib/libdvdcss.a
121     }
122     Wget      $(SUBDIR)/libdvdcss.tar.gz : $(SUBDIR)/version_libdvdcss.txt ;
123     LibDvdCss $(SUBDIR)/lib/libdvdcss.a  : $(SUBDIR)/libdvdcss.tar.gz ;
124 }
125
126 # libdca
127 rule LibDCA
128 {
129     Depends $(<) : $(>) ;
130     Depends lib  : $(<) ;
131 }
132 actions LibDCA
133 {
134     cd `dirname $(>)` && CONTRIB=`pwd` &&
135     rm -rf libdca && (gzip -dc libdca.tar.gz | tar xf - ) && 
136     cd libdca && $(PATCH) -p1 < ../patch-libdca.patch &&
137     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install &&
138     $(STRIP) $CONTRIB/lib/libdca.a
139 }
140 Wget   $(SUBDIR)/libdca.tar.gz : $(SUBDIR)/version_libdca.txt ;
141 LibDCA $(SUBDIR)/lib/libdca.a  : $(SUBDIR)/libdca.tar.gz ;
142
143 # libdvdread
144 rule LibDvdRead
145 {
146     Depends $(<) : $(>) ;
147     Depends lib  : $(<) ;
148 }
149 if $(OS) != CYGWIN
150 {
151     actions LibDvdRead
152     {
153         cd `dirname $(>)` && CONTRIB=`pwd` &&
154         rm -rf libdvdread && (gzip -dc libdvdread.tar.gz | tar xf - ) && 
155         cd libdvdread &&
156         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --with-libdvdcss=$CONTRIB &&
157         $(MAKE) && $(MAKE) install &&
158         $(STRIP) $CONTRIB/lib/libdvdread.a
159     }
160 }
161 else {
162     # Cygwin/Windows doesn't use CSS as of now, so don't include it on the
163     # configure line.
164     actions LibDvdRead
165     {
166         cd `dirname $(>)` && CONTRIB=`pwd` &&
167         rm -rf libdvdread && (gzip -dc libdvdread.tar.gz | tar xf - ) && 
168         cd libdvdread &&
169         ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
170         $(MAKE) && $(MAKE) install &&
171         $(STRIP) $CONTRIB/lib/libdvdread.a
172     }
173 }
174 Wget       $(SUBDIR)/libdvdread.tar.gz : $(SUBDIR)/version_libdvdread.txt ;
175 LibDvdRead $(SUBDIR)/lib/libdvdread.a  : $(SUBDIR)/libdvdread.tar.gz ;
176
177 # libfaac
178 rule LibFaac
179 {
180     Depends $(<) : $(>) ;
181     Depends lib  : $(<) ;
182 }
183 actions LibFaac
184 {
185     cd `dirname $(>)` && CONTRIB=`pwd` &&
186     rm -rf faac && (gzip -dc faac.tar.gz | tar xf - ) && cd faac &&
187     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --enable-static &&
188     $(MAKE) && $(MAKE) install &&
189     $(STRIP) $CONTRIB/lib/libfaac.a
190 }
191 Wget    $(SUBDIR)/faac.tar.gz   : $(SUBDIR)/version_faac.txt ;
192 LibFaac $(SUBDIR)/lib/libfaac.a : $(SUBDIR)/faac.tar.gz ;
193
194 # libmp3lame
195 rule LibMp3Lame
196 {
197     Depends $(<) : $(>) ;
198     Depends lib  : $(<) ;
199 }
200 actions LibMp3Lame
201 {
202     cd `dirname $(>)` && CONTRIB=`pwd` &&
203     rm -rf lame && (gzip -dc lame.tar.gz | tar xf - ) && cd lame &&
204     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
205     $(MAKE) && $(MAKE) install &&
206     $(STRIP) $CONTRIB/lib/libmp3lame.a
207 }
208 Wget       $(SUBDIR)/lame.tar.gz      : $(SUBDIR)/version_lame.txt ;
209 LibMp3Lame $(SUBDIR)/lib/libmp3lame.a : $(SUBDIR)/lame.tar.gz ;
210
211 # libmp4v2
212 rule LibMp4v2
213 {
214     Depends $(<) : $(>) ;
215     Depends lib  : $(<) ;
216 }
217 if $(OS) != CYGWIN
218 {
219     actions LibMp4v2
220     {
221         cd `dirname $(>)` && CONTRIB=`pwd` &&
222         rm -rf mpeg4ip && (gzip -dc mpeg4ip.tar.gz | tar xf - ) && 
223         cd mpeg4ip &&
224         $(PATCH) -p1 < ../patch-mpeg4ip.patch  && $(PATCH) -p0 < ../patch-mpeg4ip-no_compressor_name.patch &&
225         ./bootstrap --cache-file=$CONTRIB/config.cache --disable-mp3lame --disable-faac --disable-x264 --disable-server --disable-player &&
226         $(MAKE) -C lib/mp4v2 libmp4v2.la && cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
227         cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
228             include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include &&
229         $(STRIP) $CONTRIB/lib/libmp4v2.a
230     }
231 }
232 else
233 {
234     actions LibMp4v2
235     {
236         cd `dirname $(>)` && CONTRIB=`pwd` &&
237         rm -rf mpeg4ip && (gzip -dc mpeg4ip.tar.gz | tar xf - ) && 
238         cd mpeg4ip &&
239         $(PATCH) -p1 < ../patch-mpeg4ip.patch && $(PATCH) -p0 < ../patch-mpeg4ip-no_compressor_name.patch && $(PATCH) -p1 < ../patch_mpeg4ip_cygwin.patch &&
240         ./bootstrap --cache-file=$CONTRIB/config.cache --disable-mp3lame --disable-faac --disable-x264 --disable-server --disable-player &&
241         $(MAKE) -C lib/mp4v2 libmp4v2.la && cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
242         cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
243             include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include &&
244         $(STRIP) $CONTRIB/lib/libmp4v2.a
245     }
246 }
247 Wget     $(SUBDIR)/mpeg4ip.tar.gz : $(SUBDIR)/version_mpeg4ip.txt ;
248 LibMp4v2 $(SUBDIR)/lib/libmp4v2.a : $(SUBDIR)/mpeg4ip.tar.gz ;
249
250 rule LibMkv
251 {
252     Depends $(<) : $(>) ;
253     Depends lib  : $(<) ;
254 }
255 actions LibMkv
256 {
257     cd `dirname $(>)` && CONTRIB=`pwd` &&
258     rm -rf libmkv && (gzip -dc libmkv.tar.gz | tar xf - ) && 
259     cd libmkv &&
260     ./configure --disable-shared --enable-static --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache &&
261     $(MAKE) && $(MAKE) install &&
262     $(STRIP) $CONTRIB/lib/libmkv.a
263 }
264 Wget    $(SUBDIR)/libmkv.tar.gz : $(SUBDIR)/version_libmkv.txt ;
265 LibMkv  $(SUBDIR)/lib/libmkv.a  : $(SUBDIR)/libmkv.tar.gz ;
266
267 # libmpeg2
268 rule LibMpeg2
269 {
270     Depends $(<) : $(>) ;
271     Depends lib  : $(<) ;
272 }
273 actions LibMpeg2
274 {
275     cd `dirname $(>)` && CONTRIB=`pwd` &&
276     rm -rf mpeg2dec && (gzip -dc mpeg2dec.tar.gz | tar xf - ) && 
277     cd mpeg2dec && $(PATCH) -p1 < ../patch-libmpeg2.patch &&
278     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --disable-sdl &&
279     $(MAKE) && $(MAKE) install &&
280     $(STRIP) $CONTRIB/lib/libmpeg2.a
281 }
282 Wget     $(SUBDIR)/mpeg2dec.tar.gz : $(SUBDIR)/version_mpeg2dec.txt ;
283 LibMpeg2 $(SUBDIR)/lib/libmpeg2.a  : $(SUBDIR)/mpeg2dec.tar.gz ;
284
285 # libogg
286 rule LibOgg
287 {
288     Depends $(<) : $(>) ;
289     Depends lib  : $(<) ;
290 }
291 actions LibOgg
292 {
293     cd `dirname $(>)` && CONTRIB=`pwd` &&
294     rm -rf libogg && (gzip -dc libogg.tar.gz | tar xf - ) && 
295     cd libogg &&
296     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
297     $(MAKE) && $(MAKE) install &&
298     $(STRIP) $CONTRIB/lib/libogg.a
299 }
300 Wget   $(SUBDIR)/libogg.tar.gz : $(SUBDIR)/version_libogg.txt ;
301 LibOgg $(SUBDIR)/lib/libogg.a  : $(SUBDIR)/libogg.tar.gz ;
302
303 # libsamplerate
304 rule LibSampleRate
305 {
306     Depends $(<) : $(>) ;
307     Depends lib  : $(<) ;
308 }
309 actions LibSampleRate
310 {
311     cd `dirname $(>)` && CONTRIB=`pwd` &&
312     rm -rf libsamplerate && (gzip -dc libsamplerate.tar.gz | tar xf - ) && 
313     cd libsamplerate &&
314     ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
315     $(MAKE) && $(MAKE) install &&
316     $(STRIP) $CONTRIB/lib/libsamplerate.a
317 }
318 Wget          $(SUBDIR)/libsamplerate.tar.gz : $(SUBDIR)/version_libsamplerate.txt ;
319 LibSampleRate $(SUBDIR)/lib/libsamplerate.a  : $(SUBDIR)/libsamplerate.tar.gz ;
320
321 # libvorbis
322 rule LibVorbis
323 {
324     Depends $(<) : $(>) ;
325     Depends lib  : $(<) ;
326 }
327 actions LibVorbis
328 {
329     cd `dirname $(>)` && CONTRIB=`pwd` &&
330     rm -rf libvorbis && (gzip -dc libvorbis.tar.gz | tar xf - ) &&
331     cd libvorbis &&
332     ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared &&
333     $(MAKE) && $(MAKE) install &&
334     $(STRIP) $CONTRIB/lib/libvorbis.a
335 }
336 Wget      $(SUBDIR)/libvorbis.tar.gz : $(SUBDIR)/version_libvorbis.txt ;
337 LibVorbis $(SUBDIR)/lib/libvorbis.a  : $(SUBDIR)/libvorbis.tar.gz ;
338
339 rule LibVorbisEnc
340 {
341     Depends $(<) : $(>) ;
342     Depends lib  : $(<) ;
343 }
344 actions LibVorbisEnc
345 {
346     $(STRIP) $(<)
347 }
348 LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ;
349
350 # libx264
351 rule LibX264
352 {
353     LIBX264_PATCH = "" ;
354     if $(OS) = MACOSX && $(OSPLAT) = X86
355     {
356         LIBX264_PATCH += "$(PATCH) -p1 < ../patch-x264-macintel.patch && " ;
357     }
358     else if $(OS) = CYGWIN
359     {
360         LIBX264_PATCH += "$(PATCH) -p1 < ../patch-x264-cygwin.patch && " ;
361     }
362     else if $(OS) = SOLARIS
363     {
364         LIBX264_PATCH += " $(PATCH) -p1 < ../patch-x264-solaris.patch && " ;
365     }
366     LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-aq.patch && " ;
367     LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-idr.patch && " ;
368     Depends $(<) : $(>) ;
369     Depends lib  : $(<) ;
370 }
371 actions LibX264
372 {
373     cd `dirname $(>)` && CONTRIB=`pwd` &&
374     rm -rf x264 && (gzip -dc x264.tar.gz | tar xf - ) && 
375     cd x264 && $(LIBX264_PATCH)
376     bash ./configure --prefix=$CONTRIB --enable-pthread &&
377     $(MAKE) && $(MAKE) install &&
378     $(STRIP) $CONTRIB/lib/libx264.a
379 }
380 Wget    $(SUBDIR)/x264.tar.gz   : $(SUBDIR)/version_x264.txt ;
381 LibX264 $(SUBDIR)/lib/libx264.a : $(SUBDIR)/x264.tar.gz ;
382
383 # libxvidcore
384 rule LibXvidCore
385 {
386     LIBXVIDCORE_PATCH = "" ;
387     if $(OS) = MACOSX
388     {
389         LIBXVIDCORE_PATCH = "$(PATCH) -p1 < ../patch-xvidcore-macosx.patch && " ;
390     }
391     else if $(OS) = CYGWIN
392     {
393         LIBXVIDCORE_PATCH = "$(PATCH) -p1 < ../patch-xvidcore-cygwin.patch && " ;
394     }
395     Depends $(<) : $(>) ;
396     Depends lib  : $(<) ;
397 }
398 actions LibXvidCore
399 {
400     cd `dirname $(>)` && CONTRIB=`pwd` &&
401     rm -rf xvidcore && (gzip -dc xvidcore.tar.gz | tar xf - ) &&
402     cd xvidcore && $(LIBXVIDCORE_PATCH)
403     cd build/generic/ && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) libxvidcore.a &&
404     cp ./=build/libxvidcore.a $CONTRIB/lib/ &&
405     cp ../../src/xvid.h $CONTRIB/include/ &&
406     $(STRIP) $CONTRIB/lib/libxvidcore.a
407 }
408 Wget        $(SUBDIR)/xvidcore.tar.gz   : $(SUBDIR)/version_xvidcore.txt ;
409 LibXvidCore $(SUBDIR)/lib/libxvidcore.a : $(SUBDIR)/xvidcore.tar.gz ;
410
411 # zlib
412 if $(OS) = CYGWIN
413 {
414     rule Zlib
415     {
416         Depends $(<) : $(>) ;
417         Depends lib  : $(<) ;
418     }
419     actions Zlib
420     {
421         cd `dirname $(>)` && CONTRIB=`pwd` &&
422         rm -rf zlib && (gzip -dc zlib.tar.gz | tar xf - ) &&
423         cd zlib && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache &&
424         $(MAKE) && $(MAKE) install && touch $CONTRIB/.contrib &&
425         $(STRIP) $CONTRIB/lib/libz.a
426     }
427     Wget  $(SUBDIR)/zlib.tar.gz : $(SUBDIR)/version_zlib.txt ;
428     Zlib  $(SUBDIR)/lib/libz.a  : $(SUBDIR)/zlib.tar.gz ;
429 }