Browse Source

CI: Build more features into FFMPEG deps

Colin Edwards 8 years ago
parent
commit
1310e0404f
3 changed files with 194 additions and 2 deletions
  1. 56 2
      CI/util/build-package-deps-osx.sh
  2. 69 0
      CI/util/win32.sh
  3. 69 0
      CI/util/win64.sh

+ 56 - 2
CI/util/build-package-deps-osx.sh

@@ -29,12 +29,63 @@ export MACOSX_DEPLOYMENT_TARGET=10.9
 # If you need an olders SDK and Xcode won't give it to you
 # https://github.com/phracker/MacOSX-SDKs
 
+# libopus
+curl -L -O http://downloads.xiph.org/releases/opus/opus-1.1.3.tar.gz
+tar -xf opus-1.1.3.tar.gz
+cd ./opus-1.1.3
+mkdir build
+cd ./build
+../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
+make -j 12
+make install
+
+cd $WORK_DIR
+
+# libogg
+curl -L -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
+tar -xf libogg-1.3.2.tar.gz
+cd ./libogg-1.3.2
+mkdir build
+cd ./build
+../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
+make -j 12
+make install
+
+cd $WORK_DIR
+
+# libvorbis
+curl -L -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
+tar -xf libvorbis-1.3.5.tar.gz
+cd ./libvorbis-1.3.5
+mkdir build
+cd ./build
+../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
+make -j 12
+make install
+
+cd $WORK_DIR
+
+# libvpx
+curl -L -O http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.0.tar.bz2
+tar -xf libvpx-1.6.0.tar.bz2
+cd ./libvpx-1.6.0
+mkdir build
+cd ./build
+../configure --disable-shared --libdir="/tmp/obsdeps/bin"
+make -j 12
+make install
+
+cd $WORK_DIR
+
 # x264
 git clone git://git.videolan.org/x264.git
 cd ./x264
 mkdir build
 cd ./build
-../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --libdir="/tmp/obsdeps/bin"
+../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-static --prefix="/tmp/obsdeps"
+make -j 12
+make install
+../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --libdir="/tmp/obsdeps/bin" --prefix="/tmp/obsdeps"
 make -j 12
 ln -f -s libx264.*.dylib libx264.dylib
 find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
@@ -57,13 +108,16 @@ rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
 
 cd $WORK_DIR
 
+export LDFLAGS="-L/tmp/obsdeps/lib"
+export CFLAGS="-I/tmp/obsdeps/include"
+
 # FFMPEG
 curl -L -O https://github.com/FFmpeg/FFmpeg/archive/n3.2.2.zip
 unzip ./n3.2.2.zip
 cd ./FFmpeg-n3.2.2
 mkdir build
 cd ./build
-../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin"
+../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx
 make -j 12
 find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
 rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/

+ 69 - 0
CI/util/win32.sh

@@ -0,0 +1,69 @@
+#/bin/bash
+
+cd x264
+make clean
+LDFLAGS="-static-libgcc" ./configure --enable-shared --enable-win32thread --disable-avs --disable-ffms --disable-gpac --disable-interlaced --disable-lavf --cross-prefix=i686-w64-mingw32- --host=i686-pc-mingw32 --prefix="/home/jim/packages/win32"
+make -j6 fprofiled VIDS="CITY_704x576_60_orig_01.yuv"
+make install
+i686-w64-mingw32-dlltool -z /home/jim/packages/win32/bin/x264.orig.def --export-all-symbols /home/jim/packages/win32/bin/libx264-148.dll
+grep "EXPORTS\|x264" /home/jim/packages/win32/bin/x264.orig.def > /home/jim/packages/win32/bin/x264.def
+rm -f /home/jim/packages/win32/bin/x264.org.def
+sed -i -e "/\\t.*DATA/d" -e "/\\t\".*/d" -e "s/\s@.*//" /home/jim/packages/win32/bin/x264.def
+i686-w64-mingw32-dlltool -m i386 -d /home/jim/packages/win32/bin/x264.def -l /home/jim/packages/win32/bin/x264.lib -D /home/jim/win32/packages/bin/libx264-148.dll
+cd ..
+
+cd opus
+make clean
+LDFLAGS="-static-libgcc" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
+make -j6
+make install
+cd ..
+
+cd zlib/build32
+make clean
+cmake .. -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_INSTALL_PREFIX=/home/jim/packages/win32 -DINSTALL_PKGCONFIG_DIR=/home/jim/packages/win32/lib/pkgconfig -DCMAKE_RC_COMPILER=i686-w64-mingw32-windres -DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc"
+make -j6
+make install
+mv ../../win32/lib/libzlib.dll.a ../../win32/lib/libz.dll.a
+mv ../../win32/lib/libzlibstatic.a ../../win32/lib/libz.a
+cp ../win32/zlib.def /home/jim/packages/win32/bin
+i686-w64-mingw32-dlltool -m i386 -d ../win32/zlib.def -l /home/jim/packages/win32/bin/zlib.lib -D /home/jim/win32/packages/bin/zlib.dll
+cd ../..
+
+cd libpng
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
+make -j6
+make install
+cd ..
+
+cd libogg
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
+make -j6
+make install
+cd ..
+
+cd libvorbis
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared --with-ogg="/home/jim/packages/win32"
+make -j6
+make install
+cd ..
+
+cd libvpxbuild
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" CROSS=i686-w64-mingw32- LDFLAGS="-static-libgcc" ../libvpx/configure --prefix=/home/jim/packages/win32 --enable-vp8 --enable-vp9 --disable-docs --disable-examples --enable-shared --disable-static --enable-runtime-cpu-detect --enable-realtime-only --disable-install-bins --disable-install-docs --disable-unit-tests --target=x86-win32-gcc
+make -j6
+make install
+i686-w64-mingw32-dlltool -m i386 -d libvpx.def -l /home/jim/packages/win32/bin/vpx.lib -D /home/jim/win32/packages/bin/libvpx-1.dll
+cd ..
+
+cd ffmpeg
+make clean
+cp /media/sf_linux/nvEncodeAPI.h /home/jim/packages/win32/include
+PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CFLAGS="-I/home/jim/packages/win32/include" ./configure --enable-memalign-hack --enable-gpl --disable-programs --disable-doc --arch=x86 --enable-shared --enable-nvenc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-debug --cross-prefix=i686-w64-mingw32- --target-os=mingw32 --pkg-config=pkg-config --prefix="/home/jim/packages/win32" --disable-postproc
+read -n1 -r -p "Press any key to continue building FFmpeg..." key
+make -j6
+make install
+cd ..

+ 69 - 0
CI/util/win64.sh

@@ -0,0 +1,69 @@
+#/bin/bash
+
+cd x264
+make clean
+LDFLAGS="-static-libgcc" ./configure --enable-shared --enable-win32thread --disable-avs --disable-ffms --disable-gpac --disable-interlaced --disable-lavf --cross-prefix=x86_64-w64-mingw32- --host=x86_64-pc-mingw32 --prefix="/home/jim/packages/win64"
+make -j6 fprofiled VIDS="CITY_704x576_60_orig_01.yuv"
+make install
+x86_64-w64-mingw32-dlltool -z /home/jim/packages/win64/bin/x264.orig.def --export-all-symbols /home/jim/packages/win64/bin/libx264-148.dll
+grep "EXPORTS\|x264" /home/jim/packages/win64/bin/x264.orig.def > /home/jim/packages/win64/bin/x264.def
+rm -f /home/jim/packages/win64/bin/x264.org.def
+sed -i -e "/\\t.*DATA/d" -e "/\\t\".*/d" -e "s/\s@.*//" /home/jim/packages/win64/bin/x264.def
+x86_64-w64-mingw32-dlltool -m i386:x86-64 -d /home/jim/packages/win64/bin/x264.def -l /home/jim/packages/win64/bin/x264.lib -D /home/jim/win64/packages/bin/libx264-148.dll
+cd ..
+
+cd opus
+make clean
+LDFLAGS="-static-libgcc" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
+make -j6
+make install
+cd ..
+
+cd zlib/build64
+make clean
+cmake .. -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_INSTALL_PREFIX=/home/jim/packages/win64 -DCMAKE_RC_COMPILER=x86_64-w64-mingw32-windres -DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc"
+make -j6
+make install
+mv ../../win64/lib/libzlib.dll.a ../../win64/lib/libz.dll.a
+mv ../../win64/lib/libzlibstatic.a ../../win64/lib/libz.a
+cp ../win64/zlib.def /home/jim/packages/win64/bin
+x86_64-w64-mingw32-dlltool -m i386:x86-64 -d ../win32/zlib.def -l /home/jim/packages/win64/bin/zlib.lib -D /home/jim/win64/packages/bin/zlib.dll
+cd ../..
+
+cd libpng
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
+make -j6
+make install
+cd ..
+
+cd libogg
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
+make -j6
+make install
+cd ..
+
+cd libvorbis
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared --with-ogg="/home/jim/packages/win64"
+make -j6
+make install
+cd ..
+
+cd libvpxbuild
+make clean
+PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" CROSS=x86_64-w64-mingw32- LDFLAGS="-static-libgcc" ../libvpx/configure --prefix=/home/jim/packages/win64 --enable-vp8 --enable-vp9 --disable-docs --disable-examples --enable-shared --disable-static --enable-runtime-cpu-detect --enable-realtime-only --disable-install-bins --disable-install-docs --disable-unit-tests --target=x86_64-win64-gcc
+make -j6
+make install
+x86_64-w64-mingw32-dlltool -m i386:x86-64 -d libvpx.def -l /home/jim/packages/win64/bin/vpx.lib -D /home/jim/win64/packages/bin/libvpx-1.dll
+cd ..
+
+cd ffmpeg
+make clean
+cp /media/sf_linux/nvEncodeAPI.h /home/jim/packages/win64/include
+PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure --enable-memalign-hack --enable-gpl --disable-doc --arch=x86_64 --enable-shared --enable-nvenc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-debug --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32 --pkg-config=pkg-config --prefix="/home/jim/packages/win64" --disable-postproc
+read -n1 -r -p "Press any key to continue building FFmpeg..." key
+make -j6
+make install
+cd ..