Building FlightGear - Cross Compiling: Difference between revisions
mNo edit summary |
Hamzaalloush (talk | contribs) (→Status: cleanup) |
||
Line 232: | Line 232: | ||
== Status == | == Status == | ||
=== | === Wednesday, May 27, 2015 : OSG Shared library support done === | ||
{{Note|as of now, mxe-clone is able to cross-compile OSG 3.2.1 with shared library support on Ubuntu 14.04.2 distributions. so i'm raising the roadmap objective to 70% until i get the OSG examples and applications working. -- [[User:Hamzaalloush|Hamzaalloush]] ([[User talk:Hamzaalloush|talk]]) 16:06, 27 May 2015 (EDT)}} | {{Note|as of now, mxe-clone is able to cross-compile OSG 3.2.1 with shared library support on Ubuntu 14.04.2 distributions. so i'm raising the roadmap objective to 70% until i get the OSG examples and applications working. -- [[User:Hamzaalloush|Hamzaalloush]] ([[User talk:Hamzaalloush|talk]]) 16:06, 27 May 2015 (EDT)}} | ||
Line 398: | Line 398: | ||
</pre> | </pre> | ||
=== OSG Applications/Examples built and tested working. | === Thursday, May 28, 2015 : OSG Applications/Examples built and tested working. === | ||
Revision as of 20:40, 28 May 2015
This article describes content/features that may not yet be available in the latest stable version of FlightGear (2020.3). You may need to install some extra components, use the latest development (Git) version or even rebuild FlightGear from source, possibly from a custom topic branch using special build settings: .This feature is scheduled for FlightGear 4.x. If you'd like to learn more about getting your own ideas into FlightGear, check out Implementing new features for FlightGear. |
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) | hamzaalloush and hooray |
Contributor(s) | hamzaalloush, FlyHigh (since 05/2015) |
Status | Under active development as of 05/2015 |
Changelog | https://github.com/hamzaalloush/mxe-clone |
News
Note examples and the osgviewer in action recorded, was using Wine at the time, but i tried it on Windows dual booted to same machine and it worked! -- Hamzaalloush (talk) 13:25, 28 May 2015 (EDT) |
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) |
Testing & Development
See Howto:Cross platform development for the main article about this subject. |
We may benefit from getting access to the Suse build service (or the gcc compile farm) for testing/running and developing the mxe specific parts.
MXE
What is MXE
MXE is essentially a set of useful tools and a Makefile, that provides a compact, command-line driven environment for which to cross-compile Windows binaries on Unix-like platforms.
MXE's Makefile
the Makefile provides a set of Unix portable target-rules for the native GNU make utility.
for the full set of targets that can be passed as arguments to the GNU make utility, visit: http://mxe.cc/#usage
for example, a simple:
$ cd mxe/
$ make
by use of native tools such as the GNU Make Standard Library functions and simple substitution, the Makefile parses through a list of package names, that are contained within an index.html file, and stores them into a white-space separated string.
MXE's Makefile, Line:47
PKGS := $(call set_create,\
$(shell $(SED) -n 's/^.* class="package">\([^<]*\)<.*$$/\1/p' '$(TOP_DIR)/index.html'))
packages are contained in index.html as html table elements, the name of the package is the value of html subtype "package":
<tr>
<td class="package">simgear</td>
<td class="website"><a href="https://sourceforge.net/projects/flightgear/">SimGear - Simulator Construction Tools</a></td>
</tr>
<tr>
<td class="package">fgfs</td>
<td class="website"><a href="https://sourceforge.net/projects/flightgear/">FlightGear Flight Simulator</a></td>
</tr>
MXE's Makefile build process
MXE's Makefile, does not build software by itself. or rather, it does not generate configuration for software.
For example, if you were to pass the name of a package to be cross-compiled to the GNU make utility in MXE, such as:
$ make fgfs
a file in the src/ directory will be invoked that matches the name of the package followed by a suffix of ".mk", this ".mk" file does the necessary configuration and Makefile generation of software.
*.mk file template
Work in progress This article or section will be worked on in the upcoming hours or days. See history for the latest developments. |
a CMake-based template (e.g. for adding support for OpenSceneGraph, osgEarth, SimGear and FlightGear would look like this (with configuration options obviously being specific to the corresponding package):
# This file is part of MXE: http://mxe.cc
# This file specifies how to build: FOO http://www.foo.org
# See index.html for further information.
PKG := foo
$(PKG)_IGNORE :=
$(PKG)_VERSION := 9000
# to compute the checksum use: openssl sha1 tarball.tar.gz
$(PKG)_CHECKSUM := 5c666531f7d487075fd692d89f1e05036306192a
$(PKG)_SUBDIR := foo-$($(PKG)_VERSION)
$(PKG)_FILE := foo-$($(PKG)_VERSION).tar.gz
$(PKG)_URL := http://www.foo.org/downloads/developer_releases/$($(PKG)_FILE)
$(PKG)_DEPS := gcc bar baz
define $(PKG)_UPDATE
echo 'TODO: write update script for $(PKG).' >&2;
echo $($(PKG)_VERSION)
endef
define $(PKG)_BUILD
mkdir '$(1).build'
cd '$(1).build' && cmake '$(1)' \
-DCMAKE_TOOLCHAIN_FILE='$(CMAKE_TOOLCHAIN_FILE)' \
-DENABLE_BAR=ON \
-DENABLE_BAZ=OFF
$(MAKE) -C '$(1).build' -j '$(JOBS)' install VERBOSE=1
endef
See [Creating mxe packages] for the main article about this subject. |
Applying Patches
MXE patches are written in the git-format-patch style, there is a useful tool for automatic patch generation to this style:
cd mxe/
./tools/patch-tool-mxe init fgfs # this will download, extract and initialize package as a git repository into the mxe/gits directory.
cd gits/fgfs-version
# make changes here
git commit -a # commit your changes and descibe them
../tools/patch-tool-mxe export fgfs 1-patchname
this will automatically write your patches in git format, and move them to the /src directory, so they become src/fgfs-1-patchname, and are applied before compilation.
Project inspiration
Note In its current form, this section/article is largely based on quotes collected from various related discussions/channels (devel list, forum etc) using the Instant-Cquotes script. Wiki users and other contributors are encouraged to help rewrite/edit contents accordingly to help get rid of unnecessary quoting (i.e. while the wiki is not intended to be a collection of quotes, quotes are sometimes the best/easiest way to bootstrap new articles, while also providing a good way to link back to related discussions in the archives).
While rewriting usually only entails changing first person speech to 3rd person. However, please try to retain references/links to the original discussion whenever possible. |
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
Note as of now, mxe-clone is able to cross-compile OSG 3.2.1 with shared library support on Ubuntu 14.04.2 distributions. so i'm raising the roadmap objective to 70% until i get the OSG examples and applications working. -- Hamzaalloush (talk) 16:06, 27 May 2015 (EDT) |
$ find . -iname "*osg*" ./i686-w64-mingw32.shared/bin/libosgText.dll ./i686-w64-mingw32.shared/bin/libosgTerrain.dll ./i686-w64-mingw32.shared/bin/libosgVolume.dll ./i686-w64-mingw32.shared/bin/libosgGA.dll ./i686-w64-mingw32.shared/bin/libosgDB.dll ./i686-w64-mingw32.shared/bin/libosgParticle.dll ./i686-w64-mingw32.shared/bin/libosg.dll ./i686-w64-mingw32.shared/bin/libosgShadow.dll ./i686-w64-mingw32.shared/bin/libosgPresentation.dll ./i686-w64-mingw32.shared/bin/libosgManipulator.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1 ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_bvh.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_rot.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_exr.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_lwo.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osc.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgfx.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_tga.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osgtgz.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_dxf.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_pic.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ive.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgmanipulator.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_p3d.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osganimation.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgtext.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_jpeg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_jp2.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ogr.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ktx.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_txp.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osgterrain.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_qfont.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgparticle.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osganimation.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgga.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ffmpeg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_png.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_gta.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_logo.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_dot.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_trk.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_sdl.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_pnm.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_stl.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgtext.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_vtf.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_obj.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_pvr.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgfx.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_bsp.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_rgb.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_openflight.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_txf.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_hdr.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_bmp.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_dds.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_dw.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_lws.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_dicom.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgwidget.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_gz.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osga.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_md2.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osgshadow.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_tiff.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_3ds.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgsim.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_3dc.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_gif.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgshadow.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgterrain.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_curl.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgviewer.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgshadow.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_x.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgviewer.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_mdl.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgvolume.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_normals.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_pov.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_serializers_osgsim.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_zip.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_shp.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_pdf.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_trans.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_tgz.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ac.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_ply.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_gdal.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgterrain.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_cfg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgparticle.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osg.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_deprecated_osgvolume.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_scale.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_glsl.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_osgviewer.dll ./i686-w64-mingw32.shared/bin/osgPlugins-3.2.1/mingw_osgdb_revisions.dll ./i686-w64-mingw32.shared/bin/libosgQt.dll ./i686-w64-mingw32.shared/bin/libosgAnimation.dll ./i686-w64-mingw32.shared/bin/libosgSim.dll ./i686-w64-mingw32.shared/bin/libosgUtil.dll ./i686-w64-mingw32.shared/bin/libosgViewer.dll ./i686-w64-mingw32.shared/bin/libosgWidget.dll ./i686-w64-mingw32.shared/bin/libosgFX.dll ./i686-w64-mingw32.shared/lib/libosgViewer.dll.a ./i686-w64-mingw32.shared/lib/libosgPresentation.dll.a ./i686-w64-mingw32.shared/lib/libosgTerrain.dll.a ./i686-w64-mingw32.shared/lib/libosgManipulator.dll.a ./i686-w64-mingw32.shared/lib/libosg.dll.a ./i686-w64-mingw32.shared/lib/libosgAnimation.dll.a ./i686-w64-mingw32.shared/lib/libosgQt.dll.a ./i686-w64-mingw32.shared/lib/libosgWidget.dll.a ./i686-w64-mingw32.shared/lib/libosgParticle.dll.a ./i686-w64-mingw32.shared/lib/libosgText.dll.a ./i686-w64-mingw32.shared/lib/libosgDB.dll.a ./i686-w64-mingw32.shared/lib/libosgSim.dll.a ./i686-w64-mingw32.shared/lib/libosgVolume.dll.a ./i686-w64-mingw32.shared/lib/libosgUtil.dll.a ./i686-w64-mingw32.shared/lib/libosgFX.dll.a ./i686-w64-mingw32.shared/lib/libosgGA.dll.a ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgDB.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgViewer.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgGA.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgShadow.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgSim.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osg.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgAnimation.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgTerrain.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgUtil.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgWidget.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgVolume.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgText.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgQt.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgParticle.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgManipulator.pc ./i686-w64-mingw32.shared/lib/pkgconfig/openscenegraph-osgFX.pc ./i686-w64-mingw32.shared/lib/libosgShadow.dll.a ./i686-w64-mingw32.shared/include/osgShadow ./i686-w64-mingw32.shared/include/osgViewer ./i686-w64-mingw32.shared/include/osgWidget ./i686-w64-mingw32.shared/include/osgVolume ./i686-w64-mingw32.shared/include/osgSim ./i686-w64-mingw32.shared/include/osgParticle ./i686-w64-mingw32.shared/include/osgGA ./i686-w64-mingw32.shared/include/osgUtil ./i686-w64-mingw32.shared/include/osgManipulator ./i686-w64-mingw32.shared/include/osgText ./i686-w64-mingw32.shared/include/osgFX ./i686-w64-mingw32.shared/include/osg ./i686-w64-mingw32.shared/include/osgAnimation ./i686-w64-mingw32.shared/include/osgDB ./i686-w64-mingw32.shared/include/osgDB/DotOsgWrapper ./i686-w64-mingw32.shared/include/osgTerrain ./i686-w64-mingw32.shared/include/osgPresentation ./i686-w64-mingw32.shared/include/osgQt
Thursday, May 28, 2015 : OSG Applications/Examples built and tested working.
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) |
Issues
OpenSceneGraph
- For development purposes, it would make sense to focus on debug builds for now, and only begin supporting optimized builds when everything else is working correctly - or at least use RelWithDbg, as per Building_using_CMake#Debug_Builds.
- For building OSG applications out-of-source-trees, it would make sense to introduce -DCMAKE_INSTALL_PREFIX, so that FindOpenSceneGraph.cmake can easily locate pre-installed OSG versions (as per our docs, and the existing cmake machinery in place in SG/FG), which also means that OSG would not need to be installed system-wide, while also supporting different versions at the same time.
- We keep seeing people asking for ways to have an entirely self-contained FlightGear setup that doesn't require any installation (e.g. either all files residing in a single folder or the whole binary linked statically) - we used to support this a few years go, and we even had people using FG on a USB drive, or on boot-able drives - and we commonly suggest that people first try running FG on computers before purchasing any new hardware - so it would make sense to look at what's needed to still support static builds using the mxe tool chain. This may involve making the static/dynamic configuration options configurable in the corresponding *.mk files.
Roadmap
Note to benefit from parallel builds on multicore systems, we need to review package dependencies to see which packages can be built concurrently, and which dependencies must be built sequentially |
Task | Description | Progress |
---|---|---|
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 | |
flightgear specific mxe tool-chain | provide minimal set of packages neccessary for the flightgear project, rather than the full 367 packages | |
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 |
Dependencies
This is a list of dependencies (usually, dedicated *.mk modules for mxe):
Task | Description | Progress |
---|---|---|
plib | provide mxe build scripts for plib | Done |
openrti | add OpenRTI support | |
optional | add support for optional dependencies | Not done |
simgear | provide mxe build scripts for simgear (FlyHigh -saiarcot895 hint:focus on SG headless first) | Not done |
osg shared library support | improve/fix up OpenSceneGraph 3.x support (i.e. shared,non-static, builds using plugins) | |
osg examples/demos | ensure that all OSG examples build/link properly via -DBUILD_OSG_EXAMPLES=ON and -DBUILD_OSG_APPLICATIONS=ON | |
flightgear | provide mxe build scripts for flightgear | Not done |
osg-earth | add dedicated osgearth.mk module for mxe (ensure that the examples are working properly) |
Not done |
3rdParty | ensure 3rd party dependencies are built in the toolchain, and merge their *.mk packages in the clone |
|