[webkit-dev] Build system for ports
kevino at theolliviers.com
Sun Apr 16 11:09:38 PDT 2006
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:
> This patches can (and should) include your bakefile build system
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/
>> Here are the changes I needed to make to WebCore for this to work,
>> and also any unresolved issues on various ports:
> Many of the issues you mention here:
> 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.
>> 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?
> 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
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.
More information about the webkit-dev