/mxe

MXE (M cross environment)

Primary LanguageMakefileOtherNOASSERTION

MXE (M cross environment)

License

Async Chat (Trial))

MXE (M cross environment) is a GNU 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:

  • is designed to run on any Unix system
  • is easy to adapt and to extend
  • builds many free libraries in addition to the cross compiler
  • can also build just a subset of the packages, and automatically builds their dependencies
  • downloads all needed packages and verifies them by their checksums
  • is able to update the version numbers of all packages automatically
  • directly uses source packages, thus ensuring the whole build mechanism is transparent
  • allows inter-package and intra-package parallel builds whenever possible
  • bundles ccache to speed up repeated builds
  • integrates well with autotools, cmake, qmake, and hand-written makefiles.
  • has been in continuous development since 2007 and is used by several projects

Supported Toolchains

  • Runtime: MinGW-w64
  • Host Triplets:
    • i686-w64-mingw32
    • x86_64-w64-mingw32
  • Packages:
    • static
    • shared
  • GCC Threading Libraries (winpthreads is always available):
  • GCC Exception Handling:

Please see mxe.cc for further information and package support matrix.

Build Dependencies

For some packages additional dependencies are required to be installed in order to build:

  • Python 3

Usage

You can use the make command to start the build.

Below an example of cross-compiling the GTK3 project to one statically linked Windows 64-bit library:

make gtk3 -j 8 MXE_TARGETS='x86_64-w64-mingw32.static'

Please see mxe.cc for more information about how-to build the MXE project.

Packages

Within the MXE makefiles we either define $(PKG)_GH_CONF or $(PKG)_URL, which will be used to download the package.
Next the checksum will be validated of the downloaded archive file (sha256 checksum).

Updating a package or updating checksum is all possible using the make commands, see usage for more info.

Shared Library Notes

There are several approaches to recursively finding DLL dependencies (alphabetical list):