[webkit-dev] Build File Maintenance (was Re: Please welcome GYP to the our dysfunctional build family)
dglazkov at chromium.org
Fri Jul 10 11:20:09 PDT 2009
On Fri, Jul 10, 2009 at 11:06 AM, David Kilzer<ddkilzer at webkit.org> wrote:
>> So, does anyone think this would be a bad idea, or have any
>> alternate suggestions on how to improve things?
> What about adding support for waf to gyp?
+1. I think GYP took the right step back from project files to a
meta-format from which you could generate project files, and we have a
pretty good record at Chromium to show that this was a good idea.
>> The only format I'm not sure if we could automate > reliably would be the XCode format (at least, on non-Mac
>> machines), because IIUC we'd need some sort of parser for it,
>> but Apple is the only port maintaining those directly IIUC,
>> as now Chromium will be using GYP to update their XCode
> If you hand-edit Xcode project files enough times you start to understand them, but you also may go insane in the process. I don't know that you have to write a full parser for it, but there is some non-trivial, minimal structure you have to understand to update the file properly.
GYP generates very nice XCode projects -- they are always properly
sorted, logically structured, and clean.
>> So even if we couldn't solve the XCode issue, that
>> would drop it to updating two locations tops.
> I count 6 build systems in use currently (SCons support was added and removed within the last year):
> - Apple's Xcode
> - Apple's vcproj (also used by at least one other Windows port)
> - wx Bakefile (which will be replaced by waf soon)
> - Qt Qmake
> - GTK GNUMakefile
> - Google's gyp (added recently)
> Are any of the other ports going to switch to generating their build files using gyp?
While I have no cycles to do it, I certainly hope that somebody would
try. Switching to GYP for our port was an incredible experience. No
more vcproj-muddling, needing to have a Mac to edit XCode files, and
trying to understand how various build systems work. This approach
also encourages you to unify the thinking about targets/actions/rules,
and GYP has already solved this problem for pretty much all known
I highly encourage you guys to check out Chromium and see it in
action. The generation occurs silently at each update (which is
something that could be hooked in to update-webkit script), it's
accurate, and very seamless.
More information about the webkit-dev