summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2020-06-07 23:31:55 +0200
committerJan Ekström <jeebjp@gmail.com>2020-06-22 23:57:15 +0300
commit0e2d4ee595987d27b1b19cd12e6ebd6ccc660034 (patch)
treec53b8eb620268441b90d4b92a85ef073a0957ae3
parent514166242763699633147e7aead31fc7ae16372e (diff)
downloadmpv-0e2d4ee595987d27b1b19cd12e6ebd6ccc660034.tar.bz2
mpv-0e2d4ee595987d27b1b19cd12e6ebd6ccc660034.tar.xz
ci: replace mingw build scripts
-rw-r--r--.travis.yml30
-rwxr-xr-xci/build-mingw64.sh137
2 files changed, 139 insertions, 28 deletions
diff --git a/.travis.yml b/.travis.yml
index f2adb4fd7a..a711b93775 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,6 +16,17 @@ _macbase:
'pkg-config', 'python']
update: true
+_mingwbase:
+ - &mingw
+ os: linux
+ addons:
+ apt:
+ packages: ['autoconf', 'automake', 'pkg-config', 'gcc-mingw-w64',
+ 'nasm', 'yasm']
+ cache:
+ directories:
+ - mingw_prefix/
+
matrix:
include:
- <<: *macNew
@@ -32,10 +43,10 @@ matrix:
- os: linux
compiler: clang
env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci:stable-deps CI_SCRIPT=ci/build-tumbleweed.sh
- - os: linux
- env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci-mingw64:i686 CI_SCRIPT=ci/build-mingw64.sh TARGET=i686-w64-mingw32
- - os: linux
- env: CONTAINER=registry.cirno.systems/kiwi/containers/mpv-ci-mingw64:x86_64 CI_SCRIPT=ci/build-mingw64.sh TARGET=x86_64-w64-mingw32
+ - <<: *mingw
+ env: CI_SCRIPT=ci/build-mingw64.sh TARGET=i686-w64-mingw32
+ - <<: *mingw
+ env: CI_SCRIPT=ci/build-mingw64.sh TARGET=x86_64-w64-mingw32
allow_failures:
- os: osx
osx_image: xcode9.2
@@ -62,7 +73,7 @@ branches:
before_install:
- if [ "$TRAVIS_COMPILER" = "clang" ]; then export CXX="clang++"; fi
- if [ "$TRAVIS_COMPILER" = "gcc" ]; then export CXX="g++"; fi
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker pull $CONTAINER; fi
+ - if [ -n "$CONTAINER" ]; then docker pull $CONTAINER; fi
- |
if [ "$TRAVIS_OS_NAME" = "freebsd" ]; then
# Requested in ci/build-freebsd.sh
@@ -129,7 +140,14 @@ cache:
script:
- ./bootstrap.py
- - if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run --env CC --env TARGET -v $TRAVIS_BUILD_DIR:/build $CONTAINER /bin/sh -c "cd /build && $CI_SCRIPT"; fi
+ - |
+ if [ "$TRAVIS_OS_NAME" = "linux" ]; then
+ if [ -n "$CONTAINER" ]; then
+ docker run --env CC --env TARGET -v $TRAVIS_BUILD_DIR:/build $CONTAINER /bin/sh -c "cd /build && $CI_SCRIPT"
+ else
+ $CI_SCRIPT
+ fi
+ fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then ./ci/build-macos.sh; fi
- if [ "$TRAVIS_OS_NAME" = "freebsd" ]; then ./ci/build-freebsd.sh; fi
after_failure: cat ./build/config.log
diff --git a/ci/build-mingw64.sh b/ci/build-mingw64.sh
index e0e8091905..906fa9687a 100755
--- a/ci/build-mingw64.sh
+++ b/ci/build-mingw64.sh
@@ -1,32 +1,125 @@
-#!/bin/sh
-set -e
+#!/bin/bash -e
-_mingw_sysroot=/usr/$TARGET/sysroot
-_mingw_prefix=$_mingw_sysroot/mingw
-_mingw_exec_prefix=$_mingw_prefix
-_mingw_libdir=$_mingw_exec_prefix/lib
-_mingw_datadir=$_mingw_prefix/share
+prefix_dir=$PWD/mingw_prefix
+mkdir -p "$prefix_dir"
+ln -snf . "$prefix_dir/usr"
+ln -snf . "$prefix_dir/local"
+
+wget="wget -nc --progress=bar:force"
+gitclone="git clone --depth=10"
+commonflags="--disable-static --enable-shared"
+
+export PKG_CONFIG_SYSROOT_DIR="$prefix_dir"
+export PKG_CONFIG_LIBDIR="$PKG_CONFIG_SYSROOT_DIR/lib/pkgconfig"
-export PKG_CONFIG_PATH="$_mingw_libdir/pkgconfig:$_mingw_datadir/pkgconfig";
export CC=$TARGET-gcc
export CXX=$TARGET-g++
export AR=$TARGET-ar
export NM=$TARGET-nm
export RANLIB=$TARGET-ranlib
-export CFLAGS="-O2 -mtune=intel -g -ggdb -pipe -Wall --param=ssp-buffer-size=4 -mms-bitfields -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fexceptions -fasynchronous-unwind-tables -fstack-protector-strong -fno-ident"
-export LDFLAGS="-Wl,--no-keep-memory -fstack-protector-strong"
+export CFLAGS="-O2 -pipe -Wall -D_FORTIFY_SOURCE=2"
+export LDFLAGS="-fstack-protector-strong"
+
+function builddir () {
+ [ -d "$1/builddir" ] && rm -rf "$1/builddir"
+ mkdir -p "$1/builddir"
+ pushd "$1/builddir"
+}
+
+function makeplusinstall () {
+ make -j$(nproc)
+ make DESTDIR="$prefix_dir" install
+}
+
+function gettar () {
+ name="${1##*/}"
+ [ -d "${name%%.*}" ] && return 0
+ $wget "$1"
+ tar -xaf "$name"
+}
+
+## iconv
+if [ ! -e "$prefix_dir/lib/libiconv.dll.a" ]; then
+ ver=1.16
+ gettar "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ver}.tar.gz"
+ builddir libiconv-${ver}
+ ../configure --host=$TARGET $commonflags
+ makeplusinstall
+ popd
+fi
+
+## zlib
+if [ ! -e "$prefix_dir/lib/libz.dll.a" ]; then
+ ver=1.2.11
+ gettar "https://zlib.net/zlib-${ver}.tar.gz"
+ pushd zlib-${ver}
+ make -fwin32/Makefile.gcc PREFIX=$TARGET- SHARED_MODE=1 \
+ DESTDIR="$prefix_dir" install \
+ BINARY_PATH=/bin INCLUDE_PATH=/include LIBRARY_PATH=/lib
+ popd
+fi
+
+## ffmpeg
+if [ ! -e "$prefix_dir/lib/libavcodec.dll.a" ]; then
+ [ -d ffmpeg ] || $gitclone https://github.com/FFmpeg/FFmpeg.git ffmpeg
+ builddir ffmpeg
+ ../configure --pkg-config=pkg-config --target-os=mingw32 \
+ --enable-cross-compile --cross-prefix=$TARGET- --arch=${TARGET%%-*} \
+ $commonflags \
+ --disable-{stripping,doc,programs,muxers,encoders,devices}
+ makeplusinstall
+ popd
+fi
+
+## freetype2
+if [ ! -e "$prefix_dir/lib/libfreetype.dll.a" ]; then
+ ver=2.10.2
+ gettar "https://download.savannah.gnu.org/releases/freetype/freetype-${ver}.tar.gz"
+ builddir freetype-${ver}
+ ZLIB_LIBS="-L'$prefix_dir/lib' -lz" \
+ ../configure --host=$TARGET $commonflags --with-png=no
+ makeplusinstall
+ popd
+fi
+[ -f "$prefix_dir/lib/libfreetype.dll.a" ] || { echo "libtool fuckup"; exit 1; }
+
+## fribidi
+if [ ! -e "$prefix_dir/lib/libfribidi.dll.a" ]; then
+ ver=1.0.9
+ gettar "https://github.com/fribidi/fribidi/releases/download/v${ver}/fribidi-${ver}.tar.xz"
+ builddir fribidi-${ver}
+ ../configure --host=$TARGET $commonflags
+ makeplusinstall
+ popd
+fi
+
+## libass
+if [ ! -e "$prefix_dir/lib/libass.dll.a" ]; then
+ [ -d libass ] || $gitclone https://github.com/libass/libass.git
+ builddir libass
+ [ -f ../configure ] || (cd .. && ./autogen.sh)
+ ../configure --host=$TARGET $commonflags
+ makeplusinstall
+ popd
+fi
+
+## lua
+if [ ! -e "$prefix_dir/lib/liblua.a" ]; then
+ ver=5.2.4
+ gettar "https://www.lua.org/ftp/lua-${ver}.tar.gz"
+ pushd lua-${ver}
+ make PLAT=mingw INSTALL_TOP="$prefix_dir" TO_BIN=/dev/null \
+ CC="$CC" AR="$AR r" all install
+ make INSTALL_TOP="$prefix_dir" pc >"$prefix_dir/lib/pkgconfig/lua.pc"
+ printf 'Name: Lua\nDescription:\nVersion: ${version}\nLibs: -L${libdir} -llua\nCflags: -I${includedir}\n' \
+ >>"$prefix_dir/lib/pkgconfig/lua.pc"
+ popd
+fi
+
+## mpv
+PKG_CONFIG=pkg-config CFLAGS="-I'$prefix_dir/include'" LDFLAGS="-L'$prefix_dir/lib'" \
python3 ./waf configure \
- --enable-static-build \
- --enable-libmpv-shared \
- --enable-lua \
- --enable-javascript \
- --enable-libarchive \
- --enable-libbluray \
- --enable-dvdnav \
- --enable-uchardet \
- --enable-vulkan \
- --enable-shaderc \
- --enable-rubberband \
- --enable-lcms2
+ --enable-libmpv-shared --lua=52
+
python3 ./waf build --verbose