From 1f0d7db0796fe33e1a2025f7096671aa41fa2b8c Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 7 Nov 2018 10:20:28 +0100 Subject: [PATCH] WIP: Build static MPV --- gmp/mingw-w64/PKGBUILD | 48 ++++++++++++++++++++++++++++++++++++++++++ mpv/mingw-w64/PKGBUILD | 34 ++++++++++++++++++++---------- 2 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 gmp/mingw-w64/PKGBUILD diff --git a/gmp/mingw-w64/PKGBUILD b/gmp/mingw-w64/PKGBUILD new file mode 100644 index 00000000..a5397ce8 --- /dev/null +++ b/gmp/mingw-w64/PKGBUILD @@ -0,0 +1,48 @@ +pkgname=mingw-w64-gmp +pkgver=6.1.2 +pkgrel=1 +pkgdesc="A free library for arbitrary precision arithmetic (mingw-w64)" +arch=(any) +url="http://gmplib.org" +license=("LGPL3") +depends=(mingw-w64-crt) +makedepends=(mingw-w64-configure) +options=(staticlibs !strip !buildflags) +source=("ftp://ftp.gmplib.org/pub/gmp-${pkgver}/gmp-${pkgver}.tar.xz") +md5sums=('f58fa8001d60c4c77595fbbb62b63c1d') + +_architectures="i686-w64-mingw32 x86_64-w64-mingw32" + +build() { + cd "${srcdir}/gmp-${pkgver}" + for _arch in ${_architectures}; do + mkdir -p build-${_arch}-static && pushd build-${_arch}-static + ${_arch}-configure \ + --disable-shared \ + --enable-cxx + make + popd + mkdir -p build-${_arch}-shared && pushd build-${_arch}-shared + ${_arch}-configure \ + --disable-static \ + --enable-cxx + make + popd + done +} + +package() { + for _arch in ${_architectures}; do + cd "${srcdir}/gmp-${pkgver}/build-${_arch}-static" + make DESTDIR="$pkgdir" install + mv "$pkgdir/usr/$_arch/include/gmp.h" "$pkgdir/usr/$_arch/include/gmp-static.h" + mv "$pkgdir/usr/$_arch/include/gmpxx.h" "$pkgdir/usr/$_arch/include/gmpxx-static.h" + cd "${srcdir}/gmp-${pkgver}/build-${_arch}-shared" + make DESTDIR="$pkgdir" install + rm -r "$pkgdir/usr/${_arch}/share" + ${_arch}-strip --strip-unneeded "$pkgdir"/usr/${_arch}/bin/*.dll + ${_arch}-strip -g "$pkgdir"/usr/${_arch}/lib/*.a + done +} + + diff --git a/mpv/mingw-w64/PKGBUILD b/mpv/mingw-w64/PKGBUILD index ed6fa4d1..bca8fa2c 100644 --- a/mpv/mingw-w64/PKGBUILD +++ b/mpv/mingw-w64/PKGBUILD @@ -11,9 +11,9 @@ arch=('any') url="https://mpv.io" license=('GPL3') depends=( - 'mingw-w64-crt' 'mingw-w64-lcms2' 'mingw-w64-enca' 'mingw-w64-libjpeg-turbo' - 'mingw-w64-ffmpeg' 'mingw-w64-libass' 'mingw-w64-angleproject' - 'mingw-w64-lua' 'mingw-w64-zlib' + 'mingw-w64-crt' 'mingw-w64-lcms2' 'mingw-w64-enca' + 'mingw-w64-libjpeg-turbo' 'mingw-w64-ffmpeg' 'mingw-w64-libass' + 'mingw-w64-angleproject' 'mingw-w64-lua' 'mingw-w64-zlib' ) options=(!strip !buildflags staticlibs) makedepends=('mingw-w64-gcc' 'mingw-w64-pkg-config' 'python') @@ -30,28 +30,40 @@ prepare() { build() { cd "$srcdir/${_name}-${pkgver}" - mingw_c_flags="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4" - export LDFLAGS="" - export CFLAGS="$mingw_c_flags $CFLAGS" - export CXXFLAGS="$mingw_c_flags $CXXFLAGS" + local mingw_flags="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4" + local mingw_c_flags="$mingw_flags $CFLAGS" + local mingw_cxx_flags="$mingw-flags $CXXFLAGS" export DEST_OS=win32 for _arch in ${_architectures}; do export TARGET=$_arch + export CFLAGS="$mingw_c_flags -I$PWD/build" + export CXXFLAGS="$mingw_cxx_flags -I$PWD/build" # build static libmpv + mkdir -p build + for header in gmp{,xx}; do + cp "/usr/$_arch/include/$header-static.h" "build/$header.h" + done ./waf configure \ --prefix=/usr/$_arch \ --confdir=../etc/mpv \ - --enable-libmpv-static --enable-static - ./waf build + --enable-libmpv-static --enable-static \ + -v + export LDFLAGS="-Wl,-Bstatic -lavfilter -lavcodec -lavformat -lavutil -lass -lfribidi -lbluray -lxml -lvidstab -lsoxr -lomp -lgnutls -lnettle -lunistring -ltasn -lgmp -lp11kit -lssh -lcrypto -lSDL2 -lhid -lsetupapi -limm32 -lcrypt32" + ./waf build -v + + # don't override static mpv.exe + mv build/mpv{,-static}.exe # build shared libmpv + export LDFLAGS="" ./waf configure \ --prefix=/usr/$_arch \ --confdir=../etc/mpv \ - --enable-libmpv-shared - ./waf build + --enable-libmpv-shared \ + -v + ./waf build -v # I don't know how to do an out-of-source tree build with waf # since waf creates a dir called build I use this workaround