Win32Task

From Gnash Project Wiki

Jump to: navigation, search

Contents

Win32 Task

Although Gnash builds with Mingw32 for Windows and runs, this task is to get the Gnash plugin working under Firefox on Win32. As many native libraries will be used as possible for GUI and media handling. Currently the win32 port of Gnash requires many libraries ported from unix, or is built under Cygwin.

Part of the issues with this task are related to development tools. Unlike a Xcode on a Mac, which is all the GNU tools under the hood, the Windows Visual Studio (VC++) is a whole 'nother beasty. Mingw32 can use all the C libraries supplied for win32, but the C++ object file formats are incompatible. So this work will primarily be done using the Mingw32 cross compiler, built on a standard GNU/Linux system.

As the GUI library for win32, MFC, is a C++ library, we can't use it for a native GUI. In the past most people on Windows have built Gnash with the SDK GUI, as it has the least dependencies. SDL is [pretty poor on win32, plus the event handling is very slow. So whatever is used must be easy for an end user to install, or be able to be embedded in any installable package. There are several other cross platform GUI toolkits, some of which have good native win32 support. It may be that our existing Qt GUI can be tweaked to run on win32.

In the long run though, we want a package that an end user can install easily, along with the required dependencies so they can use Gnash on windows as well as GNU/Linux users already do. And we need to be able to build these packages on a GNU/Linux platform as part of our automated build farm.

The Win32 build we'll be using will be configured with Qt, FFMpeg, and OpenGL

Sub Tasks

Status By Date Description
Done Nov 25 Build Gnash for GNU/Linux system and pass the testsuite Built but used main dist which didn't pass testsuite
Done Nov 31 Research for a free installer Best free installer is nullsoft. Nullsoft is small and flexible and suitable for web distribution. JFoley could add to this.
Done Nov 31 Research what Firefox does for win32 support On Win32, firefox uses MFC natively for GUI, and Cairo/Thebes for renderer.

Additionally, the following software needs to be installed for a standard Windows build:

  Microsoft Visual C++ Tools
  Microsoft Windows SDK(s)
  MozillaBuild
Still in progress Nov 31 Research what other Firefox plugins do for win32 support Firefox supports plug-ins using NPAPI. When the browser encounters references to content a plug-in specializes in, the data is handed off to be processed by that plug-in.

The VLC Mozilla plugin for win32 is supported by gecko-sdk. The Gecko SDK contains all of the necessary tools and headers for making scriptable NPAPI plugins including the xpidl compiler/linker and the latest npapi.h.

Still in Progress Dec 3 Cross-compile Gnash for Windows We have practiced cross compiling by cross compiling helloWorld with mingw and then running the executable with wine. Then we tried to cross compile Gnash with mingw. First we used the sysroot provided on the gnash wiki webpage http://www.gnashdev.org/tools/mingw32-sysroot-090614.tar.bz2 (this has all the necessary cross-compiled dependencies), but this wouldn't work with i586-mingw32msvc. Then we discovered that a freshly installed mingw somehow had all of the cross compiled dependencies according to the configure script. However, Rob said that this isn't the case - which probably means we accidentally messed up the sysroot.
DONE? Jan 31 Implement a gui other than GTK if using MFC is out of the question. It is, but GUI will be Qt for now, should not require more implementation
Feb 1 Start work on Nullsoft installer - make helloworld thing?
Marchish Implement Firefox plugin for win32 Important!
Marchish Research native media handling for win32
Marchish Submit design proposal to gnash-dev list
Aprilish Implement a native media handler for win32 Optional to complete good port
May 15 Make installer package!

Dependency Checklist

Library John Patrick Justin
AGG  ? y n
boost ? y(?) n
curl ? y n
expat ? y n
ffmpeg ? y(?) n
fontconfig ? y n
freetype ? y n
gettext ? n n
giflib ? y n
libiconv ? y n
libjpeg ? y n
libogg ? y n
libpng ? y n
libxml2 ? n n
SDL ? y n
speex ? y n
zlib ? y n
Gnash ? n n

Resources

Nullsoft installer tutorials: http://nsis.sourceforge.net/Category:Tutorials And http://nsis.sourceforge.net/Docs/Chapter2.html

Similar project Bwy maintains: http://benjaminwolsey.de/downloads/