SubDir TOP contrib ;

# Use curl on Mac OS X since it's always installed, and assume wget
# is installed for all other systems
if $(OS) = MACOSX
{
    WGET = curl -o ;
}
else
{
    WGET = wget -O ;
}

# Wget rule: downloads $(<) from the link in $(>)
rule Wget
{
    Depends $(<) : $(>) ;
}
actions Wget
{
    $(RM) $(<) &&
    $(WGET) $(<) `cat $(>)` &&
    ( touch $(<) || true )
}

# liba52
rule LibA52
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibA52
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf a52dec && tar xzf a52dec.tar.gz && cd a52dec &&
    ./configure --prefix=$CONTRIB && make && make install &&
    strip -S $CONTRIB/lib/liba52.a
}
Wget   $(SUBDIR)/a52dec.tar.gz : $(SUBDIR)/version_a52dec.txt ;
LibA52 $(SUBDIR)/lib/liba52.a  : $(SUBDIR)/a52dec.tar.gz ;

# libavcodec
rule LibAvCodec
{
    if $(OS) = MACOSX && $(OSPLAT) = X86
    {
       FFMPEG_OPTIONS = --enable-memalign-hack ;
       FFMPEG_PATCH   = "patch -p1 < ../ffmpeg.patch" ;
    }
    else
    {
        FFMPEG_PATCH = true ;
    }
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibAvCodec
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf ffmpeg && tar xzf ffmpeg.tar.gz && cd ffmpeg &&
    $(FFMPEG_PATCH) &&
    ./configure --prefix=$CONTRIB $(FFMPEG_OPTIONS) --enable-gpl &&
    make -C libavcodec && make -C libavutil &&
    make -C libavcodec installlib && make -C libavutil installlib &&
    strip -S $CONTRIB/lib/libavcodec.a
}
Wget       $(SUBDIR)/ffmpeg.tar.gz    : $(SUBDIR)/version_ffmpeg.txt ;
LibAvCodec $(SUBDIR)/lib/libavcodec.a : $(SUBDIR)/ffmpeg.tar.gz ;

rule LibAvUtil
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibAvUtil
{
    strip -S $(<)
}
LibAvUtil $(SUBDIR)/lib/libavutil.a : $(SUBDIR)/lib/libavcodec.a ;

# 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 ;

# libdvdread
rule LibDvdRead
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibDvdRead
{
    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
}
Wget       $(SUBDIR)/libdvdread.tar.gz : $(SUBDIR)/version_libdvdread.txt ;
LibDvdRead $(SUBDIR)/lib/libdvdread.a  : $(SUBDIR)/libdvdread.tar.gz ;

# libfaac
rule LibFaac
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibFaac
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf faac && tar xzf faac.tar.gz && cd faac &&
    ./configure --prefix=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libfaac.a
}
Wget    $(SUBDIR)/faac.tar.gz   : $(SUBDIR)/version_faac.txt ;
LibFaac $(SUBDIR)/lib/libfaac.a : $(SUBDIR)/faac.tar.gz ;

# libmp3lame
rule LibMp3Lame
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibMp3Lame
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf lame && tar xzf lame.tar.gz && cd lame &&
    ./configure --prefix=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libmp3lame.a
}
Wget       $(SUBDIR)/lame.tar.gz      : $(SUBDIR)/version_lame.txt ;
LibMp3Lame $(SUBDIR)/lib/libmp3lame.a : $(SUBDIR)/lame.tar.gz ;

# libmp4v2
rule LibMp4v2
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibMp4v2
{
    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
}
Wget     $(SUBDIR)/mpeg4ip.tar.gz : $(SUBDIR)/version_mpeg4ip.txt ;
LibMp4v2 $(SUBDIR)/lib/libmp4v2.a : $(SUBDIR)/mpeg4ip.tar.gz ;

# libmpeg2
rule LibMpeg2
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibMpeg2
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf mpeg2dec && tar xzf mpeg2dec.tar.gz && cd mpeg2dec &&
    ./configure --prefix=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libmpeg2.a
}
Wget     $(SUBDIR)/mpeg2dec.tar.gz : $(SUBDIR)/version_mpeg2dec.txt ;
LibMpeg2 $(SUBDIR)/lib/libmpeg2.a  : $(SUBDIR)/mpeg2dec.tar.gz ;

# libogg
rule LibOgg
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibOgg
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf libogg && tar xzf libogg.tar.gz && cd libogg &&
    ./configure --prefix=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libogg.a
}
Wget   $(SUBDIR)/libogg.tar.gz : $(SUBDIR)/version_libogg.txt ;
LibOgg $(SUBDIR)/lib/libogg.a  : $(SUBDIR)/libogg.tar.gz ;

# libsamplerate
rule LibSampleRate
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibSampleRate
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf libsamplerate && tar xzf libsamplerate.tar.gz && cd libsamplerate &&
    ./configure --prefix=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libsamplerate.a
}
Wget          $(SUBDIR)/libsamplerate.tar.gz : $(SUBDIR)/version_libsamplerate.txt ;
LibSampleRate $(SUBDIR)/lib/libsamplerate.a  : $(SUBDIR)/libsamplerate.tar.gz ;

# libvorbis
rule LibVorbis
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibVorbis
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf libvorbis && tar xzf libvorbis.tar.gz && cd libvorbis &&
    ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --disable-shared &&
    make && make install &&
    strip -S $CONTRIB/lib/libvorbis.a
}
Wget      $(SUBDIR)/libvorbis.tar.gz : $(SUBDIR)/version_libvorbis.txt ;
LibVorbis $(SUBDIR)/lib/libvorbis.a  : $(SUBDIR)/libvorbis.tar.gz ;

rule LibVorbisEnc
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibVorbisEnc
{
    strip -S $(<)
}
LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ;

# libx264
rule LibX264
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibX264
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf x264 && tar xzf x264.tar.gz && cd x264 &&
    ./configure --prefix=$CONTRIB --enable-pthread && make &&
    make install &&
    strip -S $CONTRIB/lib/libx264.a
}
Wget    $(SUBDIR)/x264.tar.gz   : $(SUBDIR)/version_x264.txt ;
LibX264 $(SUBDIR)/lib/libx264.a : $(SUBDIR)/x264.tar.gz ;

# libxvidcore
rule LibXvidCore
{
    Depends $(<) : $(>) ;
    Depends lib  : $(<) ;
}
actions LibXvidCore
{
    cd `dirname $(>)` && CONTRIB=`pwd` &&
    rm -rf xvidcore && tar xzf xvidcore.tar.gz &&
    cd xvidcore && patch -p1 < ../xvidcore.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 ;
