Moonlight, an open source implementation of Silverlight for Unix systems
Fetching latest commit…
Cannot retrieve the latest commit at this time
This is Moonlight, an open source implementation of Silverlight 1.0, 2.0 and 3.0 for Unix systems. See http://www.mono-project.com/Moonlight for more information. Installation ============ For standard Unix configuration/installation instructions, see the INSTALL file. Requirements ============ At this time, Moonlight trunk (this release) requires you to use Mono trunk. To build Moonlight, you need to get the mono and mono-basic repositories from a specific revision from trunk. Do this like this: git clone git://github.com/mono/moon.git moon git clone git://github.com/mono/mono.git mono cd mono && git reset --hard 9c8cb87fe336e678e902 && cd .. git clone git://github.com/mono/mono-basic.git mono-basic cd mono-basic && git reset --hard HEAD && cd .. Compiling Mono for Moonlight ============================ Automatic Mode (recommended) ============== This is recommended if you haven't built Mono before. This is also recommended if you have clean mono and mcs checkouts that you are going to use just for Moonlight. In this mode, you don't have to build Mono before building Moonlight, so you just do cd moon ./autogen.sh make && make install This will configure your Mono source tree with the minimum options required to build it for Moonlight. At the moment, these are: --with-moonlight=only --with-profile4=no --enable-minimal=aot,interpreter --with-ikvm-native=no --with-mcs-docs=no --disable-nls --disable-mono-debugger --with-sgen=no This Mono configuration will not be suitable for anything except Moonlight. Build only Mode (advanced) ========================== This is recommended if you have built Mono before and you would like Moonlight to use your existing Mono source tree. This is for advanced users only - make sure you know what you're doing. In this mode, Moonlight will not touch your existing Mono configuration, it will build the parts it needs. Since it doesn't do a full build of mono+mcs, it's faster than a normal mono+mcs build. Before building moon, you need to make sure your mono configuration includes the following options: --with-moonlight=yes To build moon in this mode, configure it with the following options: --with-manual-mono=build Manual Mode (really advanced) ============================= On this mode, moon will not configure or build mono, you have to do it yourself. To activate this mode, configure moon with --with-manual-mono=yes Configuration options ===================== If your mono/mcs checkout is not in the same place where you have your moon source, you can configure moon with: --with-mcs-path=/path/to/mcs To build Moonlight with pixel shader support, you need to get the mesa module from freedesktop.org. Last known revision to work is 3ed0a099c70e9d771e60e0ddf70bc0b5ba83a483 Do this like this: git clone git://anongit.freedesktop.org/mesa/mesa cd mesa git checkout 3ed0a099c70e9d771e60e0ddf70bc0b5ba83a483 -b moonlight ./autogen.sh --with-driver=xlib && cd src/gallium && make There is no need to do a make install this. If you want to use ffmpeg with Moonlight, you need at least r20911 of ffmpeg and r30099 of libswscale: svn co -r 20911 svn://svn.mplayerhq.hu/ffmpeg/trunk && cd trunk/libswscale && svn up -r 30099 Installing and Testing ====================== If you want to test your newly installed Moonlight, do this: make test-plugin This will install it into your ~/.mozilla/plugins which will let both Firefox and Chrome pick it. Runtime Options =============== There are a couple of runtime-parameters that affect Moonlight behavior and turn on/off certain features. Those options are specified through the MOONLIGHT_OVERRIDES env variable. The more interesting ones are: * shapecache=yes/no Use some extra memory for caching shapes. Increases memory usage but helps with performance (off by default). The shape cache size is 6MB max. * render=ftb/btf Use front-to-back or back-to-front rendering (ftb is the default). * cache=show/hide Show the (shape) cache usage statistics. In plugin mode they're available through the right-click popup menu (hide by default). * converter=yuv/ffmpeg Use native mmx/sse2 conversion code or ffmpeg to do the yuv -> rgb colorspace conversion (by default we use the native yuv code). To launch Firefox with shape caching and ffmpeg converters use: $> MOONLIGHT_OVERRIDES="shapecache=yes,converter=ffmpeg" firefox Other options include: * ms-codecs=yes/no * ffmpeg-codecs=yes/no Controls which sets of codecs to use, the Microsoft ones or the ffmpeg ones. * timesource=manual/system Defaults to `system'. Also if --with-debug=yes option was provided to configure script, the MOONLIGHT_DEBUG env variable controls which debug output is printed on the console. Valid values are: alsa, alsa-ex, audio, audio-ex, pulse, pulse-ex, httpstreaming, markers, markers-ex, mms, mediaplayer, mediaplayer-ex, pipeline, pipeline-error, framereaderloop, ui, ffmpeg, codecs, dependencyobject, downloader, font, layout, media, mediaelement, mediaelement-ex, buffering, asf, playlist, playlist-warn, text, xaml Moonlight currently contains two ASX parsers. The default parser is a custom parser that accounts for some of ASX's oddities such as quotes in attribute strings and non case sensitive element names (ie <foo></FOO>). The older parser uses a true xml parser, so will not handle these oddities well, however it has been more heavily tested. To use the older expat based playlist parser set the env variable MOONLIGHT_USE_EXPAT_ASXPARSER=1. Licensing ========= The C and C++ code that makes up the engine is dual-licensed under the LGPL v2 license and is also available commercially for developers interested in using Moonlight on embedded systems or other systems where the end-user can not upgrade the LGPL code on his own. The C# tests in test/2.0/Microsoft.Silverlight.Testing are copyrighted by Microsoft and released by them under the open source MS-PL license. The C# controls in class/Microsoft.SilverlightControls/ and class/WPF.Toolkit are copyrighted by Microsoft and released by them under the open source MS-PL license. Technical Details ================= For implementation details and notes, see the NOTES file. Test Suite ========== To run the test suite, make sure that the output from configure indicates that the tests will be run. Once this is done, you can run the tests like this: To run the Moonlight Unit Tests: cd moon/test/2.0/moon-unit make test Firefox 3 ========= The original Silverlight.js shipped by Microsoft was incompatible with Firefox 3. We have released a greasemonkey script (data/silverlight-ff3-quirks.user.js) that will patch this behaviour for some sites.