/////////////// /// Preface /////////////// # mpv can be cross-compiled for either 32-bit or 64-bit Windows from a Linux # host by using MinGW-w64. MinGW-w64 is available from # http://mingw-w64.sourceforge.net. ////////////////////////////////////// /// Advanced (manual) instructions ////////////////////////////////////// # This guide was written under Ubuntu (starting with 12.10), but realistically, # any Debian-based system should work as far as the apt commands go, and/or any # arbitrary Linux distribution could probably be used on the pure compilation # stuffs. # This guide assumes that you're running a 64-bit version of Ubuntu, and that # the installed cross environment is multilib-enabled. # Make sure you have a list of other necessary build system and source download # components. sudo apt-get install build-essential gcc-multilib g++-multilib checkinstall \ nasm yasm cvs git gperf subversion mercurial automake* autoconf* libtool* m4 \ bison flex p7zip-full lzip texinfo help2man tofrodos texi2html docutils-common \ cmake pkgconf bzr autopoint meson ninja-build gettext binfmt-support ruby \ doxygen gtk-doc-tools zlib1g-dev python-is-python3 python3-distutils # Any time \ is at the end of a line, it means the command spans multiple lines. # Make sure to copy the entire command. To make this easier to see, such # commands have been indented. # Wine is helpful for testing binaries while still under Ubuntu, and for more # rigorously making the compilation process assume it's being run on Windows. # The preferred way to handle this is by installing from the official PPA, as # Ubuntu 20.10 (and presumably going forward) seems to have issues surrounding # a unified Wine32/Wine64 environment, and this will screw up trying to build # 32-bit software on a 64-bit OS. sudo dpkg --add-architecture i386 && \ sudo mkdir -pm755 /etc/apt/keyrings && \ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key && \ sudo wget -NP /etc/apt/sources.list.d https://dl.winehq.org/wine-builds/ubuntu/dists/lunar/winehq-lunar.sources && \ sudo apt-get update && \ sudo apt-get install --install-recommends winehq-devel wine-binfmt && \ sudo update-binfmts --import wine # You'll notice that there are certain cpu optimization flags used by the # majority of steps in this guide (core2 for 64-bit, or pentium3 for 32-bit). # These are simply due to what I feel are respectable baselines for each, so # feel free to either omit them, or to use ones that match your setup. For the # list of CPU types and SIMD flags, consult GCC's CPU optimization info at: # http://gcc.gnu.org/onlinedocs/gcc/x86-Options.html ////////////////////////////////// /// MinGW-w64/GCC installation ////////////////////////////////// # The first step to cross-compiling is to actually have a cross-compilation # environment. Earlier versions of this guide used Zeranoe's build script as # the method to generate this initial toolchain, but in the interest of # flexibility I've opted to go with manually building these components as well. # The instructions are based on what Zeranoe's build script used to do, as we're # assuming the user will install this toolchain to the system as a replacement # or alternative to the repository version. # Any of the make steps can be executed in parallel by specifying the # --jobs/-j parameter with the number of cores your CPU has. This guide # makes this automatic by using -j$(nproc), which will detect the number # of cores and use a corresponding number of jobs. This is only relevant # for make, since ninja uses all cores by default. # First, we need a staging area, so that all the packages don't clutter up your # home directory: mkdir ~/mingw-packages # Additionally, all of these will be getting installed to non-system areas # initially, since most of them actually don't get installed and are only needed # during the build process, and the others need to be in a correct directory # hierarchy before being installed. +++++++++++++++++++++++++++++++++++++++++++++++++++ + Building multilib cross-compilation environment +++++++++++++++++++++++++++++++++++++++++++++++++++ Dependency: Binutils ==================== cd ~/mingw-packages && \ # binutils-2.40 has problems with linking to an import library in MinGW, like # the way AviSynth+'s ImageSeq links to a provided copy of DevIL.lib. The fix # for this is in the git repository for binutils, presumably to be included in # 2.41 # binutils from git now requires a new enough version of MPFR that Ubuntu 23.04 doesn't # ship the correct headers out of the box, but the libmpfr-dev package provides it git clone https://sourceware.org/git/binutils-gdb.git && \ cd binutils-gdb wget https://ftp.gnu.org/gnu/binutils/binutils-2.40.tar.xz -O - | tar -xJvf - && \ cd binutils-2.40 && \ CPPFLAGS="-march=native" ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64 \ --disable-shared --enable-static --disable-nls --enable-multilib \ --enable-targets=x86_64-w64-mingw32,i686-w64-mingw32 \ --target=x86_64-w64-mingw32 --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64 \ --datarootdir=$HOME/mingw-build/mingw-w64-x86_64/share/gdb-mingw && \ make -j$(nproc) && \ make install Dependency: MinGW-w64 headers ============================= # Setting --enable-secure-api disables support for Windows XP throughout the cross # environment. This guide won't explicitly support XP in the build steps anymore, # but those places where XP support can be regained with a configuration option # will be noted. cd ~/mingw-packages && \ wget https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v10.0.0.tar.bz2 -O - | tar -xjvf - && \ cd mingw-w64-v10.0.0/mingw-w64-headers && \ CPPFLAGS="-march=core2" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --enable-sdk=all --enable-secure-api --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install && \ cd $HOME/mingw-build/mingw-w64-x86_64 && \ ln -s x86_64-w64-mingw32 mingw Dependency: GMP =============== cd ~/mingw-packages && \ wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz -O - | tar -xJvf - && \ cd gmp-6.2.1 && \ CPPFLAGS="-march=native -fexceptions" \ ./configure --prefix=$HOME/mingw-packages/gmp-6.2.1-x86_64 --enable-fat \ --disable-shared --enable-static --enable-cxx --enable-silent-rules && \ make -j$(nproc) && \ make install Dependency: MPFR ================ cd ~/mingw-packages && \ wget http://www.mpfr.org/mpfr-current/mpfr-4.2.0.tar.xz -O - | tar -xJvf - && \ cd mpfr-4.2.0 && \ wget http://www.mpfr.org/mpfr-4.2.0/allpatches && \ patch -N -Z -p1 < allpatches && \ CPPFLAGS="-march=native" \ ./configure --prefix=$HOME/mingw-packages/mpfr-4.1.1-x86_64 --disable-shared \ --enable-static --with-gmp=$HOME/mingw-packages/gmp-6.2.1-x86_64 \ --enable-silent-rules && \ make -j$(nproc) && \ make install Dependency: MPC =============== cd ~/mingw-packages && \ wget https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz -O - | tar -xzvf - && \ cd mpc-1.3.1 && \ CPPFLAGS="-march=native" \ ./configure --prefix=$HOME/mingw-packages/mpc-1.3.1-x86_64 --disable-shared \ --enable-static --with-gmp=$HOME/mingw-packages/gmp-6.2.1-x86_64 \ --with-mpfr=$HOME/mingw-packages/mpfr-4.1.1-x86_64 --enable-silent-rules && \ make -j$(nproc) && \ make install Dependency: ISL =============== # -march cannot be set correctly because configure # overrides it and selects 'pentiumpro' for some reason. cd ~/mingw-packages && \ wget https://libisl.sourceforge.io/isl-0.26.tar.xz -O - | tar -xJvf - && \ cd isl-0.26 && \ ./configure --prefix=$HOME/mingw-packages/isl-0.26-x86_64 --enable-static \ --with-gmp-prefix=$HOME/mingw-packages/gmp-6.2.1-x86_64 \ --disable-shared --with-clang=no && \ make -j$(nproc) && \ make install GNU Compiler Collection (GCC) ============================= cd ~/mingw-packages && \ wget https://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.xz -O - | tar -xJvf - && \ # GCC requires an out-of-tree build, so we create another staging area # specifically for GCC. # To avoid a 'too many open file descriptors' error when linking FFmpeg, # LTO must be disabled when building GCC. mkdir gcc-build && \ cd gcc-build && \ # Now, the main build process. CPPFLAGS="-march=native" ../gcc-13.1.0/configure \ --prefix=$HOME/mingw-build/mingw-w64-x86_64 --disable-shared \ --enable-static --disable-nls --enable-multilib \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64 \ --with-mpc=$HOME/mingw-packages/mpc-1.3.1-x86_64 \ --with-mpfr=$HOME/mingw-packages/mpfr-4.1.1-x86_64 \ --with-gmp=$HOME/mingw-packages/gmp-6.2.1-x86_64 \ --with-isl=$HOME/mingw-packages/isl-0.26-x86_64 \ --with-host-libstdcxx=-lstdc++ --enable-languages=c,c++ \ --enable-threads=posix --enable-fully-dynamic-string \ --build=x86_64-pc-linux-gnu --target=x86_64-w64-mingw32 \ --enable-targets=all --disable-lto --enable-mingw-wildcard \ --with-system-zlib && \ make -j$(nproc) all-gcc && \ make install-gcc # --with-system-zlib is necessary because the in-tree zlib # doesn't seem to want to build with multilib enabled (and we'll # be building our own zlib for MinGW later anyway). MinGW-w64 Runtime ================= cd ~/mingw-packages/mingw-w64-git/mingw-w64-crt && \ cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-crt && \ export PATH=$PATH:$HOME/mingw-build/mingw-w64-x86_64/bin && \ CPPFLAGS="-march=core2 -D_FORTIFY_SOURCE=0" ./configure \ --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --enable-lib32 --enable-wildcard --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install && \ Winpthreads +++++++++++ # Enabling threads=posix in GCC requires building MinGW's winpthreads library cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-libraries/winpthreads && \ CPPFLAGS="-march=core2" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install && \ # The 32-bit version of winpthreads has to be built separately. make distclean && \ cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-libraries/winpthreads && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ RCFLAGS="-F pe-i386" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --libdir=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32/lib32 \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install LibGCC ====== cd ~/mingw-packages/gcc-build && \ make -j$(nproc) all-target-libgcc && \ make install-target-libgcc && \ make -j$(nproc) && \ make install-strip libmangle ========= # requires libgcc cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-libraries/libmangle && \ CPPFLAGS="-march=core2" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install && \ make distclean && \ cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-libraries/libmangle && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ RCFLAGS="-F pe-i386" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --libdir=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32/lib32 \ --with-sysroot=$HOME/mingw-build/mingw-w64-x86_64/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ make install Gendef ====== cd ~/mingw-packages/mingw-w64-v10.0.0/mingw-w64-tools/gendef && \ CPPFLAGS="-march=native" \ ./configure --prefix=$HOME/mingw-build/mingw-w64-x86_64 \ --build=x86_64-pc-linux-gnu && \ make -j$(nproc) && \ make install && \ cd ~/mingw-build/mingw-w64-x86_64 && \ rm mingw && \ cp bin/gendef bin/x86_64-w64-mingw32-gendef Cleaning up =========== # This is as simple as deleting the staging area. cd ~/ && \ sudo rm -R mingw-packages Packaging Preparation ===================== # Copy YASM and pkg-config into the bin directory of the toolchain so that they # can easily be found when a prefixed copy of these tools are needed. cd mingw-build/mingw-w64-x86_64 && \ cp /usr/bin/nasm bin/x86_64-w64-mingw32-nasm && \ cp /usr/bin/yasm bin/x86_64-w64-mingw32-yasm && \ cp /usr/bin/pkg-config bin/x86_64-w64-mingw32-pkg-config && \ # A few of these pieces require using CMake to build them. This is not as # straight-forward as using autotools to cross-compile, and requires some setup: cd x86_64-w64-mingw32 && \ wget https://fastapi.metacpan.org/source/TOKUHIROM/mRuby-0.06/vendor/mruby/cmake/Toolchain-Ubuntu-mingw32.cmake.sample -O toolchain-x86_64-w64-mingw32.cmake && \ sed -i -e 's/ ~\/crossdev\/w32//g' -e 's/i686/x86_64/g' toolchain-x86_64-w64-mingw32.cmake # Setting up meson's cross-files: cd ../ && \ mkdir -p share/meson/cross/ && \ wget "https://raw.githubusercontent.com/mesonbuild/meson/master/cross/linux-mingw-w64-32bit.txt" -O share/meson/cross/i686-w64-mingw32 && \ wget "https://raw.githubusercontent.com/mesonbuild/meson/master/cross/linux-mingw-w64-64bit.txt" -O share/meson/cross/x86_64-w64-mingw32-multilib32 && \ wget "https://raw.githubusercontent.com/mesonbuild/meson/master/cross/linux-mingw-w64-64bit.txt" -O share/meson/cross/x86_64-w64-mingw32 && \ sed -i -e "s/windres = .*/windres = [\'\/usr\/bin\/x86_64-w64-mingw32-windres\', \'-F\', \'pe-i386\']/" \ -e "11ic_args = ['-m32']\ncxx_args = ['-m32']\nc_link_args = ['-m32', '-L/usr/i686-w64-mingw32/lib']" \ -e "s/'x86_64'/'x86'/g" share/meson/cross/x86_64-w64-mingw32-multilib32 # Create i686-w64-mingw32 root and symlink lib32 into it. mkdir -p i686-w64-mingw32/lib && \ cd i686-w64-mingw32/lib && \ ln -s ../../x86_64-w64-mingw32/lib32/* . ++++++++++++++++++++++++++++ + Installing the toolchain ++++++++++++++++++++++++++++ cd ~/mingw-build/mingw-w64-x86_64 && \ sudo checkinstall --pkgname=mingw-w64-gcc \ --pkgversion="1:$(bin/x86_64-w64-mingw32-gcc --version | head -1 | \ cut -f3 -d ' ')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --stripso=yes --addso=yes --fstrans=no --default cp -R * /usr && \ mv *.deb ~/ /////////////////////////////// /// LLVM/MinGW installation /////////////////////////////// # Unfortunately, GCC and binutils don't yet support building for Windows on ARM, # but LLVM does. cd ~/mingw-packages && \ mkdir llvm-mingw-build && \ git clone https://github.com/mstorsjo/llvm-mingw && \ cd llvm-mingw && \ ./build-all.sh ../llvm-mingw-build Packaging Preparation ===================== # Copy YASM and pkg-config into the bin directory of the toolchain so that they # can easily be found when a prefixed copy of these tools are needed. cd ../llvm-mingw-build && \ cp /usr/bin/pkg-config bin/aarch64-w64-mingw32-pkg-config && \ # A few of these pieces require using CMake to build them. This is not as # straight-forward as using autotools to cross-compile, and requires some setup: cd aarch64-w64-mingw32 && \ wget https://fastapi.metacpan.org/source/TOKUHIROM/mRuby-0.06/vendor/mruby/cmake/Toolchain-Ubuntu-mingw32.cmake.sample -O toolchain-aarch64-w64-mingw32.cmake && \ sed -i -e 's/ ~\/crossdev\/w32//g' -e 's/i686/aarch64/g' -e 's/usr/usr\/llvm-mingw/g' toolchain-aarch64-w64-mingw32.cmake # Setting up meson's cross-files: cd ../ && \ mkdir -p share/meson/cross/ && \ wget "https://raw.githubusercontent.com/mesonbuild/meson/master/cross/linux-mingw-w64-64bit.txt" -O share/meson/cross/aarch64-w64-mingw32 && \ sed -i -e 's/usr\/bin\/x86_64/usr\/llvm-mingw\/bin\/aarch64/g' -e 's/x86_64/aarch64/g' -e 's/wine64//g' share/meson/cross/aarch64-w64-mingw32 ++++++++++++++++++++++++++++ + Installing the toolchain ++++++++++++++++++++++++++++ cd ~/mingw-packages && \ sudo checkinstall --pkgname=llvm-mingw \ --pkgversion="1:$(llvm-mingw-build/bin/x86_64-w64-mingw32-clang --version | head -1 | \ cut -f3 -d ' ')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --stripso=yes --addso=yes --fstrans=no --default cp -R llvm-mingw-build /usr/llvm-mingw && \ mv *.deb ~/ +++++++++++++++++++++++++++++++++ + Adding LLVM/MinGW to the PATH +++++++++++++++++++++++++++++++++ # To try and avoid a collision between MinGW/GCC and LLVM/MinGW, # LLVM/MinGW should be added to the *end* of the $PATH. Since it # will be the only thing providing -mingw32 prefixes for clang and aarch64, # and the only source of clang-cl, those will go through correctly, # otherwise, the PATH ordering will prefer real GCC to the symlinks # that LLVM/MinGW creates. echo "export PATH=\$PATH:/usr/llvm-mingw/bin" >> ~/.bashrc # In order to use checkinstall with llvm-mingw, you'll also need # to add the PATH epxort to the root user's .bashrc. echo "export PATH=\$PATH:/usr/llvm-mingw/bin" | sudo tee -a /root/.bashrc # Close and re-open the Terminal. `source ~/.bashrc` might also work, but # whether it also works for the root user, I don't know. # There is an issue with attempting to use some of the aarch64-w64-mingw32 # tools when checkinstall gets involved, and errors out saying that the aarch64 # binaries can't be found, even though due to the two above commands, # they are on the $PATH. This could be resolved by the user elevating # to root with `sudo su` and then running checkinstall, but a slightly # less cumbersome approach is to just simply symlink the tools into # /usr/bin. sudo ln -s /usr/llvm-mingw/bin/aarch64-w64-mingw32-ranlib /usr/bin/aarch64-w64-mingw32-ranlib && \ sudo ln -s /usr/llvm-mingw/share/meson/cross/aarch64-w64-mingw32 /usr/share/meson/cross/aarch64-w64-mingw32 /////////////////// /// Final notes /////////////////// # Many commands have, after running make, an 'rm .spec' command. # These .spec files are intended for - from what I can tell - RPM distributions, # maybe sometimes DEB, and they provide the package information to be used as # metadata in the package. checkinstall has severe problems with this, as it # will try to automatically use the .spec file rather than the user-provided # metadata that gets passed to it normally. The end result is that - in the best # case - the resulting package gets the wrong metadata attached to it (and has # no -mingw identifying label). At worst, the metadata is extremely malformatted, # and may even cause packaging errors. # So if a set of instructions has one of these spec-removal commands, ALWAYS # remember to run it. # The '&& \' at the end of each instruction is to allow running the # entire piece at once. This is for convenience, and should just work. # If there are errors, run each instruction one at a time and adjust # accordingly. # Finally, we'll be keeping most of the source directories for the dependencies # in a subdirectory so that it doesn't clog your $HOME with a bunch of stuff # that only needs to be built occasionally. The *.deb files that checkinstall # spits out will also be moved to their own directory for archival purposes. mkdir -p ~/mpv-build-deps ~/mingw_debs/{i686,amd64,aarch64} ////////////////////////// /// Basic dependencies ////////////////////////// # These are dependencies that are best installed first, so that multiple other # components can use them. Dependency: zlib ================ # zlib-ng is an alternative, detailed below cd ~/mpv-build-deps && \ wget http://zlib.net/zlib-1.2.13.tar.gz -O - | tar -xzvf - && \ mkdir -p zlib-1.2.13/zlib-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/zlib-1.2.13/zlib-build/amd64 && \ CFLAGS="-march=core2" \ CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-ar \ RANLIB=x86_64-w64-mingw32-ranlib \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --static && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zlib-mingw-amd64 --pkgversion="$(grep Version zlib.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/zlib-1.2.13/zlib-build/aarch64 && \ CC=aarch64-w64-mingw32-gcc AR=aarch64-w64-mingw32-ar \ RANLIB=aarch64-w64-mingw32-ranlib \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --static && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zlib-mingw-aarch64 --pkgversion="$(grep Version zlib.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/zlib-1.2.13/zlib-build/i686 && \ CFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-ar \ RANLIB=x86_64-w64-mingw32-ranlib \ ../../configure --prefix=/usr/i686-w64-mingw32 --static && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zlib-mingw-i686 --pkgversion="$(grep Version zlib.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: zlib-ng =================== cd ~/mpv-build-deps && \ git clone https://github.com/zlib-ng/zlib-ng && \ mkdir -p zlib-ng/zlib-ng-build/{i686,amd64,aarch64} && \ amd64 +++++ # -DPKGCONFIG_INSTALL_DIR is necessary because otherwise it will # install to root. cd ~/mpv-build-deps/zlib-ng/zlib-ng-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off -DZLIB_COMPAT:bool=on \ -DZLIB_ENABLE_TESTS:bool=off -DPKGCONFIG_INSTALL_DIR=/usr/x86_64-w64-mingw32/lib/pkgconfig && \ ninja && \ sudo checkinstall --pkgname=zlib-mingw-amd64 --pkgversion="$(git describe \ --tags)-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # LLVM-MinGW doesn't provide arm64_neon.h, only arm_neon.h # So adjust the ifdef condition in neon_intrins.h sed -i '4s/def _M_ARM64/ defined(_M_ARM64) \&\& defined(_MSC_VER)/' zlib-ng/arch/arm/neon_intrins.h && \ cd ~/mpv-build-deps/zlib-ng/zlib-ng-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DZLIB_COMPAT:bool=on -DZLIB_ENABLE_TESTS:bool=off \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DPKGCONFIG_INSTALL_DIR=/usr/aarch64-w64-mingw32/lib/pkgconfig && \ ninja && \ sudo checkinstall --pkgname=zlib-mingw-aarch64 --pkgversion="$(git describe \ --tags)-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # -DPKGCONFIG_INSTALL_DIR is necessary because otherwise it will # install to root. cd ~/mpv-build-deps/zlib-ng/zlib-ng-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DBUILD_SHARED_LIBS:bool=off -DZLIB_COMPAT:bool=on -DZLIB_ENABLE_TESTS:bool=off \ -DWITH_SSE2:bool=off -DCMAKE_RC_FLAGS="--target=pe-i386" \ -DPKGCONFIG_INSTALL_DIR=/usr/i686-w64-mingw32/lib/pkgconfig && \ ninja && \ sudo checkinstall --pkgname=zlib-mingw-i686 --pkgversion="$(git describe \ --tags)-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: bzip2 ================= # sed is necessary to correct MinGW libbz2_static.a -> libbz2.a cd ~/mpv-build-deps && \ git clone https://gitlab.com/bzip2/bzip2.git && \ mkdir -p bzip2/bzip2-build/{i686,amd64,aarch64} && \ sed -i -e '338iif\(MSVC)\n\ set(STATICLIB_BASENAME bz2_static)\nelse()\n\ set(STATICLIB_BASENAME bz2)\nendif()\n' \ -e 's/ARCHIVE_OUTPUT_NAME bz2_static/ARCHIVE_OUTPUT_NAME ${STATICLIB_BASENAME}/' bzip2/CMakeLists.txt && \ amd64 +++++ cd ~/mpv-build-deps/bzip2/bzip2-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DENABLE_SHARED_LIB:bool=off -DENABLE_STATIC_LIB:bool=on \ -DENABLE_TESTS:bool=off -DENABLE_DOCS:bool=off && \ ninja && \ sudo checkinstall --pkgname=bzip2-mingw-amd64 --pkgversion="$(grep Version \ bzip2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/bzip2/bzip2-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DENABLE_SHARED_LIB:bool=off -DENABLE_STATIC_LIB:bool=on -DENABLE_TESTS:bool=off \ -DENABLE_DOCS:bool=off && \ ninja && \ sudo checkinstall --pkgname=bzip2-mingw-aarch64 --pkgversion="$(grep Version \ bzip2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/bzip2/bzip2-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DENABLE_SHARED_LIB:bool=off -DENABLE_STATIC_LIB:bool=on -DENABLE_TESTS:bool=off \ -DENABLE_DOCS:bool=off && \ ninja && \ sudo checkinstall --pkgname=bzip2-mingw-i686 --pkgversion="$(grep Version \ bzip2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: xz-tools ==================== cd ~/mpv-build-deps && \ wget http://tukaani.org/xz/xz-5.4.2.tar.gz -O - | tar -xzvf - && \ mkdir -p xz-5.4.2/xz-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/xz-5.4.2/xz-build/amd64 && \ CFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --disable-nls --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xz-tools-mingw-amd64 --pkgversion="$(grep Version \ src/liblzma/liblzma.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # llvm-mingw's winresrc.h header isn't included for some reason, # hence the CPPFLAGS invocation. cd ~/mpv-build-deps/xz-5.4.2/xz-build/aarch64 && \ CPPFLAGS="-I/usr/llvm-mingw/generic-w64-mingw32/include" ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --disable-nls --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xz-tools-mingw-aarch64 --pkgversion="$(grep Version \ src/liblzma/liblzma.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/xz-5.4.2/xz-build/i686 && \ CFLAGS+="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS+="-m32" RC="x86_64-w64-mingw32-windres -F pe-i386" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --disable-nls --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xz-tools-mingw-i686 --pkgversion="$(grep Version \ src/liblzma/liblzma.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: lzo2 ================ # optional dependency of libsnappy cd ~/mpv-build-deps && \ wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz -O - | tar -xzvf - && \ mkdir -p lzo-2.10/lzo-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/lzo-2.10/lzo-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lzo-mingw-amd64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | cut -f2 -d "\"")-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/lzo-2.10/lzo-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lzo-mingw-aarch64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | cut -f2 -d "\"")-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/lzo-2.10/lzo-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lzo-mingw-i686 --pkgversion="$(grep \ PACKAGE_VERSION config.h | cut -f2 -d "\"")-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: liblzf ================== # optional dependency of libsnappy # copying lzf.h to the build dirs is necessary for out-of-tree # adding stdint.h and switching to uint64_t is necessary for 64-bit, # doesn't harm 32-bit build. cd ~/mpv-build-deps && \ wget http://dist.schmorp.de/liblzf/liblzf-3.6.tar.gz -O - | tar -xzvf - && \ cd liblzf-3.6 && \ sed -i -e '12iEXEEXT = @EXEEXT@' -e 's/m 755 lzf/m 755 lzf$(EXEEXT)/g' Makefile.in && \ sed -i -e '38i#include ' -e 's/unsigned _int64/uint64_t/g' lzf_c.c && \ mkdir -p liblzf-build/{i686,amd64,aarch64} && \ cp lzf.h liblzf-build/i686 && \ cp lzf.h liblzf-build/amd64 && \ cp lzf.h liblzf-build/aarch64 && \ amd64 +++++ cd ~/mpv-build-deps/liblzf-3.6/liblzf-build/amd64 && \ CPPFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=liblzf-mingw-amd64 --pkgversion="$(grep \ "VERSION = " Makefile | awk '{print $NF}')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # Installing to a temporary directory is necessary to avoid errors when # using checkinstall. cd ~/mpv-build-deps/liblzf-3.6/liblzf-build/aarch64 && \ ../../configure --prefix=$HOME/mpv-build-deps/lzf_tempinstall --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ cd ~/mpv-build-deps/lzf_tempinstall && \ sudo checkinstall --pkgname=liblzf-mingw-aarch64 --pkgversion="$(grep \ "VERSION = " ../liblzf-3.6/liblzf-build/aarch64/Makefile | awk '{print $NF}')-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default cp -R * /usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/liblzf-3.6/liblzf-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=liblzf-mingw-i686 --pkgversion="$(grep \ "VERSION = " Makefile | awk '{print $NF}')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libsnappy ===================== # libsnappy is required by the Hap encoder cd ~/mpv-build-deps && \ git clone https://github.com/google/snappy && \ mkdir -p snappy/snappy-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/snappy/snappy-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" \ -DSNAPPY_BUILD_TESTS:bool=off -DSNAPPY_BUILD_BENCHMARKS:bool=off && \ ninja && \ sudo checkinstall --pkgname=snappy-mingw-amd64 --pkgversion="$(grep \ PACKAGE_VERSION cmake/SnappyConfigVersion.cmake | grep "set(" | head -1 | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/snappy/snappy-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DSNAPPY_BUILD_TESTS:bool=off -DSNAPPY_BUILD_BENCHMARKS:bool=off && \ ninja && \ sudo checkinstall --pkgname=snappy-mingw-aarch64 --pkgversion="$(grep \ PACKAGE_VERSION cmake/SnappyConfigVersion.cmake | grep "set(" | head -1 | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/snappy/snappy-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_EXE_LINKER_FLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ -DCMAKE_SYSROOT=/usr/i686-w64-mingw32 -DSNAPPY_BUILD_TESTS:bool=off \ -DSNAPPY_BUILD_BENCHMARKS:bool=off && \ ninja && \ sudo checkinstall --pkgname=snappy-mingw-i686 --pkgversion="$(grep \ PACKAGE_VERSION cmake/SnappyConfigVersion.cmake | grep "set(" | head -1 | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ ninja install && \ mv *.deb ~/mingw_debs/i686 //////////////////////////// /// Image format support //////////////////////////// Dependency: LCMS2 ================= # jpeg and tiff are only used by the samples, # not the actual library cd ~/mpv-build-deps && \ git clone https://github.com/mm2/Little-CMS && \ mkdir -p Little-CMS/littlecms-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/Little-CMS/littlecms-build/amd64 && \ CPPFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --disable-shared --without-jpeg --without-tiff --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lcms2-mingw-amd64 --pkgversion="1:$(grep Version \ lcms2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/Little-CMS/littlecms-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --disable-shared --without-jpeg --without-tiff --enable-silent-rules \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lcms2-mingw-aarch64 --pkgversion="1:$(grep Version \ lcms2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/Little-CMS/littlecms-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib -lz" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --without-jpeg --without-tiff --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lcms2-mingw-i686 --pkgversion="1:$(grep Version \ lcms2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: GIFLIB ================== cd ~/mpv-build-deps && \ wget http://downloads.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz -O - | tar -xzvf - && \ sed -i -e '64s/libgif.so //' -e '64s/libutil.so //' -e '65s/^/#/' -e '102,104s/^/#/' giflib-5.2.1/Makefile && \ mkdir -p giflib-5.2.1/giflib-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/giflib-5.2.1/giflib-build/amd64 && \ ln -s ../../* . && \ make -j$(nproc) CC=x86_64-w64-mingw32-gcc CFLAGS="-march=core2" && \ sudo checkinstall --pkgname=giflib-mingw-amd64 --pkgversion="$(./getversion | \ tr -d '[:space:]')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ make install-include install-lib PREFIX=/usr/x86_64-w64-mingw32 && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # tools plagued with linker errors; not finding stuff in libgif.a itself cd ~/mpv-build-deps/giflib-5.2.1/giflib-build/aarch64 && \ ln -s ../../* . && \ make -j$(nproc) CC=aarch64-w64-mingw32-gcc && \ sudo checkinstall --pkgname=giflib-mingw-aarch64 --pkgversion="$(./getversion | \ tr -d '[:space:]')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ make install-include install-lib PREFIX=/usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/giflib-5.2.1/giflib-build/i686 && \ ln -s ../../* . && \ make -j$(nproc) CC=x86_64-w64-mingw32-gcc CFLAGS="-m32 -march=pentium3 -msse \ -mtune=pentium3 -mfpmath=sse" LDFLAGS="-m32 -L/usr/i686-w64-mingw32" && \ sudo checkinstall --pkgname=giflib-mingw-i686 --pkgversion="$(./getversion | \ tr -d '[:space:]')-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default \ make install-include install-lib PREFIX=/usr/i686-w64-mingw32 && \ mv *.deb ~/mingw_debs/i686 Dependency: libjpeg-turbo ========================= cd ~/mpv-build-deps && \ git clone https://github.com/libjpeg-turbo/libjpeg-turbo && \ mkdir -p libjpeg-turbo/libjpegturbo-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libjpeg-turbo/libjpegturbo-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DENABLE_SHARED:bool=off \ -DCMAKE_SYSTEM_PROCESSOR="x86_64" && \ ninja && \ sudo checkinstall --pkgname=libjpeg-turbo-mingw-amd64 --pkgversion="$(grep \ Version pkgscripts/libturbojpeg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libjpeg-turbo/libjpegturbo-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DENABLE_SHARED:bool=off -DCMAKE_SYSTEM_PROCESSOR="aarch64" && \ ninja && \ sudo checkinstall --pkgname=libjpeg-turbo-mingw-aarch64 --pkgversion="$(grep \ Version pkgscripts/libturbojpeg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libjpeg-turbo/libjpegturbo-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DENABLE_SHARED:bool=off -DCMAKE_SYSTEM_PROCESSOR="i686" && \ ninja && \ sudo checkinstall --pkgname=libjpeg-turbo-mingw-i686 --pkgversion="$(grep \ Version pkgscripts/libturbojpeg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libpng ================== cd ~/mpv-build-deps && \ git clone git://git.code.sf.net/p/libpng/code libpng && \ cd libpng && \ git checkout libpng16 && \ mkdir -p libpng-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libpng/libpng-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DPNG_SHARED:bool=off -DPNG_TESTS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libpng-mingw-amd64 --pkgversion="$(grep Version \ libpng.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # -DPNG_ARM_NEON_OPT=0 disables neon, because the functions aren't public # and cause configure check errors in FFmpeg for libbluray, libfontconfig, and libfreetype # due to undefined symbols in libpng16.a cd ~/mpv-build-deps/libpng/libpng-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DPNG_SHARED:bool=off -DPNG_TESTS:bool=off -DZLIB_INCLUDE_DIR=/usr/aarch64-w64-mingw32/include \ -DZLIB_LIBRARY=/usr/aarch64-w64-mingw32/lib/libz.a -DCMAKE_C_FLAGS="-DPNG_ARM_NEON_OPT=0" && \ ninja && \ sudo checkinstall --pkgname=libpng-mingw-aarch64 --pkgversion="$(grep Version \ libpng.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libpng/libpng-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DPNG_SHARED:bool=off -DPNG_TESTS:bool=off -DZLIB_INCLUDE_DIR=/usr/i686-w64-mingw32/include \ -DZLIB_LIBRARY=/usr/i686-w64-mingw32/lib/libz.a && \ ninja && \ sudo checkinstall --pkgname=libpng-mingw-i686 --pkgversion="$(grep Version \ libpng.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: jbigkit =================== cd ~/mpv-build-deps && \ git clone https://github.com/qyot27/jbigkit && \ cd jbigkit && \ autoreconf -fiv && \ mkdir -p jbigkit-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/jbigkit/jbigkit-build/amd64 && \ CPPFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libjbig-mingw-amd64 --pkgversion="$(grep \ JBG_VERSION ../../libjbig/jbig.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/jbigkit/jbigkit-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libjbig-mingw-aarch64 --pkgversion="$(grep \ JBG_VERSION ../../libjbig/jbig.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/jbigkit/jbigkit-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libjbig-mingw-i686 --pkgversion="$(grep \ JBG_VERSION ../../libjbig/jbig.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libtiff =================== # libtiff also doesn't add libjpeg, libjbig, and liblzma to # Libs.private when built static. cd ~/mpv-build-deps && \ git clone https://gitlab.com/libtiff/libtiff.git && \ mkdir -p libtiff/libtiff-build/{i686,amd64,aarch64} && \ 64-bit ++++++ cd ~/mpv-build-deps/libtiff/libtiff-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sed -i 's/Libs.private: -ljbig/Libs.private: -ljbig -ljpeg -llzma/' libtiff-4.pc && \ sudo checkinstall --pkgname=libtiff-mingw-amd64 --pkgversion="$(grep Version \ libtiff-4.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libtiff/libtiff-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_STAGING_PREFIX=/usr/aarch64-w64-mingw32 -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sed -i 's/Libs.private: -ljbig/Libs.private: -ljbig -ljpeg -llzma/' libtiff-4.pc && \ sudo checkinstall --pkgname=libtiff-mingw-aarch64 --pkgversion="$(grep Version \ libtiff-4.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 32-bit ++++++ cd ~/mpv-build-deps/libtiff/libtiff-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_STAGING_PREFIX=/usr/i686-w64-mingw32 -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sed -i 's/Libs.private: -ljbig/Libs.private: -ljbig -ljpeg/' libtiff-4.pc && \ sudo checkinstall --pkgname=libtiff-mingw-i686 --pkgversion="$(grep Version \ libtiff-4.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libopenjpeg ======================= # ffmpeg may eventually remove libopenjpeg support because # its internal encoder matches/exceeds it, or will shortly. # The libopenjpeg decoder was removed on 2023-04-02. cd ~/mpv-build-deps && \ wget https://github.com/uclouvain/openjpeg/archive/v2.5.0.tar.gz -O - | tar -xzvf - && \ mkdir -p openjpeg-2.5.0/openjpeg-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/openjpeg-2.5.0/openjpeg-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off \ -DBUILD_THIRDPARTY:bool=on -DBUILD_PKGCONFIG_FILES:bool=on && \ ninja && \ sudo checkinstall --pkgname=libopenjpeg-mingw-amd64 --pkgversion="$(grep \ Version libopenjp2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # hits linker errors in libpng16 if trying to build the programs, # turn them off with -DBUILD_CODEC cd ~/mpv-build-deps/openjpeg-2.5.0/openjpeg-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ LDFLAGS="-L/usr/aarch64-w64-mingw32/lib" \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_STAGING_PREFIX=/usr/aarch64-w64-mingw32 -DBUILD_SHARED_LIBS:bool=off \ -DBUILD_PKGCONFIG_FILES:bool=on -DBUILD_CODEC:bool=off && \ ninja && \ sudo checkinstall --pkgname=libopenjpeg-mingw-aarch64 --pkgversion="$(grep \ Version libopenjp2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/openjpeg-2.5.0/openjpeg-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ LDFLAGS="-L/usr/i686-w64-mingw32/lib" \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_STAGING_PREFIX=/usr/i686-w64-mingw32 -DBUILD_SHARED_LIBS:bool=off \ -DBUILD_PKGCONFIG_FILES:bool=on && \ ninja && \ sudo checkinstall --pkgname=libopenjpeg-mingw-i686 --pkgversion="$(grep \ Version libopenjp2.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libwebp =================== # --disable-tiff is necessary because of img2webp fails # to link libtiff if libtiff has jbig, jpeg, and lzma. # Forcing them into libtiff-4.pc's Libs.private doesn't # work, even when forcing pkg-config --static. It may # be a propagation error in the examples/Makefile. cd ~/mpv-build-deps && \ git clone https://chromium.googlesource.com/webm/libwebp && \ cd libwebp && \ autoreconf -fiv && \ mkdir -p libwebp-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libwebp/libwebp-build/amd64 && \ LIBPNG_CONFIG="/usr/x86_64-w64-mingw32/bin/libpng-config --static" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-swap-16bit-csp --disable-tiff --enable-libwebpmux \ --enable-libwebpdemux --enable-libwebpdecoder --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libwebp-mingw-amd64 --pkgversion="$(grep Version \ src/libwebp.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libwebp/libwebp-build/aarch64 && \ LIBPNG_CONFIG="/usr/aarch64-w64-mingw32/bin/libpng-config --static" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-swap-16bit-csp --disable-tiff --enable-libwebpmux \ --enable-libwebpdemux --enable-libwebpdecoder --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libwebp-mingw-aarch64 --pkgversion="$(grep Version \ src/libwebp.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libwebp/libwebp-build/i686 && \ LIBPNG_CONFIG="/usr/i686-w64-mingw32/bin/libpng16-config --static" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-swap-16bit-csp --disable-tiff --enable-libwebpmux \ --enable-libwebpdemux --enable-libwebpdecoder --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libwebp-mingw-i686 --pkgversion="$(grep Version \ src/libwebp.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 ///////////////////////////////////////////////////////////// /// Subtitle rendering and On-Screen Display dependencies ///////////////////////////////////////////////////////////// # These are meant to allow rendering subtitles. Mostly it serves as the means # to get libass built, but some of them might be usable by other components, so # this occupies the second step in the process. Dependency: Iconv ================= cd ~/mpv-build-deps && \ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz -O - | tar -xzvf - && \ mkdir -p libiconv-1.17/iconv-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libiconv-1.17/iconv-build/amd64 && \ CPPFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libiconv-mingw-amd64 --pkgversion="$(grep \ "define VERSION" config.h | sed 's/"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ cd ~/mpv-build-deps/libiconv-1.17/iconv-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ WINDRES="x86_64-w64-mingw32-windres -F pe-i386" \ RC="x86_64-w64-mingw32-windres -F pe-i386" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libiconv-mingw-i686 --pkgversion="$(grep \ "define VERSION" config.h | sed 's/"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 aarch64 +++++++ # run aarch64 process AFTER amd64 and i686, because of the use of sed to # make sure that compiling the Windows resource file doesn't error out # with 'winver.h file not found' even though it is present in the # llvm-mingw tree: cd ~/mpv-build-deps/libiconv-1.17/iconv-build/aarch64 && \ sed -i 's/PACKAGE_VERSION)` -i/PACKAGE_VERSION)` -I\/usr\/llvm-mingw\/generic-w64-mingw32\/include -i/' ../../src/Makefile.in && \ sed -i 's/PACKAGE_VERSION)` -i/PACKAGE_VERSION)` -I\/usr\/llvm-mingw\/generic-w64-mingw32\/include -i/' ../../lib/Makefile.in && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --disable-shared --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ make install DESTDIR=~/mpv-build-deps/iconv_build && \ cd ~/mpv-build-deps/iconv_build/usr && \ sudo checkinstall --pkgname=libiconv-mingw-aarch64 --pkgversion="$(grep \ "define VERSION" ~/mpv-build-deps/libiconv-1.17/iconv-build/aarch64/config.h | \ sed 's/"/\t/g' | cut -f2)-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default cp -R * /usr && \ mv *.deb ~/mingw_debs/aarch64 Dependency: Enca ================ cd ~/mpv-build-deps && \ git clone https://github.com/nijel/enca && \ mkdir -p enca/enca-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/enca/enca-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm enca.spec && \ sudo checkinstall --pkgname=enca-mingw-amd64 --pkgversion="$(grep Version enca.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # reaches build error in src/options.c due to -Wint-conversion, # continues into implicit function declaration error because of the # previous error. cd ~/mpv-build-deps/enca/enca-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm enca.spec && \ sudo checkinstall --pkgname=enca-mingw-aarch64 --pkgversion="$(grep Version enca.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/enca/enca-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm enca.spec && \ sudo checkinstall --pkgname=enca-mingw-i686 --pkgversion="$(grep Version enca.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: Freetype2 ===================== cd ~/mpv-build-deps && \ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.13.0.tar.xz -O - | tar -xJvf - && \ mkdir -p freetype-2.13.0/freetype-build/{i686,amd64,aarch64} && \ 64-bit ++++++ cd ~/mpv-build-deps/freetype-2.13.0/freetype-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" && \ ninja && \ sudo checkinstall --pkgname=freetype2-mingw-amd64 --pkgversion="$(grep \ PACKAGE_VERSION CPackConfig.cmake | head -1 | sed -e "s/}//g" | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/freetype-2.13.0/freetype-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_STAGING_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_RC_FLAGS="-I/usr/llvm-mingw/generic-w64-mingw32/include" && \ ninja && \ sudo checkinstall --pkgname=freetype2-mingw-aarch64 --pkgversion="$(grep \ PACKAGE_VERSION CPackConfig.cmake | head -1 | sed -e "s/}//g" | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/freetype-2.13.0/freetype-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_STAGING_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_RC_FLAGS="-F pe-i386" && \ ninja && \ sudo checkinstall --pkgname=freetype2-mingw-i686 --pkgversion="$(grep \ PACKAGE_VERSION CPackConfig.cmake | head -1 | sed -e "s/}//g" | \ cut -f2 -d "\"")-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: c2man ================= # c2man isn't a direct dependency of fribidi, but it is # necessary to avoid a build error. Thankfully, it only # needs to be built once, and it doesn't need to be # cross-compiled either. git clone https://github.com/fribidi/c2man && \ cd c2man && \ ./Configure -d && \ make -j$(nproc) && \ sudo checkinstall --pkgname=c2man --pkgversion="$(grep Version \ CHANGES | tail -1 | sed -e 's/Version //' -e 's/://g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default Dependency: Fribidi =================== cd ~/mpv-build-deps && \ git clone https://github.com/fribidi/fribidi && \ mkdir -p fribidi/fribidi-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/fribidi/fribidi-build/amd64 && \ meson setup ../.. --prefix=/usr/x86_64-w64-mingw32 --libdir=/usr/x86_64-w64-mingw32/lib \ --default-library static -Ddeprecated=false -Ddocs=false \ --cross-file x86_64-w64-mingw32 && \ ninja && \ sudo checkinstall --pkgname=fribidi2-mingw-amd64 --pkgversion="$(grep Version \ meson-private/fribidi.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/fribidi/fribidi-build/aarch64 && \ meson setup ../.. --prefix=/usr/aarch64-w64-mingw32 --libdir=/usr/aarch64-w64-mingw32/lib \ --default-library static -Ddeprecated=false -Ddocs=false -Dtests=false \ --cross-file aarch64-w64-mingw32 && \ ninja && \ sudo checkinstall --pkgname=fribidi2-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/fribidi.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/fribidi/fribidi-build/i686 && \ meson setup ../.. --prefix=/usr/i686-w64-mingw32 --libdir=/usr/i686-w64-mingw32/lib \ --default-library static -Ddeprecated=false -Ddocs=false \ --cross-file x86_64-w64-mingw32-multilib32 -Dc_args="-m32 -I/usr/i686-w64-mingw32/include" \ -Dc_link_args="-m32 -L/usr/i686-w64-mingw32/lib" && \ ninja && \ sudo checkinstall --pkgname=fribidi2-mingw-i686 --pkgversion="$(grep Version \ meson-private/fribidi.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: Harfbuzz ==================== # Change Requires: freetype to Libs.private so ffmpeg can link. cd ~/mpv-build-deps && \ git clone https://github.com/harfbuzz/harfbuzz && \ mkdir -p harfbuzz/harfbuzz-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/harfbuzz/harfbuzz-build/amd64 && \ CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/freetype2" meson setup ../.. \ --prefix=/usr/x86_64-w64-mingw32 --libdir=/usr/x86_64-w64-mingw32/lib \ --default-library static -Dglib=disabled -Dicu=disabled -Dcairo=disabled \ -Dgobject=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled \ --cross-file x86_64-w64-mingw32 && \ ninja && \ sed -i 's/Requires: freetype2/Libs.private: -lfreetype/' meson-private/harfbuzz.pc && \ sudo checkinstall --pkgname=libharfbuzz-mingw-amd64 --pkgversion="$(grep Version \ meson-private/harfbuzz.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/harfbuzz/harfbuzz-build/aarch64 && \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include/freetype2" meson setup ../.. \ --prefix=/usr/aarch64-w64-mingw32 --libdir=/usr/aarch64-w64-mingw32/lib \ --default-library static -Dglib=disabled -Dicu=disabled -Dcairo=disabled \ -Dgobject=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled \ --cross-file aarch64-w64-mingw32 && \ ninja && \ sed -i 's/Requires: freetype2/Libs.private: -lfreetype/' meson-private/harfbuzz.pc && \ sudo checkinstall --pkgname=libharfbuzz-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/harfbuzz.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/harfbuzz/harfbuzz-build/i686 && \ CPPFLAGS="-m32 -I/usr/i686-w64-mingw32/include/freetype2" meson setup ../.. \ --prefix=/usr/i686-w64-mingw32 --libdir=/usr/i686-w64-mingw32/lib \ --default-library static -Dglib=disabled -Dicu=disabled -Dcairo=disabled \ -Dgobject=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled \ --cross-file x86_64-w64-mingw32-multilib32 && \ ninja && \ sed -i 's/Requires: freetype2/Libs.private: -lfreetype/' meson-private/harfbuzz.pc && \ sudo checkinstall --pkgname=libharfbuzz-mingw-i686 --pkgversion="$(grep Version \ meson-private/harfbuzz.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: Expat ================= cd ~/mpv-build-deps && \ git clone https://github.com/libexpat/libexpat && \ mkdir -p libexpat/expat/libexpat-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libexpat/expat/libexpat-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" \ -DEXPAT_BUILD_TESTS:bool=off -DEXPAT_BUILD_EXAMPLES:bool=off -DEXPAT_BUILD_TOOLS:bool=off \ -DEXPAT_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libexpat-mingw-amd64 --pkgversion="$(grep Version expat.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libexpat/expat/libexpat-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DEXPAT_BUILD_TESTS:bool=off -DEXPAT_BUILD_EXAMPLES:bool=off -DEXPAT_BUILD_TOOLS:bool=off \ -DEXPAT_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libexpat-mingw-aarch64 --pkgversion="$(grep Version expat.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libexpat/expat/libexpat-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DEXPAT_BUILD_TESTS:bool=off -DEXPAT_BUILD_EXAMPLES:bool=off -DEXPAT_BUILD_TOOLS:bool=off \ -DEXPAT_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libexpat-mingw-i686 --pkgversion="$(grep Version expat.pc | \ sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: json-c ================== cd ~/mpv-build-deps && \ git clone https://github.com/json-c/json-c && \ mkdir -p json-c/jsonc-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/json-c/jsonc-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=jsonc-mingw-amd64 --pkgversion="$(grep Version \ json-c.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/json-c/jsonc-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=jsonc-mingw-aarch64 --pkgversion="$(grep Version \ json-c.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/json-c/jsonc-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=jsonc-mingw-i686 --pkgversion="$(grep Version \ json-c.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: Fontconfig ====================== cd ~/mpv-build-deps && \ git clone git://anongit.freedesktop.org/fontconfig && \ autoreconf -fiv fontconfig && \ mkdir -p fontconfig/fontconfig-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/fontconfig/fontconfig-build/amd64 && \ CPPFLAGS="-march=core2 -I/usr/x86_64-w64-mingw32/include/freetype2" \ LDFLAGS="-L/usr/x86_64-w64-mingw32 -lpng16 -lbz2 -lz" \ meson setup ../../ --prefix=/usr/x86_64-w64-mingw32 --libdir=/usr/x86_64-w64-mingw32/lib \ --default-library static -Ddoc=disabled -Dtests=disabled \ --cross-file x86_64-w64-mingw32 ninja sudo checkinstall --pkgname=fontconfig-mingw-amd64 --pkgversion="$(grep Version \ meson-private/fontconfig.pc | sed 's/Version: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 - autotools +++++++++++++++++++ cd ~/mpv-build-deps/fontconfig/fontconfig-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ LDFLAGS="-L/usr/aarch64-w64-mingw32/lib -lpng16 -lbz2 -lz" \ ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared --disable-docs \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ make install DESTDIR=~/mpv-build-deps/fontconfig_build_install && \ cd ~/mpv-build-deps/fontconfig_build_install/usr && \ sudo checkinstall --pkgname=fontconfig-mingw-aarch64 --pkgversion="$(grep Version \ x86_64-w64-mingw32/lib/pkgconfig/fontconfig.pc | sed 's/Version: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp -R * /usr && \ rm -R aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 aarch64 - meson +++++++++++++++ # there are linking problems with the tools being able to find the correct aarch64 # libraries, no matter how I try to pass PKG_CONFIG_PATH or LDFLAGS to point at them. cd ~/mpv-build-deps/fontconfig/fontconfig-build/aarch64 && \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include -I/usr/aarch64-w64-mingw32/include/freetype2" \ meson setup ../../ --prefix=/usr/aarch64-w64-mingw32 --libdir=/usr/aarch64-w64-mingw32/lib \ --default-library static -Ddoc=disabled -Dtests=disabled -Dtools=disabled \ --cross-file aarch64-w64-mingw32 ninja sudo checkinstall --pkgname=fontconfig-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/fontconfig.pc | sed 's/Version: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/fontconfig/fontconfig-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 \ -I/usr/i686-w64-mingw32/include/freetype2" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib -lfreetype -lexpat -lpng16 -lbz2 -lz" \ meson setup ../../ --prefix=/usr/i686-w64-mingw32 --libdir=/usr/i686-w64-mingw32/lib \ --default-library static -Ddoc=disabled -Dtests=disabled \ --cross-file x86_64-w64-mingw32-multilib32 ninja sudo checkinstall --pkgname=fontconfig-mingw-i686 --pkgversion="$(grep Version \ meson-private/fontconfig.pc | sed 's/Version: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: uchardet ==================== cd ~/mpv-build-deps && \ git clone git://anongit.freedesktop.org/uchardet/uchardet && \ sed -i '74s/^/#/' uchardet/CMakeLists.txt && \ mkdir -p uchardet/uchardet-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/uchardet/uchardet-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-march=core2" -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SYSTEM_PROCESSOR="x86_64" && \ ninja && \ sudo checkinstall --pkgname=uchardet-mingw-amd64 --pkgversion="$(grep Version \ uchardet.pc | cut -f2 -d ' ')-git-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/uchardet/uchardet-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_PROCESSOR="aarch64" && \ ninja && \ sudo checkinstall --pkgname=uchardet-mingw-aarch64 --pkgversion="$(grep Version \ uchardet.pc | cut -f2 -d ' ')-git-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/uchardet/uchardet-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_PROCESSOR="i686" && \ ninja && \ sudo checkinstall --pkgname=uchardet-mingw-i686 --pkgversion="$(grep Version \ uchardet.pc | cut -f2 -d ' ')-git-$(date --rfc-3339=date | sed 's/-//g')" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: lua =============== cd ~/mpv-build-deps && \ git clone -b lua-5.2 https://github.com/LuaDist/lua && \ mkdir -p lua/lua-build/{i686,amd64,aarch64} && \ LUAPACKVER=$(grep version lua/dist.info | cut -f2 -d "\"") && \ amd64 +++++ cd ~/mpv-build-deps/lua/lua-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="../luabuild/amd64" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ ninja install && \ # Packaging cd ../luabuild/amd64 && \ mkdir -p lib/pkgconfig && \ # Generate a .pc file so that mpv can use pkg-config to find lua. # The following 'echo' lines are a single command. I'd actually # have preferred using cat in order to reduce redundancy, but it # interprets the environment variables that should be left alone. echo prefix=/usr/x86_64-w64-mingw32 > lib/pkgconfig/lua.pc && \ echo exec_prefix=\${prefix} >> lib/pkgconfig/lua.pc && \ echo libdir=\${exec_prefix}/lib >> lib/pkgconfig/lua.pc && \ echo includedir=\${prefix}/include >> lib/pkgconfig/lua.pc && \ echo >> lib/pkgconfig/lua.pc && \ echo Name: lua >> lib/pkgconfig/lua.pc && \ echo Description: Lua scripting language >> lib/pkgconfig/lua.pc && \ echo Version: $LUAPACKVER >> lib/pkgconfig/lua.pc && \ echo Libs: -L\${libdir} -llua >> lib/pkgconfig/lua.pc && \ echo Cflags: -I\${includedir} >> lib/pkgconfig/lua.pc # Install lua sudo checkinstall --pkgname=lua-mingw-amd64 --pkgversion="$(grep \ Version lib/pkgconfig/lua.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default cp -R * /usr/x86_64-w64-mingw32 && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/lua/lua-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="../luabuild/aarch64" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ ninja install && \ # Packaging cd ../luabuild/aarch64 && \ mkdir -p lib/pkgconfig && \ # Generate a .pc file so that mpv can use pkg-config to find lua. # The following 'echo' lines are a single command. I'd actually # have preferred using cat in order to reduce redundancy, but it # interprets the environment variables that should be left alone. echo prefix=/usr/aarch64-w64-mingw32 > lib/pkgconfig/lua.pc && \ echo exec_prefix=\${prefix} >> lib/pkgconfig/lua.pc && \ echo libdir=\${exec_prefix}/lib >> lib/pkgconfig/lua.pc && \ echo includedir=\${prefix}/include >> lib/pkgconfig/lua.pc && \ echo >> lib/pkgconfig/lua.pc && \ echo Name: lua >> lib/pkgconfig/lua.pc && \ echo Description: Lua scripting language >> lib/pkgconfig/lua.pc && \ echo Version: $LUAPACKVER >> lib/pkgconfig/lua.pc && \ echo Libs: -L\${libdir} -llua >> lib/pkgconfig/lua.pc && \ echo Cflags: -I\${includedir} >> lib/pkgconfig/lua.pc # Install lua sudo checkinstall --pkgname=lua-mingw-aarch64 --pkgversion="$(grep \ Version lib/pkgconfig/lua.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default cp -R * /usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/lua/lua-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="../luabuild/i686" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_RC_FLAGS="-F pe-i386" -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ ninja install && \ # Packaging cd ../luabuild/i686 && \ mkdir -p lib/pkgconfig && \ # Generate a .pc file so that mpv can use pkg-config to find lua. # The following 'echo' lines are a single command. I'd actually # have preferred using cat in order to reduce redundancy, but it # interprets the environment variables that should be left alone. echo prefix=/usr/i686-w64-mingw32 > lib/pkgconfig/lua.pc && \ echo exec_prefix=\${prefix} >> lib/pkgconfig/lua.pc && \ echo libdir=\${exec_prefix}/lib >> lib/pkgconfig/lua.pc && \ echo includedir=\${prefix}/include >> lib/pkgconfig/lua.pc && \ echo >> lib/pkgconfig/lua.pc && \ echo Name: lua >> lib/pkgconfig/lua.pc && \ echo Description: Lua scripting language >> lib/pkgconfig/lua.pc && \ echo Version: $LUAPACKVER >> lib/pkgconfig/lua.pc && \ echo Libs: -L\${libdir} -llua >> lib/pkgconfig/lua.pc && \ echo Cflags: -I\${includedir} >> lib/pkgconfig/lua.pc # Install lua sudo checkinstall --pkgname=lua-mingw-i686 --pkgversion="$(grep \ Version lib/pkgconfig/lua.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default cp -R * /usr/i686-w64-mingw32 && \ mv *.deb ~/mingw_debs/i686 //////////////////////////////// /// Disc access dependencies //////////////////////////////// # These optional dependencies are needed for DVD and Blu-ray playback. # Circumvention of the DRM on DVD and Blu-ray is legally grey territory. Users # should be aware of their region's provisions on this before making a decision # on whether to follow or skip this section. # For builds that do not circumvent DRM but still allow playback of unencrypted # discs (such as those authored by the user), leave out the following: # libdvdcss (and remove --with-libdvdcss from libdvdread's configure step) # libaacs # libbdplus # gpg-error and gcrypt are needed by other components, so leave those. ++++++++++++++++++++ + For DVD playback ++++++++++++++++++++ Dependency: libdvdcss ===================== cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libdvdcss.git && \ autoreconf -fiv libdvdcss && \ mkdir -p libdvdcss/libdvdcss-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libdvdcss/libdvdcss-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libdvdcss.spec && \ sudo checkinstall --pkgname=libdvdcss-mingw-amd64 --pkgversion="$(grep Version \ src/libdvdcss.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libdvdcss/libdvdcss-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libdvdcss.spec && \ sudo checkinstall --pkgname=libdvdcss-mingw-aarch64 --pkgversion="$(grep Version \ src/libdvdcss.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libdvdcss/libdvdcss-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libdvdcss.spec && \ sudo checkinstall --pkgname=libdvdcss-mingw-i686 --pkgversion="$(grep Version \ src/libdvdcss.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libdvdread ====================== cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libdvdread.git && \ autoreconf -fiv libdvdread && \ mkdir -p libdvdread/libdvdread-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libdvdread/libdvdread-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --with-libdvdcss --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libdvdread-mingw-amd64 --pkgversion="$(grep Version \ misc/dvdread.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libdvdread/libdvdread-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --with-libdvdcss --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libdvdread-mingw-aarch64 --pkgversion="$(grep Version \ misc/dvdread.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libdvdread/libdvdread-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --with-libdvdcss --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libdvdread-mingw-i686 --pkgversion="$(grep Version \ misc/dvdread.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libdvdnav ===================== cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libdvdnav.git && \ autoreconf -fiv libdvdnav && \ mkdir -p libdvdnav/libdvdnav-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libdvdnav/libdvdnav-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm misc/libdvdnav.spec && \ sudo checkinstall --pkgname=libdvdnav-mingw-amd64 --pkgversion="$(grep Version \ misc/dvdnav.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libdvdnav/libdvdnav-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm misc/libdvdnav.spec && \ sudo checkinstall --pkgname=libdvdnav-mingw-aarch64 --pkgversion="$(grep Version \ misc/dvdnav.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libdvdnav/libdvdnav-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm misc/libdvdnav.spec && \ sudo checkinstall --pkgname=libdvdnav-mingw-i686 --pkgversion="$(grep Version \ misc/dvdnav.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 ++++++++++++++++++++++++ + For Blu-ray playback ++++++++++++++++++++++++ Dependency: libgpg-error ======================== cd ~/mpv-build-deps && \ git clone git://git.gnupg.org/libgpg-error.git && \ autoreconf -fiv libgpg-error && \ mkdir -p libgpg-error/libgpg-error-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libgpg-error/libgpg-error-build/amd64 && \ CFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --program-prefix=x86_64-w64-mingw32- --disable-nls --disable-rpath \ --enable-static --enable-silent-rules --disable-shared --disable-doc \ --disable-tests --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgpg-error-mingw-amd64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo cp src/gpg-error-config /usr/x86_64-w64-mingw32/bin && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ cd ~/mpv-build-deps/libgpg-error/libgpg-error-build/i686 && \ CFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ RC="x86_64-w64-mingw32-windres -F pe-i386" ../../configure \ --prefix=/usr/i686-w64-mingw32 --program-prefix=i686-w64-mingw32- \ --disable-nls --disable-rpath --enable-static --enable-silent-rules \ --disable-shared --disable-doc --disable-tests \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgpg-error-mingw-i686 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo cp src/gpg-error-config /usr/i686-w64-mingw32/bin && \ mv *.deb ~/mingw_debs/i686 aarch64 +++++++ # Like iconv, run aarch64 after amd64 and i686, since it fails to # build the resource file and needs sed to be used on Makefile.in. cd ~/mpv-build-deps/libgpg-error/libgpg-error-build/aarch64 && \ sed -i 's/(RCCOMPILE)/(RCCOMPILE) -I\/usr\/llvm-mingw\/generic-w64-mingw32\/include/' ../../src/Makefile.in && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --program-prefix=aarch64-w64-mingw32- --disable-nls --disable-rpath \ --enable-static --enable-silent-rules --disable-shared --disable-doc \ --disable-tests --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgpg-error-mingw-aarch64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo cp src/gpg-error-config /usr/aarch64-w64-mingw32/bin && \ mv *.deb ~/mingw_debs/aarch64 Dependency: libgcrypt ===================== cd ~/mpv-build-deps && \ git clone git://git.gnupg.org/libgcrypt.git && \ autoreconf -fiv libgcrypt && \ mkdir -p libgcrypt/libgcrypt-build/{i686,amd64,aarch64} && \ amd64 +++++ # It's failing the exact same way libgpg-error did, so use the same tactic. # 64-bit libgcrypt-config is not getting installed cd ~/mpv-build-deps/libgcrypt/libgcrypt-build/amd64 && \ CFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --enable-static --disable-shared --disable-doc \ --datarootdir=/usr/x86_64-w64-mingw32/share/libgcrypt \ --with-gpg-error-prefix=/usr/x86_64-w64-mingw32 --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgcrypt-mingw-amd64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo ln -s /usr/x86_64-w64-mingw32/bin/libgcrypt-config /usr/x86_64-w64-mingw32/bin/x86_64-w64-mingw32-libgcrypt-config && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ # It's failing the exact same way libgpg-error did, so use the same tactic. # asm is not supported on 32-bit, so disable it cd ~/mpv-build-deps/libgcrypt/libgcrypt-build/i686 && \ CFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ RC="x86_64-w64-mingw32-windres -F pe-i386" ../../configure \ --prefix=/usr/i686-w64-mingw32 --enable-static --disable-shared \ --disable-doc --datarootdir=/usr/i686-w64-mingw32/share/libgcrypt \ --with-gpg-error-prefix=/usr/i686-w64-mingw32 --enable-silent-rules \ --disable-asm --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgcrypt-mingw-i686 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo ln -s /usr/i686-w64-mingw32/bin/libgcrypt-config /usr/i686-w64-mingw32/bin/i686-w64-mingw32-libgcrypt-config && \ mv *.deb ~/mingw_debs/i686 aarch64 +++++++ # It's failing the exact same way libgpg-error did, so use the same tactic. # 64-bit libgcrypt-config is not getting installed # Like iconv and libgpg-error, run aarch64 after amd64 and i686, since it fails to # build the resource file and needs sed to be used on Makefile.in. cd ~/mpv-build-deps/libgcrypt/libgcrypt-build/aarch64 && \ sed -i 's/(RCCOMPILE)/(RCCOMPILE) -I\/usr\/llvm-mingw\/generic-w64-mingw32\/include/' ../../src/Makefile.in && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --enable-static --disable-shared --disable-doc \ --datarootdir=/usr/aarch64-w64-mingw32/share/libgcrypt \ --with-gpg-error-prefix=/usr/aarch64-w64-mingw32 --enable-silent-rules \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libgcrypt-mingw-aarch64 --pkgversion="$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ sudo ln -s /usr/aarch64-w64-mingw32/bin/libgcrypt-config /usr/aarch64-w64-mingw32/bin/aarch64-w64-mingw32-libgcrypt-config && \ mv *.deb ~/mingw_debs/aarch64 Dependency: libudfread ====================== # Currently, libbluray embeds libudfread as a submodule, but # this is for whenever it *won't* do that. # libaacs now apparently requires libudfread, so make sure # this gets built first. cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libudfread.git && \ autoreconf -fiv libudfread && \ mkdir -p libudfread/libudfread-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libudfread/libudfread-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libudfread-mingw-amd64 --pkgversion="$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libudfread/libudfread-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libudfread-mingw-aarch64 --pkgversion="$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libudfread/libudfread-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libudfread-mingw-i686 --pkgversion="$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libaacs =================== cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libaacs.git && \ autoreconf -fiv libaacs && \ mkdir -p libaacs/libaacs-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libaacs/libaacs-build/amd64 && \ CPPFLAGS="-march=core2" \ LIBS+="-L/usr/x86_64-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --with-libgcrypt-prefix=/usr/x86_64-w64-mingw32 \ --with-gpg-error-prefix=/usr/x86_64-w64-mingw32 \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libaacs-mingw-amd64 --pkgversion="$(grep Version \ src/libaacs.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libaacs/libaacs-build/aarch64 && \ LIBS+="-L/usr/aarch64-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --with-libgcrypt-prefix=/usr/aarch64-w64-mingw32 \ --with-gpg-error-prefix=/usr/aarch64-w64-mingw32 \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libaacs-mingw-aarch64 --pkgversion="$(grep Version \ src/libaacs.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libaacs/libaacs-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/libs" \ LIBS+="-L/usr/i686-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/i686-w64-mingw32 \ --with-libgcrypt-prefix=/usr/i686-w64-mingw32 \ --with-gpg-error-prefix=/usr/i686-w64-mingw32 \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libaacs-mingw-i686 --pkgversion="$(grep Version \ src/libaacs.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libbdplus ===================== cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/libbdplus.git && \ autoreconf -fiv libbdplus && \ mkdir -p libbdplus/libbdplus-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libbdplus/libbdplus-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-march=core2" \ LIBS+="-L/usr/x86_64-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --with-libgcrypt-prefix=/usr/x86_64-w64-mingw32 \ --with-gpg-error-prefix=/usr/x86_64-w64-mingw32 \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbdplus-mingw-amd64 --pkgversion="$(grep Version \ src/libbdplus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libbdplus/libbdplus-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ LIBS+="-L/usr/aarch64-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --with-libgcrypt-prefix=/usr/aarch64-w64-mingw32 \ --with-gpg-error-prefix=/usr/aarch64-w64-mingw32 \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbdplus-mingw-aarch64 --pkgversion="$(grep Version \ src/libbdplus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libbdplus/libbdplus-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ LIBS+="-L/usr/i686_64-w64-mingw32/lib -lgpg-error -lws2_32" \ ../../configure --prefix=/usr/i686-w64-mingw32 \ --with-libgcrypt-prefix=/usr/i686-w64-mingw32 \ --with-gpg-error-prefix=/usr/i686-w64-mingw32 \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbdplus-mingw-i686 --pkgversion="$(grep Version \ src/libbdplus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libxml2 =================== cd ~/mpv-build-deps && \ git clone https://gitlab.gnome.org/GNOME/libxml2.git && \ autoreconf -fiv libxml2 && \ mkdir -p libxml2/libxml2-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libxml2/libxml2-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --without-python --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxml2-mingw-amd64 --pkgversion="$(grep Version \ libxml-2.0.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libxml2/libxml2-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --without-python --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxml2-mingw-aarch64 --pkgversion="$(grep Version \ libxml-2.0.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libxml2/libxml2-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --without-python --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxml2-mingw-i686 --pkgversion="$(grep Version \ libxml-2.0.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libxslt =================== cd ~/mpv-build-deps && \ git clone https://gitlab.gnome.org/GNOME/libxslt.git && \ autoreconf -fiv libxslt && \ mkdir -p libxslt/libxslt-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libxslt/libxslt-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --with-libxml-prefix=/usr/x86_64-w64-mingw32 --without-python \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libxslt.spec && \ sudo checkinstall --pkgname=libxslt-mingw-amd64 --pkgversion="$(grep Version \ libxslt.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libxslt/libxslt-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --with-libxml-prefix=/usr/aarch64-w64-mingw32 --without-python \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libxslt.spec && \ sudo checkinstall --pkgname=libxslt-mingw-aarch64 --pkgversion="$(grep Version \ libxslt.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libxslt/libxslt-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --with-libxml-prefix=/usr/i686-w64-mingw32 --without-python \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libxslt.spec && \ sudo checkinstall --pkgname=libxslt-mingw-i686 --pkgversion="$(grep Version \ libxslt.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libbluray ===================== # --disable-bdjava-jar because exact Java versions on build and run # are required, somewhat like the Python restrictions with VapourSynth # (except those are easier to work around). mpv can't interface with # disc menus anyway. cd ~/mpv-build-deps && \ git clone --recursive https://code.videolan.org/videolan/libbluray.git && \ autoreconf -fiv libbluray && \ mkdir -p libbluray/libbluray-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libbluray/libbluray-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --disable-examples \ --disable-bdjava-jar --disable-shared --disable-doxygen-doc \ --disable-doxygen-dot --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbluray-mingw-amd64 --pkgversion="$(grep Version \ src/libbluray.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libbluray/libbluray-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/aarch64-w64-mingw32/lib ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-examples \ --disable-bdjava-jar --disable-shared --disable-doxygen-doc \ --disable-doxygen-dot --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbluray-mingw-aarch64 --pkgversion="$(grep Version \ src/libbluray.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libbluray/libbluray-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/i686-w64-mingw32/lib ../../configure \ --prefix=/usr/i686-w64-mingw32 --disable-examples \ --disable-bdjava-jar --disable-shared --disable-doxygen-doc \ --disable-doxygen-dot --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbluray-mingw-i686 --pkgversion="$(grep Version \ src/libbluray.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 //////////////////////////// /// Optional I/O drivers //////////////////////////// ++++++++++++++++++++++++++ + Input drivers: libcdio ++++++++++++++++++++++++++ Dependency: libcdio =================== cd ~/mpv-build-deps && \ git clone git://git.savannah.gnu.org/libcdio.git && \ touch libcdio/{doc/version.texi,src/cd-drive.1,src/cd-info.1,src/cd-read.1,src/iso-info.1,src/iso-read.1} && \ autoreconf -fiv libcdio && \ mkdir -p libcdio/libcdio-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libcdio/libcdio-build/amd64 && \ CPPFLAGS="-march=core2 -U_HAVE_STRNDUP" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --disable-shared --disable-cddb \ --disable-cxx --disable-vcd-info --host=x86_64-w64-mingw32 \ --datarootdir=/usr/x86_64-w64-mingw32/share/libcdio && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-mingw-amd64 --pkgversion="$(grep Version \ libcdio.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libcdio/libcdio-build/aarch64 && \ CPPFLAGS="-U_HAVE_STRNDUP" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared --disable-cddb \ --disable-cxx --disable-vcd-info --host=aarch64-w64-mingw32 \ --datarootdir=/usr/aarch64-w64-mingw32/share/libcdio && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-mingw-aarch64 --pkgversion="$(grep Version \ libcdio.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libcdio/libcdio-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -U_HAVE_STRNDUP" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/i686-w64-mingw32 --disable-shared --disable-cddb \ --disable-cxx --disable-vcd-info --host=x86_64-w64-mingw32 \ --datarootdir=/usr/i686-w64-mingw32/share/libcdio && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-mingw-i686 --pkgversion="$(grep Version \ libcdio.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libcdio-paranoia ============================ cd ~/mpv-build-deps && \ git clone https://github.com/rocky/libcdio-paranoia && \ autoreconf -fiv libcdio-paranoia && \ mkdir -p libcdio-paranoia/libcdio-paranoia-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libcdio-paranoia/libcdio-paranoia-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --disable-shared --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-paranoia-mingw-amd64 --pkgversion="$(grep \ Version libcdio_paranoia.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libcdio-paranoia/libcdio-paranoia-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared --enable-silent-rules \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-paranoia-mingw-aarch64 --pkgversion="$(grep \ Version libcdio_paranoia.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libcdio-paranoia/libcdio-paranoia-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/i686-w64-mingw32 --disable-shared --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcdio-paranoia-mingw-i686 --pkgversion="$(grep \ Version libcdio_paranoia.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 +++++++++++++++++++++++++++++++++++++++ + Input drivers: Networking protocols +++++++++++++++++++++++++++++++++++++++ Dependency: mbedTLS =================== # mbedTLS, formerly known as PolarSSL, is an independent, # GPL-compatible SSL/TLS implementation that builds quickly # and doesn't require the tangle of tricky dependencies that # GnuTLS does. It's also preferable to Windows' native SSL # implementation. # mbedtls is also preferred over gcrypt for the things # FFmpeg uses gcrypt for, so when configuring FFmpeg, # --enable-mbedtls and --enable-gcrypt should be considered # mutually exclusive. gcrypt is still necessary as part of # libaacs' build dependencies, though. # The submodules for crypto in the development branch cause # issues with FFmpeg, default to stable branch v2.28.0. / 3.1.0 cd ~/mpv-build-deps && \ git clone https://github.com/ARMmbed/mbedtls && \ cd mbedtls && \ git checkout -b v3.4.0 && \ mkdir -p mbedtls-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/mbedtls/mbedtls-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DENABLE_TESTING:bool=off && \ ninja && \ sudo checkinstall --pkgname=mbedtls-mingw-amd64 --pkgversion="$(git describe --tags | \ cut -f2 -d '-')-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # Currently has issues compiling for Windows on ARM. cd ~/mpv-build-deps/mbedtls/mbedtls-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DENABLE_TESTING:bool=off && \ ninja && \ sudo checkinstall --pkgname=mbedtls-mingw-aarch64 --pkgversion="$(git describe --tags | \ cut -f2 -d '-')-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/mbedtls/mbedtls-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DENABLE_TESTING:bool=off && \ ninja && \ sudo checkinstall --pkgname=mbedtls-mingw-i686 --pkgversion="$(git describe --tags | \ cut -f2 -d '-')-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no \ --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/i686 +++++++++++++++++++++++++++++++ + Output drivers: Direct3D 11 +++++++++++++++++++++++++++++++ Dependency: shaderc =================== cd ~/mpv-build-deps && \ git clone https://github.com/google/shaderc && \ cd shaderc && \ git checkout known-good && \ mkdir -p shaderc-build/{i686,amd64,aarch64} && \ ./update_shaderc_sources.py && \ # To use mpv's vo_gpu_next, libplacebo needs the following: # copy shaderc_static.pc to shaderc.pc, rename the existing # shaderc.pc to shaderc_shared.pc. # in shaderc_static, remove -lshaderc_util from the link list; # it doesn't exist. amd64 +++++ cd ~/mpv-build-deps/shaderc/shaderc-build/amd64 && \ cmake ../../src/ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" \ -DCMAKE_BUILD_TYPE=Release -DSHADERC_SKIP_TESTS:bool=on && \ ninja && \ mv shaderc.pc shaderc_shared.pc && \ mv shaderc_static.pc shaderc.pc && \ sed -i 's/-lshaderc_util//g' shaderc.pc && \ sudo checkinstall --pkgname=shaderc-mingw-amd64 --pkgversion="$(head -1 \ build-version.inc | cut -f3 -d " " | sed -e 's/^v//' -e 's/\\n\"//')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/shaderc/shaderc-build/aarch64 && \ cmake ../../src/ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_BUILD_TYPE=Release -DSHADERC_SKIP_TESTS:bool=on && \ ninja && \ mv shaderc.pc shaderc_shared.pc && \ mv shaderc_static.pc shaderc.pc && \ sed -i 's/-lshaderc_util//g' shaderc.pc && \ sudo checkinstall --pkgname=shaderc-mingw-aarch64 --pkgversion="$(head -1 \ build-version.inc | cut -f3 -d " " | sed -e 's/^v//' -e 's/\\n\"//')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/shaderc/shaderc-build/i686 && \ cmake ../../src/ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_EXE_LINKER_FLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ -DCMAKE_BUILD_TYPE=Release -DSHADERC_SKIP_TESTS:bool=on && \ ninja && \ mv shaderc.pc shaderc_shared.pc && \ mv shaderc_static.pc shaderc.pc && \ sed -i 's/-lshaderc_util//g' shaderc.pc && \ sudo checkinstall --pkgname=shaderc-mingw-i686 --pkgversion="$(head -1 \ build-version.inc | cut -f3 -d " " | sed -e 's/^v//' -e 's/\\n\"//')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: SPIRV-Cross ======================= # SPIRV-Cross only installs the .pc file if building as shared, # so we need to move the SPRIV_CROSS_SHARED check to below the # pkgconfig install section. cd ~/mpv-build-deps && \ git clone https://github.com/KhronosGroup/SPIRV-Cross && \ #cd SPIRV-Cross && \ #sed -i -e '347iif (SPIRV_CROSS_SHARED)' -e '338d' CMakeLists.txt && \ mkdir -p SPIRV-Cross/spirvcross-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/SPIRV-Cross/spirvcross-build/amd64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" \ -DSPIRV_CROSS_ENABLE_TESTS:bool=off && \ ninja && \ #sed -i 's/-shared//g' spirv-cross-c-shared.pc && \ #cp spirv-cross-c-shared.pc spirv-cross.pc && \ sudo checkinstall --pkgname=spirvcross-mingw-amd64 --pkgversion="$(grep Version \ spirv-cross-c.pc | cut -f2 -d " ")-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ #sudo cp spirv-cross.pc /usr/x86_64-w64-mingw32/lib/pkgconfig && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/SPIRV-Cross/spirvcross-build/aarch64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DSPIRV_CROSS_ENABLE_TESTS:bool=off && \ ninja && \ #sed -i 's/-shared//g' spirv-cross-c-shared.pc && \ #cp spirv-cross-c-shared.pc spirv-cross.pc && \ sudo checkinstall --pkgname=spirvcross-mingw-aarch64 --pkgversion="$(grep Version \ spirv-cross-c.pc | cut -f2 -d " ")-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ #sudo cp spirv-cross.pc /usr/aarch64-w64-mingw32/lib/pkgconfig && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # may need to change name in spirv-cross.pc to spirv-cross instead of spirv-cross-c cd ~/mpv-build-deps/SPIRV-Cross/spirvcross-build/i686 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_EXE_LINKER_FLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ -DSPIRV_CROSS_ENABLE_TESTS:bool=off && \ ninja && \ #sed -i 's/-shared//g' spirv-cross-c-shared.pc && \ #cp spirv-cross-c-shared.pc spirv-cross.pc && \ sudo checkinstall --pkgname=spirvcross-mingw-i686 --pkgversion="$(grep Version \ spirv-cross-c.pc | cut -f2 -d " ")-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ #sudo cp spirv-cross.pc /usr/i686-w64-mingw32/lib/pkgconfig && \ mv *.deb ~/mingw_debs/i686 ++++++++++++++++++++++++++ + Output drivers: Vulkan ++++++++++++++++++++++++++ # Currently, there's a linking failure in libkernel32.a with Vulkan and mpv when # cross-compiling. Dependency: Vulkan-Headers ========================== cd ~/mpv-build-deps && \ git clone https://github.com/KhronosGroup/Vulkan-Headers && \ mkdir -p Vulkan-Headers/vulkan-headers-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/Vulkan-Headers/vulkan-headers-build/amd64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 && \ sudo checkinstall --pkgname=vulkan-headers-mingw-amd64 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/Vulkan-Headers/vulkan-headers-build/aarch64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 && \ sudo checkinstall --pkgname=vulkan-headers-mingw-aarch64 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/Vulkan-Headers/vulkan-headers-build/i686 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 && \ sudo checkinstall --pkgname=vulkan-headers-mingw-i686 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: Vulkan-Loader ========================= cd ~/mpv-build-deps && \ wget https://downloads.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v10.0.0.tar.bz2 -O - | tar -xjvf - && \ cd ~/mpv-build-deps && \ git clone https://github.com/KhronosGroup/Vulkan-Loader && \ cd Vulkan-Loader && \ wget https://raw.githubusercontent.com/m-ab-s/mabs-patches/master/vulkan-loader/0001-loader-cross-compile-static-linking-hacks.patch \ https://raw.githubusercontent.com/m-ab-s/mabs-patches/master/vulkan-loader/0002-pc-remove-CMAKE_CXX_IMPLICIT_LINK_LIBRARIES.patch && \ git am *.patch && \ #sed -i -e 's/vulkan PRIVATE cfgmgr32/vulkan PRIVATE cfgmgr32 kernel32/' -e 's/lcfgmgr32/lcfgmgr32 -lkernel32/' -e '218,221s/^/#/' loader/CMakeLists.txt && \ mkdir -p vulkan-loader-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/Vulkan-Loader/vulkan-loader-build/amd64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" \ -DBUILD_TESTS:bool=off -DCMAKE_SYSROOT=/usr/x86_64-w64-mingw32 \ -DCMAKE_SYSTEM_PROCESSOR=amd64 -DBUILD_STATIC_LOADER:bool=on \ -DENABLE_WERROR:bool=off && \ ninja && \ sudo checkinstall --pkgname=vulkan-loader-mingw-amd64 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/Vulkan-Loader/vulkan-loader-build/aarch64 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_TESTS:bool=off -DCMAKE_SYSROOT=/usr/llvm-mingw/aarch64-w64-mingw32 \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DBUILD_STATIC_LOADER:bool=on \ -DENABLE_WERROR:bool=off && \ ninja && \ sudo checkinstall --pkgname=vulkan-loader-mingw-aarch64 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/Vulkan-Loader/vulkan-loader-build/i686 && \ cmake ../../ -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_EXE_LINKER_FLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ -DBUILD_TESTS:bool=off -DCMAKE_SYSROOT=/usr/i686-w64-mingw32 \ -DCMAKE_SYSTEM_PROCESSOR=i686 -DBUILD_STATIC_LOADER:bool=on \ -DENABLE_WERROR:bool=off && \ ninja && \ sudo checkinstall --pkgname=vulkan-loader-mingw-i686 --pkgversion="$(git \ describe --tags | sed 's/^v//')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libdovi =================== Set up Rust (one time, move to top of guide): sudo apt-get install rustc cargo cargo install cargo-c (add/verify ~/.cargo/bin to .bashrc) sudo su cargo install cargo-c (add ~/.cargo/bin to root's .bashrc) exit Set up rustup to get the cross toolchains sudo snap install rustup --classic sudo apt-get install rust-src librust-winapi-x86-64-pc-windows-gnu-dev librust-winapi-i686-pc-windows-gnu-dev rustup install stable rustup default stable rustup target add x86_64-pc-windows-gnu rustup toolchain install stable-x86_64-pc-windows-gnu rustup target add i686-pc-windows-gnu rustup toolchain install stable-i686-pc-windows-gnu # the aarch64 target needs more work #rustup target add aarch64-pc-windows-gnu rustup component add rust-src # It'll probably complain, so just touch a lockfile where it asks for it sudo touch /usr/lib/rustlib/src/rust/Cargo.lock cargo build -Z build-std --target=aarch64-pc-windows-gnu libdovi: git clone https://github.com/quietvoid/dovi_tool cd dovi_tool cargo build --release --target=x86_64-pc-windows-gnu (i686-pc-windows-gnu, aarch64-pc-windows-gnullvm) cargo install --path ~/mpv-build-deps/dovi_tool --target=x86_64-pc-windows-gnu cd dolby_vision sudo cargo cinstall --release Dependency: libplacebo ====================== # dependency change: add libdovi; can't cross-compile, disable # Vulkan has issues, so just disable it. cd ~/mpv-build-deps && \ git clone --recursive https://code.videolan.org/videolan/libplacebo.git && \ #cd libplacebo && \ #sed -i 's/shaderc_shared/shaderc/' src/meson.build && \ sed -i 's/spirv-cross-c-shared/spirv-cross-c/' src/d3d11/meson.build && \ mkdir -p libplacebo/libplacebo-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libplacebo/libplacebo-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/spirv_cross" \ meson setup ../.. --prefix=/usr/x86_64-w64-mingw32 \ --libdir=/usr/x86_64-w64-mingw32/lib --default-library static \ --cross-file x86_64-w64-mingw32 -Dd3d11=enabled -Ddovi=disabled \ -Ddemos=false && \ ninja && \ sudo checkinstall --pkgname=libplacebo-mingw-amd64 --pkgversion="$(grep Version \ meson-private/libplacebo.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libplacebo/libplacebo-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include -I/usr/aarch64-w64-mingw32/include/spirv_cross" \ meson setup ../.. --prefix=/usr/aarch64-w64-mingw32 \ --libdir=/usr/aarch64-w64-mingw32/lib --default-library static \ --cross-file aarch64-w64-mingw32 -Ddovi=disabled -Ddemos=false && \ ninja && \ sudo checkinstall --pkgname=libplacebo-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/libplacebo.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libplacebo/libplacebo-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/spirv_cross" \ meson setup ../.. --prefix=/usr/i686-w64-mingw32 \ --libdir=/usr/i686-w64-mingw32/lib --default-library static \ --cross-file x86_64-w64-mingw32-multilib32 -Ddovi=disabled -Ddemos=false \ -Dc_link_args="-m32 -L/usr/i686-w64-mingw32/lib" && \ ninja && \ sudo checkinstall --pkgname=libplacebo-mingw-i686 --pkgversion="$(grep Version \ meson-private/libplacebo.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 +++++++++++++++++++++++++++++++++ + Output drivers: Miscellaneous +++++++++++++++++++++++++++++++++ Dependency: libcaca =================== cd ~/mpv-build-deps && \ git clone https://github.com/cacalabs/libcaca && \ touch libcaca/ChangeLog && \ sed -i -e '617,631d' -e '352,356d' -e '358d' -e '39,47d' libcaca/caca/string.c && \ sed -i -e '643,662d' libcaca/caca/figfont.c && \ sed -i -e 's/src //g' -e 's/examples //g' libcaca/Makefile.am && \ sed -i -e '15s/^CFLAGS +=/AM_CFLAGS =/' libcaca/ruby/Makefile.am && \ autoreconf -fiv libcaca && \ mkdir -p libcaca/libcaca-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libcaca/libcaca-build/amd64 && \ CPPFLAGS="-march=core2 -DCACA_STATIC" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --disable-doc --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcaca-mingw-amd64 --pkgversion="$(grep Version \ caca/caca.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libcaca/libcaca-build/aarch64 && \ CPPFLAGS="-DCACA_STATIC" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --disable-doc --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcaca-mingw-aarch64 --pkgversion="$(grep Version \ caca/caca.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libcaca/libcaca-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DCACA_STATIC" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --disable-doc --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libcaca-mingw-i686 --pkgversion="$(grep Version \ caca/caca.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: SDL 2.0 =================== cd ~/mpv-build-deps && \ wget http://www.libsdl.org/release/SDL2-2.26.1.tar.gz -O - | tar -xzvf - && \ sed -i -e 's/WINDOWS OR CYGWIN/MSVC OR CYGWIN/g' \ -e 's/-mwindows//g' SDL2-2.26.1/CMakeLists.txt && \ mkdir -p SDL2-2.26.1/sdl2-build/{i686,amd64,aarch64} && \ amd64 +++++ # after CMake step, rearrange sdl2.pc libs to be mingw32->SDLmain->SDL, with only one copy, # at the beginning of the list cd ~/mpv-build-deps/SDL2-2.26.1/sdl2-build/amd64 && \ CFLAGS="-march=core2" cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DBUILD_SHARED_LIBS:bool=off \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" && \ sed -i 's/-L${libdir} -lmingw32 -lSDL2main -lSDL2 -lmingw32 -lSDL2main -lSDL2 /-L${libdir} -lmingw32 -lSDL2main -lSDL2/' sdl2.pc && \ ninja && \ sudo checkinstall --pkgname=sdl2-mingw-amd64 --pkgversion="$(grep Version \ sdl2.pc | sed 's/: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # after CMake step, rearrange sdl2.pc libs to be mingw32->SDLmain->SDL, with only one copy, # at the beginning of the list cd ~/mpv-build-deps/SDL2-2.26.1/sdl2-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DCMAKE_SYSTEM_PROCESSOR=aarch64 && \ sed -i 's/-L${libdir} -lmingw32 -lSDL2main -lSDL2 -lmingw32 -lSDL2main -lSDL2 /-L${libdir} -lmingw32 -lSDL2main -lSDL2/' sdl2.pc && \ ninja && \ sudo checkinstall --pkgname=sdl2-mingw-aarch64 --pkgversion="$(grep Version \ sdl2.pc | sed 's/: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # after CMake step, rearrange sdl2.pc libs to be mingw32->SDLmain->SDL, with only one copy, # at the beginning of the list cd ~/mpv-build-deps/SDL2-2.26.1/sdl2-build/i686 && \ CFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DBUILD_SHARED_LIBS:bool=off \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" && \ sed -i 's/-L${libdir} -lmingw32 -lSDL2main -lSDL2 -lmingw32 -lSDL2main -lSDL2 /-L${libdir} -lmingw32 -lSDL2main -lSDL2/' sdl2.pc && \ ninja && \ sudo checkinstall --pkgname=sdl2-mingw-i686 --pkgversion="$(grep Version \ sdl2.pc | sed 's/: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: openal ================== # Add lstdc++ to Libs.private for FFmpeg to link correctly. cd ~/mpv-build-deps && \ git clone git://repo.or.cz/openal-soft.git && \ sed -i -e '10s/$/ -lole32/' -e '11s/$/ -lstdc++/' openal-soft/openal.pc.in && \ mkdir -p openal-soft/openal-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/openal-soft/openal-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DLIBTYPE=STATIC -DALSOFT_UTILS:bool=off -DALSOFT_EXAMPLES:bool=off \ -DALSOFT_BACKEND_WINMM:bool=off -DALSOFT_BACKEND_PIPEWIRE:bool=off \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" && \ ninja && \ sudo checkinstall --pkgname=openal-mingw-amd64 --pkgversion="$(grep Version \ openal.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/openal-soft/openal-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DLIBTYPE=STATIC -DALSOFT_UTILS:bool=off -DALSOFT_EXAMPLES:bool=off \ -DALSOFT_BACKEND_WINMM:bool=off -DALSOFT_BACKEND_PIPEWIRE:bool=off \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" && \ sed -i 's/stdc/c/' openal.pc && \ ninja && \ sudo checkinstall --pkgname=openal-mingw-aarch64 --pkgversion="$(grep Version \ openal.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/openal-soft/openal-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DLIBTYPE=STATIC -DALSOFT_UTILS:bool=off -DALSOFT_EXAMPLES:bool=off \ -DALSOFT_BACKEND_WINMM:bool=off -DALSOFT_BACKEND_PIPEWIRE:bool=off \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" && \ ninja && \ sudo checkinstall --pkgname=openal-mingw-i686 --pkgversion="$(grep Version \ openal.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 +++++++++++++++++++ + Filter: vid.stab +++++++++++++++++++ cd ~/mpv-build-deps && \ git clone https://github.com/georgmartius/vid.stab && \ mkdir -p vid.stab/vidstab-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/vid.stab/vidstab-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=vidstab-mingw-amd64 --pkgversion="$(grep Version \ vidstab.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/vid.stab/vidstab-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=vidstab-mingw-aarch64 --pkgversion="$(grep Version \ vidstab.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/vid.stab/vidstab-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=vidstab-mingw-i686 --pkgversion="$(grep Version \ vidstab.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 ++++++++++++++++++ + Filter: libsoxr ++++++++++++++++++ cd ~/mpv-build-deps && \ git clone git://git.code.sf.net/p/soxr/code libsoxr && \ mkdir -p libsoxr/libsoxr-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libsoxr/libsoxr-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DWITH_OPENMP:bool=off -DWITH_CR32S:bool=off \ -DWITH_CR64S:bool=on -DBUILD_EXAMPLES:bool=off -DBUILD_TESTS:bool=off -DBUILD_LSR_TESTS:bool=off \ -DCMAKE_C_FLAGS="-march=core2" && \ ninja && \ sudo checkinstall --pkgname=libsoxr-mingw-amd64 --pkgversion="$(grep -r \ SOXR_THIS_VERSION_STR ../../src/soxr.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libsoxr/libsoxr-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DWITH_OPENMP:bool=off -DWITH_CR32S:bool=off \ -DWITH_CR64S:bool=on -DBUILD_EXAMPLES:bool=off -DBUILD_TESTS:bool=off -DBUILD_LSR_TESTS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libsoxr-mingw-aarch64 --pkgversion="$(grep -r \ SOXR_THIS_VERSION_STR ../../src/soxr.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libsoxr/libsoxr-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DWITH_OPENMP:bool=off -DWITH_CR32S:bool=on \ -DWITH_CR64S:bool=off -DBUILD_EXAMPLES:bool=off -DBUILD_TESTS:bool=off -DBUILD_LSR_TESTS:bool=off \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" && \ ninja && \ sudo checkinstall --pkgname=libsoxr-mingw-i686 --pkgversion="$(grep -r \ SOXR_THIS_VERSION_STR ../../src/soxr.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 +++++++++++++++ + Filter: zimg +++++++++++++++ cd ~/mpv-build-deps && \ git clone --recursive https://github.com/sekrit-twc/zimg && \ autoreconf -fiv zimg && \ sed -i 's/Windows.h/windows.h/' zimg/src/zimg/common/arm/cpuinfo_arm.cpp && \ mkdir -p zimg/zimg-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/zimg/zimg-build/amd64 && \ CPPFLAGS="-march=core2" ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --disable-shared --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zimg-mingw-amd64 --pkgversion="$(grep Version \ zimg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/zimg/zimg-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zimg-mingw-aarch64 --pkgversion="$(grep Version \ zimg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/zimg/zimg-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=zimg-mingw-i686 --pkgversion="$(grep Version \ zimg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 ++++++++++++++++++++++ + Demuxer: AviSynth+ ++++++++++++++++++++++ Dependency: DirectShow BaseClasses ================================== # Required only to build the DirectShowSource plugin, # which shouldn't be anything other than a last resort # these days. And DirectShowSource doesn't build with # GCC yet, making this moot at the current time. cd ~/mpv-build-deps && \ wget http://devel.ag-projects.com/repositories/windows/mingw-w64-dshow-baseclasses/baseclasses.tgz -O - | tar -xzvf - && \ cd BaseClasses && \ mkdir -p baseclasses-build/i686/{include,lib} \ baseclasses-build/amd64/{include,lib} \ baseclasses-build/aarch64/{include,lib} && \ cp *.h baseclasses-build/i686/include && \ cp *.h baseclasses-build/amd64/include && \ cp *.h baseclasses-build/aarch64/include && \ sed -i -e '20s/=/=$(CROSS)/' -e '21s/=/=$(EXTRA_CXXFLAGS) /' Makefile && \ amd64 +++++ make -j$(nproc) CROSS=x86_64-w64-mingw32- EXTRA_CXXFLAGS="-march=core2" && \ cp *.a baseclasses-build/amd64/lib && \ cd baseclasses-build/amd64 && \ sudo checkinstall --pkgname=dshowbaseclasses-mingw-amd64 --pkgversion=7 \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default cp -R * /usr/x86_64-w64-mingw32 && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ cd ~/mpv-build-deps/BaseClasses && \ make clean && \ make -j$(nproc) CROSS=x86_64-w64-mingw32- EXTRA_CXXFLAGS="-m32 \ -I/usr/i686-w64-mingw32/include -mfpmath=sse -march=pentium3 \ -msse -mtune=pentium3" && \ cp *.a baseclasses-build/i686/lib && \ cd baseclasses-build/i686 && \ sudo checkinstall --pkgname=dshowbaseclasses-mingw-i686 --pkgversion=7 \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default cp -R * /usr/i686-w64-mingw32 && \ mv *.deb ~/mingw_debs/i686 aarch64 +++++++ # needs to be run after amd64/i686 because we have to sed the Makefile again cd ~/mpv-build-deps/BaseClasses && \ make clean && \ sed -i 's/-fno-for-scope//g' Makefile && \ make -j$(nproc) CROSS=aarch64-w64-mingw32- && \ cp *.a baseclasses-build/aarch64/lib && \ cd baseclasses-build/aarch64 && \ sudo checkinstall --pkgname=dshowbaseclasses-mingw-aarch64 --pkgversion=7 \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default cp -R * /usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 Dependency: AviSynth+ ===================== # AviSynth+ doesn't actually get linked to anything here, # since x264 and FFmpeg (and by extension, anything that # uses FFmpeg) load AviSynth.dll dynamically at runtime. # Further, 32-bit GCC builds of AviSynth+ require an # entirely separate build of FFmpeg, as documented later. # Cutting down on the possible confusion here is one reason # I'm putting this in the guide. # DirectShowSource also can't yet build with GCC, # but it's disabled by default due to requiring # external dependencies. cd ~/mpv-build-deps && \ git clone https://github.com/AviSynth/AviSynthPlus && \ mkdir -p AviSynthPlus/avisynth-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=amd64 && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-amd64 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DBUILD_VDUBFILTER:bool=off \ -DBUILD_SHIBATCH:bool=off && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-aarch64 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32" -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_RC_FLAGS="-F pe-i386" \ -DCMAKE_SYSTEM_PROCESSOR=i686 && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-i686 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Headers-only (amd64) ++++++++++++++++++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DHEADERS_ONLY:bool=on && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-amd64 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install Headers-only (aarch64) ++++++++++++++++++++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DHEADERS_ONLY:bool=on && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-aarch64 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install Headers-only (i686) +++++++++++++++++++ cd ~/mpv-build-deps/AviSynthPlus/avisynth-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DHEADERS_ONLY:bool=on && \ ninja && \ sudo checkinstall --pkgname=avisynthplus-mingw-i686 --pkgversion="$(grep -r \ Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install ++++++++++++++++++++++++ + Demuxer: VapourSynth ++++++++++++++++++++++++ Dependency: Python 3 ==================== # Test with Python 3.11.4 and VapourSynth R62 # Python is notoriously difficult to cross-compile, but luckily # it's fairly easy to use the already-packaged distribution of # Python for Windows, with the headers from a normal Python # source tarball. # --build lets it build, but --host doesn't? cd ~/mpv-build-deps && \ wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz -O - | tar -xJvf - && \ cd Python-3.11.4 && \ mkdir -p $HOME/pythonheaders/{i686-w64-mingw32/lib/pkgconfig,x86_64-w64-mingw32/lib/pkgconfig,aarch64-w64-mingw32/lib/pkgconfig} && \ sed -i 's/#include /\/\/#include /g' Include/pyport.h && \ CXXFLAGS="-m32" ./configure --prefix=$HOME/pythonheaders/i686-w64-mingw32 \ --build=x86_64-w64-mingw32 && \ make inclinstall && \ cp Misc/python.pc $HOME/pythonheaders/i686-w64-mingw32/lib/pkgconfig && \ make distclean && \ ./configure --prefix=$HOME/pythonheaders/x86_64-w64-mingw32 --build=x86_64-w64-mingw32 && \ make inclinstall && \ cp Misc/python.pc $HOME/pythonheaders/x86_64-w64-mingw32/lib/pkgconfig && \ ./configure --prefix=$HOME/pythonheaders/aarch64-w64-mingw32 --build=aarch64-w64-mingw32 && \ make inclinstall && \ cp Misc/python.pc $HOME/pythonheaders/aarch64-w64-mingw32/lib/pkgconfig && \ amd64 +++++ # In order to accomplish static linking, we have to manipulate the # python311.dll that ships in the embeddable Python zipfile. cd ~/mpv-build-deps && \ wget https://www.python.org/ftp/python/3.11.4/python-3.11.4-embed-amd64.zip && \ 7za x -opython311_amd64 python-3.11.4-embed-amd64.zip && \ cd python311_amd64 && \ gendef python311.dll && \ x86_64-w64-mingw32-dlltool \ --output-delaylib $HOME/pythonheaders/x86_64-w64-mingw32/lib/libpython3.11m.a \ --input-def python311.def && \ aarch64 +++++++ # In order to accomplish static linking, we have to manipulate the # python311.dll that ships in the embeddable Python zipfile. cd ~/mpv-build-deps && \ wget https://www.python.org/ftp/python/3.11.4/python-3.11.4-embed-arm64.zip && \ 7za x -opython311_arm64 python-3.11.4-embed-arm64.zip && \ cd python311_arm64 && \ gendef python311.dll && \ aarch64-w64-mingw32-dlltool \ -l $HOME/pythonheaders/aarch64-w64-mingw32/lib/libpython3.11m.a \ -d python311.def && \ i686 ++++ # In order to accomplish static linking, we have to manipulate the # python311.dll that ships in the embeddable Python zipfile. cd ~/mpv-build-deps && \ wget https://www.python.org/ftp/python/3.11.4/python-3.11.4-embed-win32.zip && \ 7za x -opython311_i686 python-3.11.4-embed-win32.zip && \ cd python311_i686 && \ gendef python311.dll && \ x86_64-w64-mingw32-dlltool -m i386 --as-flags="--32" \ --output-delaylib $HOME/pythonheaders/i686-w64-mingw32/lib/libpython3.11m.a \ --input-def python311.def && \ Final packaging +++++++++++++++ # The following will install the libraries and headers to both 32-bit # and 64-bit directory paths. If building only one or the other, simply navigate # into the i686-w64-mingw32 or x86_64-w64-mingw32 directories under # $HOME/pythonheaders and use the checkinstall command from there. cd $HOME/pythonheaders && \ sed -i -e '1iprefix=/usr/i686-w64-mingw32' -e '1,2d' i686-w64-mingw32/lib/pkgconfig/python.pc && \ sed -i -e '1iprefix=/usr/x86_64-w64-mingw32' -e '1,2d' x86_64-w64-mingw32/lib/pkgconfig/python.pc && \ sed -i -e '1iprefix=/usr/aarch64-w64-mingw32' -e '1,2d' aarch64-w64-mingw32/lib/pkgconfig/python.pc && \ sudo checkinstall --pkgname=python-minimal-mingw --pkgversion="3.11" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default cp -R * /usr && \ mv *.deb ~/mingw_debs Dependency: VapourSynth ======================= cd ~/mpv-build-deps && \ git clone https://github.com/vapoursynth/vapoursynth && \ autoreconf -fiv vapoursynth && \ sed -i -e '31s/Windows/windows/' -e '28i#include ' vapoursynth/src/vsscript/vsscript.cpp && \ sed -i '43s/FORCE_INLINE inline/FORCE_INLINE /' vapoursynth/src/core/genericfilters.cpp && \ sed -i '8s/\"Python.h\"/\/' vapoursynth/include/cython/vapoursynth_api.h && \ mkdir -p vapoursynth/vapoursynth-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/vapoursynth/vapoursynth-build/amd64 && \ CPPFLAGS="-march=core2 -DVS_CORE_EXPORTS" \ PYTHON3_CFLAGS="-I/usr/x86_64-w64-mingw32/include/python3.10" \ PYTHON3_LIBS="-L/usr/x86_64-w64-mingw32/lib -lpython3.10m" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib \ ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --disable-shared --disable-vspipe --disable-python-module \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sed -i '/Requires.private/d' pc/vapoursynth-script.pc && \ sudo checkinstall --pkgname=vapoursynth-mingw-amd64 --pkgversion="$(grep \ Version pc/vapoursynth.pc | sed 's/Version: //g')R-r"$(git rev-list \ --count HEAD)-g"$(git rev-parse --short HEAD)" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ cd ~/mpv-build-deps/vapoursynth/vapoursynth-build/i686 && \ CPPFLAGS="-m32 -DVS_CORE_EXPORTS" LDFLAGS="-m32 -L/usr/i686-w64-mingw32" \ PYTHON3_CFLAGS="-I/usr/i686-w64-mingw32/include/python3.10" \ PYTHON3_LIBS="-L/usr/i686-w64-mingw32/lib -lpython3.10m" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/i686-w64-mingw32/lib \ ../../configure --prefix=/usr/i686-w64-mingw32 \ --disable-shared --disable-vspipe --disable-python-module \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sed -i '/Requires.private/d' pc/vapoursynth-script.pc && \ sudo checkinstall --pkgname=vapoursynth-mingw-i686 --pkgversion="$(grep \ Version pc/vapoursynth.pc | sed 's/Version: //g')R-r"$(git rev-list \ --count HEAD)-g"$(git rev-parse --short HEAD)" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 aarch64 +++++++ # run after building i686, because the commit that # needs to be reverted only applies to aarch64/clang cd ~/mpv-build-deps/vapoursynth && \ git revert 1239124c2d70f32c468326e48bfa7e9362550c36 && \ cd vapoursynth-build/aarch64 && \ CPPFLAGS="-DVS_CORE_EXPORTS" \ PYTHON3_CFLAGS="-I/usr/aarch64-w64-mingw32/include/python3.11" \ PYTHON3_LIBS="-L/usr/aarch64-w64-mingw32/lib -lpython3.11m" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG_LIBDIR=/usr/aarch64-w64-mingw32/lib \ ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --disable-shared --disable-vspipe --disable-python-module \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sed -i '/Requires.private/d' pc/vapoursynth-script.pc && \ sudo checkinstall --pkgname=vapoursynth-mingw-aarch64 --pkgversion="$(grep \ Version pc/vapoursynth.pc | sed 's/Version: //g')R-r"$(git rev-list \ --count HEAD)-g"$(git rev-parse --short HEAD)" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 ///////////////////////// /// Encoders/decoders ///////////////////////// # The following encoders and/or decoders are completely optional, and don't have # an effect on building a functional copy of mpv. Most of these actually end up # getting linked into FFmpeg, which then links into mpv. Dependency: Xvid (32-bit) ========================= # This needs a bit of setup so that Subversion doesn't complain. # In .subversion/config, uncomment the following lines: # password stores = [blank out the options here] # store-passwords = [change to yes] # store-auth-creds = [change to yes] # In .subversion/servers, uncomment/change to yes the store-passwords parameter # And now to actually checkout and build Xvid. cd ~/mpv-build-deps && \ svn checkout http://svn.xvid.org/trunk/xvidcore && \ # Submit the following credentials for Xvid's SVN; instructions # taken from xvid.org's SVN usage instructions. You'll only need # to do this once, as the setup above will store the credentials. # Username: anonymous # Password: cd xvidcore/build/generic && \ sed -i -e '73 s/ $(SHARED_LIB)//' -e '143 s/ $(BUILD_DIR)\/$(SHARED_LIB)//' \ -e '152,166 s/^/#/' -e '221 s/^/#/' Makefile && \ sed -i -e '32i our_cflags_defaults="$our_cflags_defaults $CPPFLAGS"' configure.in && \ ./bootstrap.sh && \ # Xvid's build system is not conducive to out-of-tree builds, and # 'working' attempts to do so end up breaking the version querying # during checkinstall, so just don't. amd64 +++++ CPPFLAGS="-march=core2" \ ./configure --prefix=/usr/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xvidcore-mingw-amd64 --pkgversion="$(grep \ XVID_MAKE_VERSION ../../src/xvid.h | grep XVID_VERSION | \ sed -e 's/(/\t/g' -e 's/)//g' -e 's/,/./g' -e 's/.-/.0-/g' | \ cut -f2)+$(svn info | grep Revision | sed 's/Revision: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ ./configure --prefix=/usr/aarch64-w64-mingw32 --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xvidcore-mingw-aarch64 --pkgversion="$(grep \ XVID_MAKE_VERSION ../../src/xvid.h | grep XVID_VERSION | \ sed -e 's/(/\t/g' -e 's/)//g' -e 's/,/./g' -e 's/.-/.0-/g' | \ cut -f2)+$(svn info | grep Revision | sed 's/Revision: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # --disable-assembly is needed because multilib cross-compilers confuse xvid, # preventing 32-bit builds of FFmpeg from linking to it. make distclean && \ sed -i 's/ARCHITECTURE="X86_64"/ARCHITECTURE="IA32"/g' configure && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ./configure --prefix=/usr/i686-w64-mingw32 --disable-assembly \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=xvidcore-mingw-i686 --pkgversion="$(grep \ XVID_MAKE_VERSION ../../src/xvid.h | grep XVID_VERSION | \ sed -e 's/(/\t/g' -e 's/)//g' -e 's/,/./g' -e 's/.-/.0-/g' | \ cut -f2)+$(svn info | grep Revision | sed 's/Revision: //g')-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: obuparse ==================== cd ~/mpv-build-deps && \ git clone https://github.com/dwbuiten/obuparse && \ amd64 +++++ cd ~/mpv-build-deps/obuparse && \ CROSS=x86_64-w64-mingw32- CPPFLAGS="-march=core2" make install-static PREFIX=obuinstall/amd64 && \ cd obuinstall/amd64 && \ sudo checkinstall --pkgname=obuparse-mingw-amd64 --pkgversion="0:$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default cp -R * /usr/x86_64-w64-mingw32 && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/obuparse && \ make clean && \ CROSS=aarch64-w64-mingw32- make install-static PREFIX=obuinstall/aarch64 && \ cd obuinstall/aarch64 && \ sudo checkinstall --pkgname=obuparse-mingw-aarch64 --pkgversion="0:$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default cp -R * /usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/obuparse && \ make clean && \ CROSS=x86_64-w64-mingw32- CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 \ -msse -mtune=pentium3" LDFLAGS="-m32" make install-static PREFIX=obuinstall/i686 && \ cd obuinstall/i686 && \ sudo checkinstall --pkgname=obuparse-mingw-i686 --pkgversion="0:$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no \ --default cp -R * /usr/i686-w64-mingw32 && \ mv *.deb ~/mingw_debs/i686 Dependency: L-SMASH =================== # L-SMASH is actually only used by x264 (and modded x265, see below). It # can be omitted if you don't plan on using x264.exe, or if you don't # plan on outputting to MP4 from x264.exe. # The main l-smash/l-smash repo appears to be dormant, Vimeo's is # still updated. cd ~/mpv-build-deps && \ git clone https://github.com/vimeo/l-smash && \ mkdir -p l-smash/lsmash-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/l-smash/lsmash-build/amd64 && \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --target-os=mingw32 \ --cross-prefix=x86_64-w64-mingw32- --extra-cflags="-march=core2" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lsmash-mingw-amd64 --pkgversion="0:$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/l-smash/lsmash-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --target-os=mingw32 \ --cross-prefix=aarch64-w64-mingw32- --extra-cflags="-I/usr/aarch64-w64-mingw32/include" \ --extra-ldflags="-L/usr/aarch64-w64-mingw32/lib" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lsmash-mingw-aarch64 --pkgversion="0:$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/l-smash/lsmash-build/i686 && \ ../../configure --prefix=/usr/i686-w64-mingw32 --target-os=mingw32 \ --cross-prefix=x86_64-w64-mingw32- --extra-cflags="-m32 -mfpmath=sse \ -march=pentium3 -msse -mtune=pentium3" --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=lsmash-mingw-i686 --pkgversion="0:$(git rev-list \ --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: FFmpeg (basic) ========================== # Both x264 and x265 (mod) have the option of using LAVF # input (x265 LAVF input is currently broken due to normal API # changes on FFmpeg's side). This is provided by a very minimal # build of FFmpeg that will get removed later, since leaving it # causes conflicts with the fully-featured FFmpeg build and mpv # at the end of this guide. # In both of these cases, LAVF input is only used by the CLI side of # x264 and x265 (mod), so if only the libx26[4|5] library is needed, # the FFmpeg and FFMS2 steps here can be omitted. cd ~/mpv-build-deps && \ git clone git://source.ffmpeg.org/ffmpeg.git && \ mkdir -p ffmpeg/ffmpeg-build/{i686,amd64,aarch64} && \ # --disable-optimizations is currently needed to avoid an asm-related # build error with GCC 13 amd64 +++++ cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/amd64 && \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-gpl --enable-version3 --disable-w32threads --disable-encoders \ --disable-muxers --disable-doc --disable-debug --disable-devices \ --disable-avdevice --disable-optimizations --cpu=core2 \ --extra-cflags="-march=core2" --target-os=mingw32 --arch=x86_64 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffmpeg-minimal-mingw-amd64 --pkgversion="$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --cross-prefix=aarch64-w64-mingw32- \ --enable-gpl --enable-version3 --disable-w32threads --disable-encoders \ --disable-muxers --disable-doc --disable-debug --disable-devices --disable-avdevice \ --windres="aarch64-w64-mingw32-windres -I/usr/llvm-mingw/generic-w64-mingw32/include" \ --target-os=mingw32 --arch=aarch64 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffmpeg-minimal-mingw-aarch64 --pkgversion="$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/i686 && \ ../../configure --prefix=/usr/i686-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-gpl --enable-version3 --disable-w32threads \ --disable-encoders --disable-muxers --disable-doc --disable-debug \ --disable-devices --disable-avdevice --disable-optimizations --cpu=pentium3 \ --extra-cflags="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --windres="x86_64-w64-mingw32-windres -F pe-i386" --target-os=mingw32 \ --arch=x86 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffmpeg-minimal-mingw-i686 --pkgversion="$(git \ rev-list --count HEAD)-g$(git rev-parse --short HEAD)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: FFMS2 ================= # Very finick-y with out-of-tree builds cd ~/mpv-build-deps && \ git clone -b patches https://github.com/qyot27/ffms2_cplugin && \ mkdir -p ffms2_cplugin/ffms2-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/amd64 && \ ln -s ../../* . && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ./configure \ --prefix=/usr/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --host=x86_64-w64-mingw32 --extra-cppflags="-march=core2" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffms2-mingw-amd64 --pkgversion="$(grep Version ffms2.pc | \ cut -f2 -d " ")-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/amd64 && \ CPPFLAGS="-march=core2" PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ meson setup ../.. --prefix=/usr/x86_64-w64-mingw32 --libdir=/usr/x86_64-w64-mingw32/lib \ --default-library static --cross-file x86_64-w64-mingw32 && \ ninja && \ sudo checkinstall --pkgname=ffms2-mingw-amd64 --pkgversion="$(grep Version \ meson-private/ffms2.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/aarch64 && \ ln -s ../../* . && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ./configure \ --prefix=/usr/aarch64-w64-mingw32 --cross-prefix=aarch64-w64-mingw32- \ --host=aarch64-w64-mingw32 --extra-cppflags="-I/usr/aarch64-w64-mingw32/include" \ --extra-ldflags="-L/usr/aarch64-w64-mingw32/lib -lz" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffms2-mingw-aarch64 --pkgversion="$(grep Version ffms2.pc | \ cut -f2 -d " ")-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/aarch64 && \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include" \ LDFLAGS="-L. -L/usr/aarch64-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ meson setup ../.. --prefix=/usr/aarch64-w64-mingw32 --libdir=/usr/aarch64-w64-mingw32/lib \ --default-library static --cross-file aarch64-w64-mingw32 && \ ninja && \ sudo checkinstall --pkgname=ffms2-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/ffms2.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/i686 && \ ln -s ../../* . && \ RCFLAGS="-F pe-i386" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ./configure \ --prefix=/usr/i686-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --host=x86_64-w64-mingw32 --extra-cppflags="-m32 -mfpmath=sse -march=pentium3 \ -msse -mtune=pentium3" --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=ffms2-mingw-i686 --pkgversion="$(grep Version ffms2.pc | \ cut -f2 -d " ")-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 cd ~/mpv-build-deps/ffms2_cplugin/ffms2-build/i686 && \ CPPFLAGS="-m32 -I/usr/i686-w64-mingw32/include" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib -lavcodec -lavformat -lavutil \ -lswscale -lswresample -lz -lbz2 -llzma -liconv" \ RCFLAGS="-F pe-i386" PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ meson setup ../.. --prefix=/usr/i686-w64-mingw32 --libdir=/usr/i686-w64-mingw32/lib \ --default-library static --cross-file x86_64-w64-mingw32-multilib32 && \ ninja && \ sudo checkinstall --pkgname=ffms2-mingw-i686 --pkgversion="$(grep Version \ meson-private/ffms2.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: x264 ================ cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/x264.git && \ mkdir -p x264/x264-build/{i686,amd64,aarch64} && \ amd64 +++++ # For a full CLI: cd ~/mpv-build-deps/x264/x264-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread --disable-bashcompletion \ --host=x86_64-w64-mingw32 --extra-cflags="-march=core2" \ --extra-ldflags="$(PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ pkg-config --libs --static ffms2)" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-amd64 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 # For just the x264 library: cd ~/mpv-build-deps/x264/x264-build/amd64 && \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread --disable-cli --disable-opencl \ --host=x86_64-w64-mingw32 --extra-cflags="-march=core2" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-amd64 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # For a full CLI: cd ~/mpv-build-deps/x264/x264-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --cross-prefix=aarch64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread \ --disable-bashcompletion --host=aarch64-w64-mingw32 \ --extra-rcflags="-I/usr/llvm-mingw/generic-w64-mingw32/include" \ --extra-ldflags="$(PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ pkg-config --libs --static ffms2)" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-aarch64 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 # For just the x264 library: cd ~/mpv-build-deps/x264/x264-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --cross-prefix=aarch64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread --disable-cli --disable-opencl \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-aarch64 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 i686 ++++ # For a full x264 CLI: cd ~/mpv-build-deps/x264/x264-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/i686-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread --disable-bashcompletion \ --host=i686-w64-mingw32 --extra-cflags="-m32 -mfpmath=sse -march=pentium3 \ -msse -mtune=pentium3" --extra-ldflags="$(PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ pkg-config --libs --static ffms2)" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-i686 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 # For just the x264 library: cd ~/mpv-build-deps/x264/x264-build/i686 && \ ../../configure --prefix=/usr/i686-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --enable-static --enable-strip --disable-win32thread --disable-cli --disable-opencl \ --host=i686-w64-mingw32 --extra-cflags="-m32 -mfpmath=sse -march=pentium3 \ -msse -mtune=pentium3" && \ make -j$(nproc) && \ sudo checkinstall --pkgname=x264-mingw-i686 --pkgversion="$(grep \ Version x264.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: x265 ================ # Enabling Windows XP support now requires using the -DWINXP_SUPPORT:bool=on # option, because the API default is now Win7. cd ~/mpv-build-deps && \ git clone -b Yuuki https://github.com/qyot27/x265 && \ mkdir -p x265/source/x265-build/{i686,amd64,aarch64}/{12bit,10bit,8bit} \ amd64 +++++ # Build 12-bit: cd ~/mpv-build-deps/x265/source/x265-build/amd64/12bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-12bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_CXX_FLAGS="-march=core2" \ -DHIGH_BIT_DEPTH:bool=on -DMAIN12:bool=on -DENABLE_SHARED:bool=off \ -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off && \ ninja && \ sudo checkinstall --pkgname=x265-main12-mingw-amd64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/x86_64-w64-mingw32/lib/libx265_main12.a && \ mv *.deb ~/mingw_debs/amd64 # Build 10-bit: cd ~/mpv-build-deps/x265/source/x265-build/amd64/10bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-10bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_CXX_FLAGS="-march=core2" \ -DHIGH_BIT_DEPTH:bool=on -DENABLE_SHARED:bool=off \ -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off && \ ninja && \ sudo checkinstall --pkgname=x265-main10-mingw-amd64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/x86_64-w64-mingw32/lib/libx265_main10.a && \ mv *.deb ~/mingw_debs/amd64 # Only the .a files from 12-bit and 10-bit are installed to the system, # to reduce the chances of conflicts. # Build 8-bit: # ENABLE_LAVF currently disabled because of API changes on FFmpeg's side. # AviSynth and VapourSynth inputs automatically enabled. cd ~/mpv-build-deps/x265/source/x265-build/amd64/8bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_PREFIX_PATH="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_CXX_FLAGS="-march=core2" \ -DENABLE_SHARED:bool=off -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT:bool=on -DLINKED_12BIT:bool=on \ -DEXTRA_LIB="/usr/x86_64-w64-mingw32/lib/libx265_main10.a;/usr/x86_64-w64-mingw32/lib/libx265_main12.a" \ -DENABLE_LSMASH:bool=on -DENABLE_MKV:bool=on && \ ninja && \ sed -i 's/lx265/lx265 -lx265_main10 -lx265_main12/' x265.pc && \ sudo checkinstall --pkgname=x265-mingw-amd64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 # Finally, purge the basic FFmpeg so that no errors occur later on: sudo apt-get purge ffmpeg-minimal-mingw-amd64 aarch64 +++++++ # Build 12-bit: cd ~/mpv-build-deps/x265/source/x265-build/aarch64/12bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-12bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DHIGH_BIT_DEPTH:bool=on -DMAIN12:bool=on -DENABLE_SHARED:bool=off \ -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off -DCMAKE_SYSTEM_PROCESSOR=aarch64 && \ ninja && \ sudo checkinstall --pkgname=x265-main12-mingw-aarch64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/aarch64-w64-mingw32/lib/libx265_main12.a && \ mv *.deb ~/mingw_debs/aarch64 # Build 10-bit: cd ~/mpv-build-deps/x265/source/x265-build/aarch64/10bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-10bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DHIGH_BIT_DEPTH:bool=on -DENABLE_SHARED:bool=off \ -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off -DCMAKE_SYSTEM_PROCESSOR=aarch64 && \ ninja && \ sudo checkinstall --pkgname=x265-main10-mingw-aarch64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/aarch64-w64-mingw32/lib/libx265_main10.a && \ mv *.deb ~/mingw_debs/aarch64 # Only the .a files from 12-bit and 10-bit are installed to the system, # to reduce the chances of conflicts. # Build 8-bit: # ENABLE_LAVF currently disabled because of API changes on FFmpeg's side. # AviSynth and VapourSynth inputs automatically enabled. cd ~/mpv-build-deps/x265/source/x265-build/aarch64/8bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_PREFIX_PATH="/usr/aarch64-w64-mingw32" -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ -DCMAKE_STAGING_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DENABLE_SHARED:bool=off -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT:bool=on -DLINKED_12BIT:bool=on \ -DEXTRA_LIB="/usr/aarch64-w64-mingw32/lib/libx265_main10.a;/usr/aarch64-w64-mingw32/lib/libx265_main12.a" \ -DENABLE_LSMASH:bool=on -DENABLE_MKV:bool=on -DCMAKE_CXX_FLAGS="-I/usr/aarch64-w64-mingw32/include" \ -DCMAKE_RC_COMPILER_ARG1="-I /usr/llvm-mingw/generic-w64-mingw32/include" \ -DCMAKE_EXE_LINKER_FLAGS="-L/usr/aarch64-w64-mingw32/lib" && \ ninja && \ sed -i 's/lx265/lx265 -lx265_main10 -lx265_main12/' x265.pc && \ sudo checkinstall --pkgname=x265-mingw-aarch64 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 # Finally, purge the basic FFmpeg so that no errors occur later on: sudo apt-get purge ffmpeg-minimal-mingw-aarch64 i686 ++++ # Build 12-bit: cd ~/mpv-build-deps/x265/source/x265-build/i686/12bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-12bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DHIGH_BIT_DEPTH:bool=on -DMAIN12:bool=on -DENABLE_SHARED:bool=off \ -DENABLE_ASSEMBLY:bool=off -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off && \ ninja && \ sudo checkinstall --pkgname=x265-main12-mingw-i686 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/i686-w64-mingw32/lib/libx265_main12.a && \ mv *.deb ~/mingw_debs/i686 # Build 10-bit: cd ~/mpv-build-deps/x265/source/x265-build/i686/10bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="$HOME/mpv-build-deps/x265_build/x265-10bit" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DHIGH_BIT_DEPTH:bool=on -DENABLE_SHARED:bool=off -DENABLE_ASSEMBLY:bool=off \ -DEXPORT_C_API:bool=off -DENABLE_CLI:bool=off && \ ninja && \ sudo checkinstall --pkgname=x265-main10-mingw-i686 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp libx265.a /usr/i686-w64-mingw32/lib/libx265_main10.a && \ mv *.deb ~/mingw_debs/i686 # Only the .a files from 12-bit and 10-bit are installed to the system, # to reduce the chances of conflicts. # Build 8-bit: # ENABLE_LAVF currently disabled because of API changes on FFmpeg's side. # AviSynth and VapourSynth inputs automatically enabled. cd ~/mpv-build-deps/x265/source/x265-build/i686/8bit && \ cmake ../../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_PREFIX_PATH="/usr/i686-w64-mingw32" -DCMAKE_SYSROOT=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_RC_FLAGS="-F pe-i386" -DCMAKE_RC_COMPILER_ARG1="-F pe-i386" \ -DENABLE_SHARED:bool=off -DEXTRA_LINK_FLAGS="-L. -L/usr/i686-w64-mingw32/lib" \ -DLINKED_10BIT:bool=on -DLINKED_12BIT:bool=on \ -DEXTRA_LIB="/usr/i686-w64-mingw32/lib/libx265_main10.a;/usr/i686-w64-mingw32/lib/libx265_main12.a" \ -DENABLE_LSMASH:bool=on -DENABLE_MKV:bool=on -DENABLE_VPYSYNTH:bool=off && \ ninja && \ sed -i 's/lx265/lx265 -lx265_main10 -lx265_main12/' x265.pc && \ sudo checkinstall --pkgname=x265-mingw-i686 --pkgversion="$(grep X265_VERSION \ build.ninja | sed 's/X265_VERSION=/\t/' | cut -f2 | sed 's/ /\t/g' | cut -f1)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 # Finally, purge the basic FFmpeg so that no errors occur later on: sudo apt-get purge ffmpeg-minimal-mingw-i686 Dependency: dav1d ================= cd ~/mpv-build-deps && \ git clone https://code.videolan.org/videolan/dav1d && \ mkdir -p dav1d/dav1d-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/dav1d/dav1d-build/amd64 && \ meson setup ../.. --prefix=/usr/x86_64-w64-mingw32 --libdir=/usr/x86_64-w64-mingw32/lib \ --default-library static --cross-file x86_64-w64-mingw32 \ -Denable_tests=false && \ ninja && \ sudo checkinstall --pkgname=dav1d-mingw-amd64 --pkgversion="$(grep Version \ meson-private/dav1d.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/dav1d/dav1d-build/aarch64 && \ meson setup ../.. --prefix=/usr/aarch64-w64-mingw32 --libdir=/usr/aarch64-w64-mingw32/lib \ --default-library static --cross-file aarch64-w64-mingw32 \ -Denable_tests=false && \ ninja && \ sudo checkinstall --pkgname=dav1d-mingw-aarch64 --pkgversion="$(grep Version \ meson-private/dav1d.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/dav1d/dav1d-build/i686 && \ meson setup ../.. --prefix=/usr/i686-w64-mingw32 --libdir=/usr/i686-w64-mingw32/lib \ --default-library static --cross-file x86_64-w64-mingw32-multilib32 \ -Denable_tests=false -Dc_args="-m32 -I/usr/i686-w64-mingw32/include" \ -Dc_link_args="-m32 -L/usr/i686-w64-mingw32/lib" && \ ninja && \ sudo checkinstall --pkgname=dav1d-mingw-i686 --pkgversion="$(grep Version \ meson-private/dav1d.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libsndfile ====================== cd ~/mpv-build-deps && \ wget http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28.tar.gz -O - | tar -xzvf - && \ mkdir -p libsndfile-1.0.28/libsndfile-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libsndfile-1.0.28/libsndfile-build/amd64 && \ CPPFLAGS="-march=core2 -D_FORTIFY_SOURCE=0" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --disable-alsa --disable-external-libs --disable-sqlite \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libsndfile.spec && \ sudo checkinstall --pkgname=libsndfile-mingw-amd64 --pkgversion="1:$(grep \ Version sndfile.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libsndfile-1.0.28/libsndfile-build/aarch64 && \ CPPFLAGS="-D_FORTIFY_SOURCE=0" RC="aarch64-w64-mingw32-windres \ -I/usr/llvm-mingw/generic-w64-mingw32/include" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --disable-alsa --disable-external-libs --disable-sqlite \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libsndfile.spec && \ sudo checkinstall --pkgname=libsndfile-mingw-aarch64 --pkgversion="1:$(grep \ Version sndfile.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libsndfile-1.0.28/libsndfile-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -D_FORTIFY_SOURCE=0" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ RC="x86_64-w64-mingw32-windres -F pe-i386" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --disable-alsa --disable-external-libs --disable-sqlite \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libsndfile.spec && \ sudo checkinstall --pkgname=libsndfile-mingw-i686 --pkgversion="1:$(grep \ Version sndfile.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libbs2b =================== # Removing AC_FUNC_MALLOC and the dist- stuff resolves autotools-related # problems. libbs2b hasn't been updated in several years, so odds are this # isn't going to get fixed anytime soon. cd ~/mpv-build-deps && \ wget "http://downloads.sourceforge.net/project/bs2b/libbs2b/3.1.0/libbs2b-3.1.0.tar.lzma" -O - | tar -xJvf - && \ sed -i -e 's/dist-zip dist-bzip2 dist-lzma//g' -e 's/AC_FUNC_MALLOC//g' libbs2b-3.1.0/configure.ac && \ autoreconf -fiv libbs2b-3.1.0 && \ mkdir -p libbs2b-3.1.0/libbs2b-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libbs2b-3.1.0/libbs2b-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --disable-shared --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbs2b-mingw-amd64 --pkgversion="1:$(grep Version \ libbs2b.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libbs2b-3.1.0/libbs2b-build/aarch64 && \ CPPFLAGS="-I/usr/aarch64-w64-mingw32/include" \ LDFLAGS="-L/usr/aarch64-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbs2b-mingw-aarch64 --pkgversion="1:$(grep Version \ libbs2b.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libbs2b-3.1.0/libbs2b-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/i686-w64-mingw32 --disable-shared --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libbs2b-mingw-i686 --pkgversion="1:$(grep Version \ libbs2b.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: TwoLAME =================== cd ~/mpv-build-deps && \ git clone https://github.com/njh/twolame && \ cd twolame/ && \ git checkout -b known_good 44ea171ccac71b659b55d3513a27f08f6021dbca && \ mkdir -p build-scripts twolame-build/{i686,amd64,aarch64} && \ sed -i -e '29s/README/README.md/' -e '30s/NEWS/NEWS.md/' Makefile.am && \ autoreconf -fiv && \ touch doc/twolame.1 && \ amd64 +++++ cd ~/mpv-build-deps/twolame/twolame-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/x86_64-w64-mingw32 --disable-shared --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm twolame.spec && \ sudo checkinstall --pkgname=twolame-mingw-amd64 --pkgversion="1:$(grep Version \ twolame.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/twolame/twolame-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/aarch64-w64-mingw32 --disable-shared --enable-silent-rules \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm twolame.spec && \ sudo checkinstall --pkgname=twolame-mingw-aarch64 --pkgversion="1:$(grep Version \ twolame.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/twolame/twolame-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=/usr/i686-w64-mingw32 --disable-shared --enable-silent-rules \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm twolame.spec && \ sudo checkinstall --pkgname=twolame-mingw-i686 --pkgversion="1:$(grep Version \ twolame.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: Lame ================ # will soon be relying on external libmpg123 # for decoding. --disable-decoder can be used # to skip this in the meanwhile. cd ~/mpv-build-deps && \ svn checkout https://svn.code.sf.net/p/lame/svn/trunk/lame lame && \ autoreconf -fiv lame && \ mkdir -p lame/lame-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/lame/lame-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-expopt=full --with-fileio=lame --enable-nasm --disable-decoder \ --disable-frontend --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm lame.spec && \ sudo checkinstall --pkgname=lame-mingw-amd64 --pkgversion="1:$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/lame/lame-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-expopt=full --with-fileio=lame --disable-decoder \ --disable-frontend --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm lame.spec && \ sudo checkinstall --pkgname=lame-mingw-aarch64 --pkgversion="1:$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/lame/lame-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-expopt=full --with-fileio=lame --enable-nasm --disable-decoder \ --disable-frontend --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm lame.spec && \ sudo checkinstall --pkgname=lame-mingw-i686 --pkgversion="1:$(grep \ PACKAGE_VERSION config.h | sed 's/\"/\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-svn" --backup=no --deldoc=yes \ --delspec=yes --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libogg ================== cd ~/mpv-build-deps && \ git clone https://gitlab.xiph.org/xiph/ogg.git && \ autoreconf -fiv ogg && \ mkdir -p ogg/ogg-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/ogg/ogg-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libogg.spec && \ sudo checkinstall --pkgname=libogg-mingw-amd64 --pkgversion="1:$(grep Version \ ogg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/ogg/ogg-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libogg.spec && \ sudo checkinstall --pkgname=libogg-mingw-aarch64 --pkgversion="1:$(grep Version \ ogg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/ogg/ogg-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libogg.spec && \ sudo checkinstall --pkgname=libogg-mingw-i686 --pkgversion="1:$(grep Version \ ogg.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: Vorbis ================== cd ~/mpv-build-deps && \ git clone https://gitlab.xiph.org/xiph/vorbis.git && \ autoreconf -I m4 -fiv vorbis && \ mkdir -p vorbis/vorbis-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/vorbis/vorbis-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-oggtest \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libvorbis.spec && \ sudo checkinstall --pkgname=libvorbis-mingw-amd64 --pkgversion="1:$(grep \ Version vorbis.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/vorbis/vorbis-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-oggtest \ --disable-shared --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libvorbis.spec && \ sudo checkinstall --pkgname=libvorbis-mingw-aarch64 --pkgversion="1:$(grep \ Version vorbis.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/vorbis/vorbis-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-oggtest \ --disable-shared --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libvorbis.spec && \ sudo checkinstall --pkgname=libvorbis-mingw-i686 --pkgversion="1:$(grep \ Version vorbis.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: Theora ================== cd ~/mpv-build-deps && \ git clone https://gitlab.xiph.org/xiph/theora.git && \ autoreconf -fiv theora && \ mkdir -p theora/theora-build/{i686,amd64,aarch64} && \ cp configure configure32 && \ sed -i -e 's/cpu_x86_64=yes/cpu_x86_32=yes/g' \ -e 's/64 bit x86/32 bit x86/g' \ -e 's/OC_X86_64_ASM//g' configure32 && \ amd64 +++++ cd ~/mpv-build-deps/theora/theora-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --disable-oggtest --disable-vorbistest --disable-doc --disable-spec \ --disable-examples --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libtheora.spec && \ sudo checkinstall --pkgname=libtheora-mingw-amd64 --pkgversion="1:$(grep \ Version theora.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/theora/theora-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --disable-oggtest --disable-vorbistest --disable-doc --disable-spec \ --disable-examples --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ rm libtheora.spec && \ sudo checkinstall --pkgname=libtheora-mingw-aarch64 --pkgversion="1:$(grep \ Version theora.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/theora/theora-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure32 --prefix=/usr/i686-w64-mingw32 --disable-shared \ --disable-oggtest --disable-vorbistest --disable-doc --disable-spec \ --disable-examples --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ rm libtheora.spec && \ sudo checkinstall --pkgname=libtheora-mingw-i686 --pkgversion="1:$(grep \ Version theora.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: Opus ================ cd ~/mpv-build-deps && \ git clone https://gitlab.xiph.org/xiph/opus.git && \ autoreconf -fiv opus && \ mkdir -p opus/opus-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/opus/opus-build/amd64 && \ CPPFLAGS="-march=core2 -D_FORTIFY_SOURCE=0" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-doc \ --disable-shared --enable-custom-modes --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopus-mingw-amd64 --pkgversion="1:$(grep Version \ opus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/opus/opus-build/aarch64 && \ CPPFLAGS="-D_FORTIFY_SOURCE=0" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-doc \ --disable-shared --enable-custom-modes --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopus-mingw-aarch64 --pkgversion="1:$(grep Version \ opus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/opus/opus-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -D_FORTIFY_SOURCE=0" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-doc \ --disable-shared --enable-custom-modes --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopus-mingw-i686 --pkgversion="1:$(grep Version \ opus.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libvpx ================== cd ~/mpv-build-deps && \ git clone https://github.com/webmproject/libvpx && \ mkdir -p libvpx/libvpx-build/{i686,amd64,aarch64} && \ 64-bit ++++++ cd ~/mpv-build-deps/libvpx/libvpx-build/amd64 && \ CFLAGS="-march=core2" \ CXXFLAGS="-march=core2" \ CROSS=x86_64-w64-mingw32- ../../configure --prefix=/usr/x86_64-w64-mingw32 \ --target=x86_64-win64-gcc --cpu=core2 \ --disable-examples --disable-unit-tests --disable-docs \ --enable-vp8 --enable-vp9 --enable-postproc --enable-vp9-postproc \ --enable-vp9-temporal-denoising --enable-vp9-highbitdepth \ --enable-webm-io --enable-libyuv --enable-runtime-cpu-detect \ --enable-multi-res-encoding && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvpx-mingw-amd64 --pkgversion="1:$(grep Version \ vpx.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libvpx/libvpx-build/aarch64 && \ CROSS=aarch64-w64-mingw32- ../../configure --prefix=/usr/aarch64-w64-mingw32 \ --target=arm64-win64-gcc \ --disable-examples --disable-unit-tests --disable-docs \ --enable-vp8 --enable-vp9 --enable-postproc --enable-vp9-postproc \ --enable-vp9-temporal-denoising --enable-vp9-highbitdepth \ --enable-webm-io --enable-libyuv --enable-multi-res-encoding && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvpx-mingw-aarch64 --pkgversion="1:$(grep Version \ vpx.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 32-bit ++++++ cd ~/mpv-build-deps/libvpx/libvpx-build/i686 && \ CFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ CXXFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ CROSS=x86_64-w64-mingw32- ../../configure --prefix=/usr/i686-w64-mingw32 \ --target=x86-win32-gcc --cpu=pentium3 \ --disable-examples --disable-unit-tests --disable-docs \ --enable-vp8 --enable-vp9 --enable-postproc --enable-vp9-postproc \ --enable-vp9-temporal-denoising --enable-vp9-highbitdepth \ --enable-webm-io --enable-libyuv --enable-runtime-cpu-detect \ --enable-multi-res-encoding && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvpx-mingw-i686 --pkgversion="1:$(grep Version \ vpx.pc | sed 's/Version: //g')-$(date --rfc-3339=date | sed 's/-//g')-git" \ --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes \ --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: AOMedia AV1 ======================= cd ~/mpv-build-deps && \ git clone https://aomedia.googlesource.com/aom && \ mkdir -p aom/aom-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/aom/aom-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" -DCMAKE_CXX_FLAGS="-march=core2" \ -DCMAKE_SYSTEM_PROCESSOR="x86_64" -DENABLE_DOCS:bool=off -DENABLE_NASM:bool=on \ -DENABLE_TESTS:bool=off && \ ninja && \ sudo checkinstall --pkgname=aom-mingw-amd64 --pkgversion="$(grep \ Version aom.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/aom/aom-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/aarch64-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DCMAKE_SYSTEM_PROCESSOR="aarch64" -DENABLE_DOCS:bool=off \ -DENABLE_TESTS:bool=off -DCONFIG_RUNTIME_CPU_DETECT=0 && \ ninja && \ sudo checkinstall --pkgname=aom-mingw-aarch64 --pkgversion="$(grep \ Version aom.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/aom/aom-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX=/usr/i686-w64-mingw32 \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_SYSTEM_PROCESSOR="x86" -DENABLE_DOCS:bool=off -DENABLE_NASM:bool=on \ -DENABLE_TESTS:bool=off && \ ninja && \ sudo checkinstall --pkgname=aom-mingw-i686 --pkgversion="$(grep \ Version aom.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libiLBC =================== # Currently there's a bug with the CMakeLists.txt that doesn't # honor -m32 to build pe-i386 *.obj files. The CMAKE_C{XX}_FLAGS # initializers for GCC and Clang @~ line 53 don't include the passed flags # the way it does for MSVC and Clang-CL. cd ~/mpv-build-deps && \ git clone --recursive https://github.com/TimothyGu/libilbc && \ sed -i -e '55s/CMAKE_C_FLAGS \"/CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} /' \ -e '61s/CMAKE_CXX_FLAGS \"/CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} /' libilbc/CMakeLists.txt mkdir -p libilbc/libilbc-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libilbc/libilbc-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libilbc-mingw-amd64 --pkgversion="1:$(grep \ Version libilbc.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libilbc/libilbc-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libilbc-mingw-aarch64 --pkgversion="1:$(grep \ Version libilbc.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libilbc/libilbc-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DBUILD_SHARED_LIBS:bool=off && \ ninja && \ sudo checkinstall --pkgname=libilbc-mingw-i686 --pkgversion="1:$(grep \ Version libilbc.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libgsm ================== # Cannot be built out-of-tree amd64 +++++ cd ~/mpv-build-deps && \ wget http://www.imagemagick.org/download/delegates/ffmpeg/gsm-1.0.13.tar.bz2 -O - | tar -xjvf - && \ cd gsm-1.0.13 && \ sed -i -e 's/gcc\ -ansi/x86_64-w64-mingw32-gcc\ -ansi/g' \ -e 's/=\ ar/=\ x86_64-w64-mingw32-ar/g' \ -e 's/=\ ranlib/=\ x86_64-w64-mingw32-ranlib/g' \ -e 's/INSTALL_ROOT\t=/INSTALL_ROOT\t=\ \$HOME\/mpv-build-deps\/gsmbuild\/amd64/g' \ -e '47 s/$/ $(CPPFLAGS)/' \ -e '285ilib:\t\t$(LIBGSM)\n\t\t@-echo lib: Done.\n' Makefile && \ CPPFLAGS="-march=core2" make lib && \ mkdir -p gsmbuild/include/gsm && \ cp inc/gsm.h gsmbuild/include/gsm && \ mv lib/ gsmbuild/ && \ cd gsmbuild/ && \ sudo checkinstall --pkgname=libgsm-mingw-amd64 --pkgversion="1.0.13-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp -R * /usr/x86_64-w64-mingw32 && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps && \ sudo rm -R gsm-1.0.13 && \ wget http://www.imagemagick.org/download/delegates/ffmpeg/gsm-1.0.13.tar.bz2 -O - | tar -xjvf - && \ cd gsm-1.0.13 && \ sed -i -e 's/gcc\ -ansi/aarch64-w64-mingw32-gcc\ -ansi/g' \ -e 's/=\ ar/=\ aarch64-w64-mingw32-ar/g' \ -e 's/=\ ranlib/=\ aarch64-w64-mingw32-ranlib/g' \ -e 's/INSTALL_ROOT\t=/INSTALL_ROOT\t=\ \$HOME\/mpv-build-deps\/gsmbuild\/aarch64/g' \ -e '47 s/$/ $(CPPFLAGS)/' \ -e '285ilib:\t\t$(LIBGSM)\n\t\t@-echo lib: Done.\n' Makefile && \ make lib && \ mkdir -p gsmbuild/include/gsm && \ cp inc/gsm.h gsmbuild/include/gsm && \ mv lib/ gsmbuild/ && \ cd gsmbuild && \ sudo checkinstall --pkgname=libgsm-mingw-aarch64 --pkgversion="1.0.13-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp -R * /usr/aarch64-w64-mingw32 && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps && \ sudo rm -R gsm-1.0.13 && \ wget http://www.imagemagick.org/download/delegates/ffmpeg/gsm-1.0.13.tar.bz2 -O - | tar -xjvf - && \ cd gsm-1.0.13 && \ sed -i -e 's/gcc\ -ansi/x86_64-w64-mingw32-gcc\ -ansi/g' \ -e 's/=\ ar/=\ x86_64-w64-mingw32-ar/g' \ -e 's/=\ ranlib/=\ x86_64-w64-mingw32-ranlib/g' \ -e 's/INSTALL_ROOT\t=/INSTALL_ROOT\t=\ \$HOME\/mpv-build-deps\/gsmbuild\/i686/g' \ -e '47 s/$/ $(CPPFLAGS)/' \ -e '285ilib:\t\t$(LIBGSM)\n\t\t@-echo lib: Done.\n' Makefile && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" make lib && \ mkdir -p gsmbuild/include/gsm && \ cp inc/gsm.h gsmbuild/include/gsm && \ cp -R -L lib/ gsmbuild/ && \ cd gsmbuild && \ sudo checkinstall --pkgname=libgsm-mingw-i686 --pkgversion="1.0.13-$(date \ --rfc-3339=date | sed 's/-//g')" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default cp -R * /usr/i686-w64-mingw32 && \ mv *.deb ~/mingw_debs/i686 Dependency: libshine ==================== cd ~/mpv-build-deps && \ git clone https://github.com/toots/shine && \ autoreconf -fiv shine && \ cd shine && \ amd64 +++++ # Out of tree builds not working CPPFLAGS="-march=core2" \ ./configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libshine-mingw-amd64 --pkgversion="$(grep Version \ shine.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # Out of tree builds not working make distclean && \ ./configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-silent-rules --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libshine-mingw-aarch64 --pkgversion="$(grep Version \ shine.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # Out of tree builds not working make distclean && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ./configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --enable-silent-rules --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libshine-mingw-i686 --pkgversion="$(grep Version \ shine.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: libspeex ==================== cd ~/mpv-build-deps && \ git clone https://gitlab.xiph.org/xiph/speex.git && \ autoreconf -fiv speex && \ mkdir -p speex/speex-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/speex/speex-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ LIBS+="-lwinmm" CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared --enable-sse \ --enable-vorbis-psy --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libspeex-mingw-amd64 --pkgversion="$(grep Version \ speex.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/speex/speex-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ LIBS+="-lwinmm" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --enable-vorbis-psy --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libspeex-mingw-aarch64 --pkgversion="$(grep Version \ speex.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/speex/speex-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ LIBS+="-lwinmm" CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared --enable-sse \ --enable-vorbis-psy --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libspeex-mingw-i686 --pkgversion="$(grep Version \ speex.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: OpenCORE-AMR ======================== cd ~/mpv-build-deps && \ git clone git://git.code.sf.net/p/opencore-amr/code opencore-amr && \ autoreconf -fiv opencore-amr && \ mkdir -p opencore-amr/opencoreamr-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/opencore-amr/opencoreamr-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopencore-amr-mingw-amd64 --pkgversion="$(grep \ Version amrwb/opencore-amrwb.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/opencore-amr/opencoreamr-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopencore-amr-mingw-aarch64 --pkgversion="$(grep \ Version amrwb/opencore-amrwb.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/opencore-amr/opencoreamr-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libopencore-amr-mingw-i686 --pkgversion="$(grep \ Version amrwb/opencore-amrwb.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: vo-amrwbenc ======================= cd ~/mpv-build-deps && \ git clone https://github.com/mstorsjo/vo-amrwbenc && \ autoreconf -fiv vo-amrwbenc && \ mkdir -p vo-amrwbenc/vo-amrwbenc-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/vo-amrwbenc/vo-amrwbenc-build/amd64 && \ CPPFLAGS="-march=core2" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvo-amrwbenc-mingw-amd64 --pkgversion="$(grep \ Version vo-amrwbenc.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/vo-amrwbenc/vo-amrwbenc-build/aarch64 && \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvo-amrwbenc-mingw-aarch64 --pkgversion="$(grep \ Version vo-amrwbenc.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/vo-amrwbenc/vo-amrwbenc-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ ../../configure --prefix=/usr/i686-w64-mingw32 --disable-shared \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libvo-amrwbenc-mingw-i686 --pkgversion="$(grep \ Version vo-amrwbenc.pc | sed 's/Version: /\t/g' | cut -f2)-$(date \ --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes \ --deldesc=yes --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: xavs ================ cd ~/mpv-build-deps && \ svn checkout svn://svn.code.sf.net/p/xavs/code/trunk xavs && \ mkdir -p xavs/xavs-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/xavs/xavs-build/amd64 && \ ln -s ../../* . && \ ./configure --prefix=/usr/x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --extra-cflags="-march=core2 -fno-tree-vectorize" --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxavs-mingw-amd64 --pkgversion="$(grep Version \ xavs.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # not supported cd ~/mpv-build-deps/xavs && \ make distclean && \ cd ~/mpv-build-deps/xavs/xavs-build/aarch64 && \ ln -s ../../* . && \ ./configure --prefix=/usr/aarch64-w64-mingw32 --cross-prefix=aarch64-w64-mingw32- \ --extra-cflags="-fno-tree-vectorize" --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxavs-mingw-aarch64 --pkgversion="$(grep Version \ xavs.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/xavs && \ make distclean && \ cd ~/mpv-build-deps/xavs/xavs-build/i686 && \ ln -s ../../* . && \ cp configure configure32 && \ sed -i -e '237s/X86_64/X86/' -e 's/ -m amd64//g' configure32 && \ ./configure32 --prefix=/usr/i686-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- \ --extra-cflags="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 \ -fno-tree-vectorize" --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libxavs-mingw-i686 --pkgversion="$(grep Version \ xavs.pc | sed 's/Version: /\t/g' | cut -f2)-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: game-music-emu ========================== cd ~/mpv-build-deps && \ git clone https://bitbucket.org/mpyne/game-music-emu.git && \ cd game-music-emu && \ git checkout -b known_good a8da3a1992d2e099201392d630d99ef2c3f070ee && \ mkdir -p gme-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/game-music-emu/gme-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-march=core2" \ -DCMAKE_CXX_FLAGS="-march=core2" \ -DBUILD_SHARED_LIBS:bool=off -DENABLE_UBSAN:bool=off && \ ninja && \ sudo checkinstall --pkgname=libgme-mingw-amd64 --pkgversion="1:$(grep \ Version gme/libgme.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # compilation fails cd ~/mpv-build-deps/game-music-emu/gme-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" \ -DBUILD_SHARED_LIBS:bool=off -DENABLE_UBSAN:bool=off && \ ninja && \ sudo checkinstall --pkgname=libgme-mingw-aarch64 --pkgversion="1:$(grep \ Version gme/libgme.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/game-music-emu/gme-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_C_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ -DBUILD_SHARED_LIBS:bool=off -DENABLE_UBSAN:bool=off \ -DZLIB_LIBRARY_RELEASE="/usr/i686-w64-mingw32/lib/libz.a" && \ ninja && \ sudo checkinstall --pkgname=libgme-mingw-i686 --pkgversion="1:$(grep \ Version gme/libgme.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-svn" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 Dependency: libmodplug ====================== # CMakeLists.txt needs to be patched in order to install # libmodplug.pc cd ~/mpv-build-deps && \ git clone https://github.com/Konstanty/libmodplug && \ sed -i '165,176s/WIN32/WIN32 OR (MINGW OR MSYS)/' libmodplug/CMakeLists.txt && \ mkdir -p libmodplug/libmodplug-build/{i686,amd64,aarch64} && \ amd64 +++++ cd ~/mpv-build-deps/libmodplug/libmodplug-build/amd64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/x86_64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-march=core2" && \ ninja && \ sudo checkinstall --pkgname=libmodplug-mingw-amd64 --pkgversion="$(grep Version \ libmodplug.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ cd ~/mpv-build-deps/libmodplug/libmodplug-build/aarch64 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/aarch64-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/llvm-mingw/aarch64-w64-mingw32/toolchain-aarch64-w64-mingw32.cmake" && \ ninja && \ sudo checkinstall --pkgname=libmodplug-mingw-aarch64 --pkgversion="$(grep Version \ libmodplug.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ cd ~/mpv-build-deps/libmodplug/libmodplug-build/i686 && \ cmake ../../ -G "Ninja" -DCMAKE_INSTALL_PREFIX="/usr/i686-w64-mingw32" \ -DCMAKE_TOOLCHAIN_FILE="/usr/x86_64-w64-mingw32/toolchain-x86_64-w64-mingw32.cmake" \ -DCMAKE_CXX_FLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" && \ ninja && \ sudo checkinstall --pkgname=libmodplug-mingw-i686 --pkgversion="$(grep Version \ libmodplug.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default ninja install && \ mv *.deb ~/mingw_debs/i686 ///////////////////////// /// FFmpeg and libass ///////////////////////// # Now that all the basic and/or optional stuff is out of the way, it's time to # build the stuff immediately necessary for mpv. Dependency: libass ================== cd ~/mpv-build-deps && \ git clone https://github.com/libass/libass && \ cd libass && \ # Move Requires.private contents to Libs.private so ffmpeg can link; # has to be done manually because the formatting is wrong and screws # up ffmpeg's configure checks. autoreconf -fiv && \ mkdir -p libass-build/{i686,amd64,aarch64} && \ cp configure configure32 && \ sed -i -e 's/X64=true/X64=false/' -e 's/BITS=64/BITS=32/' \ -e 's/BITTYPE=64/BITTYPE=32/' -e 's/DARCH_X86_64=1/DARCH_X86_64=0/' configure32 && \ amd64 +++++ # DirectWrite may be the natural choice for Windows, but it incurs a # startup penalty on playback. cd ~/mpv-build-deps/libass/libass-build/amd64 && \ CPPFLAGS="-march=core2" \ PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG="pkg-config --static" \ ../../configure --prefix=/usr/x86_64-w64-mingw32 --disable-shared \ --disable-directwrite --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libass-mingw-amd64 --pkgversion="$(grep Version \ libass.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/amd64 aarch64 +++++++ # DirectWrite may be the natural choice for Windows, but it incurs a # startup penalty on playback. cd ~/mpv-build-deps/libass/libass-build/aarch64 && \ PKG_CONFIG_LIBDIR=/usr/aarch64-w64-mingw32/lib \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ PKG_CONFIG="pkg-config --static" \ ../../configure --prefix=/usr/aarch64-w64-mingw32 --disable-shared \ --disable-directwrite --host=aarch64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libass-mingw-aarch64 --pkgversion="$(grep Version \ libass.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/aarch64 i686 ++++ # Remember to have created a symlink to libpng16.pc as libpng.pc # beforehand, otherwise Freetype2 won't be detected correctly for # 32-bit. # DirectWrite may be the natural choice for Windows, but it incurs a # startup penalty on playback. cd ~/mpv-build-deps/libass/libass-build/i686 && \ CPPFLAGS="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3" \ LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_LIBDIR=/usr/i686-w64-mingw32/lib \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ PKG_CONFIG="pkg-config --static" \ ../../configure32 --prefix=/usr/i686-w64-mingw32 --disable-shared \ --disable-directwrite --host=x86_64-w64-mingw32 && \ make -j$(nproc) && \ sudo checkinstall --pkgname=libass-mingw-i686 --pkgversion="$(grep Version \ libass.pc | sed 's/Version: //g')-$(date --rfc-3339=date | \ sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \ --strip=yes --fstrans=no --default && \ mv *.deb ~/mingw_debs/i686 Dependency: FFmpeg ================== cd ~/mpv-build-deps && \ git clone git://source.ffmpeg.org/ffmpeg.git && \ cd ffmpeg && \ git pull https://github.com/qyot27/FFmpeg avs_channelmask avs_pixfmts \ new_pkgconfig datetime silent_invoke vapoursynth_alt versioninfo && \ mkdir -p ffmpeg-build/{i686,i686-avsgcc,amd64,aarch64} && \ # Press Ctrl+X to commit using nano amd64 +++++ # FFmpeg updates so frequently that it's best to install it to a local area. # Declaring --pkg-config-flags="--static" is necessary for fontconfig, # libmodplug, SDL, and libx265 to link. # If you want to enable both OpenAL and libbs2b, or use shared libx264, add # --extra-ldflags="-Wl,--allow-multiple-definition". cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig \ ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/amd64 \ --cross-prefix=x86_64-w64-mingw32- \ --enable-gpl \ --enable-version3 \ --disable-w32threads \ --disable-doc \ --disable-debug \ --enable-concise-version \ --enable-mbedtls \ --enable-libfontconfig \ --enable-libfreetype \ --enable-libfribidi \ --enable-libass \ --enable-libbluray \ --enable-libcdio \ --enable-openal \ --enable-opengl \ --enable-libsoxr \ --enable-libvidstab \ --enable-libxml2 \ --enable-libzimg \ --enable-libaom \ --enable-libdav1d \ --enable-libgme \ --enable-libgsm \ --enable-libilbc \ --enable-libmodplug \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libopenjpeg \ --enable-libopus \ --enable-libshine \ --enable-libsnappy \ --enable-libspeex \ --enable-libtheora \ --enable-libtwolame \ --enable-libvo-amrwbenc \ --enable-libvorbis \ --enable-libvpx \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ --enable-libxavs \ --enable-libxvid \ --enable-avisynth \ --enable-vapoursynth \ --cpu=core2 \ --extra-cflags="-march=core2 -DMODPLUG_STATIC -DVS_CORE_EXPORTS" \ --target-os=mingw32 \ --arch=x86_64 \ --pkg-config-flags="--static" && \ make -j$(nproc) && \ make install # For an FFmpeg with no optional external components, except AviSynth: cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/amd64 && \ PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/amd64 --cross-prefix=x86_64-w64-mingw32- --enable-gpl \ --enable-version3 --disable-w32threads --disable-doc \ --enable-avisynth --cpu=core2 --extra-cflags="-march=core2" --target-os=mingw32 \ --arch=x86_64 && \ make -j$(nproc) && \ make install aarch64 +++++++ # FFmpeg updates so frequently that it's best to install it to a local area. # Declaring --pkg-config-flags="--static" is necessary for fontconfig, # libmodplug, SDL, and libx265 to link. # If you want to enable both OpenAL and libbs2b, or use shared libx264, add # --extra-ldflags="-Wl,--allow-multiple-definition". cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig \ ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/aarch64 \ --cross-prefix=aarch64-w64-mingw32- \ --windres="aarch64-w64-mingw32-windres -I/usr/llvm-mingw/generic-w64-mingw32/include" --enable-gpl \ --enable-version3 \ --disable-w32threads \ --disable-doc \ --disable-debug \ --enable-concise-version \ --enable-libfontconfig \ --enable-libfreetype \ --enable-libfribidi \ --enable-libass \ --enable-libbluray \ --enable-libcdio \ --enable-openal \ --enable-opengl \ --enable-libsoxr \ --enable-libvidstab \ --enable-libxml2 \ --enable-libzimg \ --enable-libaom \ --enable-libdav1d \ --enable-libgsm \ --enable-libilbc \ --enable-libmodplug \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libopenjpeg \ --enable-libopus \ --enable-libshine \ --enable-libsnappy \ --enable-libspeex \ --enable-libtheora \ --enable-libtwolame \ --enable-libvo-amrwbenc \ --enable-libvorbis \ --enable-libvpx \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ --enable-libxvid \ --enable-avisynth \ --enable-vapoursynth \ --extra-cflags="-I/usr/aarch64-w64-mingw32/include -DMODPLUG_STATIC -DVS_CORE_EXPORTS" \ --extra-ldflags="-I/usr/aarch64-w64-mingw32/lib" \ --target-os=mingw32 \ --arch=aarch64 \ --pkg-config-flags="--static" && \ make -j$(nproc) && \ make install # linking problems causing configure fail: libbluray, because libpng has undefined *neon* functions fontconfig, because libpng has undefined *neon* functions freetype2, because libpng has undefined *neon* functions png_do_expand_palette_rgb8_neon png_do_expand_palette_rgba8_neon png_riffle_palette_neon png_init_filter_functions_neon all are located in pngpriv.h, which is not installed --enable-libgme, missing = game-music-emu aarch64 build failed --enable-libxavs, missing = xavs aarch64 build failed --enable-mbedtls, missing = aarch64 build failed # For an FFmpeg with no optional external components, except AviSynth: cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/aarch64 && \ PKG_CONFIG_PATH=/usr/aarch64-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/aarch64 --cross-prefix=aarch64-w64-mingw32- \ --windres="aarch64-w64-mingw32-windres -I/usr/llvm-mingw/generic-w64-mingw32/include" \ --enable-gpl --enable-version3 --disable-w32threads --disable-doc \ --enable-avisynth --target-os=mingw32 --arch=aarch64 && \ make -j$(nproc) && \ make install i686 ++++ # FFmpeg updates so frequently that it's best to install it to a local area. # Declaring --pkg-config-flags="--static" is necessary for fontconfig, # libmodplug, SDL, and libx265 to link. # If you want to enable both OpenAL and libbs2b, add # --extra-ldflags="-Wl,--allow-multiple-definition". cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/i686 \ --cross-prefix=x86_64-w64-mingw32- \ --windres="x86_64-w64-mingw32-windres -F pe-i386" \ --progs-suffix=32 \ --enable-gpl \ --enable-version3 \ --disable-w32threads \ --disable-doc \ --disable-debug \ --enable-concise-version \ --enable-mbedtls \ --enable-libfontconfig \ --enable-libfreetype \ --enable-libfribidi \ --enable-libass \ --enable-libbluray \ --enable-libcdio \ --enable-lcms2 \ --enable-openal \ --enable-opengl \ --enable-libsoxr \ --enable-libvidstab \ --enable-libxml2 \ --enable-libzimg \ --enable-libaom \ --enable-libdav1d \ --enable-libgme \ --enable-libgsm \ --enable-libilbc \ --enable-libmodplug \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libopenjpeg \ --enable-libopus \ --enable-libshine \ --enable-libsnappy \ --enable-libspeex \ --enable-libtheora \ --enable-libtwolame \ --enable-libvo-amrwbenc \ --enable-libvorbis \ --enable-libvpx \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ --enable-libxavs \ --enable-libxvid \ --enable-avisynth \ --enable-vapoursynth \ --cpu=pentium3 \ --extra-cflags="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DMODPLUG_STATIC -DVS_CORE_EXPORTS" \ --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --target-os=mingw32 \ --arch=x86 \ --pkg-config-flags="--static" && \ make -j$(nproc) && \ make install # For an FFmpeg with no optional external components (except AviSynth): cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/i686 && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/i686 --cross-prefix=x86_64-w64-mingw32- \ --progs-suffix=32 --enable-gpl --enable-version3 --disable-w32threads \ --disable-doc --enable-avisynth --cpu=pentium3 --extra-cflags="-m32 -mfpmath=sse \ -march=pentium3 -msse -mtune=pentium3" --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --target-os=mingw32 --arch=x86 --windres="x86_64-w64-mingw32-windres -F pe-i386" && \ make -j$(nproc) && \ make install i686-avsgcc +++++++++++ # FFmpeg updates so frequently that it's best to install it to a local area. # Declaring --pkg-config-flags="--static" is necessary for fontconfig, # libmodplug, SDL, vapoursynth and libx265 to link. # If you want to enable both OpenAL and libbs2b, add # --extra-ldflags="-Wl,--allow-multiple-definition". cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/i686-avsgcc && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig \ ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/i686-avsgcc \ --cross-prefix=x86_64-w64-mingw32- \ --windres="x86_64-w64-mingw32-windres -F pe-i386" \ --progs-suffix=32-avsgcc \ --enable-gpl \ --enable-version3 \ --disable-w32threads \ --disable-doc \ --disable-debug \ --enable-concise-version \ --enable-mbedtls \ --enable-libfontconfig \ --enable-libfreetype \ --enable-libfribidi \ --enable-libass \ --enable-libbluray \ --enable-libcdio \ --enable-openal \ --enable-opengl \ --enable-libsoxr \ --enable-libvidstab \ --enable-libxml2 \ --enable-libzimg \ --enable-libaom \ --enable-libdav1d \ --enable-libgme \ --enable-libgsm \ --enable-libilbc \ --enable-libmodplug \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libopenjpeg \ --enable-libopus \ --enable-libshine \ --enable-libsnappy \ --enable-libspeex \ --enable-libtheora \ --enable-libtwolame \ --enable-libvo-amrwbenc \ --enable-libvorbis \ --enable-libvpx \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ --enable-libxavs \ --enable-libxvid \ --enable-avisynth \ --enable-vapoursynth \ --cpu=pentium3 \ --extra-cflags="-m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DMODPLUG_STATIC -DVS_CORE_EXPORTS -DAVSC_WIN32_GCC32" \ --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --target-os=mingw32 \ --arch=x86 \ --pkg-config-flags="--static" && \ make -j$(nproc) && \ make install # For an FFmpeg with no optional external components (except AviSynth): cd ~/mpv-build-deps/ffmpeg/ffmpeg-build/i686-avsgcc && \ PKG_CONFIG_PATH=/usr/i686-w64-mingw32/lib/pkgconfig ../../configure \ --prefix=$HOME/mpv-build-deps/ffmpeg_build/i686-avsgcc --cross-prefix=x86_64-w64-mingw32- \ --progs-suffix=32-avsgcc --enable-gpl --enable-version3 --disable-w32threads \ --disable-doc --enable-avisynth --cpu=pentium3 --extra-cflags="-m32 -mfpmath=sse \ -march=pentium3 -msse -mtune=pentium3 -DAVSC_WIN32_GCC32" --extra-ldflags="-m32 -L/usr/i686-w64-mingw32/lib" \ --target-os=mingw32 --arch=x86 --windres="x86_64-w64-mingw32-windres -F pe-i386" && \ make -j$(nproc) && \ make install //////////////////// /// Building mpv //////////////////// # mpv is a major component, so its source directory will not be in # mpv-build-deps, but in $HOME itself. cd ~/mpv-build-deps && \ git clone https://github.com/mpv-player/mpv && \ cd mpv && \ ./bootstrap.py && \ amd64 +++++ # Remember to have modified shaderc's pkgconfig files so that # libplacebo can find them and detect a new enough version to # activate vo_gpu_next cd ~/mpv && \ MPV_RELVER=mpv_r$(git rev-list --count HEAD) && \ CFLAGS="-DHAVE_GPL -march=core2 -DVS_CORE_EXPORTS -DCACA_STATIC" \ PKG_CONFIG_LIBDIR="$HOME/mpv-build-deps/ffmpeg_build/amd64/lib:/usr/x86_64-w64-mingw32/lib" \ PKG_CONFIG_PATH="$HOME/mpv-build-deps/ffmpeg_build/amd64/lib/pkgconfig:/usr/x86_64-w64-mingw32/lib/pkgconfig" \ TARGET=x86_64-w64-mingw32 ./waf configure --prefix=$HOME/mpv-build-deps/$MPV_RELVER/amd64 --out=mpv-build/amd64 \ --disable-debug-build --enable-static-build --enable-sdl2 \ --enable-dvdnav --enable-cdda --enable-openal --disable-manpage-build \ --disable-pdf-build && \ ./waf build && \ ./waf install && \ strip ~/mpv-build-deps/mpv_build/amd64/bin/mpv.exe && \ strip ~/mpv-build-deps/mpv_build/amd64/bin/mpv.com # In case a debug build is needed, remove --disable-debug from ./configure and # don't run the strip command. aarch64 +++++++ # Remember to have modified shaderc's pkgconfig files so that # libplacebo can find them and detect a new enough version to # activate vo_gpu_next cd ~/mpv && \ MPV_RELVER=mpv_r$(git rev-list --count HEAD) && \ CFLAGS="-DHAVE_GPL -DVS_CORE_EXPORTS -DCACA_STATIC" \ PKG_CONFIG_LIBDIR="$HOME/mpv-build-deps/ffmpeg_build/aarch64/lib:/usr/aarch64-w64-mingw32/lib" \ PKG_CONFIG_PATH="$HOME/mpv-build-deps/ffmpeg_build/aarch64/lib/pkgconfig:/usr/aarch64-w64-mingw32/lib/pkgconfig" \ TARGET=x86_64-w64-mingw32 ./waf configure --prefix=$HOME/mpv-build-deps/$MPV_RELVER/aarch64 --out=mpv-build/aarch64 \ --disable-debug-build --enable-static-build --enable-sdl2 \ --enable-dvdnav --enable-cdda --enable-openal --disable-manpage-build \ --disable-pdf-build && \ ./waf build && \ ./waf install && \ strip ~/mpv-build-deps/mpv_build/aarch64/bin/mpv.exe && \ strip ~/mpv-build-deps/mpv_build/aarch64/bin/mpv.com # In case a debug build is needed, remove --disable-debug from ./configure and # don't run the strip command. i686 ++++ # libplacebo isn't getting built properly for 32-bit, so disable it. cd ~/mpv-build-deps/mpv && \ MPV_RELVER=mpv_r$(git rev-list --count HEAD) && \ CFLAGS="-DHAVE_GPL -m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 \ -DVS_CORE_EXPORTS -DCACA_STATIC" LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ LINKFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ WINDRES="x86_64-w64-mingw32-windres -F pe-i386" \ PKG_CONFIG_LIBDIR="$HOME/mpv-build-deps/ffmpeg_build/i686/lib:/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH="$HOME/mpv-build-deps/ffmpeg_build/i686/lib/pkgconfig:/usr/i686-w64-mingw32/lib/pkgconfig" \ TARGET=x86_64-w64-mingw32 ./waf configure --prefix=$HOME/mpv-build-deps/$MPV_RELVER/i686 --out=mpv-build/i686 \ --disable-debug-build --enable-static-build --enable-sdl2 \ --enable-dvdnav --enable-cdda --disable-libplacebo --enable-openal --disable-manpage-build \ --disable-pdf-build && \ ./waf build && \ ./waf install && \ strip ~/mpv-build-deps/mpv_build/i686/bin/mpv.exe && \ strip ~/mpv-build-deps/mpv_build/i686/bin/mpv.com # In case a debug build is needed, remove --disable-debug from ./configure and # don't run the strip command. i686-avsgcc +++++++++++ # libplacebo isn't getting built properly for 32-bit, so disable it. cd ~/mpv && \ MPV_RELVER=mpv_r$(git rev-list --count HEAD) && \ CFLAGS="-DHAVE_GPL -m32 -mfpmath=sse -march=pentium3 -msse -mtune=pentium3 \ -DVS_CORE_EXPORTS -DCACA_STATIC" LDFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ LINKFLAGS="-m32 -L/usr/i686-w64-mingw32/lib" \ WINDRES="x86_64-w64-mingw32-windres -F pe-i386" \ PKG_CONFIG_LIBDIR="$HOME/mpv-build-deps/ffmpeg_build/32bit-avsgcc/lib:/usr/i686-w64-mingw32/lib" \ PKG_CONFIG_PATH="$HOME/mpv-build-deps/ffmpeg_build/32bit-avsgcc/lib/pkgconfig:/usr/i686-w64-mingw32/lib/pkgconfig" \ TARGET=x86_64-w64-mingw32 ./waf configure --prefix=$HOME/mpv-build-deps/$MPV_RELVER/i686-avsgcc --out=mpv-build/i686-avsgcc \ --disable-debug-build --enable-static-build --enable-sdl2 \ --enable-dvdnav --enable-cdda --disable-libplacebo --enable-openal --disable-manpage-build \ --disable-pdf-build && \ ./waf build && \ ./waf install && \ strip ~/mpv-build-deps/mpv_build/i686-avsgcc/bin/mpv.exe && \ strip ~/mpv-build-deps/mpv_build/i686-avsgcc/bin/mpv.com # In case a debug build is needed, remove --disable-debug from ./configure and # don't run the strip command. # And finally, to package everything into a 7zip archive. cd ~/mpv-build-deps/ && \ 7za a -mx9 $MPV_RELVER.7z $MPV_RELVER/