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 -L -o ; } else { WGET = wget -O ; } if $(OS) = UNKNOWN { OS = CYGWIN ; } # 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 && patch -p1 < ../patch-a52dec.patch ./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 { FFMPEG_PATCH = "patch -p1 < ../patch-ffmpeg.patch" ; if $(OS) = MACOSX && $(OSPLAT) = X86 { 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 : $(<) ; } 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 --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 ; 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 ; 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 ; } # libdca rule LibDCA { Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibDCA { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf libdca && tar xzf libdca.tar.gz && cd libdca && patch -p1 < ../patch-libdca.patch ./bootstrap && ./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 : $(<) ; } if $(OS) != CYGWIN { 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 ; # 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 --enable-shared --enable-static && 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 : $(<) ; } if $(OS) != CYGWIN { 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 ; # 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 { 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 && " ; } Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibX264 { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf x264 && tar xzf x264.tar.gz && cd x264 && $(LIBX264_PATCH) ./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 { LIBXVIDCORE_PATCH = "" ; if $(OS) = MACOSX { LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-macosx.patch && " ; } else if $(OS) = CYGWIN { LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-cygwin.patch && " ; } Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibXvidCore { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf xvidcore && tar xzf xvidcore.tar.gz && 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 ; }