OSDN Git Service

Updates x264 to revision 665 and applies Haali's adaptive quantizer patch, creating...
[handbrake-jp/handbrake-jp-git.git] / contrib / Jamfile
index 2ba2aa4..a1cd814 100644 (file)
@@ -4,13 +4,18 @@ SubDir TOP contrib ;
 # is installed for all other systems
 if $(OS) = MACOSX
 {
-    WGET = curl -o ;
+    WGET = curl -L -o ;
 }
 else
 {
     WGET = wget -O ;
 }
 
+if $(OS) = UNKNOWN
+{
+    OS = CYGWIN ;
+}
+
 # Wget rule: downloads $(<) from the link in $(>)
 rule Wget
 {
@@ -31,8 +36,9 @@ rule LibA52
 }
 actions LibA52
 {
+
     cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf a52dec && tar xzf a52dec.tar.gz && cd a52dec &&
+    rm -rf a52dec && tar xzf a52dec.tar.gz && cd a52dec && patch -p1 < ../patch-a52dec.patch
     ./configure --prefix=$CONTRIB && make && make install &&
     strip -S $CONTRIB/lib/liba52.a
 }
@@ -42,9 +48,16 @@ LibA52 $(SUBDIR)/lib/liba52.a  : $(SUBDIR)/a52dec.tar.gz ;
 # libavcodec
 rule LibAvCodec
 {
+    FFMPEG_PATCH = "patch -p1 < ../patch-ffmpeg.patch" ;
     if $(OS) = MACOSX && $(OSPLAT) = X86
     {
-       FFMPEG_OPTIONS = --disable-mmx ;
+       FFMPEG_OPTIONS  = --enable-memalign-hack ;
+     # This patch simply don't apply correctly so don't try to do it
+     #  FFMPEG_PATCH   += " && patch -p1 < ../patch-ffmpeg-macintel.patch" ;
+    }
+    else if $(OS) = CYGWIN
+    {
+        FFMPEG_PATCH += " && patch -p1 < ../patch-ffmpeg-cygwin.patch " ;
     }
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
@@ -52,10 +65,10 @@ rule LibAvCodec
 actions LibAvCodec
 {
     cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf ffmpeg && tar xzf ffmpeg.tar.gz && cd ffmpeg &&
-    ./configure --prefix=$CONTRIB $(FFMPEG_OPTIONS) --enable-gpl &&
-    make -C libavcodec && make -C libavutil &&
-    make -C libavcodec installlib && make -C libavutil installlib &&
+    rm -rf ffmpeg && tar xzf ffmpeg.tar.gz &&
+    cd ffmpeg && $(FFMPEG_PATCH) &&
+    ./configure --prefix=$CONTRIB $(FFMPEG_OPTIONS) --enable-gpl --disable-audio-beos --enable-shared --enable-static&&
+    make && make install &&
     strip -S $CONTRIB/lib/libavcodec.a
 }
 Wget       $(SUBDIR)/ffmpeg.tar.gz    : $(SUBDIR)/version_ffmpeg.txt ;
@@ -71,37 +84,79 @@ actions LibAvUtil
     strip -S $(<)
 }
 LibAvUtil $(SUBDIR)/lib/libavutil.a : $(SUBDIR)/lib/libavcodec.a ;
+LibAvUtil $(SUBDIR)/lib/libavformat.a : $(SUBDIR)/lib/libavcodec.a ;
+
+# CSS doesn't work on Cygwin/Windows as of now, so don't use it.
+if $(OS) != CYGWIN
+{
+    # libdvdcss
+    # We need libdvdcss.so for libdvdread's configure to work...
+    rule LibDvdCss
+    {
+        Depends $(<) : $(>) ;
+        Depends lib  : $(<) ;
+    }
+    actions LibDvdCss
+    {
+        cd `dirname $(>)` && CONTRIB=`pwd` &&
+            rm -rf libdvdcss && tar xzf libdvdcss.tar.gz && cd libdvdcss &&
+            ./configure --prefix=$CONTRIB && make && make install &&
+            strip -S $CONTRIB/lib/libdvdcss.a
+    }
+    Wget      $(SUBDIR)/libdvdcss.tar.gz : $(SUBDIR)/version_libdvdcss.txt ;
+    LibDvdCss $(SUBDIR)/lib/libdvdcss.a  : $(SUBDIR)/libdvdcss.tar.gz ;
+}
 
-# libdvdcss
-# We need libdvdcss.so for libdvdread's configure to work...
-rule LibDvdCss
+# libdca
+rule LibDCA
 {
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
 }
-actions LibDvdCss
+actions LibDCA
 {
     cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf libdvdcss && tar xzf libdvdcss.tar.gz && cd libdvdcss &&
-    ./configure --prefix=$CONTRIB && make && make install &&
-    strip -S $CONTRIB/lib/libdvdcss.a
-}
-Wget      $(SUBDIR)/libdvdcss.tar.gz : $(SUBDIR)/version_libdvdcss.txt ;
-LibDvdCss $(SUBDIR)/lib/libdvdcss.a  : $(SUBDIR)/libdvdcss.tar.gz ;
+    rm -rf libdca && tar xzf libdca.tar.gz && cd libdca && patch -p1 < ../patch-libdca.patch
+       ./configure && make &&
+       cp libdca/.libs/libdca.a $CONTRIB/lib &&
+       cp include/dca.h $CONTRIB/include &&
+       strip -S $CONTRIB/lib/libdca.a
+}
+Wget   $(SUBDIR)/libdca.tar.gz : $(SUBDIR)/version_libdca.txt ;
+LibDCA $(SUBDIR)/lib/libdca.a  : $(SUBDIR)/libdca.tar.gz ;
 
 # libdvdread
 rule LibDvdRead
 {
+    # Not needed anymore since Clee fixed the problem in dvd.c
+    # LIBDVDREAD_PATCH = "patch -p1 < ../patch-libdvdread.patch" ;
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
 }
-actions LibDvdRead
+if $(OS) != CYGWIN
 {
-    cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf libdvdread && tar xzf libdvdread.tar.gz && cd libdvdread &&
-    ./configure --prefix=$CONTRIB --disable-shared --with-libdvdcss=$CONTRIB &&
-    make && make install &&
-    strip -S $CONTRIB/lib/libdvdread.a
+    actions LibDvdRead
+    {
+        cd `dirname $(>)` && CONTRIB=`pwd` &&
+            rm -rf libdvdread && tar xzf libdvdread.tar.gz && cd libdvdread &&
+            # $(LIBDVDREAD_PATCH) &&
+            ./configure --prefix=$CONTRIB --disable-shared --with-libdvdcss=$CONTRIB &&
+            make && make install &&
+            strip -S $CONTRIB/lib/libdvdread.a
+    }
+}
+else {
+    # Cygwin/Windows doesn't use CSS as of now, so don't include it on the
+    # configure line.
+    actions LibDvdRead
+    {
+        cd `dirname $(>)` && CONTRIB=`pwd` &&
+            rm -rf libdvdread && tar xzf libdvdread.tar.gz && cd libdvdread &&
+            # $(LIBDVDREAD_PATCH) &&
+            ./configure --prefix=$CONTRIB --disable-shared &&
+            make && make install &&
+            strip -S $CONTRIB/lib/libdvdread.a
+    }
 }
 Wget       $(SUBDIR)/libdvdread.tar.gz : $(SUBDIR)/version_libdvdread.txt ;
 LibDvdRead $(SUBDIR)/lib/libdvdread.a  : $(SUBDIR)/libdvdread.tar.gz ;
@@ -116,7 +171,7 @@ actions LibFaac
 {
     cd `dirname $(>)` && CONTRIB=`pwd` &&
     rm -rf faac && tar xzf faac.tar.gz && cd faac &&
-    ./configure --prefix=$CONTRIB --disable-shared &&
+    ./configure --prefix=$CONTRIB --enable-shared --enable-static &&
     make && make install &&
     strip -S $CONTRIB/lib/libfaac.a
 }
@@ -146,16 +201,35 @@ rule LibMp4v2
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
 }
-actions LibMp4v2
+if $(OS) != CYGWIN
 {
-    cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf mpeg4ip && tar xzf mpeg4ip.tar.gz && cd mpeg4ip &&
-    ./bootstrap && make -C lib/mp4v2 libmp4v2.la &&
-    cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
-    cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
-      include/mpeg4ip_win32.h lib/mp4v2/mp4.h $CONTRIB/include &&
-    strip -S $CONTRIB/lib/libmp4v2.a
+       actions LibMp4v2
+       {
+       cd `dirname $(>)` && CONTRIB=`pwd` &&
+       rm -rf mpeg4ip && tar xzf mpeg4ip.tar.gz && cd mpeg4ip &&
+       patch -p1 < ../patch-mpeg4ip.patch &&
+       ./bootstrap  --disable-mp3lame --disable-faac --disable-x264 --disable-server --disable-player && make -C lib/mp4v2 libmp4v2.la &&
+       cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
+       cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
+       include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include &&
+       strip -S $CONTRIB/lib/libmp4v2.a
+       }
+}
+else
+{
+       actions LibMp4v2
+       {
+       cd `dirname $(>)` && CONTRIB=`pwd` &&
+       rm -rf mpeg4ip && tar xzf mpeg4ip.tar.gz && cd mpeg4ip &&
+       patch -p1 < ../patch-mpeg4ip.patch &&
+       patch -p1 < ../patch_mpeg4ip_cygwin.patch && ./bootstrap && make -C lib/mp4v2 libmp4v2.la &&
+       cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib &&
+       cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \
+       include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include &&
+       strip -S $CONTRIB/lib/libmp4v2.a
+       }
 }
+
 Wget     $(SUBDIR)/mpeg4ip.tar.gz : $(SUBDIR)/version_mpeg4ip.txt ;
 LibMp4v2 $(SUBDIR)/lib/libmp4v2.a : $(SUBDIR)/mpeg4ip.tar.gz ;
 
@@ -241,13 +315,27 @@ LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ;
 # libx264
 rule LibX264
 {
+    LIBX264_PATCH = "" ;
+    if $(OS) = MACOSX && $(OSPLAT) = X86
+    {
+        LIBX264_PATCH = " patch -p1 < ../patch-x264-macintel.patch && " ;
+    }
+    else if $(OS) = CYGWIN
+    {
+        LIBX264_PATCH = " patch -p1 < ../patch-x264-cygwin.patch && " ;
+    }
+#    else if $(OS) = LINUX
+#    {
+#        LIBX264_PATCH = " patch -p1 < ../patch-x264-linux.patch && " ;
+#    }
+    LIBX264_AQ_PATCH = " patch -p0 < ../patch-x264-aq.patch && " ;
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
 }
 actions LibX264
 {
     cd `dirname $(>)` && CONTRIB=`pwd` &&
-    rm -rf x264 && tar xzf x264.tar.gz && cd x264 &&
+    rm -rf x264 && tar xzf x264.tar.gz && cd x264 && $(LIBX264_PATCH) $(LIBX264_AQ_PATCH)
     ./configure --prefix=$CONTRIB --enable-pthread && make &&
     make install &&
     strip -S $CONTRIB/lib/libx264.a
@@ -258,9 +346,14 @@ LibX264 $(SUBDIR)/lib/libx264.a : $(SUBDIR)/x264.tar.gz ;
 # libxvidcore
 rule LibXvidCore
 {
-    if $(OS) = MACOSX && $(OSPLAT) = X86
+    LIBXVIDCORE_PATCH = "" ;
+    if $(OS) = MACOSX
     {
-       XVID_OPTIONS = --disable-assembly ;
+        LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-macosx.patch && " ;
+    }
+    else if $(OS) = CYGWIN
+    {
+        LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-cygwin.patch && " ;
     }
     Depends $(<) : $(>) ;
     Depends lib  : $(<) ;
@@ -269,11 +362,47 @@ actions LibXvidCore
 {
     cd `dirname $(>)` && CONTRIB=`pwd` &&
     rm -rf xvidcore && tar xzf xvidcore.tar.gz &&
-    cd xvidcore/build/generic/ && ./configure $(XVID_OPTIONS) &&
-    make libxvidcore.a &&
+    cd xvidcore && $(LIBXVIDCORE_PATCH)
+    cd build/generic/ && ./configure && make libxvidcore.a &&
     cp ./=build/libxvidcore.a $CONTRIB/lib/ &&
     cp ../../src/xvid.h $CONTRIB/include/ &&
     strip -S $CONTRIB/lib/libxvidcore.a
 }
 Wget        $(SUBDIR)/xvidcore.tar.gz   : $(SUBDIR)/version_xvidcore.txt ;
 LibXvidCore $(SUBDIR)/lib/libxvidcore.a : $(SUBDIR)/xvidcore.tar.gz ;
+
+# zlib
+if $(OS) = CYGWIN
+{
+rule Zlib
+{
+    Depends $(<) : $(>) ;
+    Depends lib  : $(<) ;
+}
+actions Zlib
+{
+    cd `dirname $(>)` && CONTRIB=`pwd` &&
+    rm -rf zlib && tar xzf zlib.tar.gz &&
+    cd zlib && 
+    ./configure --prefix=$CONTRIB && make && make install && touch $CONTRIB/.contrib
+    strip -S $CONTRIB/lib/libz.a
+}
+Wget        $(SUBDIR)/zlib.tar.gz   : $(SUBDIR)/version_zlib.txt ;
+Zlib $(SUBDIR)/lib/libz.a : $(SUBDIR)/zlib.tar.gz ;
+}
+
+rule LibMkv
+{
+    Depends $(<) : $(>) ;
+    Depends lib  : $(<) ;
+}
+actions LibMkv
+{
+    cd `dirname $(>)` && CONTRIB=`pwd` &&
+    rm -rf libmkv && tar xzf libmkv.tar.gz && cd libmkv &&
+    ./configure --disable-shared --enable-static --prefix=$CONTRIB &&
+    make && make install &&
+    strip -S $CONTRIB/lib/libmkv.a
+}
+Wget    $(SUBDIR)/libmkv.tar.gz : $(SUBDIR)/version_libmkv.txt ;
+LibMkv  $(SUBDIR)/lib/libmkv.a  : $(SUBDIR)/libmkv.tar.gz ;