[webkit-dev] [webkit meeting notes] build systems

Nikolas Zimmermann zimmermann at physik.rwth-aachen.de
Fri Apr 16 22:42:09 PDT 2010


Am 16.04.2010 um 18:14 schrieb Kevin Ollivier:

> Hi Nikolas,
>
> On Apr 16, 2010, at 8:09 AM, Nikolas Zimmermann wrote:
>
>>
>> Am 16.04.2010 um 16:44 schrieb Adam Treat:
>>
>>> I am very skeptical that it is feasible to write a gyp generator  
>>> that would
>>> output QMake files.  There is a log of magic in those QMake  
>>> files.  My sense is
>>> that it would not be trivial by any means.
>>>
>>> Plus, I don't like the idea of a meta-meta generators.  Seems way  
>>> to mickey-
>>> mouse to me.
>>
>> Agreed to a certain degree. Using gyp/whatever to generate qmake  
>> files, to generate Makefile/Xcode files etc seems akward to me as  
>> well.
>>
>> What we really need to resolve is adding/removing files from  
>> compilation, that's the most common
>> task that has to be done in 5+ build systems at the moment. So I  
>> have a new proposal:
>>
>> 1) Maintain a list of headers/source files to be compiled for ALL  
>> platforms (ie. dom/Node.cpp, etc..)
>>
>> 2) Keep all existing Makefile.am, WebCore.pro etc files as  
>> "templates", ie. WebCore.pro.template, with a special
>>   variable somewhere marking the $$HEADER_LIST$$ and the $ 
>> $SOURCE_LIST$$
>>
>> 3) Use a script that generates individual build files (eg.  
>> WebCore.pro) from WebCore.pro.template, it only
>>   needs to insert the file list with the correct syntax in the  
>> correct places
>>
>> 4) Keep all platform specific files to be compiled in the  
>> individual build system files (eg. WebCore.pro.template)
>>
>> I think we'll never find a consensus on a single build system,  
>> there are too many different needs. I only care
>> about the most repetitive work in order to keep the build system  
>> up2date: adding/removing cross-platform files.
>>
>> Of course this is some kind of meta-meta build system, but we could  
>> also agree to move the "template" files in a WebCore/build-templates
>> folder and run a "update-project-files" script after adding/remove  
>> files, that generates the build files, like WebCore.pro and commit  
>> them.
>> This way only the person who added/removed a file from build would  
>> need to run that script, instead of every one, this would effectively
>> hide the "meta-meta" build system.
>>
>> If we find an acceptable solution for just adding/removing cross- 
>> platform buildable files that it would already make me happy :-)
>
> Correct me if I'm wrong, but I thought it would actually be possible  
> to have the values for HEADER_LIST and SOURCE_LIST set in a separate  
> file, and that Qt and GTK build systems could then just include that  
> file. This way we could avoid using templates and such. Just add the  
> included file to the tree (e.g. WebCore/sources.inc) and have the Qt  
> and GTK projects include WebCore/sources.inc and reference those  
> variables. As I mentioned earlier, I actually coded up something  
> using this approach a long time ago back when wx was still using  
> Bakefile, but I guess it never caught the attention of projects like  
> Qt as I never got any feedback on it. (Or maybe the idea was just so  
> obviously flawed somehow. :) Here's the script:
>
> http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/update-sources-list.py
>
> It would probably not take long at all to have getWebCoreFilesDict  
> pull from a gyp project, XCode project, or whatever we wanted to use  
> as the master file list that should be updated.
>

Hi Kevin,

I think that solution could work, though when reading through the  
other mails, especially Maciejs mail regarding the generated-source  
files, this solution probably is just too simple.
I also take back my proposal, I didn't have certain things in mind  
when writing it, especially not the generated sources..

We do need something more sophisticated.

Have a nice day,
Niko



More information about the webkit-dev mailing list