MXE (M cross environment) Requirements
2016-05-18 16:56
666 查看
Requirements
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).Detailed instructions are available for:
Debian
Fedora
FreeBSD
Frugalware
Gentoo
Mac OS X
openSUSE
Autoconf | ≥ 2.68 |
Automake | ≥ 1.11.3 |
Bash | |
Bison | |
Bzip2 | |
Flex | ≥ 2.5.31 |
GCC (gcc, g++) | |
gdk-pixbuf | |
Git | ≥ 1.7 |
GNU Coreutils | |
GNU Gettext | |
GNU gperf | |
GNU Make | ≥ 3.81 |
GNU Sed | |
GNU Tar | |
Intltool | ≥ 0.40 |
LibC for 32-bit | |
libffi | ≥ 3.0.0 |
Libtool | ≥ 2.2 |
OpenSSL-dev | ≥ 1.01 |
p7zip (7-Zip) | |
Patch | |
Perl | |
Perl XML::Parser | |
Pkg-config | ≥ 0.16 |
Python | |
Ruby | |
SCons | ≥ 0.98 |
UnZip | |
Wget | |
XZ Utils | |
zlib | ≥ 1.20 |
Debian and derivatives
apt-get install \ autoconf automake autopoint bash bison bzip2 flex gettext\ git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \ libtool libltdl-dev libssl-dev libxml-parser-perl make \ openssl p7zip-full patch perl pkg-config python ruby scons \ sed unzip wget xz-utils
On 64-bit Debian, install also:
apt-get install g++-multilib libc6-dev-i386
On Debian Jessie (8) or Ubuntu Utopic (14.10) or later, install also:
apt-get install libtool-bin
Only the latest Debian stable series is supported.
You can install a precompiled MXE via Debian packages. See pkg.mxe.cc.
Fedora
yum install \ autoconf automake bash bison bzip2 flex gcc-c++ \ gdk-pixbuf2-devel gettext git gperf intltool make \ sed libffi-devel libtool openssl-devel p7zip patch \ perl pkgconfig python ruby scons unzip wget xz
On 64-bit Fedora, there are issues without a 32-bit compiler.
FreeBSD
pkg install \ automake autoconf bash bison coreutils flex \ gcc gdk-pixbuf2 gettext git glib gmake gperf gsed intltool libffi \ libtool openssl p5-XML-Parser p7zip patch perl5 \ pkgconf python ruby scons unzip wget
Use gmake instead of make.
Install file(1) from ports, because file(1) from baseworks very-very-very slow with long text files.
Do not build as root. See #902.
Ensure that /usr/local/bin precedes /usr/bin in your $PATH:
For C style shells, edit .cshrc
setenv PATH /usr/local/bin:$PATH
For Bourne shells, edit .profile
export PATH=/usr/local/bin:$PATH
On 64-bit FreeBSD, there are issues without a 32-bit compiler.
N.B. FreeBSD is no longer fully supported
to build the remainder of MXE, run:
gmake EXCLUDE_PKGS='gtksourceviewmm2 ocaml% openexr pcl qtbase'
to see a list of all dependent downstream packages that will be excluded, run:
gmake show-downstream-deps-'gtksourceviewmm2 ocaml% openexr \ pcl qtbase'
Frugalware
pacman-g2 -S \ autoconf automake bash bzip2 bison flex gcc gdk-pixbuf2\ gettext git gperf intltool make sed libffi libtool \ openssl patch perl perl-xml-parser pkgconfig python \ ruby scons unzip wget xz xz-lzma
On 64-bit Frugalware, there are issues without a 32-bit compiler.
Gentoo
emerge \ sys-devel/autoconf sys-devel/automake app-shells/bash \ sys-devel/bison app-arch/bzip2 \ sys-devel/flex sys-devel/gcc sys-devel/gettext \ dev-vcs/git dev-util/gperf dev-util/intltool \ sys-devel/make sys-apps/sed dev-libs/libffi \ sys-devel/libtool dev-libs/openssl app-arch/p7zip \ sys-devel/patch dev-lang/perl dev-perl/XML-Parser \ dev-util/pkgconfig dev-lang/python dev-lang/ruby \ dev-util/scons app-arch/unzip net-misc/wget \ app-arch/xz-utils x11-libs/gdk-pixbuf
Mac OS X
Install the latest XcodeMethod 1 - MacPorts
Install MacPorts, then run:
sudo port install \ autoconf automake bison coreutils flex gettext \ gdk-pixbuf2 glib2 gnutar gsed intltool libffi libtool \ openssl p5-xml-parser p7zip pkgconfig scons wget xz
Method 2 - Rudix
Install Rudix, then run:
sudo rudix install \ autoconf automake coreutils gettext glib intltool \ libtool p7zip scons sed tar wget xz
Note: gdk-pixbuf2 is not installed in method 2, so you can not build gtk3. Other packages may be missing on Rudix - please open an issue if you find any.
Method 3 - Homebrew
Install Homebrew, then run:
brew install \ autoconf automake coreutils gdk-pixbuf gettext \ gnu-sed gnu-tar intltool libtool p7zip wget xz
Some formulae are
keg-onlyand will need
brew linkto be found.
Genral Notes
You may be prompted to install a java runtime - this is not required.
Mac OS X versions ≤ 10.9 are no longer tested.
Certain packages have open issues on OS X
For Xcode <7.3, run:
make EXCLUDE_PKGS='nsis'
For Xcode ≥7.3, run:
make EXCLUDE_PKGS='gsoap'
openSUSE
zypper install -R \ autoconf automake bash bison bzip2 flex gcc-c++ \ gdk-pixbuf-devel gettext-tools git gperf intltool \ libffi-devel libtool make openssl libopenssl-devel \ p7zip patch perl perl-XML-Parser pkg-config python \ ruby scons sed unzip wget xz
On 64-bit openSUSE, install also:
zypper install -R \ gcc-32bit glibc-devel-32bit libgcc46-32bit \ libgomp46-32bit libstdc++46-devel-32bit
Issues without a 32-bit compiler
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.To build the remainder of MXE, specify the affected packages to exclude:
make EXCLUDE_PKGS='ocaml%'
Usage
All build commands also download the packages if necessary.In a BSD userland, substitute "make" with "gmake" as all commands are based on GNU Make.
makebuild all packages, non-parallel
make gccbuild a minimal useful set of packages, i.e. the cross compilers and the most basic packages, non-parallel
make foo barbuild packages "foo", "bar" and their dependencies, non-parallelthe package list can also be set in
settings.mk
LOCAL_PKG_LIST := foo bar .DEFAULT local-pkg-list: local-pkg-list: $(LOCAL_PKG_LIST)
so a call to
makewill only build those packages (and their dependencies, of course)
make foo bar --touchmark packages "foo" and "bar" as up-to-date after a trivial change in one of their dependencies (short option "-t")
make foo bar --jobs=4 JOBS=2build 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 parallelthe JOBS variable can also be defined in
settings.mkand defaults to the number of CPUs up to a max of 6 to prevent runaway system load with diminishing returns - see the GNU
Make manual for more details on parallel execution
make --jobs=4 --keep-goingbuild all packages with 4 inter-package parallel jobs and continue as much as possible after an error (short option "-j 4 -k")
make EXCLUDE_PKGS='foo bar'build all packages excluding foo, bar, and all downstream packages that depend on them - mostly used when there are known issues
make check-requirementscheck most of the requirements if necessary – executed automatically before building packages
make downloaddownload all packages, non-parallel, such that subsequent builds work without internet access
make download-foo download-bardownload packages "foo", "bar" and their dependencies, non-parallel
make download-foo download-bar -j 4download packages "foo", "bar" and their dependencies, where up to 4 packages are downloaded in parallel
make download-only-foo download-only-bardownload packages "foo", "bar", without their dependencies, non-parallel
make cleanremove all package builds – use with caution!
make clean-junkremove all unused files, including unused package files, temporary folders, and logs
make clean-pkgremove all unused package files, handy after a successful update
make show-deps-fooprint a list of upstream dependencies and downstream dependents
make show-downstream-deps-fooprint a list of downstream dependents suitable for usage in shell scripts
make show-upstream-deps-fooprint a list of upstream dependencies suitable for usage in shell scripts
make build-matrix.htmlgenerate a report of what packages are supported on what targets to build-matrix.html
make updatefor internal use only! – update the version numbers of all packages, download the new versions and note their checksums
make update UPDATE_DRYRUN=truefor internal use only! – show list of update candidates without downloading
make update-package-foofor internal use only! – update the version numbers of package foo, download the new version and note its checksum
make update-checksum-foofor internal use only! – download package foo and update its checksum
make cleanup-stylefor internal use only! – cleanup coding style
List of Packages
See something missing? Feel free to create a new package.a52dec | 0.7.4 | a52dec (aka. liba52) |
agg | 2.5 | Anti-Grain Geometry |
alure | 1.2 | alure |
apr | 1.5.2 | APR |
apr-util | 1.5.4 | APR-util |
armadillo | 6.400.3 | Armadillo C++ linear algebra library |
aspell | 0.60.6.1 | Aspell |
assimp | 3.2 | Assimp Open Asset Import Library |
atk | 2.16.0 | ATK |
atkmm | 2.22.7 | ATKmm |
aubio | 0.4.2 | aubio |
db | 6.1.26 | Oracle Berkeley DB |
bfd | 2.25.1 | Binary File Descriptor library |
binutils | 2.25.1 | GNU Binutils |
blas | 3.5.0 | blas |
boost | 1.60.0 | Boost C++ Library |
box2d | 2.3.1 | Box2D |
bullet | 2.82-r2704 | Bullet physics, version 2 |
bzip2 | 1.0.6 | bzip2 |
cairo | 1.14.6 | cairo |
cairomm | 1.11.2 | cairomm |
cblas | 1 | cblas |
ccfits | 2.4 | CCfits |
cegui | 0.7.9 | Crazy Eddie’s GUI System (CEGUI) |
cfitsio | 3370 | cfitsio |
cgal | 4.6.3 | cgal |
check | 0.10.0 | check |
chipmunk | 6.2.2 | Chipmunk Physics |
chromaprint | 1.1 | Chromaprint |
cloog | 0.18.1 | CLooG Code Generator |
cimg | 1.6.3 | CImg Library |
cmake | 3.5.2 | cmake |
cminpack | 1.3.4 | cminpack |
coda | 2.15.1 | CODA |
coin | 3.1.3 | Coin3D |
cpp-netlib | 0.11.2 | Boost C++ Networking Library |
cppunit | 1.13.2 | CppUnit |
cryptopp | 5.6.3 | Crypto++ Library |
crystalhd | 1 | Broadcom Crystal HD Headers |
cunit | 2.1-3 | cunit |
curl | 7.48.0 | cURL |
dbus | 1.11.2 | dbus |
dcmtk | 3.6.0 | DCMTK |
devil | 1.7.8 | DevIL |
dlfcn-win32 | 1.0.0 | POSIX dlfcn wrapper for Windows |
eigen | 3.2.5 | eigen |
exiv2 | 0.25 | Exiv2 |
expat | 2.1.1 | Expat XML Parser |
faad2 | 2.7 | faad2 |
fdk-aac | 0.1.4 | FDK-AAC |
ffmpeg | 3.0 | ffmpeg |
fftw | 3.3.4 | fftw |
file | 5.24 | file |
flac | 1.3.1 | FLAC |
flann | 1.8.4 | FLANN |
fltk | 1.3.3 | FLTK |
fontconfig | 2.11.1 | fontconfig |
freeglut | 2.8.1 | freeglut |
freeimage | 3.15.4 | FreeImage |
freetds | 0.95.95 | FreeTDS |
freetype | 2.6.3 | freetype |
freetype-bootstrap | 2.6.3 | freetype (without harfbuzz) |
fribidi | 0.19.6 | FriBidi |
ftgl | 2.1.3~rc5 | ftgl |
gc | 7.2e | gc |
gcc | 4.9.3 | GCC |
gd | 2.1.0 | GD (without support for xpm) |
gdal | 2.0.2 | GDAL |
gdb | 7.11 | gdb |
gdk-pixbuf | 2.32.3 | GDK-pixbuf |
gendef | 4.0.6 | gendef |
geoip-database | 20150317-1 | GeoIP Legacy Database |
geos | 3.4.2 | GEOS |
gettext | 0.19.7 | gettext |
giflib | 5.0.5 | giflib |
glew | 1.12.0 | GLEW |
glfw2 | 2.7.9 | GLFW 2.x |
glfw3 | 3.1.2 | GLFW 3.x |
glib | 2.44.1 | GLib |
glibmm | 2.42.0 | GLibmm |
gmp | 6.1.0 | GMP |
gnutls | 3.4.11 | GnuTLS |
googletest | 1.7.0 | Google Test |
graphicsmagick | 1.3.21 | GraphicsMagick |
gsl | 1.16 | GSL |
gsoap | 2.8.22 | gSOAP |
gst-plugins-bad | 1.6.2 | gst-plugins-bad |
gst-plugins-base | 1.6.2 | gst-plugins-base |
gst-plugins-good | 1.6.2 | gst-plugins-good |
gst-plugins-ugly | 1.6.2 | gst-plugins-ugly |
gstreamer | 1.6.2 | gstreamer |
gta | 1.0.7 | gta |
gtk2 | 2.24.29 | GTK+ |
gtk3 | 3.14.4 | GTK+ |
gtkglarea | 2.0.1 | GtkGLArea |
gtkglext | 1.2.0 | GtkGLExt |
gtkglextmm | 1.2.0 | GtkGLExtmm |
gtkimageview | 1.6.4 | GtkImageView |
gtkmm2 | 2.24.4 | GTKMM |
gtkmm3 | 3.14.0 | GTKMM |
gtksourceview | 2.10.5 | GTKSourceView |
gtksourceviewmm2 | 2.10.3 | GtkSourceViewmm |
guile | 1.8.8 | GNU Guile |
harfbuzz | 1.2.7 | HarfBuzz |
hdf4 | 4.2.10 | HDF4 |
hdf5 | 1.8.12 | HDF5 |
hunspell | 1.3.3 | Hunspell |
icu4c | 56.1 | ICU4C |
id3lib | 3.8.3 | id3lib |
ilmbase | 2.2.0 | IlmBase |
imagemagick | 6.9.0-0 | ImageMagick |
isl | 0.12.2 | Integer Set Library |
itk | 4.8.2 | Insight Segmentation and Registration Toolkit (ITK) |
jack | 1.9.10 | JACK Audio Connection Kit |
jansson | 2.7 | Jansson |
jasper | 1.900.1 | JasPer |
jpeg | 9b | jpeg |
json-c | 0.12 | json-c |
json-glib | 1.0.4 | JSON-Glib |
json_spirit | 4.08 | json_spirit |
jsoncpp | 1.6.5 | jsoncpp |
lame | 3.99.5 | lame |
lapack | 3.6.0 | lapack |
lcms | 2.7 | lcms |
lcms1 | 1.19 | lcms1 |
lensfun | 0.3.0 | lensfun |
levmar | 2.6 | levmar |
libaacs | 0.8.1 | libaacs |
libarchive | 3.1.2 | Libarchive |
libass | 0.13.1 | libass |
libbluray | 0.9.2 | libbluray |
libbs2b | 3.1.0 | Bauer Stereophonic-to-Binaural library |
libcaca | 0.99.beta19 | libcaca |
libcdio | 0.93 | Libcdio |
libcdio-paranoia | 10.2+0.93+1 | Libcdio-paranoia |
libcomm14cux | 2.1.1 | libcomm14cux |
libcroco | 0.6.2 | Libcroco |
libdnet | 1.11 | libdnet |
libdvbpsi | 1.2.0 | libdvbpsi |
libdvdcss | 1.3.0 | libdvdcss |
libdvdnav | 5.0.1 | libdvdnav |
libdvdread | 5.0.0 | libdvdread |
libechonest | 2.3.1 | libechonest |
libepoxy | 1.3.1 | libepoxy |
libevent | 2.0.21 | libevent |
libf2c | 1 | libf2c |
libffi | 3.2.1 | libffi |
libftdi | 0.20 | LibFTDI |
libftdi1 | 1.2 | LibFTDI1 |
libgcrypt | 1.7.0 | libgcrypt |
libgda | 4.2.13 | libgda |
libgdamm | 4.1.3 | libgdamm |
libgee | 0.5.0 | libgee |
libgeotiff | 1.4.0 | GeoTiff |
libgit2 | 0.23.2 | libgit2 |
libglade | 2.6.4 | glade |
libgnurx | 2.6.1 | libgnurx |
libgpg_error | 1.21 | libgpg-error |
libgsasl | 1.8.0 | Libgsasl |
libgsf | 1.14.30 | libgsf |
libharu | 2.2.1 | libharu |
libiberty | 2.25.1 | libiberty |
libical | 2.0.0 | libical |
libiconv | 1.14 | libiconv |
libid3tag | 0.15.1b | libid3tag |
libidn | 1.32 | Libidn |
libieee1284 | 0.2.11 | libieee1284 |
libircclient | 1.8 | libircclient |
libjpeg-turbo | 1.4.1 | libjpeg-turbo |
liblaxjson | 1.0.5 | liblaxjson |
liblo | 0.28rc | liblo |
liblqr-1 | 0.4.2 | liblqr-1 |
liblsmash | 2.9.1 | L-SMASH |
libltdl | 2.4.4 | GNU Libtool Library (libltdl) |
libmad | 0.15.1b | libmad |
libmicrohttpd | 0.9.38 | GNU Libmicrohttpd |
libmikmod | 3.3.7 | libMikMod |
libmng | 2.0.3 | libmng |
libmodplug | 0.8.8.4 | libmodplug |
libmpcdec | 1.2.6 | libmpcdec |
libmysqlclient | 6.1.6 | libmysqlclient |
libntlm | 1.4 | Libntlm |
liboauth | 1.0.3 | liboauth |
libodbc++ | 0.2.5 | libodbc++ |
liboil | 0.3.17 | liboil |
libpano13 | 2.9.18 | libpano13 |
libpaper | 1.1.24+nmu4 | libpaper |
libplist | 1.12 | libplist |
libpng | 1.6.21 | libpng |
librsvg | 2.40.5 | librsvg |
librosco | 0.1.11 | librosco |
librtmp | a107cef | librtmp |
libsamplerate | 0.1.8 | libsamplerate |
libshout | 2.4.1 | libshout |
libsigc++ | 2.4.0 | libsigc++ |
libsndfile | 1.0.25 | libsndfile |
libsodium | 1.0.6 | libsodium |
libsoup | 2.54.0.1 | libsoup |
libssh2 | 1.7.0 | libssh2 |
libsvm | 3.20 | libsvm |
libtool | 2.4.4 | GNU Libtool |
libtorrent-rasterbar | 1.0.7 | libtorrent-rasterbar |
libunistring | 0.9.4 | libunistring |
libusb | 1.2.6.0 | LibUsb |
libusb1 | 1.0.19 | LibUsb-1.0 |
libuv | 1.9.0 | libuv |
libvpx | 1.5.0 | vpx |
libwebp | 0.4.4 | libwebp |
libwebsockets | 1.4-chrome43… | libwebsockets |
libxml++ | 2.37.2 | libxml2 |
libxml2 | 2.9.2 | libxml2 |
libxslt | 1.1.28 | libxslt |
libzip | 0.11.2 | libzip |
llvm | 3.4 | llvm |
log4cxx | 0.10.0 | log4cxx |
lua | 5.3.2 | Lua |
luabind | 0.9.1 | Luabind |
luajit | 2.0.4 | LuaJIT |
lzma | 920 | LZMA SDK |
lzo | 2.09 | lzo |
matio | 1.5.2 | matio |
mdbtools | 0.7.1 | mdbtools |
miniupnpc | 1.9 | miniupnpc |
minizip | 0b46a2b | minizip |
mingw-w64 | 4.0.6 | MinGW-w64 Runtime |
mman-win32 | b7ec370 | MMA-Win32 |
mpc | 1.0.2 | GNU MPC |
mpfr | 3.1.4 | mpfr |
mpg123 | 1.22.4 | mpg123 |
muparser | 2.2.5 | muParser |
muparserx | 4.0.4 | muParserX |
mxml | 2.9 | Mini-XML |
ncurses | e14300b | Ncurses |
netcdf | 4.3.0 | NetCDF |
netpbm | 10.35.96 | Netpbm |
nettle | 3.2 | nettle |
nlopt | 2.4.2 | NLopt |
nsis | 2.51 | NSIS |
ocaml-cairo | 1.2.0 | cairo-ocaml |
ocaml-camlimages | 4.0.1 | camlimages |
ocaml-core | 4.00.1 | ocaml |
ocaml-findlib | 1.4 | findlib |
ocaml-flexdll | 0.31 | flexdll |
ocaml-lablgl | 1.05 | lablgl |
ocaml-lablgtk2 | 2.16.0 | lablgtk2 |
ocaml-native | 4.00.1 | ocaml |
ocaml-xml-light | 2.2 | xml-light |
oce | 0.16.1 | Open CASCADE Community Edition |
ogg | 1.3.2 | OGG |
old | 0.17 | old |
openal | 1.16.0 | openal |
openblas | 0.2.15 | OpenBLAS |
opencore-amr | 0.1.3 | opencore-amr |
opencsg | 1.4.0 | opencsg |
opencv | 2.4.10 | OpenCV |
openexr | 2.2.0 | OpenEXR |
openjpeg | 2.1.0 | OpenJPEG |
openmp-validation | 3.1 | OpenMP Validation Suite |
openscenegraph | 3.4.0 | OpenSceneGraph |
openssl | 1.0.2h | openssl |
openthreads | 3.4.0 | OpenThreads |
opus | 1.1.1 | opus |
opusfile | 0.6 | opusfile |
ossim | 1.8.20 | OSSIM |
pango | 1.37.4 | Pango |
pangomm | 2.34.0 | Pangomm |
pcl | 1.7.2 | PCL (Point Cloud Library) |
pcre | 8.38 | PCRE |
pdcurses | 3.4 | PDcurses |
pdflib_lite | 7.0.5p3 | PDFlib Lite |
pfstools | 2.0.4 | pfstools |
physfs | 2.0.3 | physfs |
picomodel | 1142ad8 | picomodel |
pire | 0.0.5 | PIRE |
pixman | 0.33.6 | pixman |
pkgconf | da179fd | pkgconf |
plib | 1.8.5-rc1 | Plib |
plibc | cd7ed09 | Plibc |
plotmm | 0.1.2 | PlotMM |
plotutils | 2.6 | plotutils |
poco | 1.4.7p1 | POCO C++ Libraries |
polarssl | 1.3.9 | Polar SSL Library |
poppler | 0.30.0 | poppler |
popt | 1.16 | popt |
portablexdr | 4.9.1 | PortableXDR |
portaudio | 19_20140130 | portaudio |
portmidi | 217 | portmidi |
postgresql | 9.2.4 | PostgreSQL |
primesieve | 5.5.0 | Primesieve |
proj | 4.9.1 | proj |
protobuf | 2.6.1 | protobuf |
pthreads | POSIX 1003.1… | POSIX Threads |
qdbm | 1.8.78 | QDBM |
qhttpengine | 0.1.0 | qhttpengine |
qjson | 0.8.1 | QJson |
qscintilla2 | 2.8.4 | QScintilla2 |
qt | 4.8.7 | Qt |
qt3d | bcdbf04b74cc… | Qt |
qt5 | 5.6.0 | Qt |
qtactiveqt | 5.6.0 | Qt |
qtbase | 5.6.0 | Qt |
qtcanvas3d | 5.6.0 | Qt |
qtconnectivity | 5.6.0 | Qt |
qtdeclarative | 5.6.0 | Qt |
qtenginio | 1.6.0 | Qt |
qtgraphicaleffects | 5.6.0 | Qt |
qtimageformats | 5.6.0 | Qt |
qtlocation | 5.6.0 | Qt |
qtmultimedia | 5.6.0 | Qt |
qtofficeopenxml | 02dda4a46f92… | QtOfficeOpenXml |
qtquickcontrols | 5.6.0 | Qt |
qtquickcontrols2 | 5.6.0 | Qt |
qtscript | 5.6.0 | Qt |
qtsensors | 5.6.0 | Qt |
qtserialport | 5.6.0 | Qt |
qtserialport_qt4 | 5c3b6cc770 | Qt |
qtservice | ad9bc46 | Qt Solutions |
qtsparkle_qt4 | 8882e6ef86cd… | qtsparkle |
qtsvg | 5.6.0 | Qt |
qtsystems | 4e3a7ed | Qt |
qttools | 5.6.0 | Qt |
qttranslations | 5.6.0 | Qt |
qtwebchannel | 5.6.0 | Qt |
qtwebengine | 5.6.0 | Qt |
qtwebkit | 5.6.0 | Qt |
qtwebsockets | 5.6.0 | Qt |
qtwebview | 5.6.0 | Qt |
qtwinextras | 5.6.0 | Qt |
qtxlsxwriter | ad90b6a2c21b… | QtXlsxWriter |
qtxmlpatterns | 5.6.0 | Qt |
qwt | 6.1.1 | Qwt |
qwt_qt4 | 6.1.1 | Qwt-qt4 |
qwtplot3d | 0.2.7 | QwtPlot3D |
readline | 6.3 | Readline |
rubberband | 1.8.1 | Rubberband |
rucksack | 3.1.0 | rucksack |
sdl | 1.2.15 | SDL |
sdl_gfx | 2.0.25 | SDL_gfx |
sdl_image | 1.2.12 | SDL_image |
sdl_mixer | 1.2.12 | SDL_mixer |
sdl_net | 1.2.8 | SDL_net |
sdl_pango | 0.1.2 | SDL_Pango |
sdl_rwhttp | 0.2.0 | SDL_rwhttp |
sdl_sound | 1.0.3 | SDL_sound |
sdl_ttf | 2.0.11 | SDL_ttf |
sdl2 | 2.0.4 | SDL2 |
sdl2_gfx | 1.0.1 | SDL2_gfx |
sdl2_image | 2.0.0 | SDL2_image |
sdl2_mixer | 2.0.0 | SDL2_mixer |
sdl2_net | 2.0.0 | sdl2_net |
sdl2_ttf | 2.0.12 | SDL2_ttf |
sfml | 2.3.2 | SFML |
smpeg | 0.4.5+cvs200… | smpeg |
smpeg2 | 2.0.0 | smpeg |
sox | 14.4.2 | SoX |
sparsehash | 2.0.3 | sparsehash |
speex | 1.2rc2 | Speex |
speexdsp | 1.2rc3 | SpeexDSP |
sqlite | 3120200 | SQLite |
suitesparse | 4.2.1 | SuiteSparse |
subversion | 1.9.2 | subversion |
t4k_common | 0.1.1 | t4k_common |
taglib | 1.10 | TagLib |
tclap | 1.2.1 | tclap |
teem | 1.11.0 | Teem |
termcap | 1.3.1 | Termcap |
theora | 1.1.1 | Theora |
tiff | 4.0.6 | LibTIFF |
tinyxml | 2.6.2 | tinyxml |
tinyxml2 | 3.0.0 | tinyxml2 |
tre | 0.8.0 | TRE |
twolame | 0.3.13 | TwoLAME |
ucl | 1.03 | UCL |
unrtf | 0.21.9 | unRTF |
upx | 3.91 | UPX |
vamp-plugin-sdk | 2.5 | Vamp Plugins SDK |
vcdimager | 0.7.24 | vcdimager |
vidstab | 0.98b | vid.stab video stablizer |
vigra | 1.9.0 | vigra |
vmime | 87b0525 | VMime |
vo-aacenc | 0.1.3 | VO-AACENC |
vo-amrwbenc | 0.1.3 | VO-AMRWBENC |
vorbis | 1.3.5 | Vorbis |
vtk | 5.8.0 | vtk |
vtk6 | 6.3.0 | VTK6 |
waf | 1.8.17 | Waf: the meta build system |
wavpack | 4.75.2 | WavPack |
wget | 1.17.1 | wget |
widl | 4.0.6 | Wine IDL Compiler |
winpcap | 4_1_3 | WinPcap |
wt | 3.3.5 | Wt |
wxwidgets | 3.0.2 | wxWidgets |
x264 | 20151011-224… | x264 |
xapian-core | 1.2.21 | Xapian-Core |
xerces | 3.1.2 | Xerces-C++ |
xmlrpc-c | d4364f4 | xmlrpc-c |
xmlwrapp | 0.7.0 | xmlwrapp |
xorg-macros | 1.19.0 | X.org utility macros |
xvidcore | 1.3.4 | xvidcore |
xz | 5.2.2 | XZ |
yasm | 1.3.0 | Yasm |
zlib | 1.2.8 | zlib |
zziplib | 0.13.62 | ZZIPlib |
Guidelines for Creating Packages
The package should be a free software library thatis really used by one of your applications. Please also review our legal notes.
BTW, we're always curious about the applications people are porting. We maintain a list of projectswhich 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.
Also, feel free to link to us. :-)
Grep through the
src/*.mkfiles to find a project that is most similar to yours. (Really,
grepis your friend here.)
For instance, when adding a GNU library, you should take a package like gettext.mk orlibiconv.mk as
the base of your work. When using a SourceForge project, you could start with a copy of xmlwrapp.mk. And so on.
The GNU Make Standard Library is also available (though it should be unnecessary for most packages).
Adjust the comments, fill in the
$(PKG)_*fields.
To fill the
$(PKG)_CHECKSUMfield, use a command such as (for file gettext.mk):
make update-checksum-gettext
or:
openssl sha256 pkg/gettext-x.y.z.tar.gz
if you have already downloaded the package.
Be especially careful with the
$(PKG)_DEPSsection. The easiest way to get the dependencies right is to start with a minimal setup. That is, initialize MXE with
make gcconly, then check whether your package builds successfully.
Always list the dependency on
gccexplicitly:
$(PKG)_DEPS := gcc ...
Things not to do:
do not run target executables with Wine, 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;
do not download anything while building, 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 LD_PRELOAD
trick, breaking network functions.
Add your package to the list of packages.
Each package gets its own table row element with table cells specifying your package name, official name and website:
<tr> <td class="package">gettext</td> <td class="website"><a href="https://www.gnu.org/software/gettext/">gettext</a></td> </tr>
Always look for the SSL version of a website, that is, prefer
https://URLs over
http://URLs.
Write your
$(PKG)_BUILD. If your library has a
./configurescript, enable/disable all dependency libraries explicitly via "
--enable-*"
and "
--disable-*" options.
You might also have to provide a patch for it. In that case, have a look at other patches such assdl2-2-libtool.patch. In particular, each patch file should be
named as:
PACKAGE-PATCHNUMBER-DESCRIPTION.patch
and should start with:
This file is part of MXE. See index.html for further information. This patch has been taken from: https://...[/code] where the URL points to the bugtracker entry, mailing list entry or website you took the patch from.
If you created the patch yourself, please offer it to the upstream project first, and point to thatURL, using the same wording: "This patch has been taken from:".
Depending on the feedback you get from the upstream project, you might want to improve your patch.
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:PACKAGE-test.c
orPACKAGE-test.cpp
depending on whether it is a C or C++ library. To get a clue, please have a look at existing test programs such as sdl-test.c.
At the very end of your*.mkfile you should build the test program in a generic way, using strict compiler flags. The last few lines of sdl.mk will
give you a clue.
You could also try to provide a$(PKG)_UPDATEsection. However, that requires some experience and "feeling" for it. So it is perfectly okay if you leave a placeholder:define $(PKG)_UPDATE echo 'TODO: write update script for $(PKG).' >&2; echo $($(PKG)_VERSION) endef
We'll fill that in for you. It's a funny exercise.
Check that you don't have "dirty stuff" in your*.mkfiles, such as TAB characters or trailing spaces at lines endings. Run:make cleanup-style
to remove these. Have a look at random*.mkfiles to get a feeling for the coding style.
The same holds for your test program.
However, patch files should always appear in the same coding style as the files they are patching.
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*crlf.patchto instruct git not to normalise the line
endings (defined in.gitattributes).
Finally, in your$(PKG)_BUILDsection, please check that you use our portability variables:
bash | → | $(SHELL) |
date | → | $(DATE) |
install | → | $(INSTALL) |
libtool | → | $(LIBTOOL) |
libtoolize | → | $(LIBTOOLIZE) |
make | → | $(MAKE) |
patch | → | $(PATCH) |
sed | → | $(SED) |
sort | → | $(SORT) |
wget | → | $(WGET) |
*.mkfile
so far.
Issue a pull request to propose your final
*.mkfile to us. If you have trouble with pull requests, send your file
to the mailing list instead.
Either way, don't forget to tell us if there are some pieces in your
*.mkfile you feel unsure about. We'll then have a specific look at those parts, which avoids trouble for you and us in the future.
相关文章推荐
- Longest Increasing Subsequence
- 关于UIView布局的总结
- leetcode 232. Implement Queue using Stacks
- UIUITableView仿淘宝的两列式cell显示
- UE4之GamePlay
- iOS学习之—— UIDevice、NSBundle、NSLocale
- iOS 视图UIview属性介绍 以及视图层次方法
- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
- 使用UIBezierPath和CAShapeLayer画各种图形
- 10.UIImageView
- IOS开发 REST请求 ASIHTTPRequest用法
- iOS UITextFiled 后边的小叉号或是一次性删除输入的文字
- AndroidStudio导入新项目一直卡在Building gradle project info的解决解决方案
- PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别
- 一图了解View的生命周期,自定义view,invalidate()和requestLayout()调用
- Vue.js-----轻量高效的MVVM框架(二、Vue.js的简单入门)
- UEFI 安装win10 ubuntu双系统
- MultipartEntityBuilder.addTextBody 中文乱码
- ios学习--UIColor的你想知道的所有
- UIResponder