As I write this blog the WebKit is ported to at least 8 platforms like
GTK, QT, Mac, Symbian, haiku, WinCE, Android, EFL and have 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 wowould have this so it shoshould be fineiii) drawing surface/graphics libraryiv)
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 followedv) Theme for widgetsvi) define API layer-> follow QT/GTK/MAC/Android port for defining one. vii) porting jscore by defining classes pageallocation/reservationviii) 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 surfacex) networking component like curl, soupxi) need to port the webcoresupport classes again follow GTK/Qt port for easexii) image decodersafter 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.