Building FlightGear - Cross Compiling
This article is a stub. You can help the wiki by expanding it. |
Started in | 05/2015 |
---|---|
Description | Windows binaries created using a cross compiler on Linux |
Maintainer(s) | |
Contributor(s) | hamzaalloush (since 05/2015) |
Status | Under active development as of 05/2015 |
Changelog | https://github.com/hamzaalloush/mxe |
Work in progress This article or section will be worked on in the upcoming hours or days. See history for the latest developments. |
Background
Linux/Unix users are generally more accustomed to building software from source - on Unix-based platforms it isn't rare even for non-developers to regularly configure/compile and install software - whereas it is much less common on Windows, which is why you need to install a bunch of things to even end up with a working build environment, whereas a Unix-based system will often have everything pre-installed. In addition, FlightGear is a complex piece of software, especially in terms of build-time/run-time dependencies - so people entirely new to the whole process of building software from source are likely to find this pretty frustrating. Personally, I also find setting up a build environment on Linux much easier than doing the same on Windows, despite being pretty familiar with the required workflows - but that doesn't have to do much with FG - the superbuild should help automate most of the required steps these days. Then again, like I said previously, people struggling with even just building stock FG from source, will definitely not appreciate having to deal with git and other command line tools to build a customized FG versions, such as the osgEarth branch. — Hooray (Mon Apr 06). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
most people on Windows are unlikely to even install a compiler/build environment at all. And those few who do, can still make up their own minds about what tool chain to use. — Hooray (Thu Apr 09). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
I agree completely, introducing cross-compiling support could be a good idea.
— elgaton (Thu Apr 09). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
Idea
do we really need Windows SDK's? can't we find a similar toolchain like Mingw using GCC for example? i think VS support non-native compilers as well? we can then skip this whole thing and probebly even adopt a modified version of the debian build script
— hamzaalloush (Wed Apr 08). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
I also think is better using free software tools to compile it and incidentally make it easier
— Catalanoic (Wed Apr 08). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
MXE
Your best would then be, mxe: http://mxe.cc/ It's a massive compiler suite for cross-compiling Windows stuff on Linux - and comes with a ton of dependencies already. — Hooray (Wed Apr 08). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
mxe is based on mingw, and comes with all libraries required for cross-compilation included, including even OSG 3.x
— Hooray (Fri Apr 17). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
As of 10/2014, the mxe project also contains updated support for building OSG based applications using OSG 3.2.1 for 64 bit Windows, as per: https://github.com/mxe/mxe/commit/c7deb ... 1486926850
— Hooray (Wed Apr 08). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
plib is already supported in master (see /src/plib.mk)
— Hooray (Sat Apr 18). Re: Help me! Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
Status
MXE is such a joy to work with, the folks on the mailing list are helpful in providing patches to get a fellow's toolchain working, but currently they also have some limitations, because they cannot directly maintain errors produced by the upstream mingw back-end compiler. i have carried a successful build of their static toolchain with some local patches that i applied.
— hamzaalloush (Thu May 14). Re: [SOLVED] Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
mingw has came a long way, and i think the MXE openscenegraph package (currently at 3.2.1 on master!!), is beautifully maintained, now it builds almost all core libraries dynamically with some argument passing, even as a static target(MXE_TARGETS='i686-w64-mingw32.static'), but it's those plugins again, with their linking errors! i think these are because i'm using the i686-w64-mingw32.static-g++ compiler as opposed to the shared one...
— hamzaalloush (Thu May 14). Re: [SOLVED] Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
so as soon as i can get the shared build environment running and solve all of it's dependancies for OSG, i think we can have a cross compiller in our hands! :)
— hamzaalloush (Thu May 14). Re: [SOLVED] Install osgEarth feature on Win7 64b with FG gi.
(powered by Instant-Cquotes) |
Roadmap
Task | Description | Progress |
---|---|---|
plib | provide mxe build scripts for plib | Done |
openrti | add OpenRTI support | |
simgear | provide mxe build scripts for simgear | Not done |
osg support | improve/fix up OpenSceneGraph support | |
flightgear | provide mxe build scripts for flightgear | Not done |
Superbuild | Update the CMake Superbuild to support mxe | Not done |
osg-earth | update the Superbuild to support osgEarth | Not done |
packages | provide binary mxe packages (deb/ppa) | Not done |
VM | provide virtual appliance with mxe pre-configured and valid sg/fg build environments set up | Not done |
build server | get the FlightGear Build Server updated to support mxe-based cross-builds | Not done |
3rdParty | ensure 3rd party dependancies are built in the toolchain, and merge their *.mk packages in the clone | |
mxe 32-bit static tool-chain | progress of the static mxe i686-w64-mingw32-based tool-chain | Done |
mxe 32-bit shared tool-chain | progress of the shared mxe i686-w64-mingw32-based tool-chain |
|