GXemul is an experimental framework for full-system emulation/virtualization. Several machines and other components that make up a computer system have been implemented, and the framework is designed so that it should be relatively easy to add new machine and component types.
GXemul 0.5.0 is a complete rewrite of GXemul in C++. Previous versions were written in C.
Thanks to (in no specific order) Ryan Blair, Hollis Blanchard, Joachim Buss, Olivier Houchard, Juli Mallett, Juan Romero Pardines, Carl van Schaik, Miod Vallat, Alec Voropay, Nils Weller, Göran Weinholt, Alexander Yurchenko, and everyone else who has provided me with feedback on this and previous releases of GXemul.
GXemul's homepage is http://gavare.se/gxemul/.
If you have questions about GXemul, please send mail to one of the mailing lists: gxemul-devel for (technical) discussions about the development of GXemul, or gxemul-users for general user questions.
You may also send feedback directly to me (anders@gavare.se), if you feel that that is more appropriate, or join the IRC channel #GXemul on FreeNode.
If you are lucky, your OS vendor has already packaged GXemul for your particular platform. If so, then please refer to your OS on how to download/install GXemul. E.g. on FreeBSD, you would usually execute
pkg_add -r gxemul or cd /usr/ports/emulators/gxemul; make installas root. That will install GXemul, either as a pre-build binary package, or from the FreeBSD Ports system.
Another example is on Debian GNU/Linux, where the corresponding command line is:
apt-get install gxemul
However, there are several reasons why you might want to build directly from source code:
If you want to build from source code, you should download the GXemul distribution from the home page and run:
./configure make
This should work on most Unix-like platforms. If it does not work for you, then please mail me a detailed bug report, including the output of uname -a, the configure and make output, and any other useful information. (Using Cygwin might work as well, but this is not really supported.)
GXemul depends on the following external libraries and tools:
Note, however, that both gtkmm and Doxygen are optional dependencies. GXemul will build without them. If gtkmm is missing, the gxemul-gui binary will not work, but you can still use the text-only variant, gxemul. If Doxygen is missing, the installed documentation will not include the source code reference.
If the build succeeded, there will be two binaries, gxemul and gxemul-gui. These should work as they are, they do not have to be installed anywhere, but for convenience, there is a makefile target which installs binaries and other files:
To install, type make install. This installs binaries, man pages, and documentation under /usr/local, unless the PREFIX environment variable was set prior to running configure. (You need to have write permission to the corresponding directories to do this.)
The main part of the code is released under a 3-clause BSD-style license (or "revised BSD-style" if one wants to use GNU jargon). Apart from this, some files are copied from other sources such as NetBSD, for example header files containing symbolic names of bitfields in device registers. They are also covered by similar licenses, but with some additional clauses. The main point, however, is that the licenses require that the original Copyright and license terms are included when you make a copy or modification.
If you plan to redistribute GXemul without supplying the source code, then you need to comply with each individual source file some other way, for example by writing additional documentation containing copyright notes. I have not done this, since I do not plan on making distributions without source code. You need to check all individual files for details. The "easiest way out" if you plan to redistribute GXemul is, of course, to let it remain Free Software and simply include the source code.
In case you want to reuse parts of GXemul, but you need to do that under a different license (e.g. the GPL), then contact me and I can probably re-license/dual-license files on a case-by-case basis.