18bf80f4bSopenharmony_ci# Copyright (C) 2023-2024 Huawei Device Co., Ltd.
28bf80f4bSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
38bf80f4bSopenharmony_ci# you may not use this file except in compliance with the License.
48bf80f4bSopenharmony_ci# You may obtain a copy of the License at
58bf80f4bSopenharmony_ci#
68bf80f4bSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
78bf80f4bSopenharmony_ci#
88bf80f4bSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
98bf80f4bSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
108bf80f4bSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
118bf80f4bSopenharmony_ci# See the License for the specific language governing permissions and
128bf80f4bSopenharmony_ci# limitations under the License.
138bf80f4bSopenharmony_ci
148bf80f4bSopenharmony_ciimport("//build/ohos.gni")
158bf80f4bSopenharmony_ciimport("//foundation/graphic/graphic_3d/lume/lume_config.gni")
168bf80f4bSopenharmony_ci
178bf80f4bSopenharmony_cideclare_args() {
188bf80f4bSopenharmony_ci  MULTI_ECS_UPDATE_AT_ONCE = "0"
198bf80f4bSopenharmony_ci  UNIFY_RENDER = "1"
208bf80f4bSopenharmony_ci  DBG_DRAW_PIXEL = "0"
218bf80f4bSopenharmony_ci  WIDGET_TRACE_ENABLE = "1"
228bf80f4bSopenharmony_ci}
238bf80f4bSopenharmony_ci
248bf80f4bSopenharmony_ciconfig("lume3d_config") {
258bf80f4bSopenharmony_ci  visibility = [ ":*" ]
268bf80f4bSopenharmony_ci
278bf80f4bSopenharmony_ci  include_dirs = [
288bf80f4bSopenharmony_ci    "${LUME_BASE_PATH}/api",
298bf80f4bSopenharmony_ci    "${LUME_CORE_PATH}/api",
308bf80f4bSopenharmony_ci    "${LUME_RENDER_PATH}/api",
318bf80f4bSopenharmony_ci    "${LUME_CORE3D_PATH}/api",
328bf80f4bSopenharmony_ci  ]
338bf80f4bSopenharmony_ci
348bf80f4bSopenharmony_ci  if (current_os == "ohos") {
358bf80f4bSopenharmony_ci    include_dirs += [ "${LUME_CORE_PATH}/api/platform/ohos" ]
368bf80f4bSopenharmony_ci  }
378bf80f4bSopenharmony_ci
388bf80f4bSopenharmony_ci  configs = []
398bf80f4bSopenharmony_ci
408bf80f4bSopenharmony_ci  cflags = [
418bf80f4bSopenharmony_ci    "-Wall",
428bf80f4bSopenharmony_ci    "-fexceptions",
438bf80f4bSopenharmony_ci    "-Wno-sign-compare",
448bf80f4bSopenharmony_ci    "-Wno-unused-variable",
458bf80f4bSopenharmony_ci    "-Wno-unused-private-field",
468bf80f4bSopenharmony_ci    "-Wno-implicit-fallthrough",
478bf80f4bSopenharmony_ci    "-Wno-reorder",
488bf80f4bSopenharmony_ci    "-Wno-unused-function",
498bf80f4bSopenharmony_ci    "-Wno-tautological-unsigned-zero-compare",
508bf80f4bSopenharmony_ci
518bf80f4bSopenharmony_ci    "-Wno-nullability-completeness",
528bf80f4bSopenharmony_ci    "-Wno-ignored-qualifiers",
538bf80f4bSopenharmony_ci    "-Wno-switch",
548bf80f4bSopenharmony_ci
558bf80f4bSopenharmony_ci    "-DCORE_PUBLIC=__attribute__((visibility(\"default\")))",
568bf80f4bSopenharmony_ci    "-DCORE_BUILD_2D = 0",
578bf80f4bSopenharmony_ci    "-DCORE_BUILD_VULKAN=0",
588bf80f4bSopenharmony_ci    "-DCORE_BUILD_GL=0",
598bf80f4bSopenharmony_ci    "-DCORE_BUILD_GLES=1",
608bf80f4bSopenharmony_ci    "-DCORE_DEV_ENABLED=0",
618bf80f4bSopenharmony_ci    "-DCORE_TESTS_ENABLED=0",
628bf80f4bSopenharmony_ci    "-DCORE_GL_DEBUG=0",
638bf80f4bSopenharmony_ci    "-DCORE_VALIDATION_ENABLED = 0",
648bf80f4bSopenharmony_ci    "-DCORE_VULKAN_VALIDATION_ENABLED = 0",
658bf80f4bSopenharmony_ci    "-DCORE_EMBEDDED_ASSETS_ENABLED = 2",
668bf80f4bSopenharmony_ci    "-DCORE_ENABLE_GPU_QUERIES=0",
678bf80f4bSopenharmony_ci    "-DCORE_DEBUG_GPU_RESOURCE_IDS = 0",
688bf80f4bSopenharmony_ci    "-DCORE_DEBUG_COMMAND_MARKERS_ENABLED = 0",
698bf80f4bSopenharmony_ci    "-DCORE_DEBUG_MARKERS_ENABLED = 0",
708bf80f4bSopenharmony_ci    "-DRENDER_HAS_GL_BACKEND=0",
718bf80f4bSopenharmony_ci    "-DRENDER_HAS_GLES_BACKEND = 1",
728bf80f4bSopenharmony_ci    "-DRENDER_HAS_VULKAN_BACKEND = 1",
738bf80f4bSopenharmony_ci    "-DVK_USE_PLATFORM_ANDROID_KHR = 1",
748bf80f4bSopenharmony_ci    "-DCORE_LOG_NO_DEBUG=0",
758bf80f4bSopenharmony_ci    "-DCORE_LOG_TO_DEBUG_OUTPUT=1",
768bf80f4bSopenharmony_ci    "-DCORE_LOG_TO_CONSOLE",
778bf80f4bSopenharmony_ci    "-DCORE_LOG_DISABLED=0",
788bf80f4bSopenharmony_ci    "-DCORE_DYNAMIC=1",
798bf80f4bSopenharmony_ci  ]
808bf80f4bSopenharmony_ci}
818bf80f4bSopenharmony_ci
828bf80f4bSopenharmony_ciconfig("widget_adapter_config") {
838bf80f4bSopenharmony_ci  defines = [
848bf80f4bSopenharmony_ci    "MULTI_ECS_UPDATE_AT_ONCE=${MULTI_ECS_UPDATE_AT_ONCE}",
858bf80f4bSopenharmony_ci    "EGL_EGLEXT_PROTOTYPES",
868bf80f4bSopenharmony_ci    "GL_GLEXT_PROTOTYPES",
878bf80f4bSopenharmony_ci    "UNIFY_RENDER=${UNIFY_RENDER}",
888bf80f4bSopenharmony_ci    "WIDGET_TRACE_ENABLE=${WIDGET_TRACE_ENABLE}",
898bf80f4bSopenharmony_ci    "DBG_DRAW_PIXEL=${DBG_DRAW_PIXEL}",
908bf80f4bSopenharmony_ci  ]
918bf80f4bSopenharmony_ci
928bf80f4bSopenharmony_ci  if (current_os == "ohos") {
938bf80f4bSopenharmony_ci    defines += [ "__OHOS_PLATFORM__" ]
948bf80f4bSopenharmony_ci  }
958bf80f4bSopenharmony_ci
968bf80f4bSopenharmony_ci  include_dirs = [ "include" ]
978bf80f4bSopenharmony_ci
988bf80f4bSopenharmony_ci  if (current_os == "ohos") {
998bf80f4bSopenharmony_ci    include_dirs += [ "include/ohos" ]
1008bf80f4bSopenharmony_ci  }
1018bf80f4bSopenharmony_ci
1028bf80f4bSopenharmony_ci  if (MULTI_ECS_UPDATE_AT_ONCE == "1") {
1038bf80f4bSopenharmony_ci    cflags_cc += [ "-Wno-user-defined-warnings" ]
1048bf80f4bSopenharmony_ci  }
1058bf80f4bSopenharmony_ci}
1068bf80f4bSopenharmony_ci
1078bf80f4bSopenharmony_ciohos_source_set("widget_adapter_source") {
1088bf80f4bSopenharmony_ci  sources = [
1098bf80f4bSopenharmony_ci    "core/src/engine_factory.cpp",
1108bf80f4bSopenharmony_ci    "core/src/lume/custom/lume_custom_render.cpp",
1118bf80f4bSopenharmony_ci    "core/src/lume/custom/shader_input_buffer.cpp",
1128bf80f4bSopenharmony_ci    "core/src/lume/lume_common.cpp",
1138bf80f4bSopenharmony_ci    "src/graphics_manager_common.cpp",
1148bf80f4bSopenharmony_ci    "src/graphics_task.cpp",
1158bf80f4bSopenharmony_ci    "src/offscreen_context_helper.cpp",
1168bf80f4bSopenharmony_ci    "src/widget_adapter.cpp",
1178bf80f4bSopenharmony_ci  ]
1188bf80f4bSopenharmony_ci
1198bf80f4bSopenharmony_ci  include_dirs = [
1208bf80f4bSopenharmony_ci    "core/include",
1218bf80f4bSopenharmony_ci    "core/include/lume",
1228bf80f4bSopenharmony_ci    "//foundation/graphic/graphic_2d/rosen/modules/",
1238bf80f4bSopenharmony_ci  ]
1248bf80f4bSopenharmony_ci
1258bf80f4bSopenharmony_ci  defines = [
1268bf80f4bSopenharmony_ci    "CORE_HAS_GLES_BACKEND=1",
1278bf80f4bSopenharmony_ci    "CORE_HAS_VULKAN_BACKEND=1",
1288bf80f4bSopenharmony_ci  ]
1298bf80f4bSopenharmony_ci
1308bf80f4bSopenharmony_ci  configs = [
1318bf80f4bSopenharmony_ci    ":widget_adapter_config",
1328bf80f4bSopenharmony_ci    ":lume3d_config",
1338bf80f4bSopenharmony_ci  ]
1348bf80f4bSopenharmony_ci
1358bf80f4bSopenharmony_ci  public_configs = [ ":widget_adapter_config" ]
1368bf80f4bSopenharmony_ci
1378bf80f4bSopenharmony_ci  if (defined(use_new_skia) && use_new_skia) {
1388bf80f4bSopenharmony_ci    external_deps = [ "skia:skia_canvaskit" ]
1398bf80f4bSopenharmony_ci  } else {
1408bf80f4bSopenharmony_ci    #external_deps = [ "flutter:ace_skia_ohos" ]
1418bf80f4bSopenharmony_ci    deps = [ "$ace_flutter_engine_root/skia:ace_skia_ohos" ]
1428bf80f4bSopenharmony_ci  }
1438bf80f4bSopenharmony_ci  if (defined(use_rosen_drawing) && use_rosen_drawing) {
1448bf80f4bSopenharmony_ci    defines += [ "USE_ROSEN_DRAWING" ]
1458bf80f4bSopenharmony_ci  }
1468bf80f4bSopenharmony_ci
1478bf80f4bSopenharmony_ci  if (current_os == "ohos") {
1488bf80f4bSopenharmony_ci    sources += [
1498bf80f4bSopenharmony_ci      "core/src/lume/ohos/lume.cpp",
1508bf80f4bSopenharmony_ci      "src/ohos/graphics_manager.cpp",
1518bf80f4bSopenharmony_ci      "src/ohos/texture_layer.cpp",
1528bf80f4bSopenharmony_ci    ]
1538bf80f4bSopenharmony_ci
1548bf80f4bSopenharmony_ci    include_dirs += [
1558bf80f4bSopenharmony_ci      "core/include/ohos",
1568bf80f4bSopenharmony_ci      "core/include/lume/ohos",
1578bf80f4bSopenharmony_ci    ]
1588bf80f4bSopenharmony_ci
1598bf80f4bSopenharmony_ci    external_deps += [ "vulkan-headers:vulkan_headers" ]
1608bf80f4bSopenharmony_ci    external_deps += [
1618bf80f4bSopenharmony_ci      "c_utils:utils",
1628bf80f4bSopenharmony_ci      "graphic_2d:EGL",
1638bf80f4bSopenharmony_ci      "graphic_2d:GLESv3",
1648bf80f4bSopenharmony_ci      "graphic_2d:librender_service_client",
1658bf80f4bSopenharmony_ci      "graphic_surface:surface",
1668bf80f4bSopenharmony_ci      "hilog:libhilog",
1678bf80f4bSopenharmony_ci      "hitrace:hitrace_meter",
1688bf80f4bSopenharmony_ci      "init:libbegetutil",
1698bf80f4bSopenharmony_ci    ]
1708bf80f4bSopenharmony_ci
1718bf80f4bSopenharmony_ci    defines += [ "LIB_ENGINE_CORE=${LIB_ENGINE_CORE}.z" ]
1728bf80f4bSopenharmony_ci
1738bf80f4bSopenharmony_ci    if (target_cpu == "arm") {
1748bf80f4bSopenharmony_ci      defines += [
1758bf80f4bSopenharmony_ci        "PLATFORM_CORE_ROOT_PATH=/system/lib/",
1768bf80f4bSopenharmony_ci        "PLATFORM_APP_ROOT_PATH=/system/lib/",
1778bf80f4bSopenharmony_ci        "PLATFORM_APP_PLUGIN_PATH=/system/lib/",
1788bf80f4bSopenharmony_ci      ]
1798bf80f4bSopenharmony_ci    }
1808bf80f4bSopenharmony_ci
1818bf80f4bSopenharmony_ci    if (target_cpu == "arm64") {
1828bf80f4bSopenharmony_ci      defines += [
1838bf80f4bSopenharmony_ci        "PLATFORM_CORE_ROOT_PATH=/system/lib64/",
1848bf80f4bSopenharmony_ci        "PLATFORM_APP_ROOT_PATH=/system/lib64/",
1858bf80f4bSopenharmony_ci        "PLATFORM_APP_PLUGIN_PATH=/system/lib64/",
1868bf80f4bSopenharmony_ci      ]
1878bf80f4bSopenharmony_ci    }
1888bf80f4bSopenharmony_ci  }
1898bf80f4bSopenharmony_ci
1908bf80f4bSopenharmony_ci  part_name = "graphic_3d"
1918bf80f4bSopenharmony_ci  subsystem_name = "graphic"
1928bf80f4bSopenharmony_ci}
1938bf80f4bSopenharmony_ci
1948bf80f4bSopenharmony_cigroup("3dWidgetAdapterInterface") {
1958bf80f4bSopenharmony_ci  public_configs = [
1968bf80f4bSopenharmony_ci    ":widget_adapter_config",
1978bf80f4bSopenharmony_ci    "../3d_scene_adapter:scene_adapter_config",
1988bf80f4bSopenharmony_ci    "../kits/js:napi_config",
1998bf80f4bSopenharmony_ci  ]
2008bf80f4bSopenharmony_ci}
2018bf80f4bSopenharmony_ci
2028bf80f4bSopenharmony_ciohos_shared_library("lib3dWidgetAdapter") {
2038bf80f4bSopenharmony_ci  deps = [
2048bf80f4bSopenharmony_ci    ":widget_adapter_source",
2058bf80f4bSopenharmony_ci    "../3d_scene_adapter:scene_adapter_static",
2068bf80f4bSopenharmony_ci  ]
2078bf80f4bSopenharmony_ci
2088bf80f4bSopenharmony_ci  public_deps = []
2098bf80f4bSopenharmony_ci
2108bf80f4bSopenharmony_ci  public_configs = [
2118bf80f4bSopenharmony_ci    ":widget_adapter_config",
2128bf80f4bSopenharmony_ci    "../3d_scene_adapter:scene_adapter_config",
2138bf80f4bSopenharmony_ci    "../kits/js:napi_config",
2148bf80f4bSopenharmony_ci  ]
2158bf80f4bSopenharmony_ci  part_name = "graphic_3d"
2168bf80f4bSopenharmony_ci  subsystem_name = "graphic"
2178bf80f4bSopenharmony_ci}
218