Serenity Operating System
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 194 lines 9.8 kB view raw
1function (generate_css_implementation) 2 set(LIBWEB_INPUT_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}") 3 invoke_generator( 4 "Enums.cpp" 5 Lagom::GenerateCSSEnums 6 "${LIBWEB_INPUT_FOLDER}/CSS/Enums.json" 7 "CSS/Enums.h" 8 "CSS/Enums.cpp" 9 arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Enums.json" 10 ) 11 12 invoke_generator( 13 "MediaFeatureID.cpp" 14 Lagom::GenerateCSSMediaFeatureID 15 "${LIBWEB_INPUT_FOLDER}/CSS/MediaFeatures.json" 16 "CSS/MediaFeatureID.h" 17 "CSS/MediaFeatureID.cpp" 18 arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/MediaFeatures.json" 19 ) 20 21 invoke_generator( 22 "PropertyID.cpp" 23 Lagom::GenerateCSSPropertyID 24 "${LIBWEB_INPUT_FOLDER}/CSS/Properties.json" 25 "CSS/PropertyID.h" 26 "CSS/PropertyID.cpp" 27 arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Properties.json" 28 ) 29 30 invoke_generator( 31 "TransformFunctions.cpp" 32 Lagom::GenerateCSSTransformFunctions 33 "${LIBWEB_INPUT_FOLDER}/CSS/TransformFunctions.json" 34 "CSS/TransformFunctions.h" 35 "CSS/TransformFunctions.cpp" 36 arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/TransformFunctions.json" 37 ) 38 39 invoke_generator( 40 "ValueID.cpp" 41 Lagom::GenerateCSSValueID 42 "${LIBWEB_INPUT_FOLDER}/CSS/Identifiers.json" 43 "CSS/ValueID.h" 44 "CSS/ValueID.cpp" 45 arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Identifiers.json" 46 ) 47 48 add_custom_command( 49 OUTPUT CSS/DefaultStyleSheetSource.cpp 50 COMMAND "${CMAKE_COMMAND}" -E make_directory CSS 51 COMMAND "${LIBWEB_INPUT_FOLDER}/Scripts/GenerateStyleSheetSource.sh" default_stylesheet_source "${LIBWEB_INPUT_FOLDER}/CSS/Default.css" > CSS/DefaultStyleSheetSource.cpp.tmp 52 COMMAND "${CMAKE_COMMAND}" -E copy_if_different CSS/DefaultStyleSheetSource.cpp.tmp CSS/DefaultStyleSheetSource.cpp 53 COMMAND "${CMAKE_COMMAND}" -E remove CSS/DefaultStyleSheetSource.cpp.tmp 54 VERBATIM 55 DEPENDS "${LIBWEB_INPUT_FOLDER}/Scripts/GenerateStyleSheetSource.sh" 56 MAIN_DEPENDENCY "${LIBWEB_INPUT_FOLDER}/CSS/Default.css" 57 ) 58 add_custom_target(generate_DefaultStyleSheetSource.cpp DEPENDS CSS/DefaultStyleSheetSource.cpp) 59 add_dependencies(all_generated generate_DefaultStyleSheetSource.cpp) 60 61 add_custom_command( 62 OUTPUT CSS/QuirksModeStyleSheetSource.cpp 63 COMMAND "${CMAKE_COMMAND}" -E make_directory CSS 64 COMMAND "${LIBWEB_INPUT_FOLDER}/Scripts/GenerateStyleSheetSource.sh" quirks_mode_stylesheet_source "${LIBWEB_INPUT_FOLDER}/CSS/QuirksMode.css" > CSS/QuirksModeStyleSheetSource.cpp.tmp 65 COMMAND "${CMAKE_COMMAND}" -E copy_if_different CSS/QuirksModeStyleSheetSource.cpp.tmp CSS/QuirksModeStyleSheetSource.cpp 66 COMMAND "${CMAKE_COMMAND}" -E remove CSS/QuirksModeStyleSheetSource.cpp.tmp 67 VERBATIM 68 DEPENDS "${LIBWEB_INPUT_FOLDER}/Scripts/GenerateStyleSheetSource.sh" 69 MAIN_DEPENDENCY "${LIBWEB_INPUT_FOLDER}/CSS/Default.css" 70 ) 71 add_custom_target(generate_QuirksModeStyleSheetSource.cpp DEPENDS CSS/QuirksModeStyleSheetSource.cpp) 72 add_dependencies(all_generated generate_QuirksModeStyleSheetSource.cpp) 73 74endfunction() 75 76function (generate_js_bindings target) 77 set(LIBWEB_INPUT_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}") 78 function(libweb_js_bindings class) 79 cmake_parse_arguments(PARSE_ARGV 1 LIBWEB_BINDINGS "ITERABLE;GLOBAL" "" "") 80 get_filename_component(basename "${class}" NAME) 81 set(BINDINGS_SOURCES 82 "Bindings/${basename}Constructor.h" 83 "Bindings/${basename}Constructor.cpp" 84 "Bindings/${basename}Prototype.h" 85 "Bindings/${basename}Prototype.cpp" 86 ) 87 set(BINDINGS_TYPES 88 constructor-header 89 constructor-implementation 90 prototype-header 91 prototype-implementation 92 ) 93 94 # FIXME: Instead of requiring a manual declaration of iterable bindings, we should ask BindingsGenerator if it's iterable 95 if(LIBWEB_BINDINGS_ITERABLE) 96 list(APPEND BINDINGS_SOURCES 97 "Bindings/${basename}IteratorPrototype.h" 98 "Bindings/${basename}IteratorPrototype.cpp" 99 ) 100 list(APPEND BINDINGS_TYPES 101 iterator-prototype-header 102 iterator-prototype-implementation 103 ) 104 endif() 105 106 # FIXME: Instead of requiring a manual declaration of global object bindings, we should ask BindingsGenerator if it's global 107 if(LIBWEB_BINDINGS_GLOBAL) 108 list(APPEND BINDINGS_SOURCES 109 "Bindings/${basename}GlobalMixin.h" 110 "Bindings/${basename}GlobalMixin.cpp" 111 ) 112 list(APPEND BINDINGS_TYPES 113 global-mixin-header 114 global-mixin-implementation 115 ) 116 endif() 117 118 target_sources(${target} PRIVATE ${BINDINGS_SOURCES}) 119 # FIXME: cmake_minimum_required(3.17) for ZIP_LISTS 120 list(LENGTH BINDINGS_SOURCES num_bindings) 121 math(EXPR bindings_end "${num_bindings} - 1") 122 foreach(iter RANGE "${bindings_end}") 123 list(GET BINDINGS_SOURCES ${iter} bindings_src) 124 list(GET BINDINGS_TYPES ${iter} bindings_type) 125 get_property(include_paths DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) 126 list(TRANSFORM include_paths PREPEND -i) 127 128 # Ninja expects the target name in depfiles to be relative to CMAKE_BINARY_DIR, but ${bindings_src} is 129 # relative to CMAKE_CURRENT_BINARY_DIR. CMake >= 3.20 can do the rewriting transparently (CMP0116). 130 if(CMAKE_GENERATOR MATCHES "^Ninja" AND NOT POLICY CMP0116) 131 # FIXME: Drop this branch for cmake_minimum_required(3.20) 132 get_filename_component(full_path ${bindings_src} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}) 133 file(RELATIVE_PATH depfile_target ${CMAKE_BINARY_DIR} ${full_path}) 134 else() 135 set(depfile_target ${bindings_src}) 136 endif() 137 138 add_custom_command( 139 OUTPUT "${bindings_src}" 140 COMMAND "$<TARGET_FILE:Lagom::BindingsGenerator>" "--${bindings_type}" -o "${bindings_src}.tmp" --depfile "${bindings_src}.d" 141 --depfile-target "${depfile_target}" ${include_paths} "${LIBWEB_INPUT_FOLDER}/${class}.idl" "${LIBWEB_INPUT_FOLDER}" 142 COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${bindings_src}.tmp" "${bindings_src}" 143 COMMAND "${CMAKE_COMMAND}" -E remove "${bindings_src}.tmp" 144 VERBATIM 145 DEPENDS Lagom::BindingsGenerator 146 MAIN_DEPENDENCY ${class}.idl 147 DEPFILE ${CMAKE_CURRENT_BINARY_DIR}/${bindings_src}.d 148 ) 149 endforeach() 150 151 foreach(generated_file IN LISTS BINDINGS_SOURCES) 152 get_filename_component(generated_name ${generated_file} NAME) 153 add_custom_target(generate_${generated_name} DEPENDS ${generated_file}) 154 add_dependencies(all_generated generate_${generated_name}) 155 add_dependencies(${target} generate_${generated_name}) 156 endforeach() 157 158 list(APPEND LIBWEB_ALL_IDL_FILES "${LIBWEB_INPUT_FOLDER}/${class}.idl") 159 set(LIBWEB_ALL_IDL_FILES ${LIBWEB_ALL_IDL_FILES} PARENT_SCOPE) 160 endfunction() 161 162 function(generate_exposed_interface_files) 163 set(exposed_interface_sources 164 Forward.h IntrinsicDefinitions.cpp 165 DedicatedWorkerExposedInterfaces.cpp DedicatedWorkerExposedInterfaces.h 166 SharedWorkerExposedInterfaces.cpp SharedWorkerExposedInterfaces.h 167 WindowExposedInterfaces.cpp WindowExposedInterfaces.h) 168 list(TRANSFORM exposed_interface_sources PREPEND "Bindings/") 169 add_custom_command( 170 OUTPUT ${exposed_interface_sources} 171 COMMAND "${CMAKE_COMMAND}" -E make_directory "tmp" 172 COMMAND $<TARGET_FILE:Lagom::GenerateWindowOrWorkerInterfaces> -o "${CMAKE_CURRENT_BINARY_DIR}/tmp" -b "${LIBWEB_INPUT_FOLDER}" ${LIBWEB_ALL_IDL_FILES} 173 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/Forward.h "Bindings/Forward.h" 174 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/IntrinsicDefinitions.cpp "Bindings/IntrinsicDefinitions.cpp" 175 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/DedicatedWorkerExposedInterfaces.h "Bindings/DedicatedWorkerExposedInterfaces.h" 176 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/DedicatedWorkerExposedInterfaces.cpp "Bindings/DedicatedWorkerExposedInterfaces.cpp" 177 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/SharedWorkerExposedInterfaces.h "Bindings/SharedWorkerExposedInterfaces.h" 178 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/SharedWorkerExposedInterfaces.cpp "Bindings/SharedWorkerExposedInterfaces.cpp" 179 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/WindowExposedInterfaces.h "Bindings/WindowExposedInterfaces.h" 180 COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/WindowExposedInterfaces.cpp "Bindings/WindowExposedInterfaces.cpp" 181 COMMAND "${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/tmp" 182 VERBATIM 183 DEPENDS Lagom::GenerateWindowOrWorkerInterfaces ${LIBWEB_ALL_IDL_FILES} 184 ) 185 target_sources(${target} PRIVATE ${exposed_interface_sources}) 186 add_custom_target(generate_exposed_interfaces DEPENDS ${exposed_interface_sources}) 187 add_dependencies(all_generated generate_exposed_interfaces) 188 add_dependencies(${target} generate_exposed_interfaces) 189 endfunction() 190 191 include("idl_files.cmake") 192 generate_exposed_interface_files() 193 194endfunction()