Enable the [Supplemental] IDL on CMake
https://bugs.webkit.org/show_bug.cgi?id=75345

Reviewed by Daniel Bates.

This patch enables the [Supplemental] IDL on CMake by changing the build
flow of CMake as follows.

- Previous build flow:
    foreach $idl (all IDL files) {
        generate-bindings.pl depends on $idl;
        generate-bindings.pl reads $idl;
        generate-bindings.pl generates .h and .cpp files for $idl;
    }

- New build flow (See the discussions in bug 72138 for more details):
    resolve-supplemental.pl depends on all IDL files;
    resolve-supplemental.pl reads all IDL files;
    resolve-supplemental.pl resolves the dependency of [Supplemental=XXXX];
    resolve-supplemental.pl outputs supplemental_dependency.tmp;
    foreach $idl (all IDL files) {
        generate-bindings.pl depends on $idl and supplemental_dependency.tmp;
        generate-bindings.pl reads $idl;
        generate-bindings.pl reads supplemental_dependency.tmp;
        generate-bindings.pl generates .h and .cpp files for $idl,
            including all attributes in the IDL files that are implementing $idl;
    }

Tests: Confirm that build succeeds.
       http/tests/websocket/tests/*

* CMakeLists.txt:
* UseJSC.cmake: Modified to reflect the new build flow as described above.
* UseV8.cmake: Ditto.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@103854 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/UseV8.cmake b/Source/WebCore/UseV8.cmake
index d80f63f..3d2f44d 100755
--- a/Source/WebCore/UseV8.cmake
+++ b/Source/WebCore/UseV8.cmake
@@ -246,13 +246,24 @@
 LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/V8ArrayBufferViewCustomScript.h)
 
 # Create JavaScript C++ code given an IDL input
+FOREACH (_idl ${WebCore_IDL_FILES})
+    SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
+ENDFOREACH ()
+FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})
+
+ADD_CUSTOM_COMMAND(
+    OUTPUT ${SUPPLEMENTAL_DEPENDENCY_FILE}
+    DEPENDS ${WEBCORE_DIR}/bindings/scripts/resolve-supplemental.pl ${SCRIPTS_RESOLVE_SUPPLEMENTAL} ${WebCore_IDL_FILES}
+    COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/resolve-supplemental.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --idlFilesList ${IDL_FILES_TMP} --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --supplementalDependencyFile ${SUPPLEMENTAL_DEPENDENCY_FILE}
+    VERBATIM)
+
 FOREACH (_file ${WebCore_IDL_FILES})
     GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
     ADD_CUSTOM_COMMAND(
         OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.h
         MAIN_DEPENDENCY ${_file}
-        DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS} ${WEBCORE_DIR}/bindings/scripts/CodeGeneratorV8.pm ${_file}
-        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --generator V8 ${IDL_INCLUDES} --outputDir "${DERIVED_SOURCES_WEBCORE_DIR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" ${WEBCORE_DIR}/${_file}
+        DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS} ${WEBCORE_DIR}/bindings/scripts/CodeGeneratorV8.pm ${SUPPLEMENTAL_DEPENDENCY_FILE}
+        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --generator V8 ${IDL_INCLUDES} --outputDir "${DERIVED_SOURCES_WEBCORE_DIR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --supplementalDependencyFile ${SUPPLEMENTAL_DEPENDENCY_FILE} ${WEBCORE_DIR}/${_file}
         VERBATIM)
     LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp)
 ENDFOREACH ()