1# Copyright (C) 2024 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/filemanagement/dfs_service/distributedfile.gni")
16config("optimize-size") {
17  cflags = [
18    "-fdata-sections",
19    "-ffunction-sections",
20    "-Oz",
21  ]
22  cflags_cc = [
23    "-fvisibility-inlines-hidden",
24    "-Oz",
25  ]
26}
27ohos_shared_library("cloudsync_sa") {
28  branch_protector_ret = "pac_ret"
29  configs = [ ":optimize-size" ]
30  sanitize = {
31    integer_overflow = true
32    ubsan = true
33    boundary_sanitize = true
34    cfi = true
35    cfi_cross_dso = true
36    debug = false
37  }
38  include_dirs = [
39    "include",
40    "include/cycle_task",
41    "include/cycle_task/tasks",
42    "include/transport",
43    "include/transport/softbus",
44    "${services_path}/cloudfiledaemon/include/cloud_disk",
45    "${innerkits_native_path}/cloudsync_kit_inner",
46  ]
47
48  cycle_task = [
49    "src/cycle_task/cycle_task.cpp",
50    "src/cycle_task/cycle_task_runner.cpp",
51    "src/cycle_task/tasks/optimize_storage_task.cpp",
52    "src/cycle_task/tasks/periodic_check_task.cpp",
53    "src/cycle_task/tasks/report_statistics_task.cpp",
54    "src/cycle_task/tasks/save_subscription_task.cpp",
55    "src/cycle_task/tasks/database_backup_task.cpp",
56  ]
57
58  transport = [
59    "src/transport/file_transfer_manager.cpp",
60    "src/transport/message_handler.cpp",
61    "src/transport/softbus/session_manager.cpp",
62    "src/transport/softbus/softbus_adapter.cpp",
63    "src/transport/softbus/softbus_session.cpp",
64  ]
65
66  sources = [
67    "${distributedfile_path}/frameworks/native/cloudsync_kit_inner/src/cloud_sync_common.cpp",
68    "src/ipc/cloud_sync_service.cpp",
69    "src/ipc/cloud_sync_service_stub.cpp",
70    "src/ipc/download_asset_callback_manager.cpp",
71    "src/ipc/download_asset_callback_proxy.cpp",
72    "src/sync_rule/battery_status_listener.cpp",
73    "src/sync_rule/screen_status_listener.cpp",
74    "src/sync_rule/user_status_listener.cpp",
75  ]
76
77  sources += cycle_task
78  sources += transport
79
80  defines = [
81    "LOG_DOMAIN=0xD004307",
82    "LOG_TAG=\"CLOUDSYNC_SA\"",
83  ]
84
85  deps = [
86    "${clouddisk_database_path}:clouddisk_database",
87    "${innerkits_native_path}/cloud_file_kit_inner:cloudfile_kit",
88    "${utils_path}:libdistributedfiledentry",
89    "${utils_path}:libdistributedfileutils",
90  ]
91
92  external_deps = [
93    "ability_base:want",
94    "ability_base:zuri",
95    "ability_runtime:ability_manager",
96    "app_file_service:sandbox_helper_native",
97    "c_utils:utils",
98    "common_event_service:cesfwk_innerkits",
99    "dsoftbus:softbus_client",
100    "ffrt:libffrt",
101    "hilog:libhilog",
102    "hitrace:hitrace_meter",
103    "init:libbegetutil",
104    "ipc:ipc_single",
105    "libfuse:libfuse",
106    "netmanager_base:net_conn_manager_if",
107    "os_account:os_account_innerkits",
108    "safwk:system_ability_fwk",
109    "samgr:samgr_proxy",
110  ]
111
112  if (cloudsync_service_hicollie_enable) {
113    external_deps += [ "hicollie:libhicollie" ]
114    defines += [ "HICOLLIE_ENABLE" ]
115  }
116
117  if (cloudsync_service_resource_schedule) {
118    external_deps += [ "resource_schedule_service:ressched_client" ]
119  }
120
121  use_exceptions = true
122  part_name = "dfs_service"
123  subsystem_name = "filemanagement"
124}
125
126ohos_static_library("cloudsync_sa_static") {
127  branch_protector_ret = "pac_ret"
128  sanitize = {
129    integer_overflow = true
130    ubsan = true
131    boundary_sanitize = true
132    cfi = true
133    cfi_cross_dso = true
134    debug = false
135  }
136  include_dirs = [
137    "include",
138    "include/cycle_task",
139    "include/cycle_task/tasks",
140    "include/transport",
141    "include/transport/softbus",
142    "${clouddisk_database_path}/include",
143    "${services_path}/cloudfiledaemon/include/cloud_disk",
144    "${innerkits_native_path}/cloudsync_kit_inner",
145    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/include",
146    "${media_library_path}/interfaces/inner_api/media_library_helper/include",
147    "${media_library_path}/frameworks/services/media_thumbnail/include",
148    "${media_library_path}/frameworks/utils/include",
149    "${distributedfile_path}/test/unittests/cloudsync_sa/mock/",
150    "//third_party/e2fsprogs/e2fsprogs/lib",
151  ]
152
153  cycle_task = [
154    "src/cycle_task/cycle_task.cpp",
155    "src/cycle_task/cycle_task_runner.cpp",
156    "src/cycle_task/tasks/optimize_storage_task.cpp",
157    "src/cycle_task/tasks/periodic_check_task.cpp",
158    "src/cycle_task/tasks/report_statistics_task.cpp",
159    "src/cycle_task/tasks/save_subscription_task.cpp",
160    "src/cycle_task/tasks/database_backup_task.cpp",
161  ]
162
163  transport = [
164    "src/transport/file_transfer_manager.cpp",
165    "src/transport/message_handler.cpp",
166    "src/transport/softbus/session_manager.cpp",
167    "src/transport/softbus/softbus_adapter.cpp",
168    "src/transport/softbus/softbus_session.cpp",
169  ]
170
171  sources = [
172    "${distributedfile_path}/frameworks/native/cloudsync_kit_inner/src/cloud_sync_common.cpp",
173    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/src/base_column.cpp",
174    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/src/media_column.cpp",
175    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/src/medialibrary_business_record_column.cpp",
176    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/src/photo_album_column.cpp",
177    "${media_library_path}/frameworks/innerkitsimpl/media_library_helper/src/photo_map_column.cpp",
178    "src/ipc/cloud_sync_service.cpp",
179    "src/ipc/cloud_sync_service_stub.cpp",
180    "src/ipc/download_asset_callback_manager.cpp",
181    "src/ipc/download_asset_callback_proxy.cpp",
182    "src/sync_rule/battery_status_listener.cpp",
183    "src/sync_rule/screen_status_listener.cpp",
184    "src/sync_rule/user_status_listener.cpp",
185  ]
186
187  sources += cycle_task
188  sources += transport
189
190  defines = [
191    "LOG_DOMAIN=0xD004307",
192    "LOG_TAG=\"CLOUDSYNC_SA\"",
193  ]
194
195  deps = [
196    "${clouddisk_database_path}:clouddisk_database",
197    "${innerkits_native_path}/cloud_file_kit_inner:cloudfile_kit",
198    "${utils_path}:libdistributedfiledentry",
199    "${utils_path}:libdistributedfileutils",
200    "//third_party/e2fsprogs:libext2_uuid",
201  ]
202
203  external_deps = [
204    "ability_base:want",
205    "ability_base:zuri",
206    "ability_runtime:ability_manager",
207    "ability_runtime:dataobs_manager",
208    "app_file_service:sandbox_helper_native",
209    "c_utils:utils",
210    "common_event_service:cesfwk_innerkits",
211    "dsoftbus:softbus_client",
212    "eventhandler:libeventhandler",
213    "ffrt:libffrt",
214    "hilog:libhilog",
215    "hitrace:hitrace_meter",
216    "init:libbegetutil",
217    "ipc:ipc_single",
218    "libfuse:libfuse",
219    "netmanager_base:net_conn_manager_if",
220    "os_account:os_account_innerkits",
221    "power_manager:powermgr_client",
222    "relational_store:native_rdb",
223    "safwk:system_ability_fwk",
224    "samgr:samgr_proxy",
225  ]
226
227  if (cloudsync_service_hicollie_enable) {
228    external_deps += [ "hicollie:libhicollie" ]
229    defines += [ "HICOLLIE_ENABLE" ]
230  }
231
232  deps +=
233      [ "${distributedfile_path}/adapter/cloud_adapter_example:cloud_adapter" ]
234
235  if (cloudsync_service_resource_schedule) {
236    external_deps += [ "resource_schedule_service:ressched_client" ]
237    defines += [ "CLOUDSYNC_SERVICE_RESOURCE_SCHEDULE" ]
238  }
239
240  if (cloudsync_service_power) {
241    external_deps += [ "battery_manager:batterysrv_client" ]
242
243    defines += [ "SUPPORT_POWER" ]
244  }
245
246  if (is_emulator) {
247    defines += [ "EMULATOR" ]
248  }
249
250  use_exceptions = true
251  part_name = "dfs_service"
252  subsystem_name = "filemanagement"
253}
254