summaryrefslogtreecommitdiffstats
path: root/DOCS/crosscompile-mingw.txt
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-01-08 17:11:59 +0100
committerwm4 <wm4@nowhere>2013-01-08 17:21:04 +0100
commit53a4486fb6f2be3dcfc02ca853e0d7b46b0d2d9d (patch)
tree4fced1efd2200d04eb3ab39979199c0671cfac10 /DOCS/crosscompile-mingw.txt
parent13bc19d8802414dca96da5aa56720866e193e8be (diff)
downloadmpv-53a4486fb6f2be3dcfc02ca853e0d7b46b0d2d9d.tar.bz2
mpv-53a4486fb6f2be3dcfc02ca853e0d7b46b0d2d9d.tar.xz
DOCS: add some basic MinGW cross compilation instructions
Diffstat (limited to 'DOCS/crosscompile-mingw.txt')
-rw-r--r--DOCS/crosscompile-mingw.txt59
1 files changed, 59 insertions, 0 deletions
diff --git a/DOCS/crosscompile-mingw.txt b/DOCS/crosscompile-mingw.txt
new file mode 100644
index 0000000000..a3b9e3aab6
--- /dev/null
+++ b/DOCS/crosscompile-mingw.txt
@@ -0,0 +1,59 @@
+Cross compiling mpv to Windows is supported with MinGW-w64. This can be used to
+produce both 32 bit and 64 bit executables. MinGW-w64 is available from
+http://mingw-w64.sourceforge.net.
+
+You have to run mpv's configure with these arguments:
+ ./configure --enable-cross-compile --target=i686-w64-mingw32
+
+Using MXE to setup a MinGW-w64 environment is recommended: http://mxe.cc
+Currently, using an experimental branch of MXE is required:
+ https://github.com/tonytheodore/mxe.git
+
+Warning: the original MinGW (http://www.mingw.org) is unsupported.
+
+Note that MingGW environments included in Linux distributions are often broken,
+outdated and useless, and usually don't use MinGW-w64.
+
+Example with MXE
+================
+
+# Download MXE. Note that compiling the required packages requires about 1 GB
+# or more! We are using an experimental repository, which supports MinGW-w64.
+# The official MXE supports classic MinGW only, which doesn't work with mpv.
+
+cd /opt
+git clone https://github.com/tonytheodore/mxe.git mingw
+cd mingw
+
+# Edit the MXE target, so that MingGW-w64 for 32 bit targets is built.
+
+echo "MXE_TARGETS := i686-w64-mingw32" > settings.mk
+
+# Build required packages. The following provide a minimum required to build
+# mpv. (Not all of the following packages are strictly required.)
+
+make gcc
+make ffmpeg
+make libass
+make jpeg
+make pthreads
+
+# MXE and MingGW-w64 don't provide up-to-date OpenGL headers (to my knowledge).
+
+wget http://www.opengl.org/registry/api/glext.h
+mv glext.h usr/i686-w64-mingw32/include/GL/
+
+# Build mpv. The target will be used to automatically select the name of the
+# build tools involved (e.g. it will use i686-w64-mingw32-gcc).
+
+git clone https://github.com/mpv-player/mpv.git
+cd mpv
+export PATH=/opt/mingw/usr/bin/:$PATH
+./configure --enable-cross-compile --target=i686-w64-mingw32
+make
+
+# This should work. For some reason, the resulting .exe will depend on the DLL
+# /opt/mingw/usr/i686-w64-mingw32/bin/libwinpthread-1.dll because pthreads-w32
+# folks don't like static linking. How to enable static linking is left as
+# exercise for the reader. Passsing --disable-pthreads to mpv's configure will
+# get rid of the dependency, but may disable some features.