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 ; } if $(OS) = SOLARIS { PATCH = gpatch ; STRIP = echo ; } else { PATCH = patch ; STRIP = strip -S ; } # 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 && (gzip -dc a52dec.tar.gz | tar xf -) && cd a52dec && $(PATCH) -p1 < ../patch-a52dec.patch && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install && $(STRIP) $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) -p0 < ../patch-ffmpeg.patch" ; if $(OS) = CYGWIN { FFMPEG_PATCH += " && $(PATCH) -p1 < ../patch-ffmpeg-cygwin.patch " ; } else if $(OS) = SOLARIS { FFMPEG_PATCH += " && $(PATCH) -p1 < ../patch-ffmpeg-solaris.patch " ; FFMPEG_OPTIONS = " --disable-mmx --extra-cflags=-fpic " ; } Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibAvCodec { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf ffmpeg && (gzip -dc ffmpeg.tar.gz | tar xf -) && cd ffmpeg && $(FFMPEG_PATCH) && ./configure --prefix=$CONTRIB --enable-gpl --enable-pthreads --enable-swscaler --disable-audio-beos --disable-shared --enable-static \ --disable-decoders --enable-decoder=mp2 --disable-parsers --enable-parser=mpegaudio \ --disable-encoders --enable-encoder=mpeg4 --enable-encoder=ac3 --enable-encoder=snow \ --disable-muxers --enable-muxer=ipod --disable-demuxers --disable-protocols --disable-bsfs && $(MAKE) && $(MAKE) install && $(STRIP) $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) $(<) } LibAvUtil $(SUBDIR)/lib/libavutil.a : $(SUBDIR)/lib/libavcodec.a ; LibAvUtil $(SUBDIR)/lib/libavformat.a : $(SUBDIR)/lib/libavcodec.a ; LibAvUtil $(SUBDIR)/lib/libswscale.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 && (gzip -dc libdvdcss.tar.gz | tar xf - ) && cd libdvdcss && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc libdca.tar.gz | tar xf - ) && cd libdca && $(PATCH) -p1 < ../patch-libdca.patch && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install && $(STRIP) $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 { Depends $(<) : $(>) ; Depends lib : $(<) ; } if $(OS) != CYGWIN { actions LibDvdRead { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf libdvdread && (gzip -dc libdvdread.tar.gz | tar xf - ) && cd libdvdread && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --with-libdvdcss=$CONTRIB && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc libdvdread.tar.gz | tar xf - ) && cd libdvdread && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc faac.tar.gz | tar xf - ) && cd faac && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --enable-static && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc lame.tar.gz | tar xf - ) && cd lame && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared && $(MAKE) && $(MAKE) install && $(STRIP) $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 { LIBMP4V2_PATCH = "" ; if $(OS) = CYGWIN { LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch_mpeg4ip_cygwin.patch && " ; } LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip.patch && " ; LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip-nasm-2.00-configure.patch && " ; LIBMP4V2_PATCH += "$(PATCH) -p1 < ../patch-mpeg4ip-ac3.patch && " ; Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibMp4v2 { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf mpeg4ip && (gzip -dc mpeg4ip.tar.gz | tar xf - ) && cd mpeg4ip && $(LIBMP4V2_PATCH) ./bootstrap --cache-file=$CONTRIB/config.cache --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) $CONTRIB/lib/libmp4v2.a } Wget $(SUBDIR)/mpeg4ip.tar.gz : $(SUBDIR)/version_mpeg4ip.txt ; LibMp4v2 $(SUBDIR)/lib/libmp4v2.a : $(SUBDIR)/mpeg4ip.tar.gz ; rule LibMkv { Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibMkv { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf libmkv && (gzip -dc libmkv.tar.gz | tar xf - ) && cd libmkv && ./configure --disable-shared --enable-static --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) && $(MAKE) install && $(STRIP) $CONTRIB/lib/libmkv.a } Wget $(SUBDIR)/libmkv.tar.gz : $(SUBDIR)/version_libmkv.txt ; LibMkv $(SUBDIR)/lib/libmkv.a : $(SUBDIR)/libmkv.tar.gz ; # libmpeg2 rule LibMpeg2 { Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibMpeg2 { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf mpeg2dec && (gzip -dc mpeg2dec.tar.gz | tar xf - ) && cd mpeg2dec && $(PATCH) -p1 < ../patch-libmpeg2.patch && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared --disable-sdl && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc libogg.tar.gz | tar xf - ) && cd libogg && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc libsamplerate.tar.gz | tar xf - ) && cd libsamplerate && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared && $(MAKE) && $(MAKE) install && $(STRIP) $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 && (gzip -dc libvorbis.tar.gz | tar xf - ) && cd libvorbis && ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --cache-file=$CONTRIB/config.cache --disable-shared && $(MAKE) && $(MAKE) install && $(STRIP) $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) $(<) } LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ; # libx264 rule LibX264 { LIBX264_PATCH = "" ; if $(OS) = CYGWIN { LIBX264_PATCH += "$(PATCH) -p1 < ../patch-x264-cygwin.patch && " ; } else if $(OS) = SOLARIS { LIBX264_PATCH += " $(PATCH) -p1 < ../patch-x264-solaris.patch && " ; } # AQ is temporarily disabled LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-aq.patch && " ; LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-idr.patch && " ; LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-vbv-1pass.patch && " ; LIBX264_PATCH += "$(PATCH) -p0 < ../patch-x264-vbv-2pass.patch && " ; Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibX264 { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf x264 && (gzip -dc x264.tar.gz | tar xf - ) && cd x264 && $(LIBX264_PATCH) bash ./configure --prefix=$CONTRIB --enable-pthread && $(MAKE) libx264.a && cp libx264.a $CONTRIB/lib/ && cp x264.h $CONTRIB/include/ && $(STRIP) $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 && " ; } LIBXVIDCORE_PATCH += "$(PATCH) -p1 < ../patch-xvidcore-nasm-2.00-configure.patch && " ; LIBXVIDCORE_PATCH += "$(PATCH) -p1 < ../patch-xvidcore-fdct.patch && " ; Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibXvidCore { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf xvidcore && (gzip -dc xvidcore.tar.gz | tar xf - ) && cd xvidcore && $(LIBXVIDCORE_PATCH) cd build/generic/ && ./configure --prefix=$CONTRIB --cache-file=$CONTRIB/config.cache && $(MAKE) libxvidcore.a && cp ./=build/libxvidcore.a $CONTRIB/lib/ && cp ../../src/xvid.h $CONTRIB/include/ && $(STRIP) $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 && (gzip -dc zlib.tar.gz | tar xf - ) && cd zlib && ./configure --prefix=$CONTRIB && $(MAKE) && $(MAKE) install && touch $CONTRIB/.contrib && $(STRIP) $CONTRIB/lib/libz.a } Wget $(SUBDIR)/zlib.tar.gz : $(SUBDIR)/version_zlib.txt ; Zlib $(SUBDIR)/lib/libz.a : $(SUBDIR)/zlib.tar.gz ; }