Bug 75345 - Enable the [Supplemental] IDL on CMake
Summary: Enable the [Supplemental] IDL on CMake
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit EFL (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Kentaro Hara
URL:
Keywords:
Depends on:
Blocks: 72138
  Show dependency treegraph
 
Reported: 2011-12-29 05:08 PST by Kentaro Hara
Modified: 2013-12-12 01:07 PST (History)
13 users (show)

See Also:


Attachments
WIP patch to see if build passes (5.86 KB, patch)
2011-12-30 00:36 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
WIP patch to see if build passes (5.86 KB, patch)
2011-12-30 01:05 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
WIP patch to see if build passes (5.87 KB, patch)
2011-12-30 05:25 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
WIP patch to see if build passes (5.86 KB, patch)
2011-12-30 05:44 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
WIP patch to see if build passes (6.02 KB, patch)
2011-12-30 06:12 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
patch for review (8.79 KB, patch)
2011-12-30 06:56 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
Patch (8.76 KB, patch)
2011-12-30 07:27 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
Patch (8.47 KB, patch)
2011-12-30 08:01 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
Patch (8.11 KB, patch)
2011-12-30 08:10 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
patch for commit (8.12 KB, patch)
2011-12-30 15:45 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff
patch for commit (8.12 KB, patch)
2011-12-30 15:46 PST, Kentaro Hara
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Kentaro Hara 2011-12-29 05:08:39 PST
We have enabled the [Supplemental] IDL on Chromium, AppleWebKit, GTK and Qt, and are planning to enable it on all build systems (Meta bug 72138). In this bug, we enable it on Efl.
Comment 1 Kentaro Hara 2011-12-30 00:36:04 PST
Created attachment 120784 [details]
WIP patch to see if build passes
Comment 2 Gyuyoung Kim 2011-12-30 00:47:34 PST
Comment on attachment 120784 [details]
WIP patch to see if build passes

Attachment 120784 [details] did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11058120
Comment 3 Kentaro Hara 2011-12-30 01:05:19 PST
Created attachment 120785 [details]
WIP patch to see if build passes
Comment 4 Gyuyoung Kim 2011-12-30 01:18:03 PST
Comment on attachment 120785 [details]
WIP patch to see if build passes

Attachment 120785 [details] did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10899111
Comment 5 Kentaro Hara 2011-12-30 05:25:40 PST
Created attachment 120793 [details]
WIP patch to see if build passes
Comment 6 Gyuyoung Kim 2011-12-30 05:37:04 PST
Comment on attachment 120793 [details]
WIP patch to see if build passes

Attachment 120793 [details] did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10899167
Comment 7 Kentaro Hara 2011-12-30 05:44:35 PST
Created attachment 120794 [details]
WIP patch to see if build passes
Comment 8 Gyuyoung Kim 2011-12-30 05:54:37 PST
Comment on attachment 120794 [details]
WIP patch to see if build passes

Attachment 120794 [details] did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11056155
Comment 9 Kentaro Hara 2011-12-30 06:12:29 PST
Created attachment 120796 [details]
WIP patch to see if build passes
Comment 10 Raphael Kubo da Costa (:rakuco) 2011-12-30 06:39:12 PST
CC'ing dbates and paroga, as this is common infrastructure used by all ports which use CMake.
Comment 11 Patrick R. Gansterer 2011-12-30 06:46:38 PST
Comment on attachment 120796 [details]
WIP patch to see if build passes

View in context: https://bugs.webkit.org/attachment.cgi?id=120796&action=review

> Source/WebCore/UseJSC.cmake:276
> +    COMMAND echo ${IDL_FILES_LIST} | tr " " \\n > ${IDL_FILES_TMP}
> +    COMMAND cat ${IDL_FILES_TMP}

the commands won't work on windows platform (e.g. ther is no cat)
Maybe this can be written with the CMake FILE() and STRING() commands
or better: add the required functionality into the perl scripts
Comment 12 Kentaro Hara 2011-12-30 06:50:35 PST
Comment on attachment 120796 [details]
WIP patch to see if build passes

View in context: https://bugs.webkit.org/attachment.cgi?id=120796&action=review

>> Source/WebCore/UseJSC.cmake:276
>> +    COMMAND cat ${IDL_FILES_TMP}
> 
> the commands won't work on windows platform (e.g. ther is no cat)
> Maybe this can be written with the CMake FILE() and STRING() commands
> or better: add the required functionality into the perl scripts

Actually, this cat is just for debugging. I'll remove it in the following patch. Thanks!
Comment 13 Kentaro Hara 2011-12-30 06:56:36 PST
Created attachment 120798 [details]
patch for review
Comment 14 Patrick R. Gansterer 2011-12-30 06:58:13 PST
Comment on attachment 120798 [details]
patch for review

View in context: https://bugs.webkit.org/attachment.cgi?id=120798&action=review

> Source/WebCore/ChangeLog:3
> +        Enable the [Supplemental] IDL on Efl

maybe you can change the efl to CMake?

> Source/WebCore/UseJSC.cmake:275
> +    COMMAND echo ${IDL_FILES_LIST} | tr " " \\n > ${IDL_FILES_TMP}

same problem for echo and tr, they don't exist on windows :-/

> Source/WebCore/UseV8.cmake:263
> +    COMMAND echo ${IDL_FILES_LIST} | tr " " \\n > ${IDL_FILES_TMP}

here too
Comment 15 Kentaro Hara 2011-12-30 07:05:48 PST
(In reply to comment #14)
> (From update of attachment 120798 [details])

Thanks, Patrick!

> > Source/WebCore/UseJSC.cmake:275
> > +    COMMAND echo ${IDL_FILES_LIST} | tr " " \\n > ${IDL_FILES_TMP}
> 
> same problem for echo and tr, they don't exist on windows :-/
> 
> > Source/WebCore/UseV8.cmake:263
> > +    COMMAND echo ${IDL_FILES_LIST} | tr " " \\n > ${IDL_FILES_TMP}
> 
> here too

OK, I'll fix it in the next patch.

By the way, maybe should we need to make a change on PlatformBlackBerry.cmake at the same time? In other words, if we make a change on CMakefile.list, the change will affect UseJSC.cmake, UseV8.cmake and PlatformBlackBerry.cmake, right?

But I'm not sure how I can confirm that my change on PlatformBlackBerry.cmake would be correct or not (since I do not have a BlackBerry build environment around me)...
Comment 16 Kentaro Hara 2011-12-30 07:27:10 PST
Created attachment 120800 [details]
Patch
Comment 17 Patrick R. Gansterer 2011-12-30 07:36:33 PST
Comment on attachment 120800 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=120800&action=review

> Source/WebCore/UseJSC.cmake:270
> +FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})

does not seem like a problem, but only FYI: This way IDL_FILES_TMP will be written at _every_ CMake run, so nothing should depend on it to avoid unnecessary rebuilds.

> Source/WebCore/UseJSC.cmake:275
> +    MAIN_DEPENDENCY ${SCRIPTS_RESOLVE_SUPPLEMENTAL} ${WebCore_IDL_FILES}
> +    DEPENDS ${WEBCORE_DIR}/bindings/scripts/resolve-supplemental.pl ${SCRIPTS_RESOLVE_SUPPLEMENTAL} ${WebCore_IDL_FILES}

sorry, missed in the last patch:
MAIN_DEPENDENCY should contain only _ONE_ file. The "main dependency" will be used in IDE to provide a nicer interface. You can then right click on a IDL file and generate the corresponding h and cpp files.
The MAIN_DEPENDENCY should be used only once in the project.
All additional dependencies should be added to DEPENDS. The MAIN_DEPENDENCY does not need to be added to DEPENDS.

> Source/WebCore/UseJSC.cmake:283
> +        MAIN_DEPENDENCY ${_file} ${SUPPLEMENTAL_DEPENDENCY_FILE}

too

> Source/WebCore/UseV8.cmake:263
> +    MAIN_DEPENDENCY ${SCRIPTS_RESOLVE_SUPPLEMENTAL} ${WebCore_IDL_FILES}
> +    DEPENDS ${WEBCORE_DIR}/bindings/scripts/resolve-supplemental.pl ${SCRIPTS_RESOLVE_SUPPLEMENTAL} ${WebCore_IDL_FILES}

too

> Source/WebCore/UseV8.cmake:271
> +        MAIN_DEPENDENCY ${_file} ${SUPPLEMENTAL_DEPENDENCY_FILE}

too
Comment 18 Kentaro Hara 2011-12-30 07:48:35 PST
(In reply to comment #15)
> (In reply to comment #14)
> > (From update of attachment 120798 [details] [details])
> 
> By the way, maybe should we need to make a change on PlatformBlackBerry.cmake at the same time? In other words, if we make a change on CMakefile.list, the change will affect UseJSC.cmake, UseV8.cmake and PlatformBlackBerry.cmake, right?

Correction: The change on CMakeLists.txt in this patch does not affect the current behavior of PlatformBlackBerry.cmake. Although we need to make a change to PlatformBlackBerry.cmake in the near future but do not have to do it in this patch.
Comment 19 Kentaro Hara 2011-12-30 07:56:33 PST
(In reply to comment #17)
> (From update of attachment 120800 [details])
> > Source/WebCore/UseJSC.cmake:270
> > +FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})
> 
> does not seem like a problem, but only FYI: This way IDL_FILES_TMP will be written at _every_ CMake run, so nothing should depend on it to avoid unnecessary rebuilds.

Yeah... To make it better, is there any way to write "FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})" inside ADD_CUSTOM_COMMAND(...), like this?

ADD_CUSTOM_COMMAND(
    OUTPUT ${IDL_FILES_TMP}
    COMMAND FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})   # Syntax Error!
)

ADD_CUSTOM_COMMAND(
    OUTPUT ${SUPPLEMENTAL_DEPENDENCY_FILE}
    DEPENDS ${IDL_FILES_TMP}
    COMMAND perl resolve-supplemental.pl ...
)
Comment 20 Kentaro Hara 2011-12-30 08:01:17 PST
Created attachment 120801 [details]
Patch
Comment 21 Patrick R. Gansterer 2011-12-30 08:03:18 PST
(In reply to comment #19)
> (In reply to comment #17)
> > (From update of attachment 120800 [details] [details])
> > > Source/WebCore/UseJSC.cmake:270
> > > +FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})
> > 
> > does not seem like a problem, but only FYI: This way IDL_FILES_TMP will be written at _every_ CMake run, so nothing should depend on it to avoid unnecessary rebuilds.
> 
> Yeah... To make it better, is there any way to write "FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})" inside ADD_CUSTOM_COMMAND(...), like this?
> 
> ADD_CUSTOM_COMMAND(
>     OUTPUT ${IDL_FILES_TMP}
>     COMMAND FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})   # Syntax Error!
> )
> 
> ADD_CUSTOM_COMMAND(
>     OUTPUT ${SUPPLEMENTAL_DEPENDENCY_FILE}
>     DEPENDS ${IDL_FILES_TMP}
>     COMMAND perl resolve-supplemental.pl ...
> )

Not really, you can write a CMake "script", but I don't think that we want this. IMHO it's not bad style to write this file as long as we know about possible problems.
Comment 22 Raphael Kubo da Costa (:rakuco) 2011-12-30 08:08:13 PST
Comment on attachment 120801 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=120801&action=review

> Source/WebCore/UseJSC.cmake:269
> +SET(FIRST_IDL_FILE_FLAG 1)
> +FOREACH (_idl ${WebCore_IDL_FILES})
> +    IF (${FIRST_IDL_FILE_FLAG})
> +        SET(FIRST_IDL_FILE_FLAG 0)
> +        SET(IDL_FILES_LIST "${WEBCORE_DIR}/${_idl}\n")
> +    ELSE ()
> +        SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
> +    ENDIF ()
> +ENDFOREACH ()

Isn't

  FOREACH (_idl ${WebCore_IDL_Files})
    SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
  ENDFOREACH ()

enough?
Comment 23 Kentaro Hara 2011-12-30 08:10:32 PST
Created attachment 120802 [details]
Patch
Comment 24 Kentaro Hara 2011-12-30 08:11:16 PST
(In reply to comment #22)
> (From update of attachment 120801 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=120801&action=review
> 
> > Source/WebCore/UseJSC.cmake:269
> > +SET(FIRST_IDL_FILE_FLAG 1)
> > +FOREACH (_idl ${WebCore_IDL_FILES})
> > +    IF (${FIRST_IDL_FILE_FLAG})
> > +        SET(FIRST_IDL_FILE_FLAG 0)
> > +        SET(IDL_FILES_LIST "${WEBCORE_DIR}/${_idl}\n")
> > +    ELSE ()
> > +        SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
> > +    ENDIF ()
> > +ENDFOREACH ()
> 
> Isn't
> 
>   FOREACH (_idl ${WebCore_IDL_Files})
>     SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
>   ENDFOREACH ()
> 
> enough?

Absolutely. Fixed it.
Comment 25 Raphael Kubo da Costa (:rakuco) 2011-12-30 08:21:44 PST
Informal r+ from the EFL side.
Comment 26 Daniel Bates 2011-12-30 10:38:27 PST
CC'ing Antonio Gomes and Rob Buis so that they can follow this change with respect to PlatformBlackBerry.cmake.
Comment 27 Daniel Bates 2011-12-30 10:39:09 PST
Comment on attachment 120802 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=120802&action=review

This looks good to me.

> Source/WebCore/ChangeLog:35
> +        * UseJSC.cmake: Described the above build.

Nit: This remark doesn't read well (*). I would either remove this remark or revise it. One suggestion is: "Modified to reflect the new build flow as described above."

(*) The remark doesn't read well because the word "describe" neither clarifies whether this patch modifies the file UseJSC.cmake nor what the modification is. (Although the presence of this line in the commit message indicates that either UseJSC.cmake was modified or newly added.) Moreover, the past tense usage of the word "describe" gives the impression that UseJSC.cmake either already implements or has a comment that describes the supplemental build flow ("new build flow"). Together these issues make it difficult to understand this remark.

> Source/WebCore/ChangeLog:36
> +        * UseV8.cmake: Exactly the same change as UseJSC.cmake, except for "JS" or "V8".

Nit: Since the purpose of this remark is to indicate that a similar change to the build flow was made to file UseV8.cmake, I would just write "Ditto."

> Source/WebCore/CMakeLists.txt:373
>      webaudio/DelayNode.idl
> +    webaudio/DOMWindowWebAudio.idl

Nit: These lines should be swapped such that this section of the list of IDL files is in sorted order according to the UNIX sort command.
Comment 28 Kentaro Hara 2011-12-30 15:45:09 PST
Created attachment 120821 [details]
patch for commit
Comment 29 Kentaro Hara 2011-12-30 15:46:23 PST
Created attachment 120822 [details]
patch for commit
Comment 30 Kentaro Hara 2011-12-30 15:48:02 PST
(In reply to comment #27)
> (From update of attachment 120802 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=120802&action=review
> 
> This looks good to me.
> 
> > Source/WebCore/ChangeLog:35
> > +        * UseJSC.cmake: Described the above build.
> 
> Nit: This remark doesn't read well (*). I would either remove this remark or revise it. One suggestion is: "Modified to reflect the new build flow as described above."
> 
> (*) The remark doesn't read well because the word "describe" neither clarifies whether this patch modifies the file UseJSC.cmake nor what the modification is. (Although the presence of this line in the commit message indicates that either UseJSC.cmake was modified or newly added.) Moreover, the past tense usage of the word "describe" gives the impression that UseJSC.cmake either already implements or has a comment that describes the supplemental build flow ("new build flow"). Together these issues make it difficult to understand this remark.
> 
> > Source/WebCore/ChangeLog:36
> > +        * UseV8.cmake: Exactly the same change as UseJSC.cmake, except for "JS" or "V8".
> 
> Nit: Since the purpose of this remark is to indicate that a similar change to the build flow was made to file UseV8.cmake, I would just write "Ditto."
> 
> > Source/WebCore/CMakeLists.txt:373
> >      webaudio/DelayNode.idl
> > +    webaudio/DOMWindowWebAudio.idl
> 
> Nit: These lines should be swapped such that this section of the list of IDL files is in sorted order according to the UNIX sort command.

dbates: Fixed them and committed. Thanks for the review.
Comment 31 WebKit Review Bot 2011-12-30 17:11:04 PST
Comment on attachment 120822 [details]
patch for commit

Clearing flags on attachment: 120822

Committed r103854: <http://trac.webkit.org/changeset/103854>
Comment 32 Ming Xie 2012-01-03 11:24:43 PST
As Antonio suggested, I tried this patch with our BlackBerry port which also uses CMake. Unfortunately, our local repository hasn't synced up with upstream to have all the required IDLs, and our upstream BlackBerry build port is not yet functional. Therefore, we couldn't really try out this patch with our port at this moment, and we will re-try this later.
Comment 33 Adam Barth 2012-01-03 11:54:25 PST
When is later?
Comment 34 Antonio Gomes 2012-01-03 12:04:40 PST
(In reply to comment #33)
> When is later?

We are upstreaming, so lets not get this bug blocked on us.

It was very nice of kentaro to try to build his patch for BlackBerry port. We have a bug for tracking BlackBerry specific bits of his work, so if there is nothing else left here, it is good to go.. :)
Comment 35 Kentaro Hara 2012-01-03 17:00:26 PST
(In reply to comment #34)
> (In reply to comment #33)
> > When is later?
> 
> We are upstreaming, so lets not get this bug blocked on us.
> 
> It was very nice of kentaro to try to build his patch for BlackBerry port. We have a bug for tracking BlackBerry specific bits of his work, so if there is nothing else left here, it is good to go.. :)

ming, tonikitoo: Thank you very much for the quick support. Do you mean that for the time being it is OK to commit the bug 75413 without confirming that the BlackBerry build passes? (The change of the bug 75413 is almost the same as the change that I've done for UseJSC.cmake and UseV8.cmake.)

In fact, the bug 75413 is the last patch for enabling the [Supplemental] IDL on all build systems. In order to use the [Supplemental] IDL in WebKit, we need to enable it on *all* build systems. (If we start to use the [Supplemental] IDL in WebKit without committing the bug 75413, I am afraid that the BlackBerry build will be broken more because it cannot interpret the [Supplemental] IDL.)
Comment 36 Adam Barth 2012-01-03 17:05:17 PST
I think he's saying to go ahead and use [Supplemental] without committing bug 75413.  They're in the process of bringing up their port.  When they're ready, they'll take a look at bug 75413 and provide feedback / tweak it as necessary.
Comment 37 Kentaro Hara 2012-01-03 17:06:42 PST
(In reply to comment #36)
> I think he's saying to go ahead and use [Supplemental] without committing bug 75413.  They're in the process of bringing up their port.  When they're ready, they'll take a look at bug 75413 and provide feedback / tweak it as necessary.

Ah, I got it. Thanks.
Comment 38 Martin Robinson 2013-12-12 01:07:19 PST
I believe that cmake has had support for the supplemental IDL for a while now.