webkit 移植要点
webkit 移植要点
As i write this blog the webkit is ported to at least 8 platforms like gtk,qt,mac,symbian,haiku,wince,android,efl and many more to come..
If some one is new to webkit and wants to know where to start porting from I will try and put some basic guidelines to follow.
First and foremost see if you have what is needed to port on your platform:
i) Threading -> pthread equivalent API's if you want multi-threading (ENABLE_JSC_MULTIPLE_THREADS turn it OFF if you do not have one)
ii) Timers -> any platform would have this so it should be fine
iii) Drawing surface/Graphics Library
iv) Way to integrate widgets with your drawing surface; put it another way how to provide input to your webpage. Gtk has clean way of doing this, can be followed
v) Theme for widgets
vi) Define API layer -> follow QT/GTK/MAC/Android port for defining one.
vii) Porting JSCore by defining classes PageAllocation/Reservation
viii) Some other classes/functions are needed like random number function, date etc;
ix) I am keeping it very brief but you need a way to take care of plugins
-) Plugin Creation
-) Plugin Drawing Surface
x) Networking component like curl,soup
xi) Need to port the WebCoreSupport classes again follow GTK/QT port for ease
xii) Image decoders
After checking if you have got everything { only v) is not mandatory ix) is not mandatory if you do not want plugins}
Now after getting the first step right second thing to do is getting your build set up:
Start with javascriptcore, you need to build the source and generate derivedsources and see if you can get it built right. To do this you have to port some functions as I mentioned earlier.
To test if you got the build right you can run the javscriptcore tests.
Once this is done you can replicate the same for Webcore, you need to create the stub files/functions for port. Follow one port like GTK/QT for this like create files in WebCore/platform/xyz folder;
Once this is ready, you need to get this port back into open source as later sync up with the open source is necessity. Follow http://trac.webkit.org/wiki/SuccessfulPortHowTo for creating DRT, automation tests which is needed for getting code back into trunk.