OSDN Git Service

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