1a1db01bdSopenharmony_ci# Copyright (c) 2020 Huawei Device Co., Ltd.
2a1db01bdSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3a1db01bdSopenharmony_ci# you may not use this file except in compliance with the License.
4a1db01bdSopenharmony_ci# You may obtain a copy of the License at
5a1db01bdSopenharmony_ci#
6a1db01bdSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7a1db01bdSopenharmony_ci#
8a1db01bdSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9a1db01bdSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10a1db01bdSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11a1db01bdSopenharmony_ci# See the License for the specific language governing permissions and
12a1db01bdSopenharmony_ci# limitations under the License.
13a1db01bdSopenharmony_ciimport("//build/lite/config/component/lite_component.gni")
14a1db01bdSopenharmony_ciimport("//build/lite/config/subsystem/aafwk/config.gni")
15a1db01bdSopenharmony_ciimport("//foundation/ability/ability_lite/ability_lite.gni")
16a1db01bdSopenharmony_ciimport(
17a1db01bdSopenharmony_ci    "//foundation/bundlemanager/bundle_framework_lite/bundle_framework_lite.gni")
18a1db01bdSopenharmony_ci
19a1db01bdSopenharmony_cilite_library("abilityms") {
20a1db01bdSopenharmony_ci  if (ohos_kernel_type == "liteos_m") {
21a1db01bdSopenharmony_ci    target_type = "static_library"
22a1db01bdSopenharmony_ci
23a1db01bdSopenharmony_ci    sources = [
24a1db01bdSopenharmony_ci      "src/slite/ability_list.cpp",
25a1db01bdSopenharmony_ci      "src/slite/ability_mgr_service_slite.cpp",
26a1db01bdSopenharmony_ci      "src/slite/ability_record.cpp",
27a1db01bdSopenharmony_ci      "src/slite/ability_record_manager.cpp",
28a1db01bdSopenharmony_ci      "src/slite/ability_record_observer_manager.cpp",
29a1db01bdSopenharmony_ci      "src/slite/ability_thread.cpp",
30a1db01bdSopenharmony_ci      "src/slite/ability_thread_loader.cpp",
31a1db01bdSopenharmony_ci      "src/slite/bms_helper.cpp",
32a1db01bdSopenharmony_ci      "src/slite/js_ability_thread.cpp",
33a1db01bdSopenharmony_ci      "src/slite/native_ability_thread.cpp",
34a1db01bdSopenharmony_ci      "src/slite/slite_ability_loader.cpp",
35a1db01bdSopenharmony_ci    ]
36a1db01bdSopenharmony_ci
37a1db01bdSopenharmony_ci    if (defined(ability_lite_config_ohos_aafwk_ams_task_size) &&
38a1db01bdSopenharmony_ci        ability_lite_config_ohos_aafwk_ams_task_size > 0) {
39a1db01bdSopenharmony_ci      defines = [
40a1db01bdSopenharmony_ci        "AMS_TASK_STACK_SIZE=$ability_lite_config_ohos_aafwk_ams_task_size",
41a1db01bdSopenharmony_ci      ]
42a1db01bdSopenharmony_ci    }
43a1db01bdSopenharmony_ci
44a1db01bdSopenharmony_ci    if (defined(ability_lite_config_ohos_aafwk_ability_list_capacity) &&
45a1db01bdSopenharmony_ci        ability_lite_config_ohos_aafwk_ability_list_capacity > 0) {
46a1db01bdSopenharmony_ci      defines += [ "ABILITY_LIST_CAPACITY=$ability_lite_config_ohos_aafwk_ability_list_capacity" ]
47a1db01bdSopenharmony_ci    }
48a1db01bdSopenharmony_ci
49a1db01bdSopenharmony_ci    if (defined(ability_lite_config_ohos_aafwk_aafwk_lite_task_stack_size) &&
50a1db01bdSopenharmony_ci        ability_lite_config_ohos_aafwk_aafwk_lite_task_stack_size > 0) {
51a1db01bdSopenharmony_ci      defines += [
52a1db01bdSopenharmony_ci        "TASK_STACK_SIZE=$ability_lite_config_ohos_aafwk_aafwk_lite_task_stack_size",
53a1db01bdSopenharmony_ci        "NATIVE_TASK_STACK_SIZE=$ability_lite_config_ohos_aafwk_ams_task_size",
54a1db01bdSopenharmony_ci      ]
55a1db01bdSopenharmony_ci    }
56a1db01bdSopenharmony_ci
57a1db01bdSopenharmony_ci    if (ability_lite_enable_ohos_aafwk_multi_tasks_feature == true) {
58a1db01bdSopenharmony_ci      defines += [ "_MINI_MULTI_TASKS_" ]
59a1db01bdSopenharmony_ci    }
60a1db01bdSopenharmony_ci
61a1db01bdSopenharmony_ci    if (defined(bundle_framework_lite_enable_ohos_bundle_manager_service) &&
62a1db01bdSopenharmony_ci        bundle_framework_lite_enable_ohos_bundle_manager_service == true) {
63a1db01bdSopenharmony_ci      defines += [ "_MINI_BMS_" ]
64a1db01bdSopenharmony_ci    }
65a1db01bdSopenharmony_ci
66a1db01bdSopenharmony_ci    deps = [
67a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/samgr:samgr",
68a1db01bdSopenharmony_ci      "${ace_engine_lite_path}/frameworks:ace_lite",
69a1db01bdSopenharmony_ci      "${hilog_lite_path}/frameworks/featured:hilog_static",
70a1db01bdSopenharmony_ci    ]
71a1db01bdSopenharmony_ci
72a1db01bdSopenharmony_ci    include_dirs = [
73a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/inner_api/abilitymgr_lite",
74a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/inner_api/abilitymgr_lite/slite",
75a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/kits/ability_lite/slite",
76a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/kits/want_lite",
77a1db01bdSopenharmony_ci      "${aafwk_lite_path}/frameworks/abilitymgr_lite/include/slite",
78a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/interfaces/inner_api/bundlemgr_lite",
79a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/interfaces/kits/bundle_lite",
80a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/utils/bundle_lite",
81a1db01bdSopenharmony_ci      "${utils_lite_path}/include",
82a1db01bdSopenharmony_ci      "${utils_lite_path}/memory/include",
83a1db01bdSopenharmony_ci      "${dmsfwk_lite_path}/interfaces/innerkits",
84a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/interfaces/kits/registry",
85a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/interfaces/kits/samgr",
86a1db01bdSopenharmony_ci      "//third_party/bounds_checking_function/include",
87a1db01bdSopenharmony_ci      "./include/slite",
88a1db01bdSopenharmony_ci      "./include/util",
89a1db01bdSopenharmony_ci    ]
90a1db01bdSopenharmony_ci  } else {
91a1db01bdSopenharmony_ci    target_type = "shared_library"
92a1db01bdSopenharmony_ci
93a1db01bdSopenharmony_ci    sources = [
94a1db01bdSopenharmony_ci      "src/ability_connect_mission.cpp",
95a1db01bdSopenharmony_ci      "src/ability_inner_feature.cpp",
96a1db01bdSopenharmony_ci      "src/ability_mgr_context.cpp",
97a1db01bdSopenharmony_ci      "src/ability_mgr_feature.cpp",
98a1db01bdSopenharmony_ci      "src/ability_mgr_handler.cpp",
99a1db01bdSopenharmony_ci      "src/ability_mgr_service.cpp",
100a1db01bdSopenharmony_ci      "src/ability_mission_record.cpp",
101a1db01bdSopenharmony_ci      "src/ability_mission_stack.cpp",
102a1db01bdSopenharmony_ci      "src/ability_stack_manager.cpp",
103a1db01bdSopenharmony_ci      "src/ability_worker.cpp",
104a1db01bdSopenharmony_ci      "src/app_manager.cpp",
105a1db01bdSopenharmony_ci      "src/app_record.cpp",
106a1db01bdSopenharmony_ci      "src/client/ability_dump_client.cpp",
107a1db01bdSopenharmony_ci      "src/client/ability_thread_client.cpp",
108a1db01bdSopenharmony_ci      "src/client/app_spawn_client.cpp",
109a1db01bdSopenharmony_ci      "src/client/bundlems_client.cpp",
110a1db01bdSopenharmony_ci      "src/client/wms_client.cpp",
111a1db01bdSopenharmony_ci      "src/page_ability_record.cpp",
112a1db01bdSopenharmony_ci      "src/task/ability_activate_task.cpp",
113a1db01bdSopenharmony_ci      "src/task/ability_attach_task.cpp",
114a1db01bdSopenharmony_ci      "src/task/ability_background_task.cpp",
115a1db01bdSopenharmony_ci      "src/task/ability_connect_done_task.cpp",
116a1db01bdSopenharmony_ci      "src/task/ability_connect_task.cpp",
117a1db01bdSopenharmony_ci      "src/task/ability_disconnect_done_task.cpp",
118a1db01bdSopenharmony_ci      "src/task/ability_disconnect_task.cpp",
119a1db01bdSopenharmony_ci      "src/task/ability_dump_task.cpp",
120a1db01bdSopenharmony_ci      "src/task/ability_inactivate_task.cpp",
121a1db01bdSopenharmony_ci      "src/task/ability_start_task.cpp",
122a1db01bdSopenharmony_ci      "src/task/ability_stop_task.cpp",
123a1db01bdSopenharmony_ci      "src/task/ability_terminate_service_task.cpp",
124a1db01bdSopenharmony_ci      "src/task/ability_terminate_task.cpp",
125a1db01bdSopenharmony_ci      "src/task/app_restart_task.cpp",
126a1db01bdSopenharmony_ci      "src/task/app_terminate_task.cpp",
127a1db01bdSopenharmony_ci      "src/util/abilityms_helper.cpp",
128a1db01bdSopenharmony_ci      "src/util/abilityms_status.cpp",
129a1db01bdSopenharmony_ci    ]
130a1db01bdSopenharmony_ci
131a1db01bdSopenharmony_ci    deps = [
132a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/samgr:samgr",
133a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/frameworks/bundle_lite:bundle",
134a1db01bdSopenharmony_ci      "${communication_path}/ipc/interfaces/innerkits/c/ipc:ipc_single",
135a1db01bdSopenharmony_ci      "${hilog_lite_path}/frameworks/featured:hilog_shared",
136a1db01bdSopenharmony_ci    ]
137a1db01bdSopenharmony_ci
138a1db01bdSopenharmony_ci    defines = [ "OHOS_APPEXECFWK_BMS_BUNDLEMANAGER" ]
139a1db01bdSopenharmony_ci
140a1db01bdSopenharmony_ci    if (defined(ability_lite_config_ohos_aafwk_ams_task_size) &&
141a1db01bdSopenharmony_ci        ability_lite_config_ohos_aafwk_ams_task_size > 0) {
142a1db01bdSopenharmony_ci      defines += [
143a1db01bdSopenharmony_ci        "AMS_TASK_STACK_SIZE=$ability_lite_config_ohos_aafwk_ams_task_size",
144a1db01bdSopenharmony_ci      ]
145a1db01bdSopenharmony_ci    }
146a1db01bdSopenharmony_ci
147a1db01bdSopenharmony_ci    if (ability_lite_enable_ohos_appexecfwk_feature_ability == true) {
148a1db01bdSopenharmony_ci      deps += [ "${graphic_path}/surface_lite" ]
149a1db01bdSopenharmony_ci      defines += [ "ABILITY_WINDOW_SUPPORT" ]
150a1db01bdSopenharmony_ci    }
151a1db01bdSopenharmony_ci
152a1db01bdSopenharmony_ci    include_dirs = [
153a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/kits/ability_lite",
154a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/kits/want_lite",
155a1db01bdSopenharmony_ci      "${aafwk_lite_path}/frameworks/want_lite/include",
156a1db01bdSopenharmony_ci      "${aafwk_lite_path}/interfaces/inner_api/abilitymgr_lite",
157a1db01bdSopenharmony_ci      "${aafwk_lite_path}/frameworks/abilitymgr_lite/include",
158a1db01bdSopenharmony_ci      "${aafwk_lite_path}/services/abilitymgr_lite/include/util",
159a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/interfaces/kits/bundle_lite",
160a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/utils/bundle_lite",
161a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/interfaces/inner_api/bundlemgr_lite",
162a1db01bdSopenharmony_ci      "${appexecfwk_lite_path}/frameworks/bundle_lite/include",
163a1db01bdSopenharmony_ci      "${permission_lite_path}/interfaces/kits",
164a1db01bdSopenharmony_ci      "${permission_lite_path}/services/pms/include",
165a1db01bdSopenharmony_ci      "${appapawn_lite_path}",
166a1db01bdSopenharmony_ci      "${utils_lite_path}/include",
167a1db01bdSopenharmony_ci      "${utils_lite_path}/memory/include",
168a1db01bdSopenharmony_ci      "${dmsfwk_lite_path}/interfaces/innerkits",
169a1db01bdSopenharmony_ci      "${communication_path}/ipc/interfaces/innerkits/c/ipc/include",
170a1db01bdSopenharmony_ci      "${graphic_path}/../window/window_manager_lite/interfaces/innerkits",
171a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/interfaces/kits/registry",
172a1db01bdSopenharmony_ci      "${ability_lite_samgr_lite_path}/interfaces/kits/samgr",
173a1db01bdSopenharmony_ci      "//third_party/bounds_checking_function/include",
174a1db01bdSopenharmony_ci      "//third_party/cJSON",
175a1db01bdSopenharmony_ci      "include",
176a1db01bdSopenharmony_ci      "include/task",
177a1db01bdSopenharmony_ci    ]
178a1db01bdSopenharmony_ci  }
179a1db01bdSopenharmony_ci
180a1db01bdSopenharmony_ci  cflags = []
181a1db01bdSopenharmony_ci  if (board_toolchain_type != "iccarm") {
182a1db01bdSopenharmony_ci    cflags += [
183a1db01bdSopenharmony_ci      "-Wall",
184a1db01bdSopenharmony_ci      "-Wno-format",
185a1db01bdSopenharmony_ci      "-Wno-format-extra-args",
186a1db01bdSopenharmony_ci    ]
187a1db01bdSopenharmony_ci  }
188a1db01bdSopenharmony_ci  cflags_cc = cflags
189a1db01bdSopenharmony_ci
190a1db01bdSopenharmony_ci  ldflags = [
191a1db01bdSopenharmony_ci    "-lstdc++",
192a1db01bdSopenharmony_ci    "-lpthread",
193a1db01bdSopenharmony_ci    "-ldl",
194a1db01bdSopenharmony_ci  ]
195a1db01bdSopenharmony_ci
196a1db01bdSopenharmony_ci  if (ohos_kernel_type == "liteos_m") {
197a1db01bdSopenharmony_ci    include_dirs += [ "${hilog_lite_path}/interfaces/native/kits/hilog_lite" ]
198a1db01bdSopenharmony_ci  }
199a1db01bdSopenharmony_ci}
200a1db01bdSopenharmony_ci
201a1db01bdSopenharmony_cigenerate_notice_file("abilityms_notice_file") {
202a1db01bdSopenharmony_ci  module_name = "abilityms"
203a1db01bdSopenharmony_ci  module_source_dir_list = [
204a1db01bdSopenharmony_ci    "//third_party/bounds_checking_function",
205a1db01bdSopenharmony_ci    "//third_party/cJSON",
206a1db01bdSopenharmony_ci  ]
207a1db01bdSopenharmony_ci}
208a1db01bdSopenharmony_ci
209a1db01bdSopenharmony_cilite_component("aafwk_services_lite") {
210a1db01bdSopenharmony_ci  features = [ ":abilityms" ]
211a1db01bdSopenharmony_ci  if (ohos_kernel_type != "liteos_m") {
212a1db01bdSopenharmony_ci    features += [
213a1db01bdSopenharmony_ci      "tools:aa",
214a1db01bdSopenharmony_ci      "unittest:ability_test",
215a1db01bdSopenharmony_ci    ]
216a1db01bdSopenharmony_ci  }
217a1db01bdSopenharmony_ci}
218