1# Copyright (c) 2021-2023 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//foundation/arkui/ace_engine/ace_config.gni") 16import("//foundation/arkui/ace_engine/build/ace_ext.gni") 17import("//foundation/arkui/ace_engine/build/ace_gen_obj.gni") 18 19# declarative frontend source 20template("declarative_frontend") { 21 forward_variables_from(invoker, "*") 22 23 ohos_source_set(target_name) { 24 subsystem_name = ace_engine_subsystem 25 part_name = ace_engine_part 26 defines += invoker.defines 27 configs = [ "$ace_root:ace_config" ] 28 29 if (enable_ng_build) { 30 sources = [ 31 "ng/declarative_frontend_ng.cpp", 32 "ng/frontend_delegate_declarative_ng.cpp", 33 "ng/page_router_manager.cpp", 34 ] 35 } else { 36 sources = [ 37 "declarative_frontend.cpp", 38 "frontend_delegate_declarative.cpp", 39 "ng/page_router_manager.cpp", 40 ] 41 } 42 43 deps = [ "$ace_root/frameworks/core/components/theme:build_theme_code" ] 44 } 45} 46 47foreach(item, ace_platforms) { 48 declarative_frontend("declarative_frontend_" + item.name) { 49 defines = [] 50 config = { 51 } 52 53 if (defined(item.config)) { 54 config = item.config 55 } 56 57 if (defined(config.defines)) { 58 defines = config.defines 59 } 60 } 61} 62 63# js resources objects 64base_output_path = get_label_info(":gen_js_proxyclass", "target_out_dir") 65jsproxyclass_obj_path = base_output_path + "/js_proxy_class.o" 66jsenumstyle_obj_path = base_output_path + "/js_enum_style.o" 67jsmocksystemplugin_obj_path = base_output_path + "/js_mock_system_plugin.o" 68jsuicontext_obj_path = base_output_path + "/jsUIContext.o" 69 70gen_obj("js_proxyclass") { 71 input = "engine/stateMgmt.js" 72 if (use_mac || use_mingw_win || use_linux || target_os == "ios") { 73 jsproxyclass_obj_path = base_output_path + "/js_proxy_class.c" 74 } 75 output = jsproxyclass_obj_path 76 snapshot_dep = [] 77} 78 79gen_obj("js_enum_style") { 80 input = "engine/jsEnumStyle.js" 81 if (use_mac || use_mingw_win || use_linux || target_os == "ios") { 82 jsenumstyle_obj_path = base_output_path + "/js_enum_style.c" 83 } 84 output = jsenumstyle_obj_path 85 snapshot_dep = [] 86} 87 88if (!is_arkui_x) { 89 gen_obj("js_mock_system_plugin") { 90 input = "$root_out_dir/obj/ide/tools/previewer/automock/dist/jsMockSystemPlugin.js" 91 if (use_mac || use_mingw_win || use_linux || target_os == "ios") { 92 jsmocksystemplugin_obj_path = 93 base_output_path + "/js_mock_system_plugin.c" 94 } 95 output = jsmocksystemplugin_obj_path 96 snapshot_dep = [ "//ide/tools/previewer/automock:gen_snapshot_jsmock" ] 97 } 98} 99 100gen_obj("js_uicontext") { 101 input = "engine/jsUIContext.js" 102 if (use_mac || use_mingw_win || use_linux || target_os == "ios") { 103 jsuicontext_obj_path = base_output_path + "/jsUIContext.c" 104 } 105 output = jsuicontext_obj_path 106 snapshot_dep = [] 107} 108 109# build declarative javascript engine source 110template("declarative_js_engine") { 111 forward_variables_from(invoker, "*") 112 113 ohos_source_set(target_name) { 114 subsystem_name = ace_engine_subsystem 115 part_name = ace_engine_part 116 defines += invoker.defines 117 if (target_cpu == "arm64") { 118 if (!is_mingw) { 119 defines += [ "_ARM64_" ] 120 } 121 } 122 if (current_os == "ohos" && current_cpu == "x86_64") { 123 defines += [ "SIMULATOR_64" ] 124 } 125 126 deps = [] 127 configs = [ "$ace_root:ace_config" ] 128 129 if (defined(config.model_component_support) && 130 config.model_component_support) { 131 configs += [ "//foundation/graphic/graphic_3d/3d_widget_adapter:widget_adapter_config" ] 132 } 133 134 sources = [ 135 "engine/bindings_implementation.cpp", 136 "engine/declarative_engine_loader.cpp", 137 "engine/functions/js_animator_function.cpp", 138 "engine/functions/js_click_function.cpp", 139 "engine/functions/js_clipboard_function.cpp", 140 "engine/functions/js_drag_function.cpp", 141 "engine/functions/js_focus_function.cpp", 142 "engine/functions/js_foreach_function.cpp", 143 "engine/functions/js_function.cpp", 144 "engine/functions/js_gesture_function.cpp", 145 "engine/functions/js_hover_function.cpp", 146 "engine/functions/js_key_function.cpp", 147 "engine/functions/js_mouse_function.cpp", 148 "engine/functions/js_on_area_change_function.cpp", 149 "engine/functions/js_page_transition_function.cpp", 150 "engine/functions/js_pan_function.cpp", 151 "engine/functions/js_swiper_function.cpp", 152 "engine/functions/js_touch_function.cpp", 153 "engine/functions/js_webview_function.cpp", 154 "engine/js_types.cpp", 155 "interfaces/profiler/js_profiler.cpp", 156 "jsview/action_sheet/js_action_sheet.cpp", 157 "jsview/dialog/js_alert_dialog.cpp", 158 "jsview/dialog/js_custom_dialog_controller.cpp", 159 "jsview/js_animator.cpp", 160 "jsview/js_badge.cpp", 161 "jsview/js_blank.cpp", 162 "jsview/js_button.cpp", 163 "jsview/js_calendar.cpp", 164 "jsview/js_calendar_controller.cpp", 165 "jsview/js_calendar_picker.cpp", 166 "jsview/js_canvas.cpp", 167 "jsview/js_canvas_gradient.cpp", 168 "jsview/js_canvas_image_data.cpp", 169 "jsview/js_canvas_path.cpp", 170 "jsview/js_canvas_pattern.cpp", 171 "jsview/js_canvas_renderer.cpp", 172 "jsview/js_checkbox.cpp", 173 "jsview/js_checkboxgroup.cpp", 174 "jsview/js_circle.cpp", 175 "jsview/js_clipboard.cpp", 176 "jsview/js_column.cpp", 177 "jsview/js_column_split.cpp", 178 "jsview/js_common_view.cpp", 179 "jsview/js_container_base.cpp", 180 "jsview/js_counter.cpp", 181 "jsview/js_data_panel.cpp", 182 "jsview/js_datepicker.cpp", 183 "jsview/js_divider.cpp", 184 "jsview/js_ellipse.cpp", 185 "jsview/js_environment.cpp", 186 "jsview/js_flex.cpp", 187 "jsview/js_flex_impl.cpp", 188 "jsview/js_foreach.cpp", 189 "jsview/js_form_link.cpp", 190 "jsview/js_gauge.cpp", 191 "jsview/js_gesture.cpp", 192 "jsview/js_grid.cpp", 193 "jsview/js_grid_col.cpp", 194 "jsview/js_grid_container.cpp", 195 "jsview/js_grid_item.cpp", 196 "jsview/js_grid_row.cpp", 197 "jsview/js_hyperlink.cpp", 198 "jsview/js_if_else.cpp", 199 "jsview/js_image.cpp", 200 "jsview/js_image_animator.cpp", 201 "jsview/js_image_span.cpp", 202 "jsview/js_indexer.cpp", 203 "jsview/js_interactable_view.cpp", 204 "jsview/js_lazy_foreach.cpp", 205 "jsview/js_line.cpp", 206 "jsview/js_linear_gradient.cpp", 207 "jsview/js_list.cpp", 208 "jsview/js_list_item.cpp", 209 "jsview/js_list_item_group.cpp", 210 "jsview/js_loading_progress.cpp", 211 "jsview/js_local_storage.cpp", 212 "jsview/js_location_button.cpp", 213 "jsview/js_marquee.cpp", 214 "jsview/js_matrix2d.cpp", 215 "jsview/js_menu.cpp", 216 "jsview/js_menu_item.cpp", 217 "jsview/js_menu_item_group.cpp", 218 "jsview/js_navdestination.cpp", 219 "jsview/js_navigation.cpp", 220 "jsview/js_navigation_stack.cpp", 221 "jsview/js_navigator.cpp", 222 "jsview/js_navrouter.cpp", 223 "jsview/js_offscreen_canvas.cpp", 224 "jsview/js_offscreen_rendering_context.cpp", 225 "jsview/js_page_transition.cpp", 226 "jsview/js_pan_handler.cpp", 227 "jsview/js_particle.cpp", 228 "jsview/js_paste_button.cpp", 229 "jsview/js_path.cpp", 230 "jsview/js_path2d.cpp", 231 "jsview/js_pattern_lock.cpp", 232 "jsview/js_persistent.cpp", 233 "jsview/js_polygon.cpp", 234 "jsview/js_polyline.cpp", 235 "jsview/js_progress.cpp", 236 "jsview/js_qrcode.cpp", 237 "jsview/js_radio.cpp", 238 "jsview/js_rect.cpp", 239 "jsview/js_recycle_view.cpp", 240 "jsview/js_refresh.cpp", 241 "jsview/js_relative_container.cpp", 242 "jsview/js_render_image.cpp", 243 "jsview/js_rendering_context.cpp", 244 "jsview/js_rendering_context_settings.cpp", 245 "jsview/js_richeditor.cpp", 246 "jsview/js_row.cpp", 247 "jsview/js_row_split.cpp", 248 "jsview/js_save_button.cpp", 249 "jsview/js_scope_util.cpp", 250 "jsview/js_scroll.cpp", 251 "jsview/js_scroller.cpp", 252 "jsview/js_search.cpp", 253 "jsview/js_sec_button_base.cpp", 254 "jsview/js_select.cpp", 255 "jsview/js_shape.cpp", 256 "jsview/js_shape_abstract.cpp", 257 "jsview/js_sheet.cpp", 258 "jsview/js_side_bar.cpp", 259 "jsview/js_slider.cpp", 260 "jsview/js_sliding_panel.cpp", 261 "jsview/js_span.cpp", 262 "jsview/js_stack.cpp", 263 "jsview/js_stepper.cpp", 264 "jsview/js_stepper_item.cpp", 265 "jsview/js_swiper.cpp", 266 "jsview/js_tab_content.cpp", 267 "jsview/js_tabs.cpp", 268 "jsview/js_tabs_controller.cpp", 269 "jsview/js_text.cpp", 270 "jsview/js_text_clock.cpp", 271 "jsview/js_textarea.cpp", 272 "jsview/js_textfield.cpp", 273 "jsview/js_textinput.cpp", 274 "jsview/js_textpicker.cpp", 275 "jsview/js_texttimer.cpp", 276 "jsview/js_toggle.cpp", 277 "jsview/js_touch_handler.cpp", 278 "jsview/js_utils.cpp", 279 "jsview/js_view.cpp", 280 "jsview/js_view_abstract.cpp", 281 "jsview/js_view_context.cpp", 282 "jsview/js_view_functions.cpp", 283 "jsview/js_view_measure_layout.cpp", 284 "jsview/js_view_stack_processor.cpp", 285 "jsview/js_water_flow.cpp", 286 "jsview/js_water_flow_item.cpp", 287 "jsview/menu/js_context_menu.cpp", 288 "jsview/scroll_bar/js_scroll_bar.cpp", 289 "sharedata/js_share_data.cpp", 290 "view_stack_processor.cpp", 291 292 # Models implemenations for classic fw 293 "jsview/models/action_sheet_model_impl.cpp", 294 "jsview/models/alert_dialog_model_impl.cpp", 295 "jsview/models/animator_model_impl.cpp", 296 "jsview/models/badge_model_impl.cpp", 297 "jsview/models/blank_model_impl.cpp", 298 "jsview/models/button_model_impl.cpp", 299 "jsview/models/calendar_controller_model_impl.cpp", 300 "jsview/models/calendar_model_impl.cpp", 301 "jsview/models/canvas_model_impl.cpp", 302 "jsview/models/canvas_renderer_model_impl.cpp", 303 "jsview/models/checkbox_model_impl.cpp", 304 "jsview/models/checkboxgroup_model_impl.cpp", 305 "jsview/models/circle_model_impl.cpp", 306 "jsview/models/column_model_impl.cpp", 307 "jsview/models/common_view_model_impl.cpp", 308 "jsview/models/counter_model_impl.cpp", 309 "jsview/models/custom_dialog_controller_model_impl.cpp", 310 "jsview/models/data_panel_model_impl.cpp", 311 "jsview/models/divider_model_impl.cpp", 312 "jsview/models/ellipse_model_impl.cpp", 313 "jsview/models/flex_model_impl.cpp", 314 "jsview/models/for_each_model_impl.cpp", 315 "jsview/models/gauge_model_impl.cpp", 316 "jsview/models/gesture_model_impl.cpp", 317 "jsview/models/grid_col_model_impl.cpp", 318 "jsview/models/grid_container_model_impl.cpp", 319 "jsview/models/grid_item_model_impl.cpp", 320 "jsview/models/grid_model_impl.cpp", 321 "jsview/models/grid_row_model_impl.cpp", 322 "jsview/models/hyperlink_model_impl.cpp", 323 "jsview/models/if_else_model_impl.cpp", 324 "jsview/models/image_animator_model_impl.cpp", 325 "jsview/models/image_model_impl.cpp", 326 "jsview/models/indexer_model_impl.cpp", 327 "jsview/models/lazy_for_each_model_impl.cpp", 328 "jsview/models/line_model_impl.cpp", 329 "jsview/models/linear_split_model_impl.cpp", 330 "jsview/models/list_item_group_model_impl.cpp", 331 "jsview/models/list_item_model_impl.cpp", 332 "jsview/models/list_model_impl.cpp", 333 "jsview/models/loading_progress_model_impl.cpp", 334 "jsview/models/marquee_model_impl.cpp", 335 "jsview/models/menu_item_model_impl.cpp", 336 "jsview/models/menu_model_impl.cpp", 337 "jsview/models/navigation_model_impl.cpp", 338 "jsview/models/navigator_model_impl.cpp", 339 "jsview/models/offscreen_context_model_impl.cpp", 340 "jsview/models/page_transition_model_impl.cpp", 341 "jsview/models/path_model_impl.cpp", 342 "jsview/models/patternlock_model_impl.cpp", 343 "jsview/models/picker_model_impl.cpp", 344 "jsview/models/polygon_model_impl.cpp", 345 "jsview/models/progress_model_impl.cpp", 346 "jsview/models/qrcode_model_impl.cpp", 347 "jsview/models/radio_model_impl.cpp", 348 "jsview/models/rect_model_impl.cpp", 349 "jsview/models/refresh_model_impl.cpp", 350 "jsview/models/rendering_context_model_impl.cpp", 351 "jsview/models/richeditor_model_impl.cpp", 352 "jsview/models/row_model_impl.cpp", 353 "jsview/models/scroll_bar_model_impl.cpp", 354 "jsview/models/scroll_model_impl.cpp", 355 "jsview/models/search_model_impl.cpp", 356 "jsview/models/select_model_impl.cpp", 357 "jsview/models/shape_abstract_model_impl.cpp", 358 "jsview/models/shape_model_impl.cpp", 359 "jsview/models/side_bar_container_model_impl.cpp", 360 "jsview/models/slider_model_impl.cpp", 361 "jsview/models/sliding_panel_model_impl.cpp", 362 "jsview/models/span_model_impl.cpp", 363 "jsview/models/stack_model_impl.cpp", 364 "jsview/models/stepper_item_model_impl.cpp", 365 "jsview/models/stepper_model_impl.cpp", 366 "jsview/models/swiper_model_impl.cpp", 367 "jsview/models/tab_content_model_impl.cpp", 368 "jsview/models/tabs_model_impl.cpp", 369 "jsview/models/text_clock_model_impl.cpp", 370 "jsview/models/text_field_model_impl.cpp", 371 "jsview/models/text_model_impl.cpp", 372 "jsview/models/text_timer_model_impl.cpp", 373 "jsview/models/textpicker_model_impl.cpp", 374 "jsview/models/timepicker_model_impl.cpp", 375 "jsview/models/toggle_model_impl.cpp", 376 "jsview/models/view_abstract_model_impl.cpp", 377 "jsview/models/view_context_model_impl.cpp", 378 "jsview/models/view_full_update_model_impl.cpp", 379 "jsview/models/view_partial_update_model_impl.cpp", 380 "jsview/models/water_flow_item_model_impl.cpp", 381 "jsview/models/water_flow_model_impl.cpp", 382 ] 383 384 if (defined(config.model_component_support) && 385 config.model_component_support) { 386 sources += [ "jsview/models/model_view_impl.cpp" ] 387 } 388 389 external_deps = [] 390 if (defined(config.enable_drag_framework) && config.enable_drag_framework && 391 defined(global_parts_info.distributeddatamgr_udmf)) { 392 external_deps += [ 393 "udmf:udmf_client", 394 "udmf:udmf_data_napi", 395 ] 396 } 397 398 # rich components needed by phone and TV. wearable like watch do not need them 399 if (defined(config.rich_components_support) && 400 config.rich_components_support) { 401 sources += [ 402 "jsview/js_camera.cpp", 403 "jsview/js_piece.cpp", 404 "jsview/js_rating.cpp", 405 "jsview/models/rating_model_impl.cpp", 406 ] 407 if (defined(config.video_components_support) && 408 config.video_components_support) { 409 sources += [ 410 "jsview/js_video.cpp", 411 "jsview/js_video_controller.cpp", 412 "jsview/models/video_model_impl.cpp", 413 ] 414 } 415 if (defined(config.video_support_jsstack) && 416 config.video_support_jsstack) { 417 external_deps += [ "hiview:libxpower_event_js" ] 418 } 419 } 420 421 if (defined(vendor_configs.ace_engine_advanced)) { 422 sources += vendor_configs.ace_engine_advanced_jsview 423 } 424 425 if (defined(config.xcomponent_components_support) && 426 config.xcomponent_components_support) { 427 sources += [ 428 "jsview/js_xcomponent.cpp", 429 "jsview/js_xcomponent_controller.cpp", 430 "jsview/models/xcomponent_model_impl.cpp", 431 ] 432 } 433 434 if (defined(config.enable_ability_component) && 435 config.enable_ability_component) { 436 sources += [ 437 "jsview/js_ability_component.cpp", 438 "jsview/js_ability_component_controller.cpp", 439 "jsview/models/ability_component_model_impl.cpp", 440 ] 441 442 external_deps += [ 443 "input:libmmi-client", 444 "window_manager:scene_session", 445 ] 446 } 447 448 if (defined(config.web_components_support) && 449 config.web_components_support) { 450 if (is_arkui_x) { 451 sources += [ 452 "jsview/js_web.cpp", 453 "jsview/models/web_model_impl.cpp", 454 ] 455 } else { 456 sources += [ 457 "jsview/js_richtext.cpp", 458 "jsview/js_web.cpp", 459 "jsview/js_web_controller.cpp", 460 "jsview/models/richtext_model_impl.cpp", 461 "jsview/models/web_model_impl.cpp", 462 ] 463 } 464 } 465 466 if (defined(config.form_components_support) && 467 config.form_components_support) { 468 sources += [ 469 "jsview/js_form.cpp", 470 "jsview/models/form_model_impl.cpp", 471 ] 472 } 473 474 if (defined(config.remote_window_support) && config.remote_window_support) { 475 sources += [ 476 "jsview/js_remote_window.cpp", 477 "jsview/models/remote_window_model_impl.cpp", 478 ] 479 } 480 481 if (defined(config.effect_component_support) && 482 config.effect_component_support) { 483 sources += [ 484 "jsview/js_effect_component.cpp", 485 "jsview/models/effect_component_model_impl.cpp", 486 ] 487 } 488 489 if (defined(config.plugin_components_support) && 490 config.plugin_components_support) { 491 sources += [ 492 "jsview/js_plugin.cpp", 493 "jsview/models/plugin_model_impl.cpp", 494 ] 495 } 496 497 if (defined(config.preview_support) && config.preview_support) { 498 sources += [ "jsview/js_previewer_mock.cpp" ] 499 } 500 501 if (defined(config.model_component_support) && 502 config.model_component_support) { 503 sources += [ "jsview/js_sceneview.cpp" ] 504 } 505 506 if (defined(config.use_build_in_js_engine) && 507 config.use_build_in_js_engine) { 508 deps += [ "$ace_root/frameworks/bridge:framework_bridge_$platform" ] 509 defines += [ "BUILT_IN_JS_ENGINE" ] 510 } else { 511 sources += [ 512 "$ace_root/frameworks/bridge/js_frontend/engine/common/js_engine.cpp", 513 ] 514 deps += [ "$ace_root/build:libace" ] 515 if (defined(config.build_container_scope_lib) && 516 config.build_container_scope_lib) { 517 if (is_arkui_x) { 518 deps += [ "$ace_napi:ace_container_scope_static" ] 519 } else { 520 deps += [ "$ace_napi:ace_container_scope" ] 521 } 522 } 523 } 524 525 deps += [ "engine/$engine_path:declarative_js_engine_bridge_${engine_name}_$platform" ] 526 527 deps += [ 528 ":gen_obj_src_js_enum_style", 529 ":gen_obj_src_js_proxyclass", 530 ":gen_obj_src_js_uicontext", 531 ] 532 533 include_dirs = [ "//foundation/window/window_manager/interfaces/innerkits" ] 534 535 # add for cross_platfrom_build temporarily, shall be removed after external_deps is supported 536 if (is_arkui_x) { 537 configs += [ "$ark_ets_path:ark_jsruntime_public_config" ] 538 deps += [ "$ark_ets_path:libark_jsruntime_static" ] 539 if (defined(config.pixel_map_support) && config.pixel_map_support) { 540 configs += [ "//foundation/multimedia/image_framework/interfaces/innerkits:image_external_config" ] 541 } 542 } else { 543 external_deps += [ 544 "ets_runtime:libark_jsruntime", 545 "napi:ace_napi", 546 ] 547 } 548 549 if (platform == "windows" || platform == "mac" || platform == "linux") { 550 deps += [ ":gen_obj_src_js_mock_system_plugin" ] 551 } else { 552 if (defined(config.plugin_components_support) && 553 config.plugin_components_support) { 554 if (!use_mingw_win && !use_mac && !use_linux) { 555 external_deps += [ 556 "image_framework:image", 557 "image_framework:image_native", 558 ] 559 } 560 } else { 561 external_deps += [ 562 "image_framework:image", 563 "image_framework:image_native", 564 ] 565 } 566 567 if (defined(config.window_scene_support) && config.window_scene_support) { 568 sources += [ 569 "jsview/js_ui_extension.cpp", 570 "jsview/window_scene/js_root_scene.cpp", 571 "jsview/window_scene/js_screen.cpp", 572 "jsview/window_scene/js_window_scene.cpp", 573 ] 574 } 575 } 576 } 577} 578 579# build ng declarative javascript engine source 580template("declarative_js_engine_ng") { 581 forward_variables_from(invoker, "*") 582 583 ohos_source_set(target_name) { 584 subsystem_name = ace_engine_subsystem 585 part_name = ace_engine_part 586 defines += invoker.defines 587 if (target_cpu == "arm64") { 588 if (!is_mingw) { 589 defines += [ "_ARM64_" ] 590 } 591 } 592 if (current_os == "ohos" && current_cpu == "x86_64") { 593 defines += [ "SIMULATOR_64" ] 594 } 595 596 deps = [] 597 configs = [ "$ace_root:ace_config" ] 598 599 sources = [ 600 "engine/bindings_implementation.cpp", 601 "engine/declarative_engine_loader.cpp", 602 "engine/functions/js_animator_function.cpp", 603 "engine/functions/js_click_function.cpp", 604 "engine/functions/js_clipboard_function.cpp", 605 "engine/functions/js_drag_function.cpp", 606 "engine/functions/js_focus_function.cpp", 607 "engine/functions/js_foreach_function.cpp", 608 "engine/functions/js_function.cpp", 609 "engine/functions/js_gesture_function.cpp", 610 "engine/functions/js_hover_function.cpp", 611 "engine/functions/js_key_function.cpp", 612 "engine/functions/js_mouse_function.cpp", 613 "engine/functions/js_on_area_change_function.cpp", 614 "engine/functions/js_page_transition_function.cpp", 615 "engine/functions/js_pan_function.cpp", 616 "engine/functions/js_swiper_function.cpp", 617 "engine/functions/js_touch_function.cpp", 618 "engine/functions/js_webview_function.cpp", 619 "engine/js_types.cpp", 620 "jsview/js_environment.cpp", 621 "jsview/js_local_storage.cpp", 622 "jsview/js_persistent.cpp", 623 "jsview/js_view_functions.cpp", 624 "jsview/js_view_measure_layout.cpp", 625 "jsview/js_view_stack_processor.cpp", 626 "sharedata/js_share_data.cpp", 627 628 # jsviews 629 "jsview/action_sheet/js_action_sheet.cpp", 630 "jsview/dialog/js_alert_dialog.cpp", 631 "jsview/dialog/js_custom_dialog_controller.cpp", 632 "jsview/js_animator.cpp", 633 "jsview/js_badge.cpp", 634 "jsview/js_blank.cpp", 635 "jsview/js_button.cpp", 636 "jsview/js_calendar.cpp", 637 "jsview/js_calendar_controller.cpp", 638 "jsview/js_calendar_picker.cpp", 639 "jsview/js_canvas.cpp", 640 "jsview/js_canvas_gradient.cpp", 641 "jsview/js_canvas_image_data.cpp", 642 "jsview/js_canvas_path.cpp", 643 "jsview/js_canvas_pattern.cpp", 644 "jsview/js_canvas_renderer.cpp", 645 "jsview/js_checkbox.cpp", 646 "jsview/js_checkboxgroup.cpp", 647 "jsview/js_circle.cpp", 648 "jsview/js_clipboard.cpp", 649 "jsview/js_column.cpp", 650 "jsview/js_column_split.cpp", 651 "jsview/js_common_view.cpp", 652 "jsview/js_container_base.cpp", 653 "jsview/js_counter.cpp", 654 "jsview/js_data_panel.cpp", 655 "jsview/js_datepicker.cpp", 656 "jsview/js_divider.cpp", 657 "jsview/js_ellipse.cpp", 658 "jsview/js_flex.cpp", 659 "jsview/js_flex_impl.cpp", 660 "jsview/js_foreach.cpp", 661 "jsview/js_form_link.cpp", 662 "jsview/js_gauge.cpp", 663 "jsview/js_gesture.cpp", 664 "jsview/js_grid.cpp", 665 "jsview/js_grid_col.cpp", 666 "jsview/js_grid_container.cpp", 667 "jsview/js_grid_item.cpp", 668 "jsview/js_grid_row.cpp", 669 "jsview/js_hyperlink.cpp", 670 "jsview/js_if_else.cpp", 671 "jsview/js_image.cpp", 672 "jsview/js_image_animator.cpp", 673 "jsview/js_image_span.cpp", 674 "jsview/js_indexer.cpp", 675 "jsview/js_interactable_view.cpp", 676 "jsview/js_lazy_foreach.cpp", 677 "jsview/js_line.cpp", 678 "jsview/js_linear_gradient.cpp", 679 "jsview/js_list.cpp", 680 "jsview/js_list_item.cpp", 681 "jsview/js_list_item_group.cpp", 682 "jsview/js_loading_progress.cpp", 683 "jsview/js_marquee.cpp", 684 "jsview/js_matrix2d.cpp", 685 "jsview/js_menu.cpp", 686 "jsview/js_menu_item.cpp", 687 "jsview/js_menu_item_group.cpp", 688 "jsview/js_navdestination.cpp", 689 "jsview/js_navigation.cpp", 690 "jsview/js_navigation_stack.cpp", 691 "jsview/js_navigator.cpp", 692 "jsview/js_navrouter.cpp", 693 "jsview/js_offscreen_canvas.cpp", 694 "jsview/js_offscreen_rendering_context.cpp", 695 "jsview/js_page_transition.cpp", 696 "jsview/js_path.cpp", 697 "jsview/js_path2d.cpp", 698 "jsview/js_polygon.cpp", 699 "jsview/js_polyline.cpp", 700 "jsview/js_progress.cpp", 701 "jsview/js_radio.cpp", 702 "jsview/js_rating.cpp", 703 "jsview/js_rect.cpp", 704 "jsview/js_recycle_view.cpp", 705 "jsview/js_refresh.cpp", 706 "jsview/js_render_image.cpp", 707 "jsview/js_rendering_context.cpp", 708 "jsview/js_rendering_context_settings.cpp", 709 "jsview/js_row.cpp", 710 "jsview/js_row_split.cpp", 711 "jsview/js_scope_util.cpp", 712 "jsview/js_scroll.cpp", 713 "jsview/js_scroller.cpp", 714 "jsview/js_search.cpp", 715 "jsview/js_select.cpp", 716 "jsview/js_shape.cpp", 717 "jsview/js_shape_abstract.cpp", 718 "jsview/js_side_bar.cpp", 719 "jsview/js_slider.cpp", 720 "jsview/js_sliding_panel.cpp", 721 "jsview/js_span.cpp", 722 "jsview/js_stack.cpp", 723 "jsview/js_stepper.cpp", 724 "jsview/js_stepper_item.cpp", 725 "jsview/js_swiper.cpp", 726 "jsview/js_tab_content.cpp", 727 "jsview/js_tabs.cpp", 728 "jsview/js_tabs_controller.cpp", 729 "jsview/js_text.cpp", 730 "jsview/js_text_clock.cpp", 731 "jsview/js_textarea.cpp", 732 "jsview/js_textfield.cpp", 733 "jsview/js_textinput.cpp", 734 "jsview/js_textpicker.cpp", 735 "jsview/js_texttimer.cpp", 736 "jsview/js_toggle.cpp", 737 "jsview/js_utils.cpp", 738 "jsview/js_view.cpp", 739 "jsview/js_view_abstract.cpp", 740 "jsview/js_view_context.cpp", 741 "jsview/js_water_flow.cpp", 742 "jsview/js_water_flow_item.cpp", 743 "jsview/scroll_bar/js_scroll_bar.cpp", 744 ] 745 746 sources += [ 747 "$ace_root/frameworks/bridge/js_frontend/engine/common/js_engine.cpp", 748 ] 749 750 if (!defined(config.use_components_lib) || !config.use_components_lib) { 751 sources += [ 752 "jsview/js_pattern_lock.cpp", 753 "jsview/js_qrcode.cpp", 754 "jsview/js_relative_container.cpp", 755 ] 756 } 757 758 if (defined(config.video_components_support) && 759 config.video_components_support) { 760 sources += [ 761 "jsview/js_video.cpp", 762 "jsview/js_video_controller.cpp", 763 ] 764 } 765 766 if (defined(config.window_scene_support) && config.window_scene_support) { 767 sources += [ 768 "jsview/js_ui_extension.cpp", 769 "jsview/window_scene/js_root_scene.cpp", 770 "jsview/window_scene/js_screen.cpp", 771 "jsview/window_scene/js_window_scene.cpp", 772 ] 773 } 774 775 if (defined(config.enable_ability_component) && 776 config.enable_ability_component) { 777 sources += [ 778 "jsview/js_ability_component.cpp", 779 "jsview/js_ability_component_controller.cpp", 780 ] 781 } 782 783 if (defined(config.form_components_support) && 784 config.form_components_support) { 785 sources += [ "jsview/js_form.cpp" ] 786 } 787 788 if (defined(config.plugin_components_support) && 789 config.plugin_components_support) { 790 sources += [ "jsview/js_plugin.cpp" ] 791 } 792 793 if (defined(config.web_components_support) && 794 config.web_components_support) { 795 if (!is_arkui_x) { 796 sources += [ 797 "jsview/js_richtext.cpp", 798 "jsview/js_web.cpp", 799 "jsview/js_web_controller.cpp", 800 ] 801 } else { 802 sources += [ "jsview/js_web.cpp" ] 803 } 804 } 805 806 if (defined(config.remote_window_support) && config.remote_window_support) { 807 sources += [ "jsview/js_remote_window.cpp" ] 808 } 809 810 if (defined(config.xcomponent_components_support) && 811 config.xcomponent_components_support) { 812 sources += [ 813 "jsview/js_xcomponent.cpp", 814 "jsview/js_xcomponent_controller.cpp", 815 ] 816 } 817 818 if (defined(config.model_component_support) && 819 config.model_component_support) { 820 sources += [ "jsview/js_sceneview.cpp" ] 821 } 822 823 if (defined(config.use_build_in_js_engine) && 824 config.use_build_in_js_engine) { 825 deps += [ "$ace_root/frameworks/bridge:framework_bridge_ng_$platform" ] 826 defines += [ "BUILT_IN_JS_ENGINE" ] 827 } else { 828 deps += [ "$ace_root/build:libace" ] 829 if (defined(config.build_container_scope_lib) && 830 config.build_container_scope_lib) { 831 deps += [ "$ace_napi:ace_container_scope" ] 832 } 833 } 834 835 # add for cross_platfrom_build temporarily, shall be removed after external_deps is supported 836 external_deps = [] 837 if (is_arkui_x) { 838 configs += [ "$ark_ets_path:ark_jsruntime_public_config" ] 839 deps += [ "$ark_ets_path:libark_jsruntime_static" ] 840 if (defined(config.pixel_map_support) && config.pixel_map_support) { 841 configs += [ "//foundation/multimedia/image_framework/interfaces/innerkits:image_external_config" ] 842 } 843 } else { 844 external_deps += [ 845 "ets_runtime:libark_jsruntime", 846 "napi:ace_napi", 847 ] 848 } 849 850 deps += [ "engine/$engine_path:declarative_js_engine_bridge_${engine_name}_$platform" ] 851 852 deps += [ 853 ":gen_obj_src_js_enum_style", 854 ":gen_obj_src_js_proxyclass", 855 ":gen_obj_src_js_uicontext", 856 ] 857 858 if (defined(config.enable_drag_framework) && config.enable_drag_framework && 859 defined(global_parts_info.distributeddatamgr_udmf)) { 860 external_deps += [ 861 "udmf:udmf_client", 862 "udmf:udmf_data_napi", 863 ] 864 } 865 } 866} 867 868# dynamic generate js_engine targets 869foreach(item, ace_platforms) { 870 platform = item.name 871 engine_config = { 872 } 873 engine_config = item.config 874 support_engines = [] 875 support_engines = engine_config.js_engines 876 foreach(engine, support_engines) { 877 declarative_js_engine( 878 "declarative_js_engine_${engine.engine_name}_$platform") { 879 platform = item.name 880 engine_name = engine.engine_name 881 engine_path = engine.engine_path 882 defines = engine.engine_defines 883 884 config = { 885 } 886 if (defined(item.config)) { 887 config = item.config 888 } 889 if (defined(config.defines)) { 890 defines += config.defines 891 } 892 } 893 894 declarative_js_engine_ng( 895 "declarative_js_engine_ng_${engine.engine_name}_$platform") { 896 platform = item.name 897 engine_name = engine.engine_name 898 engine_path = engine.engine_path 899 defines = engine.engine_defines 900 901 config = { 902 } 903 if (defined(item.config)) { 904 config = item.config 905 } 906 if (defined(config.defines)) { 907 defines += config.defines 908 } 909 } 910 } 911} 912