|
|
<!DOCTYPE html>
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
|
|
|
|
<title>MXE (M cross environment)</title>
|
|
|
|
|
|
<link rel="stylesheet" href="assets/common.css">
|
|
|
|
|
|
</head>
|
|
|
<body>
|
|
|
|
|
|
<div id="navigation">
|
|
|
<h1>MXE (M cross environment)</h1>
|
|
|
|
|
|
<ul>
|
|
|
<li><a href="#introduction" >Introduction</a></li>
|
|
|
<li><a href="#screenshots" >Screenshots</a></li>
|
|
|
<li><a href="#tutorial" >Tutorial</a></li>
|
|
|
<li><a href="#download" >Download</a></li>
|
|
|
<li><a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">Mailing List</a></li>
|
|
|
<li><a href="https://github.com/mxe/mxe/issues">Issue Tracker</a></li>
|
|
|
</ul>
|
|
|
<ul>
|
|
|
<li><a href="#requirements" >Requirements</a></li>
|
|
|
<li><a href="#usage" >Usage</a></li>
|
|
|
<li><a href="#packages" >List of Packages</a></li>
|
|
|
<li><a href="#creating-packages">Creating Packages</a></li>
|
|
|
<li><a href="#copyright" >Copyright</a></li>
|
|
|
<li><a href="#legal" >Legal</a></li>
|
|
|
<li><a href="#history" >History</a></li>
|
|
|
</ul>
|
|
|
<ul>
|
|
|
<li><a href="#see-also" >See also</a></li>
|
|
|
<li><a href="#used-by" >Used by</a></li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="introduction">Introduction</h2>
|
|
|
|
|
|
<p>
|
|
|
MXE (M cross environment) is a Makefile that
|
|
|
compiles a cross compiler and cross compiles
|
|
|
many free libraries such as SDL and Qt. Thus,
|
|
|
it provides a nice cross compiling environment
|
|
|
for various target platforms, which
|
|
|
</p>
|
|
|
|
|
|
<ul>
|
|
|
<li>
|
|
|
is designed to
|
|
|
<a href="#requirements">run on any Unix system</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
is easy to adapt and to extend
|
|
|
</li>
|
|
|
<li>
|
|
|
builds
|
|
|
<a href="#packages">many free libraries</a>
|
|
|
in addition to the cross compiler
|
|
|
</li>
|
|
|
<li>
|
|
|
can also
|
|
|
<a href="#usage">build just a subset</a>
|
|
|
of the packages,
|
|
|
and automatically builds their dependencies
|
|
|
</li>
|
|
|
<li>
|
|
|
downloads all needed packages
|
|
|
and verifies them by their checksums
|
|
|
</li>
|
|
|
<li>
|
|
|
is able to update the version numbers of all packages automatically
|
|
|
</li>
|
|
|
<li>
|
|
|
directly uses source packages,
|
|
|
thus ensuring the whole build mechanism is transparent
|
|
|
</li>
|
|
|
<li>
|
|
|
allows inter-package and intra-package
|
|
|
<a href="#usage">parallel builds</a>
|
|
|
whenever possible
|
|
|
</li>
|
|
|
<li>
|
|
|
integrates well with <a href="#tutorial-5a">autotools</a>,
|
|
|
<a href="#tutorial-5b">cmake</a>, <a href="#tutorial-5c">qmake</a>,
|
|
|
and <a href="#tutorial-5d">hand-written makefiles</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
has been in continuous development <a href="#history">since 2007</a>
|
|
|
and is <a href="#used-by">used by several projects</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
has <a href="http://pkg.mxe.cc/">pre-compiled binaries</a>
|
|
|
that <a href="https://github.com/zer0main/battleship">can be used
|
|
|
in Continuous Integration systems</a>
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<h3>Supported Toolchains</h3>
|
|
|
|
|
|
<p>
|
|
|
Compiler and runtime: MinGW-w64.
|
|
|
</p>
|
|
|
|
|
|
<table id="supported-toolchains">
|
|
|
<tr>
|
|
|
<th rowspan="2">Target OS</th>
|
|
|
<th colspan="2">Packages</th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<th>Static</th>
|
|
|
<th>Shared</th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>32 bit Windows</td>
|
|
|
<td style='text-align:center'>99% (379/381)</td>
|
|
|
<td style='text-align:center'>72% (273/381)</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>64 bit Windows</td>
|
|
|
<td style='text-align:center'>94% (360/381)</td>
|
|
|
<td style='text-align:center'>71% (271/381)</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
<p>
|
|
|
These numbers were last updated on December 16, 2015.
|
|
|
See the <a href="build-matrix.html">current status</a>
|
|
|
for individual packages.
|
|
|
</p>
|
|
|
<p>
|
|
|
Executables built for 32 bit Windows can be
|
|
|
executed on 64 bit Windows as well.
|
|
|
</p>
|
|
|
<p>
|
|
|
How to choose MXE target:
|
|
|
</p>
|
|
|
<ol>
|
|
|
<li>If you want a 64 bit Windows executable,
|
|
|
statically linked into one big executable:
|
|
|
use MXE_TARGETS x86_64-w64-mingw32.static;</li>
|
|
|
<li>If you want a 64 bit Windows executable,
|
|
|
split into an executable and dependant dlls
|
|
|
use MXE_TARGETS x86_64-w64-mingw32.shared;</li>
|
|
|
<li>If you want a 32 bit Windows executable,
|
|
|
statically linked into one big executable:
|
|
|
use MXE_TARGETS i686-w64-mingw32.static;</li>
|
|
|
<li>If you want a 32 bit Windows executable,
|
|
|
split into an executable and dependant dlls
|
|
|
use MXE_TARGETS i686-w64-mingw32.shared.</li>
|
|
|
</ol>
|
|
|
<p>
|
|
|
Remark: The 'w64-mingw32' in those names are left-overs from
|
|
|
historical evolutions in the open source cross-compilation world
|
|
|
and refer in no way to the result being 64 or 32 bit Windows.
|
|
|
</p>
|
|
|
<p>
|
|
|
OpenMP (<a href="https://gcc.gnu.org/projects/gomp/">libgomp</a>)
|
|
|
and pthreads (<a href="https://mingw-w64.sourceforge.io/">winpthreads</a>)
|
|
|
are always available.
|
|
|
</p>
|
|
|
<p>
|
|
|
Experimental support for GCC with posix threads was
|
|
|
added in <a href="https://github.com/mxe/mxe/pull/958">November 2015</a>.
|
|
|
</p>
|
|
|
<p>
|
|
|
Experimental support for alternate GCC Exception Handling was
|
|
|
added in <a href="https://github.com/mxe/mxe/pull/1664">February 2017</a>.
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="screenshots">Screenshots</h2>
|
|
|
|
|
|
<p>
|
|
|
Cross compiling
|
|
|
<a href="https://thebeez.home.xs4all.nl/4tH/">4tH</a>:
|
|
|
</p>
|
|
|
<a href="assets/screenshot-4th-compile.png">
|
|
|
<img src="assets/screenshot-4th-compile-small.png" alt="4th-compile">
|
|
|
</a>
|
|
|
|
|
|
<p>
|
|
|
and running it:
|
|
|
</p>
|
|
|
<a href="assets/screenshot-4th-run.png">
|
|
|
<img src="assets/screenshot-4th-run-small.png" alt="4th-run">
|
|
|
</a>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="tutorial">Tutorial</h2>
|
|
|
|
|
|
<h3 id="tutorial-1">Step 1: Requirements and Download</h3>
|
|
|
|
|
|
<p>
|
|
|
First, you should ensure that your system meets
|
|
|
MXE's
|
|
|
<a href="#requirements">requirements</a>.
|
|
|
You will almost certainly have to install some stuff.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
When everything is fine, download the
|
|
|
<a href="#download">current version</a>:
|
|
|
</p>
|
|
|
<pre>git clone https://github.com/mxe/mxe.git</pre>
|
|
|
|
|
|
<p>
|
|
|
If you don't mind installing it in your home directory,
|
|
|
just skip the following step and go straight to step 3.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
MXE builds and installs everything under the same
|
|
|
top-level directory and is not relocatable after
|
|
|
the first packages are built.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Due to limitations of GNU Make, the path of MXE is not allowed
|
|
|
to contain any whitespace characters.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-2">Step 2: System-wide Installation (optional)</h3>
|
|
|
|
|
|
<p>
|
|
|
Now you should save any previous installation
|
|
|
of the MXE.
|
|
|
Assuming you've installed it under
|
|
|
/opt/mxe (any other directory will do as well),
|
|
|
you should execute the following commands:
|
|
|
</p>
|
|
|
<pre>su
|
|
|
mv /opt/mxe /opt/mxe.old
|
|
|
exit</pre>
|
|
|
|
|
|
<p>
|
|
|
Then you need to transfer the entire directory to its definitive location.
|
|
|
We will assume again you use /opt/mxe,
|
|
|
but feel free to use any other directory if you like.
|
|
|
</p>
|
|
|
<pre>su
|
|
|
mv mxe /opt/mxe
|
|
|
exit</pre>
|
|
|
|
|
|
<p>
|
|
|
We're almost done.
|
|
|
Just change to your newly created directory and get going:
|
|
|
</p>
|
|
|
<pre>cd /opt/mxe</pre>
|
|
|
|
|
|
<h3 id="tutorial-3">Step 3a: Build MXE</h3>
|
|
|
|
|
|
<p>
|
|
|
Enter the directory where you've downloaded MXE.
|
|
|
Now it depends on what you actually want – or need.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
If you choose to enter:
|
|
|
</p>
|
|
|
<pre>make</pre>
|
|
|
<p>
|
|
|
you're in for a long wait,
|
|
|
because it compiles
|
|
|
<a href="#packages">a lot of packages</a>.
|
|
|
On the other hand it doesn't require any intervention,
|
|
|
so you're free to do whatever you like
|
|
|
– like watch a movie or go for a night on the town.
|
|
|
When it's done you'll find that you've installed
|
|
|
a very capable Win32 cross compiler onto your system.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
If you only need the most basic tools you can also use:
|
|
|
</p>
|
|
|
<pre>make cc</pre>
|
|
|
<p>
|
|
|
and add any additional packages you need later on.
|
|
|
You can also supply a host of packages on the
|
|
|
<a href="#usage">command line</a>,
|
|
|
e.g.:
|
|
|
</p>
|
|
|
<pre>make gtk lua libidn</pre>
|
|
|
<p>
|
|
|
Targets can also be specified on the command line.
|
|
|
By default, only i686-w64-mingw32.static is built, but you can
|
|
|
build your toolchain(s) of choice with:
|
|
|
</p>
|
|
|
<pre>make MXE_TARGETS='x86_64-w64-mingw32.static i686-w64-mingw32.static'</pre>
|
|
|
<p>
|
|
|
or by adjusting the <code>MXE_TARGETS</code> variable
|
|
|
in <code>settings.mk</code>.
|
|
|
</p>
|
|
|
<p>
|
|
|
You'll always end up with a consistent cross compiling environment.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
If you have trouble here, please feel free to
|
|
|
contact the mxe team through the
|
|
|
<a href="https://github.com/mxe/mxe/issues">issue tracker</a> or
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">mailing list</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
After you're done it just needs a little post-installation.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-3b">Step 3b: Install MXE from the binary distribution</h3>
|
|
|
|
|
|
<p>
|
|
|
Instead of building MXE packages from source, you can
|
|
|
download precompiled packages. There are two options:
|
|
|
tar archives and Debian packages.
|
|
|
See <a href="http://pkg.mxe.cc/">pkg.mxe.cc</a>.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-4">Step 4: Environment Variables</h3>
|
|
|
|
|
|
<p>
|
|
|
Edit your .bashrc script in order to change $PATH:
|
|
|
</p>
|
|
|
<pre>export PATH=/<em>where MXE is installed</em>/usr/bin:$PATH</pre>
|
|
|
|
|
|
<p>
|
|
|
You may be tempted to also add <code>$(TARGET)/bin</code>
|
|
|
to your path. You <strong>never</strong> want to do this,
|
|
|
the executables and scripts in there will cause conflicts
|
|
|
with your native toolchain.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
In case you are using custom $PKG_CONFIG_PATH entries,
|
|
|
you can add separate entries for cross builds:
|
|
|
</p>
|
|
|
<pre>export PKG_CONFIG_PATH="<em>entries for native builds</em>"</pre>
|
|
|
<pre>export PKG_CONFIG_PATH_i686_w64_mingw32_static="<em>entries for MXE builds</em>"</pre>
|
|
|
<p>
|
|
|
Remember to use i686-w64-mingw32.static-pkg-config
|
|
|
instead of pkg-config for cross builds.
|
|
|
The Autotools do that automatically for you.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Note that any other compiler related environment variables
|
|
|
(like $CC, $LDFLAGS, etc.)
|
|
|
may spoil your compiling pleasure,
|
|
|
so be sure to delete or disable those.
|
|
|
</p>
|
|
|
<p>
|
|
|
For the most isolated and repeatable environment,
|
|
|
use a white-list approach:
|
|
|
</p>
|
|
|
<pre>unset `env | \
|
|
|
grep -vi '^EDITOR=\|^HOME=\|^LANG=\|MXE\|^PATH=' | \
|
|
|
grep -vi 'PKG_CONFIG\|PROXY\|^PS1=\|^TERM=' | \
|
|
|
cut -d '=' -f1 | tr '\n' ' '`</pre>
|
|
|
<!-- update mxe-activate also -->
|
|
|
<p>
|
|
|
Congratulations!
|
|
|
You're ready to cross compile anything you like.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-5a">Step 5a: Cross compile your Project (Autotools)</h3>
|
|
|
|
|
|
<p>
|
|
|
If you use the
|
|
|
<a href="https://www.lrde.epita.fr/~adl/autotools.html">Autotools</a>,
|
|
|
all you have to do is:
|
|
|
</p>
|
|
|
<pre>./configure --host=i686-w64-mingw32.static
|
|
|
make</pre>
|
|
|
|
|
|
<p>
|
|
|
If you build a library, you might also want to enforce a static build:
|
|
|
</p>
|
|
|
<pre>./configure --host=i686-w64-mingw32.static --enable-static --disable-shared
|
|
|
make</pre>
|
|
|
|
|
|
<p>
|
|
|
Don't worry about a warning like this:
|
|
|
</p>
|
|
|
<pre>configure: WARNING: If you wanted to set the --build type, don't use --host.
|
|
|
If a cross compiler is detected then cross compile mode will be used.</pre>
|
|
|
<p>
|
|
|
Everything will be just fine.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-5b">Step 5b: Cross compile your Project (CMake)</h3>
|
|
|
|
|
|
<p>
|
|
|
If you have a
|
|
|
<a href="https://www.cmake.org/">CMake</a> project,
|
|
|
you can use the provided cmake wrapper:
|
|
|
</p>
|
|
|
<pre>i686-w64-mingw32.static-cmake ...</pre>
|
|
|
<p>
|
|
|
This will automatically use the MXE version of cmake
|
|
|
and locate the toolchain file.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-5c">Step 5c: Cross compile your Project (Qt)</h3>
|
|
|
|
|
|
<p>
|
|
|
If you have a
|
|
|
<a href="https://qt-project.org/">Qt</a> application,
|
|
|
all you have to do is:
|
|
|
</p>
|
|
|
<pre>/where MXE is installed/usr/i686-w64-mingw32.static/qt/bin/qmake
|
|
|
make</pre>
|
|
|
<p>
|
|
|
Note that Qt 4 is in the "qt" subdirectory. Qt 5 is in the "qt5" subdirectory
|
|
|
and its qmake can be invoked similarly.
|
|
|
</p>
|
|
|
<p>
|
|
|
If you are using Qt plugins
|
|
|
such as the svg or ico image handlers,
|
|
|
you should also have a look at the
|
|
|
<a href="https://qt-project.org/doc/qt-4.8/plugins-howto.html#static-plugins">Qt documentation about static plugins</a>.
|
|
|
</p>
|
|
|
<p>
|
|
|
Note the sql drivers (-qt-sql-*)
|
|
|
and the image handlers for jpeg, tiff, gif and mng
|
|
|
are built-in, <em>not</em> plugins.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-5d">Step 5d: Cross compile your Project (Makefile)</h3>
|
|
|
|
|
|
<p>
|
|
|
If you have a handwritten Makefile,
|
|
|
you probably will have to make a few adjustments to it:
|
|
|
</p>
|
|
|
<pre>CC=$(CROSS)gcc
|
|
|
LD=$(CROSS)ld
|
|
|
AR=$(CROSS)ar
|
|
|
PKG_CONFIG=$(CROSS)pkg-config</pre>
|
|
|
<p>
|
|
|
You may have to add a few others, depending on your project.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Then, all you have to do is:
|
|
|
</p>
|
|
|
<pre>make CROSS=i686-w64-mingw32.static-</pre>
|
|
|
<p>
|
|
|
That's it!
|
|
|
</p>
|
|
|
|
|
|
<h3 id="tutorial-5e">Step 5e: Cross compile your Project (OSG)</h3>
|
|
|
|
|
|
<p>
|
|
|
Using static OpenSceneGraph libraries requires a few changes to your source.
|
|
|
The graphics subsystem and all plugins required by your application must be
|
|
|
referenced explicitly. Use a code block like the following:
|
|
|
</p>
|
|
|
<pre>#ifdef OSG_LIBRARY_STATIC
|
|
|
USE_GRAPHICSWINDOW()
|
|
|
USE_OSGPLUGIN(<plugin1>)
|
|
|
USE_OSGPLUGIN(<plugin2>)
|
|
|
...
|
|
|
#endif</pre>
|
|
|
<p>
|
|
|
Look at <code>examples/osgstaticviewer/osgstaticviewer.cpp</code> in the
|
|
|
OpenSceneGraph source distribution for an example. This example can be
|
|
|
compiled with the following command:
|
|
|
</p>
|
|
|
<pre>i686-w64-mingw32.static-g++ \
|
|
|
-o osgstaticviewer.exe examples/osgstaticviewer/osgstaticviewer.cpp \
|
|
|
`i686-w64-mingw32.static-pkg-config --cflags openscenegraph-osgViewer openscenegraph-osgPlugins` \
|
|
|
`i686-w64-mingw32.static-pkg-config --libs openscenegraph-osgViewer openscenegraph-osgPlugins`</pre>
|
|
|
<p>
|
|
|
The <code>i686-w64-mingw32.static-pkg-config</code> command from MXE will
|
|
|
automatically add <code>-DOSG_LIBRARY_STATIC</code> to your compiler flags.
|
|
|
</p>
|
|
|
|
|
|
<h3>Further Steps</h3>
|
|
|
|
|
|
<p>
|
|
|
If you need further assistance,
|
|
|
feel free to join the
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">mailing list</a>
|
|
|
where you'll get in touch with
|
|
|
the MXE developers
|
|
|
and other users.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<div id="latest-release"></div>
|
|
|
<div id="latest-version"></div>
|
|
|
<div id="development"></div>
|
|
|
<h2 id="download">Download</h2>
|
|
|
|
|
|
<p>
|
|
|
To obtain the current version, run:
|
|
|
</p>
|
|
|
|
|
|
<pre>git clone https://github.com/mxe/mxe.git</pre>
|
|
|
|
|
|
<p>
|
|
|
To retrieve updates, run:
|
|
|
</p>
|
|
|
|
|
|
<pre>git pull</pre>
|
|
|
|
|
|
<p>
|
|
|
You can also browse the
|
|
|
<a href="https://github.com/mxe/mxe">web repository</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
In addition,
|
|
|
feel free to join the
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">mailing list</a>
|
|
|
and to <a href="#creating-packages">propose new packages</a>.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="requirements">Requirements</h2>
|
|
|
|
|
|
<p>
|
|
|
MXE requires a recent Unix system where
|
|
|
all components as stated in the table below
|
|
|
are installed. It also needs roughly 2 GiB of
|
|
|
RAM to link gcc and at least 700 MB of disk
|
|
|
space per target (counted with only gcc
|
|
|
built).
|
|
|
</p>
|
|
|
<p>
|
|
|
Detailed instructions are available for:
|
|
|
</p>
|
|
|
|
|
|
<ul class="compact-list">
|
|
|
<li><a href="#requirements-debian">Debian</a></li>
|
|
|
<li><a href="#requirements-fedora">Fedora</a></li>
|
|
|
<li><a href="#requirements-freebsd">FreeBSD</a></li>
|
|
|
<li><a href="#requirements-frugalware">Frugalware</a></li>
|
|
|
<li><a href="#requirements-gentoo">Gentoo</a></li>
|
|
|
<li><a href="#requirements-macos">Mac OS X</a></li>
|
|
|
<li><a href="#requirements-opensuse">openSUSE</a></li>
|
|
|
<li><a href="#requirements-wsl">Windows Subsystem for Linux</a></li>
|
|
|
</ul>
|
|
|
|
|
|
<table class="requirements">
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/autoconf/">Autoconf</a></td>
|
|
|
<td>≥ 2.68</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/automake/">Automake</a></td>
|
|
|
<td>≥ 1.11.3</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/bash/">Bash</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/bison/">Bison</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="http://www.bzip.org/">Bzip2</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://flex.sourceforge.io/">Flex</a></td>
|
|
|
<td>≥ 2.5.31</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/gcc/">GCC</a> (gcc, g++)</td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="http://www.gdk-pixbuf.org/">gdk-pixbuf</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://git-scm.com/">Git</a></td>
|
|
|
<td>≥ 1.7</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/coreutils/">GNU Coreutils</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/gettext/">GNU Gettext</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/gperf/">GNU gperf</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/make/">GNU Make</a></td>
|
|
|
<td>≥ 3.81</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/sed/">GNU Sed</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/tar/">GNU Tar</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://freedesktop.org/wiki/Software/intltool/">Intltool</a></td>
|
|
|
<td>≥ 0.40</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://en.wikipedia.org/wiki/C_standard_library">LibC</a> for 32-bit</td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/libtool/">Libtool</a></td>
|
|
|
<td>≥ 2.2</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.openssl.org/">OpenSSL</a>-dev</td>
|
|
|
<td>≥ 1.01</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://p7zip.sourceforge.io/">p7zip (7-Zip)</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/patch/">Patch</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.perl.org/">Perl</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="http://search.cpan.org/dist/XML-Parser/Parser.pm">Perl XML::Parser</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.freedesktop.org/wiki/Software/pkg-config/">Pkg-config</a></td>
|
|
|
<td>≥ 0.16</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.python.org/">Python</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.ruby-lang.org/">Ruby</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="http://www.scons.org/">SCons</a></td>
|
|
|
<td>≥ 0.98</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="http://www.info-zip.org/UnZip.html">UnZip</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://www.gnu.org/software/wget/">Wget</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://tukaani.org/xz/">XZ Utils</a></td>
|
|
|
<td></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td><a href="https://zlib.net/">zlib</a></td>
|
|
|
<td>≥ 1.20</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
<h3 id="requirements-debian">Debian and derivatives</h3>
|
|
|
|
|
|
<!-- https://www.debian.org/distrib/packages#search_packages -->
|
|
|
<pre>apt-get install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
autopoint \
|
|
|
bash \
|
|
|
bison \
|
|
|
bzip2 \
|
|
|
flex \
|
|
|
g++ \
|
|
|
g++-multilib \
|
|
|
gettext \
|
|
|
git \
|
|
|
gperf \
|
|
|
intltool \
|
|
|
libc6-dev-i386 \
|
|
|
libgdk-pixbuf2.0-dev \
|
|
|
libltdl-dev \
|
|
|
libssl-dev \
|
|
|
libtool-bin \
|
|
|
libxml-parser-perl \
|
|
|
make \
|
|
|
openssl \
|
|
|
p7zip-full \
|
|
|
patch \
|
|
|
perl \
|
|
|
pkg-config \
|
|
|
python \
|
|
|
ruby \
|
|
|
scons \
|
|
|
sed \
|
|
|
unzip \
|
|
|
wget \
|
|
|
xz-utils</pre>
|
|
|
|
|
|
<p>
|
|
|
On 32-bit installs,
|
|
|
<pre>
|
|
|
g++-multilib
|
|
|
libc6-dev-i386
|
|
|
</pre>
|
|
|
are not required, however there are potential issues with
|
|
|
<a href="#issue-32-bit-systems">32-bit systems</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Only the <a href="https://www.debian.org/releases/stable/">latest Debian stable series</a> is supported.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
You can install a precompiled MXE via Debian packages.
|
|
|
See <a href="http://pkg.mxe.cc/">pkg.mxe.cc</a>.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="requirements-fedora">Fedora</h3>
|
|
|
|
|
|
<!-- https://admin.fedoraproject.org/pkgdb/ -->
|
|
|
<pre>yum install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
bash \
|
|
|
bison \
|
|
|
bzip2 \
|
|
|
flex \
|
|
|
gcc-c++ \
|
|
|
gdk-pixbuf2-devel \
|
|
|
gettext \
|
|
|
git \
|
|
|
gperf \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
make \
|
|
|
openssl-devel \
|
|
|
p7zip \
|
|
|
patch \
|
|
|
perl \
|
|
|
pkgconfig \
|
|
|
python \
|
|
|
ruby \
|
|
|
scons \
|
|
|
sed \
|
|
|
unzip \
|
|
|
wget \
|
|
|
xz</pre>
|
|
|
|
|
|
<p>
|
|
|
On 64-bit Fedora,
|
|
|
there are <a href="#issue-non-multilib">issues without a 32-bit compiler</a>.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="requirements-freebsd">FreeBSD</h3>
|
|
|
|
|
|
<!-- https://www.freshports.org/ -->
|
|
|
<pre>pkg install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
bash \
|
|
|
bison \
|
|
|
coreutils \
|
|
|
flex \
|
|
|
gcc \
|
|
|
gdk-pixbuf2 \
|
|
|
gettext \
|
|
|
git \
|
|
|
glib \
|
|
|
gmake \
|
|
|
gperf \
|
|
|
gsed \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
openssl \
|
|
|
p5-XML-Parser \
|
|
|
p7zip \
|
|
|
patch \
|
|
|
perl5 \
|
|
|
pkgconf \
|
|
|
python \
|
|
|
ruby \
|
|
|
scons \
|
|
|
unzip \
|
|
|
wget</pre>
|
|
|
|
|
|
<p>
|
|
|
Use gmake instead of make.
|
|
|
</p>
|
|
|
<p>
|
|
|
Install file(1) from ports, because file(1) from base
|
|
|
<a href="https://forums.freebsd.org/threads/usr-bin-file-works-very-slow.52958/">works</a>
|
|
|
very-very-very slow with long text files.
|
|
|
</p>
|
|
|
<p>
|
|
|
Do not build as root. See
|
|
|
<a href="https://github.com/mxe/mxe/issues/902">#902</a>.
|
|
|
</p>
|
|
|
<p>
|
|
|
Ensure that /usr/local/bin precedes /usr/bin in your $PATH:
|
|
|
</p>
|
|
|
<p>
|
|
|
For C style shells, edit .cshrc
|
|
|
</p>
|
|
|
<pre>setenv PATH /usr/local/bin:$PATH</pre>
|
|
|
<p>
|
|
|
For Bourne shells, edit .profile
|
|
|
</p>
|
|
|
<pre>export PATH=/usr/local/bin:$PATH</pre>
|
|
|
<p>
|
|
|
On 64-bit FreeBSD,
|
|
|
there are <a href="#issue-non-multilib">issues without a 32-bit compiler</a>.
|
|
|
</p>
|
|
|
<p>
|
|
|
<strong>N.B. FreeBSD is no longer fully supported</strong>
|
|
|
</p>
|
|
|
<p>
|
|
|
to build the remainder of MXE, run:
|
|
|
</p>
|
|
|
<pre>gmake EXCLUDE_PKGS='gtksourceviewmm2 ocaml% openexr pcl qtbase'</pre>
|
|
|
<p>
|
|
|
to see a list of all dependent downstream packages that
|
|
|
will be excluded, run:
|
|
|
</p>
|
|
|
<pre>gmake show-downstream-deps-'gtksourceviewmm2 ocaml% openexr \
|
|
|
pcl qtbase'</pre>
|
|
|
|
|
|
<h3 id="requirements-frugalware">Frugalware</h3>
|
|
|
|
|
|
<!-- https://www.frugalware.org/packages -->
|
|
|
<pre>pacman-g2 -S \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
bash \
|
|
|
bison \
|
|
|
bzip2 \
|
|
|
flex \
|
|
|
gcc \
|
|
|
gdk-pixbuf2\
|
|
|
gettext \
|
|
|
git \
|
|
|
gperf \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
make \
|
|
|
openssl \
|
|
|
patch \
|
|
|
perl \
|
|
|
perl-xml-parser \
|
|
|
pkgconfig \
|
|
|
python \
|
|
|
ruby \
|
|
|
scons \
|
|
|
sed \
|
|
|
unzip \
|
|
|
wget \
|
|
|
xz \
|
|
|
xz-lzma</pre>
|
|
|
|
|
|
<p>
|
|
|
On 64-bit Frugalware,
|
|
|
there are <a href="#issue-non-multilib">issues without a 32-bit compiler</a>.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="requirements-gentoo">Gentoo</h3>
|
|
|
|
|
|
<!-- https://packages.gentoo.org/ -->
|
|
|
<pre>emerge \
|
|
|
app-arch/bzip2 \
|
|
|
app-arch/p7zip \
|
|
|
app-arch/unzip \
|
|
|
app-arch/xz-utils \
|
|
|
app-shells/bash \
|
|
|
dev-lang/perl \
|
|
|
dev-lang/python \
|
|
|
dev-lang/ruby \
|
|
|
dev-libs/openssl \
|
|
|
dev-perl/XML-Parser \
|
|
|
dev-util/gperf \
|
|
|
dev-util/intltool \
|
|
|
dev-util/pkgconfig \
|
|
|
dev-util/scons \
|
|
|
dev-vcs/git \
|
|
|
net-misc/wget \
|
|
|
sys-apps/sed \
|
|
|
sys-devel/autoconf \
|
|
|
sys-devel/automake \
|
|
|
sys-devel/bison \
|
|
|
sys-devel/flex \
|
|
|
sys-devel/gcc \
|
|
|
sys-devel/gettext \
|
|
|
sys-devel/libtool \
|
|
|
sys-devel/make \
|
|
|
sys-devel/patch \
|
|
|
x11-libs/gdk-pixbuf</pre>
|
|
|
|
|
|
<h3 id="requirements-macos">Mac OS X</h3>
|
|
|
|
|
|
<p>
|
|
|
Install
|
|
|
<a href="https://developer.apple.com/xcode/">the latest Xcode</a>
|
|
|
</p>
|
|
|
<h5 id="requirements-macos-macports">MacPorts</h5>
|
|
|
<p>
|
|
|
Install <a href="https://www.macports.org/">MacPorts</a>,
|
|
|
then run:
|
|
|
</p>
|
|
|
<!-- https://www.macports.org/ports.php -->
|
|
|
<pre>sudo port install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
coreutils \
|
|
|
gdk-pixbuf2 \
|
|
|
gnutar \
|
|
|
gsed \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
p7zip \
|
|
|
pkgconfig \
|
|
|
scons \
|
|
|
wget \
|
|
|
xz</pre>
|
|
|
|
|
|
<h5 id="requirements-macos-rudix">Rudix</h5>
|
|
|
<p>
|
|
|
Install <a href="http://rudix.org/">Rudix</a>,
|
|
|
then run:
|
|
|
</p>
|
|
|
<!-- http://rudix.org/packages/index.html -->
|
|
|
<pre>sudo rudix install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
coreutils \
|
|
|
glib \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
p7zip \
|
|
|
scons \
|
|
|
sed \
|
|
|
tar \
|
|
|
wget \
|
|
|
xz</pre>
|
|
|
<p>
|
|
|
Note: <b>gdk-pixbuf2</b> is not installed in method 2,
|
|
|
so you can not build <b>gtk3</b>. Other packages may be
|
|
|
missing on Rudix - please open an issue if you find any.
|
|
|
</p>
|
|
|
|
|
|
<h5 id="requirements-macos-homebrew">Homebrew</h5>
|
|
|
<p>
|
|
|
Install <a href="https://brew.sh/">Homebrew</a>,
|
|
|
then run:
|
|
|
</p>
|
|
|
<!-- http://braumeister.org/ -->
|
|
|
<pre>brew install \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
coreutils \
|
|
|
gdk-pixbuf \
|
|
|
gnu-sed \
|
|
|
gnu-tar \
|
|
|
intltool \
|
|
|
libtool \
|
|
|
p7zip \
|
|
|
pkg-config \
|
|
|
scons \
|
|
|
wget \
|
|
|
xz</pre>
|
|
|
<p>
|
|
|
You will see messages about
|
|
|
<a href="https://github.com/Homebrew/brew/blob/master/docs/FAQ.md#what-does-keg-only-mean"><code>keg-only</code></a>
|
|
|
formulae and tools prefixed with 'g' - you can safely ignore these
|
|
|
and no homebrew related <code>$PATH</code> modifications or
|
|
|
<code>brew link</code>s are necessary.
|
|
|
|
|
|
<h5 id="requirements-macos-general">Genral Notes</h5>
|
|
|
<p>
|
|
|
You may be prompted to install a java runtime
|
|
|
- this is not required.
|
|
|
</p>
|
|
|
<p>
|
|
|
Mac OS X versions ≤ 10.9 are no longer tested.
|
|
|
</p>
|
|
|
<h5>Certain packages have open issues on OS X</h5>
|
|
|
<p>
|
|
|
For Xcode <7.3, run:
|
|
|
</p>
|
|
|
<pre>make EXCLUDE_PKGS='nsis'</pre>
|
|
|
|
|
|
<h3 id="requirements-opensuse">openSUSE</h3>
|
|
|
|
|
|
<!-- https://software.opensuse.org/131/en -->
|
|
|
<pre>zypper install -R \
|
|
|
autoconf \
|
|
|
automake \
|
|
|
bash \
|
|
|
bison \
|
|
|
bzip2 \
|
|
|
flex \
|
|
|
gcc-32bit \
|
|
|
gcc-c++ \
|
|
|
gdk-pixbuf-devel \
|
|
|
gettext-tools \
|
|
|
git \
|
|
|
glibc-devel-32bit \
|
|
|
gperf \
|
|
|
intltool \
|
|
|
libgcc46-32bit \
|
|
|
libgomp46-32bit \
|
|
|
libopenssl-devel \
|
|
|
libstdc++46-devel-32bit \
|
|
|
libtool \
|
|
|
make \
|
|
|
openssl \
|
|
|
p7zip \
|
|
|
patch \
|
|
|
perl \
|
|
|
perl-XML-Parser \
|
|
|
pkg-config \
|
|
|
python \
|
|
|
ruby \
|
|
|
scons \
|
|
|
sed \
|
|
|
unzip \
|
|
|
wget \
|
|
|
xz</pre>
|
|
|
|
|
|
<p>
|
|
|
On 32-bit installs,
|
|
|
<pre>
|
|
|
gcc-32bit
|
|
|
glibc-devel-32bit
|
|
|
libgcc46-32bit
|
|
|
libgomp46-32bit
|
|
|
libstdc++46-devel-32bit
|
|
|
</pre>
|
|
|
are not required, however there are potential issues with
|
|
|
<a href="#issue-32-bit-systems">32-bit systems</a>.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="requirements-wsl">Windows Subsystem for Linux</h3>
|
|
|
|
|
|
<p>
|
|
|
Requirements should match the Debian, Fedora, openSUSE etc. sections
|
|
|
above, but care should be taken to ensure MXE is installed in the
|
|
|
Linux subsystem under <code>/</code> instead of the mounted Windows
|
|
|
folders in <code>/mnt</code>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
It can be <a href="https://github.com/mxe/mxe/issues/1892#issuecomment-344004704">
|
|
|
made to work using symlinks and specifying</a>:
|
|
|
</p>
|
|
|
<pre>make MXE_TMP=/tmp/mxe-tmp ...</pre>
|
|
|
<p>
|
|
|
See further reading in:
|
|
|
</p>
|
|
|
<ul>
|
|
|
<li><a href="https://msdn.microsoft.com/en-us/commandline/wsl/faq#how-do-i-use-a-windows-file-with-a-linux-app">
|
|
|
WSL FAQ file section</a></li>
|
|
|
<li><a href="https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/">
|
|
|
MSDN Blog</a></li>
|
|
|
</ul>
|
|
|
|
|
|
<h3 id="issue-32-bit-systems">Issues with 32-bit systems</h3>
|
|
|
32-bit systems
|
|
|
<a href="https://github.com/mxe/mxe/issues/1381#issuecomment-225459494">
|
|
|
may have insufficient virtual memory</a> to build all of MXE.
|
|
|
|
|
|
<h3 id="issue-non-multilib">Issues without a 32-bit compiler</h3>
|
|
|
|
|
|
<p>
|
|
|
Certain packages contain native tools that are
|
|
|
currently 32-bit only. In order to build these on a
|
|
|
64-bit system, multi-lib support must be enabled in the
|
|
|
compiler toolchain. However, not all operating systems
|
|
|
support this.
|
|
|
</p>
|
|
|
<p>
|
|
|
To build the remainder of MXE, specify the affected
|
|
|
packages to exclude:
|
|
|
</p>
|
|
|
<pre>make EXCLUDE_PKGS='ocaml%'</pre>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="usage">Usage</h2>
|
|
|
|
|
|
<p>
|
|
|
All build commands also download the packages if necessary.
|
|
|
</p>
|
|
|
<p>
|
|
|
In a BSD userland, substitute "make" with "gmake"
|
|
|
as all commands are based on
|
|
|
<a href="https://www.gnu.org/software/make/manual/make.html">GNU Make</a>.
|
|
|
</p>
|
|
|
<dl class="usage">
|
|
|
|
|
|
<dt>make</dt>
|
|
|
|
|
|
<dd>
|
|
|
build all packages,
|
|
|
non-parallel
|
|
|
</dd>
|
|
|
|
|
|
<dt>make cc</dt>
|
|
|
|
|
|
<dd>
|
|
|
build a minimal useful set of packages,
|
|
|
i.e. the cross compilers
|
|
|
and the most basic packages,
|
|
|
non-parallel
|
|
|
</dd>
|
|
|
|
|
|
<dt>make foo bar</dt>
|
|
|
|
|
|
<dd>
|
|
|
build packages "foo", "bar" and their dependencies,
|
|
|
non-parallel
|
|
|
</dd>
|
|
|
|
|
|
<dd>
|
|
|
the package list can also be set in
|
|
|
<code>settings.mk</code>
|
|
|
<pre>LOCAL_PKG_LIST := foo bar
|
|
|
.DEFAULT_GOAL := local-pkg-list
|
|
|
local-pkg-list: $(LOCAL_PKG_LIST)</pre>
|
|
|
</dd>
|
|
|
<dd>
|
|
|
so a call to <code>make</code> will only build those packages (and their
|
|
|
dependencies, of course)
|
|
|
</dd>
|
|
|
|
|
|
<dt>make foo bar --touch</dt>
|
|
|
|
|
|
<dd>
|
|
|
mark packages "foo" and "bar" as up-to-date after
|
|
|
a trivial change in one of their dependencies
|
|
|
(short option "-t")
|
|
|
</dd>
|
|
|
|
|
|
<dt>make foo bar --jobs=4 JOBS=2</dt>
|
|
|
|
|
|
<dd>
|
|
|
build packages "foo", "bar" and their dependencies,
|
|
|
where up to 4 packages are built in parallel
|
|
|
(short option "-j 4"),
|
|
|
each with up to 2 compiler processes running in parallel
|
|
|
</dd>
|
|
|
<dd>
|
|
|
the JOBS variable can also be defined in
|
|
|
<code>settings.mk</code> and defaults to the number
|
|
|
of CPUs up to a max of 6 to prevent runaway system
|
|
|
load with diminishing returns - see the
|
|
|
<a href="https://www.gnu.org/software/make/manual/make.html#Parallel">GNU Make manual</a>
|
|
|
for more details on parallel execution
|
|
|
</dd>
|
|
|
|
|
|
<dt>make --jobs=4 --keep-going</dt>
|
|
|
|
|
|
<dd>
|
|
|
build all packages with 4 inter-package parallel
|
|
|
jobs and continue as much as possible after an error
|
|
|
(short option "-j 4 -k")
|
|
|
</dd>
|
|
|
|
|
|
<dt>make EXCLUDE_PKGS='foo bar'</dt>
|
|
|
|
|
|
<dd>
|
|
|
build all packages excluding foo, bar, and all downstream
|
|
|
packages that depend on them - mostly used when there are
|
|
|
<a href="#issue-non-multilib">known issues</a>
|
|
|
</dd>
|
|
|
|
|
|
<dt>make foo_SOURCE_TREE=/path/to/local/source</dt>
|
|
|
|
|
|
<dd>
|
|
|
build using local source tree for package "foo", bypassing
|
|
|
download, checksum and patching
|
|
|
</dd>
|
|
|
<dd>
|
|
|
<strong>N.B.</strong> ensure "foo" has an out-of-source
|
|
|
build configured to avoid generation of build artefacts
|
|
|
in local tree
|
|
|
</dd>
|
|
|
|
|
|
<dt>make check-requirements</dt>
|
|
|
|
|
|
<dd>
|
|
|
check most of the
|
|
|
<a href="#requirements">requirements</a>
|
|
|
if necessary
|
|
|
– executed automatically
|
|
|
before building packages
|
|
|
</dd>
|
|
|
|
|
|
<dt>make download</dt>
|
|
|
|
|
|
<dd>
|
|
|
download all packages,
|
|
|
non-parallel,
|
|
|
such that subsequent builds work without internet access
|
|
|
</dd>
|
|
|
|
|
|
<dt>make download-foo download-bar</dt>
|
|
|
|
|
|
<dd>
|
|
|
download packages "foo", "bar" and their dependencies,
|
|
|
non-parallel
|
|
|
</dd>
|
|
|
|
|
|
<dt>make download-foo download-bar -j 4</dt>
|
|
|
|
|
|
<dd>
|
|
|
download packages "foo", "bar" and their dependencies,
|
|
|
where up to 4 packages are downloaded in parallel
|
|
|
</dd>
|
|
|
|
|
|
<dt>make download-only-foo download-only-bar</dt>
|
|
|
|
|
|
<dd>
|
|
|
download packages "foo", "bar", without their dependencies,
|
|
|
non-parallel
|
|
|
</dd>
|
|
|
|
|
|
<dt>make clean</dt>
|
|
|
|
|
|
<dd>
|
|
|
remove all package builds
|
|
|
– use with caution!
|
|
|
</dd>
|
|
|
|
|
|
<dt>make clean-junk</dt>
|
|
|
|
|
|
<dd>
|
|
|
remove all unused files, including unused package
|
|
|
files, temporary folders, and logs
|
|
|
</dd>
|
|
|
|
|
|
<dt>make clean-pkg</dt>
|
|
|
|
|
|
<dd>
|
|
|
remove all unused package files,
|
|
|
handy after a successful update
|
|
|
</dd>
|
|
|
|
|
|
<dt>make show-deps-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
print a list of upstream dependencies
|
|
|
and all downstream dependents (direct and recursive)
|
|
|
</dd>
|
|
|
|
|
|
<dt>make show-downstream-deps-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
print a list of all recursive downstream dependents
|
|
|
- suitable for use in shell scripts
|
|
|
</dd>
|
|
|
|
|
|
<dt>make show-direct-downstream-deps-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
print a list of direct downstream dependents
|
|
|
- suitable for use in shell scripts
|
|
|
</dd>
|
|
|
|
|
|
<dt>make show-upstream-deps-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
print a list of upstream dependencies
|
|
|
- suitable for use in shell scripts
|
|
|
</dd>
|
|
|
|
|
|
<dt>make docs/build-matrix.html</dt>
|
|
|
|
|
|
<dd>
|
|
|
generate a report of what packages are
|
|
|
supported on what targets to
|
|
|
<a href="build-matrix.html">docs/build-matrix.html</a>
|
|
|
</dd>
|
|
|
|
|
|
<dt>make update</dt>
|
|
|
|
|
|
<dd>
|
|
|
update the version numbers of all packages,
|
|
|
download the new versions and note their checksums
|
|
|
</dd>
|
|
|
|
|
|
<dt>make update UPDATE_DRYRUN=true</dt>
|
|
|
|
|
|
<dd>
|
|
|
show list of update candidates without downloading
|
|
|
</dd>
|
|
|
|
|
|
<dt>make update-package-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
update the version numbers of package foo,
|
|
|
download the new version and note its checksum
|
|
|
</dd>
|
|
|
|
|
|
<dt>make check-update-package-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
check if package foo has an update available
|
|
|
without downloading
|
|
|
</dd>
|
|
|
|
|
|
<dt>make update-checksum-foo</dt>
|
|
|
|
|
|
<dd>
|
|
|
download package foo and update its checksum
|
|
|
</dd>
|
|
|
|
|
|
<dt>make cleanup-style</dt>
|
|
|
|
|
|
<dd>
|
|
|
cleanup coding style
|
|
|
</dd>
|
|
|
|
|
|
</dl>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="packages">List of Packages</h2>
|
|
|
|
|
|
<p>
|
|
|
See something missing? Feel free to <a href="#creating-packages">create a new package</a>.
|
|
|
</p>
|
|
|
<table id="package-list" class="old">
|
|
|
<tr>
|
|
|
<td>Loading package list...</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
<script>
|
|
|
function loadPackageCache(doneCallback) {
|
|
|
var request = new XMLHttpRequest();
|
|
|
request.open('GET', 'packages.json', false);
|
|
|
request.onreadystatechange = function reqCallback() {
|
|
|
if (request.readyState === 4) {
|
|
|
if (request.status === 200) {
|
|
|
var pkgs = JSON.parse(request.responseText);
|
|
|
doneCallback(pkgs);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
request.send();
|
|
|
}
|
|
|
function showPackages(pkgs) {
|
|
|
var names = []
|
|
|
for (pkg in pkgs) {
|
|
|
names.push(pkg);
|
|
|
}
|
|
|
names.sort();
|
|
|
var trs = [];
|
|
|
for (var i = 0; i < names.length; i++) {
|
|
|
var pkg = names[i];
|
|
|
if (pkg == "" || pkg == "mxe-conf") {
|
|
|
// "" is last line of packages.json.
|
|
|
continue;
|
|
|
}
|
|
|
var version = pkgs[pkg].version;
|
|
|
var shorten = version.length > 12;
|
|
|
if (shorten) {
|
|
|
version = version.substring(0, 12);
|
|
|
}
|
|
|
var versionEscaped = version.replace('&', '&').replace('<', '<').replace('>', '>');
|
|
|
if (shorten) {
|
|
|
versionEscaped += '…';
|
|
|
}
|
|
|
var website = pkgs[pkg].website;
|
|
|
var description = pkgs[pkg].description;
|
|
|
if (description == "") {
|
|
|
description = pkg;
|
|
|
}
|
|
|
var pkgHtml = '<tr>' +
|
|
|
'<td class="package">' + pkg + '</td>' +
|
|
|
'<td class="version">' + versionEscaped + '</td>' +
|
|
|
'<td class="website"><a href="' + website + '">' + description + '</a></td>' +
|
|
|
'</tr>';
|
|
|
trs.push(pkgHtml);
|
|
|
}
|
|
|
var packageList = document.getElementById('package-list');
|
|
|
packageList.innerHTML = trs.join('\n');
|
|
|
}
|
|
|
(function main() {
|
|
|
loadPackageCache(showPackages);
|
|
|
})();
|
|
|
</script>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="creating-packages">Guidelines for Creating Packages</h2>
|
|
|
|
|
|
<ol>
|
|
|
<li>
|
|
|
<p>
|
|
|
The package should be a
|
|
|
<a href="https://www.gnu.org/philosophy/free-sw.html">free</a>
|
|
|
<a href="https://www.debian.org/social_contract#guidelines">software</a>
|
|
|
<a href="http://www.opensource.org/osd.html">library</a>
|
|
|
that is really used by one of your applications. Please also review our
|
|
|
<a href="#legal">legal notes</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
BTW, we're always curious about the applications people are porting.
|
|
|
We maintain a
|
|
|
<a href="#used-by">list of projects</a>
|
|
|
which use MXE.
|
|
|
No matter whether your project is free or proprietary
|
|
|
– as long as it has its own website,
|
|
|
we'd be happy to link to it.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Also, feel free to link to us. :-)
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Grep through the <code>src/*.mk</code> files
|
|
|
to find a project that is most similar to yours.
|
|
|
(Really, <code>grep</code> is your friend here.)
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
For instance,
|
|
|
when adding a GNU library,
|
|
|
you should take a package like
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/gettext.mk">gettext.mk</a>
|
|
|
or
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/libiconv.mk">libiconv.mk</a>
|
|
|
as the base of your work.
|
|
|
When using a SourceForge project,
|
|
|
you could start with a copy of
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/xmlwrapp.mk">xmlwrapp.mk</a>.
|
|
|
And so on.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
GitHub hosted projects can automatically configure updates,
|
|
|
urls, file names etc. by setting <code>$(PKG)_GH_CONF</code>
|
|
|
instead of <code>$(PKG)_FILE, $(PKG)_SUBDIR, $(PKG)_URL, and
|
|
|
$(PKG)_UPDATE</code> sections.
|
|
|
</p>
|
|
|
<p>
|
|
|
To track releases set:
|
|
|
</p>
|
|
|
<pre>$(PKG)_GH_CONF := owner/repo/releases[/latest][, tag prefix, tag suffix, tag filter-out, version separator]</pre>
|
|
|
<p>
|
|
|
Releases may require setting _FILE, _SUBDIR, _URL, depending on
|
|
|
the naming convention used by the project for tarballs.
|
|
|
</p>
|
|
|
<p>
|
|
|
To track tags set:
|
|
|
</p>
|
|
|
<pre>$(PKG)_GH_CONF := owner/repo/tags[, tag prefix, tag suffix, tag filter-out, version separator]</pre>
|
|
|
<p>
|
|
|
To track branches, set:
|
|
|
</p>
|
|
|
<pre>$(PKG)_GH_CONF := owner/repo/branch</pre>
|
|
|
<p>
|
|
|
See the following packages for examples:
|
|
|
</p>
|
|
|
<ul>
|
|
|
<li>
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/gc.mk">gc.mk</a>
|
|
|
for release tracking
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/vmime.mk">vmime.mk</a>
|
|
|
for branch tracking
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/libevent.mk">libevent.mk</a>
|
|
|
for tag tracking
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/libffi.mk">libffi.mk</a>
|
|
|
for externally hosted tarballs with generated sources not
|
|
|
present in source tree
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<p>
|
|
|
The <a href="gmsl.html">GNU Make Standard Library</a> is also
|
|
|
available (though it should be unnecessary for most packages).
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Alternatively you can use tool <code>tools/skeleton.py</code> to
|
|
|
create a skeleton of new MXE package. It fills most of the fields
|
|
|
of <code>.mk</code> file automatically and supports typical
|
|
|
build scenarios through option <code>--builder</code>. It also
|
|
|
adds a package to the <a href="#packages">list of packages</a>
|
|
|
(see below).
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Adjust the comments,
|
|
|
fill in the <code>$(PKG)_*</code> fields.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
To fill the <code>$(PKG)_CHECKSUM</code> field, use a command such as (for file gettext.mk):
|
|
|
</p>
|
|
|
<pre>make update-checksum-gettext</pre>
|
|
|
<p>or:</p>
|
|
|
<pre>openssl sha256 pkg/gettext-x.y.z.tar.gz</pre>
|
|
|
<p>
|
|
|
if you have already downloaded the package.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Be especially careful with the <code>$(PKG)_DEPS</code> section.
|
|
|
The easiest way to get the dependencies right
|
|
|
is to start with a minimal setup.
|
|
|
That is,
|
|
|
initialize MXE with <code>make cc</code> only,
|
|
|
then check whether your package builds successfully.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Always list the dependency on <code>cc</code> explicitly:
|
|
|
</p>
|
|
|
<pre>$(PKG)_DEPS := cc ...</pre>
|
|
|
|
|
|
<p>
|
|
|
Specify official name and website of a package.
|
|
|
If the official name coincides with the package name,
|
|
|
you can omit <code>$(PKG)_DESCR</code>.
|
|
|
</p>
|
|
|
<pre>
|
|
|
PKG := libdvdetect
|
|
|
$(PKG)_WEBSITE := https://www.dvdetect.de/
|
|
|
$(PKG)_DESCR := Fast database lookup for DVDs</pre>
|
|
|
|
|
|
<p>
|
|
|
Always look for the SSL version of URLs, that is,
|
|
|
prefer <code>https://</code> URLs over <code>http://</code> URLs.
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Write your <code>$(PKG)_BUILD</code>.
|
|
|
If your library has a <code>./configure</code> script,
|
|
|
enable/disable all dependency libraries explicitly
|
|
|
via "<code>--enable-*</code>" and "<code>--disable-*</code>" options.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Things not to do:
|
|
|
</p>
|
|
|
<ul>
|
|
|
<li>
|
|
|
<b>do not run target executables with Wine</b>, as Wine is
|
|
|
not guaranteed to be installed. Instead build the needed tool
|
|
|
natively or (if it is too huge to build one more time) add
|
|
|
to MXE's dependencies. This policy is forced by setting
|
|
|
WINEPREFIX to an empty directory, which breaks Wine;
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<b>do not download anything while building</b>, as all files
|
|
|
downloaded should be verified by checksums. Instead create a
|
|
|
package which installs the needed file. This policy is forced
|
|
|
on Linux by <a href="https://github.com/starius/nonetwork/"
|
|
|
>LD_PRELOAD trick</a>, breaking network functions.
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<p>
|
|
|
Useful Makefile variables provided by MXE:
|
|
|
</p>
|
|
|
|
|
|
<ul>
|
|
|
<li>
|
|
|
<p>
|
|
|
<code>$(SOURCE_DIR)</code>
|
|
|
is a directory with package source and
|
|
|
<code>$(BUILD_DIR)</code>
|
|
|
is an empty directory intended for build files.
|
|
|
Both directories are temporary.
|
|
|
Prefer out-of-tree builds. Autotools
|
|
|
and CMake support them.
|
|
|
</p>
|
|
|
</li>
|
|
|
<li>
|
|
|
<p>
|
|
|
<code>$(PREFIX)</code>
|
|
|
is path to <code>usr/</code> directory.
|
|
|
<code>$(TOP_DIR)</code>
|
|
|
is path to MXE root directory.
|
|
|
<code>$(TARGET)</code> is target triplet
|
|
|
(e.g., <code>i686-w64-mingw32.static</code>).
|
|
|
<code>$(BUILD)</code> is build triplet
|
|
|
(e.g., <code>x86_64-unknown-linux-gnu</code>).
|
|
|
</p>
|
|
|
</li>
|
|
|
<li>
|
|
|
<p>
|
|
|
<code>$(MXE_CONFIGURE_OPTS)</code>
|
|
|
adds standard options to <code>./configure</code> script.
|
|
|
Typical usage:
|
|
|
</p>
|
|
|
<pre>
|
|
|
cd '$(BUILD_DIR)' && '$(SOURCE_DIR)'/configure \
|
|
|
$(MXE_CONFIGURE_OPTS)
|
|
|
</pre>
|
|
|
</li>
|
|
|
<li>
|
|
|
<p>
|
|
|
<code>$(MXE_DISABLE_CRUFT)</code>
|
|
|
disables installation of documentation and programs.
|
|
|
</p>
|
|
|
<pre>
|
|
|
$(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' $(MXE_DISABLE_CRUFT)
|
|
|
$(MAKE) -C '$(BUILD_DIR)' -j 1 install $(MXE_DISABLE_CRUFT)
|
|
|
</pre>
|
|
|
</li>
|
|
|
<li>
|
|
|
<p>
|
|
|
<code>$(BUILD_SHARED)</code>
|
|
|
is TRUE for shared targets. Useful to add flags applicable
|
|
|
only to shared targets.
|
|
|
</p>
|
|
|
<pre>
|
|
|
$(if $(BUILD_SHARED),LDFLAGS=-no-undefined)
|
|
|
</pre>
|
|
|
<p>
|
|
|
Similarly,
|
|
|
<code>$(BUILD_STATIC)</code>
|
|
|
is TRUE for static targets;
|
|
|
<code>$(BUILD_NATIVE)</code>
|
|
|
is TRUE for native targets;
|
|
|
<code>$(BUILD_CROSS)</code>
|
|
|
is TRUE for cross targets.
|
|
|
</p>
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
You might also have to provide a patch for it.
|
|
|
In that case, have a look at other patches such as
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/sdl2-2-libtool.patch">sdl2-2-libtool.patch</a>.
|
|
|
In particular, each patch file should be named as:
|
|
|
</p>
|
|
|
<pre>PACKAGE-PATCHNUMBER-DESCRIPTION.patch</pre>
|
|
|
<p>
|
|
|
and should start with:
|
|
|
</p>
|
|
|
<pre>This file is part of MXE. See LICENSE.md for licensing information.
|
|
|
|
|
|
This patch has been taken from:
|
|
|
https://...</pre>
|
|
|
<p>
|
|
|
where the URL points to the
|
|
|
bugtracker entry,
|
|
|
mailing list entry or
|
|
|
website
|
|
|
you took the patch from.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
If you created the patch yourself,
|
|
|
please offer it to the upstream project first,
|
|
|
and point to <em>that</em> URL,
|
|
|
using the same wording:
|
|
|
"This patch has been taken from:".
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Depending on the feedback you get from the upstream project,
|
|
|
you might want to improve your patch.
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
If you find some time,
|
|
|
please provide a minimal test program for it.
|
|
|
It should be
|
|
|
simple,
|
|
|
stand alone and
|
|
|
should work unmodified for many (all?) future versions of the library.
|
|
|
Test programs are named as:
|
|
|
</p>
|
|
|
<pre>PACKAGE-test.c</pre>
|
|
|
or
|
|
|
<pre>PACKAGE-test.cpp</pre>
|
|
|
<p>
|
|
|
depending on whether it is a C or C++ library.
|
|
|
To get a clue,
|
|
|
please have a look at existing test programs such as
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/sdl-test.c">sdl-test.c</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
At the very end of your <code>*.mk</code> file
|
|
|
you should build the test program in a generic way,
|
|
|
using strict compiler flags.
|
|
|
The last few lines of
|
|
|
<a href="https://github.com/mxe/mxe/blob/master/src/sdl.mk">sdl.mk</a>
|
|
|
will give you a clue.
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
You could also try to provide a <code>$(PKG)_UPDATE</code> section.
|
|
|
However, that requires some experience and "feeling" for it.
|
|
|
So it is perfectly okay if you leave a placeholder:
|
|
|
</p>
|
|
|
<pre>define $(PKG)_UPDATE
|
|
|
echo 'TODO: write update script for $(PKG).' >&2;
|
|
|
echo $($(PKG)_VERSION)
|
|
|
endef</pre>
|
|
|
<p>
|
|
|
We'll fill that in for you.
|
|
|
It's a funny exercise.
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Check that you don't have "dirty stuff" in your <code>*.mk</code> files,
|
|
|
such as TAB characters or trailing spaces at lines endings. Run:
|
|
|
</p>
|
|
|
<pre>make cleanup-style</pre>
|
|
|
<p>
|
|
|
to remove these.
|
|
|
Have a look at random <code>*.mk</code> files
|
|
|
to get a feeling for the coding style.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The same holds for your test program.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
However, patch files should always appear
|
|
|
in the same coding style as the files they are patching.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
When patching sources with crlf line endings, the patch
|
|
|
file itself should also have the same eol style. Use the
|
|
|
convention of naming the file as <code>*crlf.patch</code>
|
|
|
to instruct git not to normalise the line endings (defined
|
|
|
in <code>.gitattributes</code>).
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Finally, in your <code>$(PKG)_BUILD</code> section,
|
|
|
please check that you use our portability variables:
|
|
|
</p>
|
|
|
<table class="translation old">
|
|
|
<tr><td><code>bash</code></td> <td>→</td><td><code>$(SHELL)</code></td></tr>
|
|
|
<tr><td><code>date</code></td> <td>→</td><td><code>$(DATE)</code></td></tr>
|
|
|
<tr><td><code>install</code></td> <td>→</td><td><code>$(INSTALL)</code></td></tr>
|
|
|
<tr><td><code>libtool</code></td> <td>→</td><td><code>$(LIBTOOL)</code></td></tr>
|
|
|
<tr><td><code>libtoolize</code></td><td>→</td><td><code>$(LIBTOOLIZE)</code></td></tr>
|
|
|
<tr><td><code>make</code></td> <td>→</td><td><code>$(MAKE)</code></td></tr>
|
|
|
<tr><td><code>patch</code></td> <td>→</td><td><code>$(PATCH)</code></td></tr>
|
|
|
<tr><td><code>sed</code></td> <td>→</td><td><code>$(SED)</code></td></tr>
|
|
|
<tr><td><code>sort</code></td> <td>→</td><td><code>$(SORT)</code></td></tr>
|
|
|
<tr><td><code>wget</code></td> <td>→</td><td><code>$(WGET)</code></td></tr>
|
|
|
</table>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Check whether everything runs fine.
|
|
|
If you have some trouble,
|
|
|
don't hesitate to ask on the
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">mailing list</a>,
|
|
|
providing your <code>*.mk</code> file so far.
|
|
|
</p>
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
<p>
|
|
|
Issue a
|
|
|
<a href="https://help.github.com/articles/creating-a-pull-request">pull request</a>
|
|
|
to propose your final <code>*.mk</code> file to us.
|
|
|
If you have trouble with pull requests,
|
|
|
send your file to the mailing list instead.
|
|
|
</p>
|
|
|
<p>
|
|
|
Either way,
|
|
|
don't forget to tell us
|
|
|
if there are some pieces in your <code>*.mk</code> file
|
|
|
you feel unsure about.
|
|
|
We'll then have a specific look at those parts,
|
|
|
which avoids trouble for you and us in the future.
|
|
|
</p>
|
|
|
</li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="copyright">Copyright © <span class="years">2007–2015</span></h2>
|
|
|
|
|
|
<ul id="authors-list" class="compact-list">
|
|
|
<li>Volker Diels-Grabsch</li>
|
|
|
<li>Mark Brand</li>
|
|
|
<li>Tony Theodore</li>
|
|
|
<li>Martin Gerhardy</li>
|
|
|
<li>Tiancheng "Timothy" Gu</li>
|
|
|
<li>Boris Nagaev</li>
|
|
|
<li><a href="https://github.com/mxe/mxe/graphs/contributors">... and many other contributors</a></li>
|
|
|
</ul>
|
|
|
|
|
|
<p>(contact via the
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">project mailing list</a>)</p>
|
|
|
|
|
|
<p>
|
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
|
a copy of this software and associated documentation files (the
|
|
|
"Software"), to deal in the Software without restriction, including
|
|
|
without limitation the rights to use, copy, modify, merge, publish,
|
|
|
distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
permit persons to whom the Software is furnished to do so, subject
|
|
|
to the following conditions:
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The above copyright notice and this permission notice shall be
|
|
|
included in all copies or substantial portions of the Software.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="legal">Legal</h2>
|
|
|
|
|
|
<h3>Disclaimer - it's all code...</h3>
|
|
|
|
|
|
<p>
|
|
|
Modern legal systems are like any other large, complex, and evolving body
|
|
|
of code you're likely to encounter.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
They have their own language with quirky parsers, compilers, and
|
|
|
interpreters (though these tend to be human). Their issue trackers are
|
|
|
a backlog of court cases. They have bugs. They have traps for the
|
|
|
uninitiated that may potentially do more than waste your time.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
We currently limit ourselves to:
|
|
|
</p>
|
|
|
<pre>--enable-languages='c,c++,objc,fortran'</pre>
|
|
|
<p>
|
|
|
so nothing mentioned here or on the mailing list should be taken as
|
|
|
legal advice. :-)
|
|
|
</p>
|
|
|
|
|
|
<h3>Choosing the right compiler</h3>
|
|
|
|
|
|
<p>
|
|
|
The best starting point for any legal questions would be the
|
|
|
</p>
|
|
|
<p>
|
|
|
<a href="https://fsfe.org/projects/ftf/">FTF (Freedom Task Force of the FSFE (Free Software Foundation Europe)).</a>
|
|
|
</p>
|
|
|
<p>
|
|
|
They have been very helpful in the past, and maintain an
|
|
|
<a href="https://fsfe.org/projects/ftf/network.en.html">extensive network</a>
|
|
|
of legal contacts, both within and outside Europe.
|
|
|
</p>
|
|
|
|
|
|
<p>Your local jurisdiction may be a signatory to various
|
|
|
<a href="https://en.wikipedia.org/wiki/List_of_parties_to_international_copyright_agreements">international agreements,</a>
|
|
|
so be sure to mention where you are in any correspondence (much like any
|
|
|
detailed bug report really).
|
|
|
</p>
|
|
|
|
|
|
<p>Additionally, you should also do some background reading from the
|
|
|
<a href="https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs">FSF (Free Software Foundation)</a>
|
|
|
and
|
|
|
<a href="https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License">Wikipedia</a>
|
|
|
to familiarise yourself with some of the potential issues (and experience
|
|
|
some context-switching overhead).
|
|
|
</p>
|
|
|
|
|
|
<h3 id="contributions">Contributions</h3>
|
|
|
|
|
|
<p>
|
|
|
Contributions are always welcome!
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Ownership of all contributions (bug fixes, new packages, doc updates, etc.)
|
|
|
remain with the author. All we require is a real name (no l33t handles,
|
|
|
please), and that you release your work under
|
|
|
<a href="#copyright">our licence</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>If you prefer not to be credited with a contribution, please notify
|
|
|
the committer.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="package-licenses">Package Licences</h3>
|
|
|
|
|
|
<p>
|
|
|
Each package is individually licensed under terms specified by the
|
|
|
authors of that package. Please see the respective source tarball
|
|
|
and/or project website for details.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Packages that are
|
|
|
<a href="http://www.audiocoding.com/faac.html">non-free</a>
|
|
|
or
|
|
|
<a href="http://glaros.dtc.umn.edu/gkhome/metis/metis/faq#distribute">ambiguous</a>
|
|
|
will be
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2010-12/msg00049.html">removed</a>
|
|
|
or
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2010-09/msg00063.html">rejected</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The definition of free must be one of:
|
|
|
</p>
|
|
|
<ul>
|
|
|
<li><a href="https://www.gnu.org/philosophy/free-sw.html">The Free Software Definition</a></li>
|
|
|
<li><a href="https://www.debian.org/social_contract#guidelines">The Debian Free Software Guidelines (DFSG)</a></li>
|
|
|
<li><a href="http://www.opensource.org/osd.html">The Open Source Definition</a></li>
|
|
|
</ul>
|
|
|
|
|
|
<p>
|
|
|
Please contact the
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">mailing list</a>
|
|
|
if you notice a package that doesn't meet these guidlines.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="other-legal-considerations">Other Considerations</h3>
|
|
|
|
|
|
<p>
|
|
|
In addition to the usual considerations (copyrights, patents,
|
|
|
trademarks, export regulations etc.), building
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2010-12/msg00025.html">statically linked</a>
|
|
|
libraries
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2011-02/msg00018.html">for Windows</a>
|
|
|
exposes some edge cases that you may not have encountered before.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
According to
|
|
|
<a href="https://www.gnu.org/philosophy/free-sw.html">freedom 0</a> and our
|
|
|
<a href="#copyright">own licence</a>,
|
|
|
you can use mxe in countless different
|
|
|
environments, each with it's own special legal considerations. The
|
|
|
configuration options of certain packages (e.g ffmpeg) allow the use of
|
|
|
non-free software and/or combinations that cause license violations.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
For these packages, we will provide sensible defaults aimed
|
|
|
at achieving the following goals:
|
|
|
</p>
|
|
|
<ol>
|
|
|
<li>avoid causing inherent licensing issues with conflicting options</li>
|
|
|
<li>make the package as feature complete as possible</li>
|
|
|
</ol>
|
|
|
|
|
|
<p>
|
|
|
Note that this does not prevent downstream violations, or affect any
|
|
|
further obligations a licence may impose on you.
|
|
|
</p>
|
|
|
|
|
|
<h3 id="potential-legal-issues">Potential Issues - Non Exhaustive List</h3>
|
|
|
|
|
|
<h4>GNU Licenses</h4>
|
|
|
<p>
|
|
|
Review the
|
|
|
<a href="https://www.gnu.org/licenses/gpl-faq.html#content">FAQ</a>
|
|
|
</p>
|
|
|
|
|
|
<h4>LGPL and Static Linking</h4>
|
|
|
|
|
|
<p>
|
|
|
Review the
|
|
|
<a href="https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License#Differences_from_the_GPL">Differences from the GPL</a>
|
|
|
section of the Wikipedia article mentioned above.
|
|
|
</p>
|
|
|
|
|
|
<h4>GPL and OpenSSL</h4>
|
|
|
|
|
|
<p>
|
|
|
See conflicting accounts from the
|
|
|
<a href="https://www.gnu.org/licenses/license-list.html#OpenSSL">FSF</a>
|
|
|
and the
|
|
|
<a href="https://www.openssl.org/docs/faq.html#LEGAL2">OpenSSL project</a>.
|
|
|
</p>
|
|
|
<p>
|
|
|
A similar situation also exists for package fdk-aac.
|
|
|
</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="history">History</h2>
|
|
|
|
|
|
<dl>
|
|
|
|
|
|
<dt>2015-05-04 – Retired the stable branch</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
The stable branch
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2015-05/msg00004.html">was retired</a>
|
|
|
as it
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2015-03/msg00002.html">did more harm than good</a>.
|
|
|
Everybody is using the master branch,
|
|
|
because it is always recent and well enough tested.
|
|
|
For historical reference, the last commit to the stable branch was
|
|
|
<a href="https://github.com/mxe/mxe/commits/0c6cc9c91cf94e445ec471a5beebb7199483cb9d" title="0c6cc9c91cf94e445ec471a5beebb7199483cb9d">0c6cc9c</a>,
|
|
|
which was
|
|
|
<a href="https://github.com/mxe/mxe/commits/eaac1a873f37bdc4f91e1b649e28b118acedc436" title="eaac1a873f37bdc4f91e1b649e28b118acedc436">fully merged into master</a>
|
|
|
as usual.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Added support for <a href="#supported-toolchains">shared toolchains</a> for over 50% of all the packages.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Unfortunately, a number of factors have forced us to drop support
|
|
|
for MinGW 3 (i.e. "<a href="http://mingw.org/">MinGW.org</a>"),
|
|
|
in favor of the MinGW-w64 toolchain. This decision was made in a
|
|
|
large part because of the dropping of support for MinGW by <a
|
|
|
href="https://github.com/mxe/mxe/pull/453#issuecomment-51703048">
|
|
|
GLib</a> and <a
|
|
|
href="https://github.com/mxe/mxe/issues/492#issue-41366666">Qt5</a>,
|
|
|
which arguably are two of the most important packages in MXE.
|
|
|
Other considerations have also been taken, like the <a
|
|
|
href="https://github.com/mxe/mxe/pull/323#issuecomment-39463810">lack
|
|
|
of maintainership in MinGW</a> and <a
|
|
|
href="https://github.com/mxe/mxe/issues/400">potential legal
|
|
|
challenges</a> that comes with using supplemental DirectX
|
|
|
headers in MinGW in order to support Qt4. Worse yet, having to
|
|
|
support the unsupported MinGW toolchain impedes adding or
|
|
|
updating packages, as shown in the <a
|
|
|
href="https://github.com/mxe/mxe/pull/453#issuecomment-51703048">pull
|
|
|
request of updating GLib</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Please note that dropping support for MinGW <strong>DOES NOT
|
|
|
MEAN</strong> dropping support for the 32-bit architecture. MinGW-w64
|
|
|
also supports 32-bit target through i686-w64-mingw32.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
To ease migration to the supported MinGW-w64 target, we have
|
|
|
finished porting all packages that were MinGW-only to at least
|
|
|
i686-w64-mingw32 (32-bit target of MinGW-w64). Hence your existing
|
|
|
commands should work out-of-the-box assuming the
|
|
|
<code>MXE_TARGETS</code> environment variable is set correctly.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2013-07-27 – Release 2.23</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
The stable branch was updated
|
|
|
to the current development version after a thorough
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2013-07/msg00021.html">testing phase</a>.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Current users are <strong>strongly</strong> encouraged to
|
|
|
start with a clean tree as the toolchain has been
|
|
|
updated and requires a full rebuild:
|
|
|
</p>
|
|
|
<pre>git pull && make clean && make</pre>
|
|
|
|
|
|
<p>
|
|
|
Most packages were updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Many new packages are supported:
|
|
|
alure, apr-util, apr, armadillo, cegui, cfitsio, cminpack,
|
|
|
flann, gtkglarea, gtkimageview, harfbuzz, hdf4, hdf5, hunspell,
|
|
|
icu4c, itk, lensfun, levmar, libf2c, libftdi, libgda, libgdamm,
|
|
|
libglade, liblqr-1, libmodplug, librtmp, libzip, log4cxx, mdbtools,
|
|
|
ncurses, netcdf, netpbm, ocaml-cairo, ocaml-camlimages, ocaml-core,
|
|
|
ocaml-findlib, ocaml-flexdll, ocaml-lablgl, ocaml-lablgtk2,
|
|
|
ocaml-native, ocaml-xml-light, opencv, opus, opusfile, pcl,
|
|
|
picomodel, plib, plibc, poppler, portablexdr, portmidi, protobuf,
|
|
|
qdbm, qt5, qtactiveqt, qtbase, qtdeclarative, qtgraphicaleffects,
|
|
|
qtimageformats, qtjsbackend, qtmultimedia, qtquick1, qtquickcontrols,
|
|
|
qtscript, qtsensors, qtserialport, qtsvg, qttools, qttranslations,
|
|
|
qtxmlpatterns, qwt, sdl_gfx, sfml, sox, teem, twolame, vtk6, wavpack,
|
|
|
wget, winpthreads, xapian-core, yasm
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Added support for <a href="#supported-toolchains">mingw-w64 based toolchains</a>
|
|
|
targeting 32 & 64-bit architectures.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
With the addition of Qt5, there is no longer a prefixed version of
|
|
|
qmake, see the <a href="#tutorial-5c">Qt section of the tutorial</a>
|
|
|
for the new way to invoke qmake.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
<a href="#requirements-freebsd">FreeBSD</a> is no longer fully supported.
|
|
|
Qt5, ocaml*, and 8 other packages are excluded from the build.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt id="branches">2012-04-12 – Release 2.22</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
The release tarballs have been replaced with a stable branch
|
|
|
that conforms to the new branch concept:
|
|
|
</p>
|
|
|
|
|
|
<ul class="compact-list">
|
|
|
<li>
|
|
|
Any change of a build script goes into "master".
|
|
|
</li>
|
|
|
<li>
|
|
|
Any package upgrade goes into "master".
|
|
|
</li>
|
|
|
<li>
|
|
|
Any documentation upgrade that refers to a feature
|
|
|
not present in stable goes into "master".
|
|
|
</li>
|
|
|
<li>
|
|
|
Anything else that doesn't affect the build goes
|
|
|
into "stable".
|
|
|
</li>
|
|
|
<li>
|
|
|
Any non-critical improvement to the main Makefile
|
|
|
goes into "stable".
|
|
|
</li>
|
|
|
<li>
|
|
|
Any improvement in the package download URLs or
|
|
|
package version recognition goes into "stable".
|
|
|
</li>
|
|
|
<li>
|
|
|
When in doubt, "master" is used rather than "stable".
|
|
|
</li>
|
|
|
<li>
|
|
|
Every change to the "stable" branch
|
|
|
will be merged into "master".
|
|
|
</li>
|
|
|
<li>
|
|
|
After a successful testing phase,
|
|
|
the "stable" branch
|
|
|
will be fast-forwarded to "master".
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<p>
|
|
|
The project has been
|
|
|
<a href="https://lists.nongnu.org/archive/html/mingw-cross-env-list/2012-03/msg00101.html">renamed</a>
|
|
|
from
|
|
|
mingw-cross-env (MinGW cross compiling environment)
|
|
|
to
|
|
|
MXE (M cross environment).
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Most packages were updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages are supported:
|
|
|
agg, cgal, eigen, file, gta, json-c, libgnurx, libharu,
|
|
|
libircclient, libssh2, libxml++, llvm, lzo, mpfr, nettle,
|
|
|
opencsg, qjson, qwtplot3d, vtk, and wt.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2011-06-07 – Release 2.21</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://bitbucket.org/vog/mingw-cross-env/downloads/mingw-cross-env-2.21.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.21">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Minor bugfixes in several packages.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Packages gtkmm and gtksourceviewmm have been renamed to gtkmm2 and gtksourceviewmm2.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages are supported:
|
|
|
libass, poco, and t4k_common.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2011-04-05 – Release 2.20</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://bitbucket.org/vog/mingw-cross-env/downloads/mingw-cross-env-2.20.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.20">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes a download error caused by the pixman project
|
|
|
(a sudden change of their URL scheme without proper redirects).
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">That sort of thing should never happen!</a>
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2011-03-19 – Release 2.19</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://bitbucket.org/vog/mingw-cross-env/downloads/mingw-cross-env-2.19.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.19">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The download mechanisms are improved.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
A CMake toolchain file is provided
|
|
|
to simplify cross-compiling projects which use CMake.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Support for Debian/Lenny is dropped.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Package gtk is renamed to gtk2.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages are supported:
|
|
|
dbus, graphicsmagick, libical, liboauth, physfs, and vigra.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Note for <code>boost::filesystem</code> users:
|
|
|
<a href="https://beta.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/index.htm">Version 3 is a major revision</a>
|
|
|
and now the default in 1.46.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-12-15 – Release 2.18</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.18.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.18">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes a checksum error caused by the atkmm project
|
|
|
(a sudden change of their current source tarball).
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">That sort of thing should never happen!</a>
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-12-11 – Release 2.17</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.17.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.17">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release provides some improvements of the build system
|
|
|
such as an automatic check for most of the requirements.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
All packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages are supported:
|
|
|
bfd, blas, cblas, dcmtk, ftgl, lapack, lcms1,
|
|
|
mingw-utils, mxml, suitesparse and tinyxml.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-10-27 – Release 2.16</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.16.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.16">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release provides lots of improvements to
|
|
|
the build system as well as the documentation.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Support for OpenSolaris is dropped.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Many new packages are supported:
|
|
|
atkmm, cairomm, cunit, faac, faad2, ffmpeg, gdk-pixbuf, glibmm,
|
|
|
gtkglextmm, gtkmm, gtksourceview, gtksourceviewmm, imagemagick,
|
|
|
lame, libiberty, libsigc++, libvpx, matio, openal, opencore-amr,
|
|
|
pangomm, pfstools, plotmm, sdl_sound and x264.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-06-16 – Release 2.15</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.15.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.15">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes download errors caused by the Qt project
|
|
|
(a sudden change of their current source tarball).
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-06-08 – Release 2.14</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.14.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.14">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes download errors caused by the MinGW project
|
|
|
(a sudden change of their URL scheme without proper redirects).
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">That sort of thing should never happen!</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages are supported:
|
|
|
libarchive, libgee and xvidcore.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-05-31 – Release 2.13</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.13.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.13">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release switches back from TDM to the official GCC,
|
|
|
thus supporting the current GCC 4.5.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The set of DirectX headers is improved and more complete.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The deadlock issues with Pthreads-w32 are fixed.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
A static build of GDB is provided,
|
|
|
i.e. a standalone "gdb.exe"
|
|
|
that doesn't require any extra DLLs.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
More packages are backed by test programs.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Many "sed hacks" are replaced by proper portability patches.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Many new packages are supported:
|
|
|
fribidi, gc, gdb, gmp, gsl, gst-plugins-base, gst-plugins-good,
|
|
|
gstreamer, gtkglext, guile, libcroco, libffi, liboil, libpaper,
|
|
|
libshout, libunistring and xine-lib.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-02-21 – Release 2.12</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.12.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.12">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes some minor build issues,
|
|
|
and contains a first small set of test programs
|
|
|
to check the package builds.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The build rules are simplified
|
|
|
by calling generators like Autotools and Flex,
|
|
|
instead of patching the generated files.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Many new packages are supported:
|
|
|
aubio, devil, directx, exiv2, fftw, freeimage, gsoap,
|
|
|
id3lib, liblo, libpano13, librsvg, libsamplerate,
|
|
|
muparser, openscenegraph, portaudio and sdl_pango.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2010-02-20 – Release 2.11</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.11.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.11">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release contains a packaging bug.
|
|
|
Please use release 2.12 instead.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-12-23 – Release 2.10</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.10.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.10">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release adds support for many new packages:
|
|
|
flac, libmad, libsndfile, sdl_net, speex, postgresql,
|
|
|
freetds, openssl, plotutils, taglib, lcms, freeglut,
|
|
|
xerces and zziplib.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
In addition to the libraries
|
|
|
some command line tools such as psql.exe are built, too.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The placements of logfiles, as well as many other build details, have been improved.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-10-24 – Release 2.9</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.9.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.9">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release adds support for Qt, VMime and libmng.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The target triplet is updated to i686-pc-mingw32.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
OpenMP support is enabled in GCC.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-09-11 – Release 2.8</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.8.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.8">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release comes with a better look & feel
|
|
|
by providing a highlevel overview of the build process.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The detailed build messages are stored into
|
|
|
separate log files for each package,
|
|
|
so parallel builds don't intermix them anymore.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The download URLs of SourceForge packages
|
|
|
are adjusted to ensure that
|
|
|
the selected SourceForge mirror is really used
|
|
|
and not circumvalented via HTTP redirects to other mirrors.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The whole mingw-cross-env project has moved to
|
|
|
<a href="https://savannah.nongnu.org/">Savannah</a>.
|
|
|
So all URIs have changed,
|
|
|
but the old URIs
|
|
|
redirect to the new locations seamlessly.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Everyone is invited to join the freshly created
|
|
|
<a href="https://lists.nongnu.org/mailman/listinfo/mingw-cross-env-list">project mailing list</a>.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-08-11 – Release 2.7</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.7.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.7">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release
|
|
|
provides an improved version recognition
|
|
|
for SourceForge packages.
|
|
|
SourceForge changed their page layout
|
|
|
in a way that makes it much harder
|
|
|
to identify the current version of a package.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Additionally,
|
|
|
almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-06-19 – Release 2.6</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.6.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.6">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release contains some portability fixes
|
|
|
which allow it to run on a wider range of systems
|
|
|
such as Frugalware.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The documentation and website are completely revised.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New packages such as
|
|
|
CppUnit, libUsb, NSIS, Popt, SQLite and Theora
|
|
|
are supported.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Almost all packages are updated to their latest version.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
A new command "make download" is implemented.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-04-06 – Release 2.5</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.5.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.5">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes a download error caused by the MinGW project.
|
|
|
They suddenly changed the names of their source tarballs.
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">That sort of thing should never happen!</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release also contains some bugfixes
|
|
|
which allow it to run on a wider range of systems.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
All downloaded files are now
|
|
|
verified by their SHA-1 checksums.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
New versions of various packages are supported.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-03-08 – Release 2.4</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.4.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.4">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release provides many new libraries such as
|
|
|
wxWidgets, GTK+ and OpenEXR.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
In addition, new versions of various packages
|
|
|
are supported.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-02-09 – Release 2.3</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.3.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.3">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes some serious build problems on FreeBSD and MacOS-X.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The Makefile has a new target "clean-pkg"
|
|
|
and allows to be called from a separate build directory
|
|
|
via "make -f .../Makefile".
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Some new versions of the packages are supported,
|
|
|
especially GCC-4.3 by switching from MinGW GCC to
|
|
|
<a href="http://www.tdragon.net/recentgcc/">TDM-GCC</a>.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2009-01-31 – Release 2.2</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.2.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.2">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes some minor build problems.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
It also supports some new packages and
|
|
|
some newer versions of the already supported packages.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Parallelization is now disabled by default.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2008-12-13 – Release 2.1</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.1.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.1">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release fixes a download error caused by the GDAL project.
|
|
|
They suddenly changed their download URLs.
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">That sort of thing should never happen!</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
In addition, some newer versions of various packages are supported.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
There is also a small compatibility fix for OS X.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2008-11-10 – Release 2.0</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-2.0.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/2.0">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The shell script has been rewritten as Makefile
|
|
|
and supports partial builds and parallel builds.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
As usual,
|
|
|
this release also supports some new packages and
|
|
|
some newer versions of the already supported packages.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2008-01-11 – Release 1.4</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-1.4.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/1.4">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release now includes a tutorial by Hans Bezemer
|
|
|
and has improved compile options of FLTK.
|
|
|
As usual, it supports some newer versions of the libraries.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
At the <a href="https://www.fefe.de/nowindows/">request of its author</a>,
|
|
|
libowfat is no longer supported from this release on.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
The script now uses a specific SourceForge mirror
|
|
|
instead of randomly chosen ones,
|
|
|
because the download phase
|
|
|
often stumbled on some very slow mirrors.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2007-12-23 – Release 1.3</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-1.3.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/1.3">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
A sudden change in the download URLs of GEOS
|
|
|
made the automatic download fail.
|
|
|
<a href="https://www.w3.org/Provider/Style/URI">Such changes should never happen!</a>
|
|
|
But it happened,
|
|
|
and this quick release is an attempt to limit the damage.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release also supports some newer versions of the libraries
|
|
|
including support for fontconfig-2.5.0.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2007-12-13 – Release 1.2</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-1.2.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/1.2">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release is a switch from gcc-3 to gcc-4.
|
|
|
It also supports a new library and
|
|
|
some newer versions of the already supported libraries.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2007-07-24 – Release 1.1</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-1.1.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/1.1">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This release is the result of the public attention the release 1.0 got.
|
|
|
It contains many improvements suggested by its first users,
|
|
|
and adds support for many new libraries.
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
Thanks to Rocco Rutte who contributed many code snippets.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2007-06-19 – Release 1.0</dt>
|
|
|
<dd>
|
|
|
<p>
|
|
|
<a href="https://download.savannah.nongnu.org/releases/mingw-cross-env/mingw-cross-env-1.0.tar.gz">Download</a> |
|
|
|
<a href="https://hg.savannah.nongnu.org/hgweb/mingw-cross-env/log/1.0">Changelog</a>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
This first release has been created in a 7-day-sprint.
|
|
|
</p>
|
|
|
</dd>
|
|
|
|
|
|
<dt>2007-06-12 – Project start</dt>
|
|
|
<dd>
|
|
|
</dd>
|
|
|
|
|
|
</dl>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="see-also">See also</h2>
|
|
|
|
|
|
<h3>This project</h3>
|
|
|
|
|
|
<ul class="compact-list">
|
|
|
<li>
|
|
|
<a href="http://mxe.cc">Website</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/mxe/mxe">Project on GitHub</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://pkg.mxe.cc/">Binary distribution of packages</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.openhub.net/p/mxe">Entry on Open Hub</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://savannah.nongnu.org/projects/mingw-cross-env">Entry on Savannah</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://lists.debian.org/debian-embedded/2007/06/msg00007.html">First release announcement</a>
|
|
|
and the discussion around it
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<h3>Related articles</h3>
|
|
|
|
|
|
<ul>
|
|
|
<li>
|
|
|
<a href="http://www.valdyas.org/fading/index.cgi/hacking/krita/mxe_krita.html">Cross-compiling Krita using MXE</a>
|
|
|
<br>
|
|
|
Experience report of the
|
|
|
<a href="https://krita.org/">Krita project</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://thebeezspeaks.blogspot.com/2009/04/cross-compilers-new-wave.html">Cross compilers, the new wave</a>
|
|
|
<br>
|
|
|
Appeared on
|
|
|
<a href="http://lxer.com/module/newswire/view/118868">LXer</a>
|
|
|
and
|
|
|
<a href="http://www.linuxtoday.com/developer/2009041501335RVSWDV">Linux Today</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.mingw.org/wiki/LinuxCrossMinGW">MinGW cross compiler for Linux build environment</a>
|
|
|
<br>
|
|
|
Official tutorial of the
|
|
|
<a href="http://www.mingw.org/">MinGW project</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://wiki.wxwidgets.org/Cross-Compiling_Under_Linux#Cross-compiling_under_Linux_for_MS_Windows">Cross-compiling under Linux for MS Windows</a>
|
|
|
<br>
|
|
|
Old tutorial provided by the
|
|
|
<a href="https://www.wxwidgets.org/">wxWidgets project</a>
|
|
|
</li>
|
|
|
</ul>
|
|
|
|
|
|
<h3>Related projects</h3>
|
|
|
|
|
|
<ul>
|
|
|
<li>
|
|
|
<a href="https://www.archlinux.org/groups/x86_64/mingw-w64/">Arch Linux mingw-w64 packages</a>
|
|
|
<br>
|
|
|
Win32 cross compiling packages by Arch Linux
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://packages.debian.org/stable/devel/mingw32">Debian mingw32 package</a>
|
|
|
<br>
|
|
|
Bare win32 cross compiler
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://admin.fedoraproject.org/pkgdb/packages/mingw*/">Fedora MinGW packages</a>
|
|
|
<br>
|
|
|
Win32 cross compiling packages by Fedora
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://msys2.github.io/">MSYS2</a>
|
|
|
<br>
|
|
|
Win32/64 ports of many free software packages
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://gnuwin32.sourceforge.io/">GnuWin32</a>
|
|
|
<br>
|
|
|
Win32 ports of many free software packages
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.sandroid.org/imcross/">IMCROSS</a>
|
|
|
<br>
|
|
|
Another project with similar goal
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.libsdl.org/extras/win32/cross/README.txt">MinGW cross-compiler build script</a>
|
|
|
<br>
|
|
|
Old script provided by the
|
|
|
<a href="https://www.libsdl.org/">SDL project</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://comments.gmane.org/gmane.comp.gnu.octave.maintainers/30358">mxe-octave</a>
|
|
|
<br>
|
|
|
Fork of MXE specialized on building
|
|
|
<a href="https://www.gnu.org/software/octave/">GNU Octave</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://software.opensuse.org/search?q=mingw&baseproject=openSUSE%3A13.2&search_devel=false&search_unsupported=false">openSUSE MinGW packages</a>
|
|
|
<br>
|
|
|
Win32 cross compiling packages by openSUSE
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://win-builds.org/">Win-builds</a>
|
|
|
<br>
|
|
|
Creates binary packages, runs on both Linux and Windows
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
<div class="section">
|
|
|
<h2 id="used-by">Projects which use MXE (alphabetical order)</h2>
|
|
|
|
|
|
<ul class="compact-list">
|
|
|
<li>
|
|
|
<a href="https://sourceforge.net/projects/aorta/">Aorta</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/zer0main/battleship">Battleship game</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://bino3d.org/">Bino</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://biosig.sourceforge.io/">BioSig</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://en.cataclysmdda.com/">Cataclysm: Dark Days Ahead</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://cvtool.sourceforge.io/">cvtool</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.qtrac.eu/diffpdf.html">DiffPDF</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.digikam.org/">digiKam</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/eiskaltdcpp/eiskaltdcpp">EiskaltDC++</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/ThKattanek/emu64">Emu64</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.ros.org/wiki/eros">Eros</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.nongnu.org/galois/">Galois</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://gcompris.net/">GCompris</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.nongnu.org/gta/">Generic Tagged Arrays</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.gnu.org/software/freedink/">GNU FreeDink</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://ifwiki.org/index.php/Hugor">Hugor</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://krita.org/">Krita</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://lightspark.github.io/">Lightspark</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://alephone.lhowon.org/">Marathon Aleph One</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.maxr.org/">Mechanized Assault and eXploration Reloaded</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.bunkus.org/videotools/mkvtoolnix/">MKVToolNix</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://mpop.sourceforge.io/">mpop</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://msmtp.sourceforge.io/">msmtp</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://www.openscad.org/">OpenSCAD</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://pdfgrep.org/">Pdfgrep</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.pokerth.net/">PokerTH</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://psi-plus.com/">Psi+</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://pushover.sourceforge.io/">Pushover</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://qelectrotech.org/">QElectroTech</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://qtads.sourceforge.io/">QTads</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://github.com/sibuserv/sibuserv">Sibuserv</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://sigrok.org/">sigrok</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://spek-project.org/">Spek</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://springrts.com/">Spring RTS</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://subsurface-divelog.org/">Subsurface</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://taisei-project.org/">Taisei Project</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://thebeez.home.xs4all.nl/4tH/">The 4tH Compiler</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://www.tug.org/texworks/">TeXworks</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://toppler.sourceforge.io/">Tower Toppler</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://tux4kids.alioth.debian.org/tuxtype/">Tux Typing</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://tux4kids.alioth.debian.org/tuxmath/">Tux Math</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://ph.on.things.free.fr/projects/ube/">Ube</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="http://ufoai.org/">UFO: Alien Invasion</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://violetland.github.io/">Violetland</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://wz2100.net/">Warzone 2100</a>
|
|
|
</li>
|
|
|
<li>
|
|
|
<a href="https://sourceforge.net/projects/xfemm/">xfemm</a>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
</body>
|
|
|
</html>
|