[webkit-dev] Build system for ports

Kevin Ollivier kevino at theolliviers.com
Sun Apr 16 11:09:38 PDT 2006

Hi Eric,

On Apr 15, 2006, at 3:24 PM, Eric Seidel wrote:

> On Apr 15, 2006, at 3:08 PM, Kevin Ollivier wrote:
>> As Mike Emmel and I have both decided to use Bakefile for our  
>> ports, we decided to work together and create a build system that  
>> works for both our ports. As a start, my focus has been on taking  
>> Mike's project files and creating a basic project that builds the  
>> cross-platform WebCore sources on Win, Mac and Linux that any port  
>> would need. This way any new ports that are created can actually  
>> just "derive" from the webcore_base project and only have to add  
>> includes/sources/etc. specific to their platform or port.
> Glad to hear your porting efforts are moving along smoothly!
> First of all, I think the best way to get any of this moving from  
> our side, is to start submitting patches.  We have instructions on  
> our website as to how to do just that:
> http://webkit.opendarwin.org/coding/contributing.html
> This patches can (and should) include your bakefile build system  
> files.

Okay, thanks a lot for your help!

> Once your bakefile system has made it through the review process  
> and been landed in our tree, one of the next goals should be to set  
> up a build-slave for your port.  That way we can know when we break  
> you by checking http://build.webkit.org/
> [snip]
>> Here are the changes I needed to make to WebCore for this to work,  
>> and also any unresolved issues on various ports:
>> http://kevino.theolliviers.com/webkit/bakefile-changes.txt
> Many of the issues you mention here:
> http://kevino.theolliviers.com/webkit/bakefile-changes.txt
> have already been resolved, at least for the win32 port.  I checked  
> in some fixes for that port yesterday.

Thanks! I noticed that when a change breaks the Win32 build, it's  
usually updated in about a day. :-) I mainly listed them as a  
reminder to myself, actually, because when the VC project is not in  
sync with TOT I need to manually alter the list of source code files  
that I grabbed from the VC project.

> [snip]
>> But there's still one major question before I can put together a  
>> draft to show people. How exactly should build systems for ports  
>> be incorporated into the webkit tree? For example, when you think  
>> of Win32, wx, etc. there may be multiple MSVS7/8 project files. So  
>> do we create one project file and allow people to select a port  
>> when they build (with an intelligent default, of course) or do we  
>> put project files for ports in separate files/dirs? If the latter  
>> (which I'm personally leaning towards), what should the directory  
>> scheme for ports be?
> [snip]
> Our current system for supporting ports in our directory tree have  
> been to put their necessary files under a /platform/port-name/  
> directory.  I expect that should work for WxWidgets as well.  If it  
> doesn't we can make alternative arrangements.

This is what I am going to do with the wx-specific sources. But, and  
I know this is being a bit picky ;-), I hesitate to put the project  
files there because platform != port in some cases. e.g. since wx is  
cross-platform, it may be able to, or need to, use some sources from  
platform/win, platform/linux, or platform/mac. So I guess I see  
platform as a mixture of "port" specific and "os" specific sources,  
and I think it could get confusing as to where to put (or where to  
find) a port's project files.

Well, in any case, for now I've set things up to put Bakefile- 
generated projects in WebCore/ports/<PORT> directory. (Perhpas  
'projects' would be a better term?) I've also made everything in the  
Bakefiles relative to SRCDIR, too, so that if we move the project  
files into another folder, the only change we need to make to the  
Bakefiles is to make sure that SRCDIR points to the WebCore folder. I  
should be able to create a patch in a day or two, assuming anonsvn  
comes back up. :-) I'm going to give Mike a heads-up first to see if  
what I've done works for him, or if I need to change something first,  
but once that's done I'll submit it to Bugzilla.

BTW, you might want to consider having a separate project file that  
generates the cross-platform webcore sources as a static library  
(say, a "WebCoreBase" project file), and then have the Win32, etc.  
projects statically link in that library and only build the files  
specific to their port/platform (and of course, depend on  
WebCoreBase). Actually, I've pretty much already set up the Bakefile  
projects this way, so that you can see what I mean when I submit the  
patch. :-) This way there wouldn't be any redundancy among projects  
in terms of maintaining the cross-platform sources, and each port  
will only ever have to worry about updating/maintaining its own  
specific files.

Thanks again to everyone for all your help! I've been wanting to make  
progress on this for a long time, and it's good to finally see it  
getting hammered out. :-)


> I hope that helps.
> -eric

More information about the webkit-dev mailing list