1fc223305Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
2fc223305Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3fc223305Sopenharmony_ci# you may not use this file except in compliance with the License.
4fc223305Sopenharmony_ci# You may obtain a copy of the License at
5fc223305Sopenharmony_ci#
6fc223305Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7fc223305Sopenharmony_ci#
8fc223305Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9fc223305Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10fc223305Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11fc223305Sopenharmony_ci# See the License for the specific language governing permissions and
12fc223305Sopenharmony_ci# limitations under the License.
13fc223305Sopenharmony_ciimport("//build/ohos.gni")
14fc223305Sopenharmony_ciimport("//foundation/distributeddatamgr/preferences/preferences.gni")
15fc223305Sopenharmony_ciconfig("native_preferences_config") {
16fc223305Sopenharmony_ci  visibility = [ ":*" ]
17fc223305Sopenharmony_ci  include_dirs = [
18fc223305Sopenharmony_ci    "include",
19fc223305Sopenharmony_ci    "${preferences_base_path}/frameworks/common/include",
20fc223305Sopenharmony_ci    "${preferences_native_path}/include",
21fc223305Sopenharmony_ci    "${preferences_native_path}/platform/include/",
22fc223305Sopenharmony_ci  ]
23fc223305Sopenharmony_ci}
24fc223305Sopenharmony_ci
25fc223305Sopenharmony_ciconfig("mock_config") {
26fc223305Sopenharmony_ci  include_dirs = [
27fc223305Sopenharmony_ci    "${preferences_native_path}/mock/ability_runtime/dataobs_manager/include",
28fc223305Sopenharmony_ci    "${preferences_native_path}/mock/ability_base/zuri/include",
29fc223305Sopenharmony_ci  ]
30fc223305Sopenharmony_ci  if (!is_android) {
31fc223305Sopenharmony_ci    include_dirs +=
32fc223305Sopenharmony_ci        [ "${preferences_native_path}/mock/c_utils/utils/base/include" ]
33fc223305Sopenharmony_ci  }
34fc223305Sopenharmony_ci}
35fc223305Sopenharmony_ci
36fc223305Sopenharmony_ciconfig("native_preferences_public_config") {
37fc223305Sopenharmony_ci  visibility = [ ":*" ]
38fc223305Sopenharmony_ci  include_dirs = [ "include" ]
39fc223305Sopenharmony_ci}
40fc223305Sopenharmony_ci
41fc223305Sopenharmony_ciconfig("adaptor_config") {
42fc223305Sopenharmony_ci  include_dirs = [ "//commonlibrary/c_utils/base/include" ]
43fc223305Sopenharmony_ci}
44fc223305Sopenharmony_ci
45fc223305Sopenharmony_cibase_sources = [
46fc223305Sopenharmony_ci  "${preferences_native_path}/platform/src/preferences_dfx_adapter.cpp",
47fc223305Sopenharmony_ci  "${preferences_native_path}/platform/src/preferences_file_lock.cpp",
48fc223305Sopenharmony_ci  "${preferences_native_path}/platform/src/preferences_thread.cpp",
49fc223305Sopenharmony_ci  "${preferences_native_path}/src/base64_helper.cpp",
50fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_base.cpp",
51fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_helper.cpp",
52fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_impl.cpp",
53fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_observer.cpp",
54fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_utils.cpp",
55fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_value.cpp",
56fc223305Sopenharmony_ci  "${preferences_native_path}/src/preferences_xml_utils.cpp",
57fc223305Sopenharmony_ci]
58fc223305Sopenharmony_ci
59fc223305Sopenharmony_ciif (!is_ohos) {
60fc223305Sopenharmony_ci  mock_sources = [
61fc223305Sopenharmony_ci    "${preferences_native_path}/mock/ability_base/zuri/src/uri.cpp",
62fc223305Sopenharmony_ci    "${preferences_native_path}/mock/ability_runtime/dataobs_manager/src/data_ability_observer_stub.cpp",
63fc223305Sopenharmony_ci    "${preferences_native_path}/mock/ability_runtime/dataobs_manager/src/dataobs_mgr_client.cpp",
64fc223305Sopenharmony_ci  ]
65fc223305Sopenharmony_ci  if (!is_android) {
66fc223305Sopenharmony_ci    mock_sources +=
67fc223305Sopenharmony_ci        [ "${preferences_native_path}/mock/c_utils/utils/base/src/refbase.cpp" ]
68fc223305Sopenharmony_ci  }
69fc223305Sopenharmony_ci}
70fc223305Sopenharmony_ci
71fc223305Sopenharmony_ciif (is_ohos) {
72fc223305Sopenharmony_ci  ohos_shared_library("native_preferences") {
73fc223305Sopenharmony_ci    branch_protector_ret = "pac_ret"
74fc223305Sopenharmony_ci    sanitize = {
75fc223305Sopenharmony_ci      boundary_sanitize = true
76fc223305Sopenharmony_ci      ubsan = true
77fc223305Sopenharmony_ci      cfi = true
78fc223305Sopenharmony_ci      cfi_cross_dso = true
79fc223305Sopenharmony_ci      debug = false
80fc223305Sopenharmony_ci    }
81fc223305Sopenharmony_ci    cflags_cc = [
82fc223305Sopenharmony_ci      "-std=c++17",
83fc223305Sopenharmony_ci      "-stdlib=libc++",
84fc223305Sopenharmony_ci      "-fvisibility=hidden",
85fc223305Sopenharmony_ci    ]
86fc223305Sopenharmony_ci    all_dependent_configs = [ ":native_preferences_public_config" ]
87fc223305Sopenharmony_ci    sources = base_sources
88fc223305Sopenharmony_ci    sources += [
89fc223305Sopenharmony_ci      "${preferences_native_path}/platform/src/preferences_db_adapter.cpp",
90fc223305Sopenharmony_ci      "${preferences_native_path}/src/preferences_enhance_impl.cpp",
91fc223305Sopenharmony_ci      "${preferences_native_path}/src/preferences_value_parcel.cpp",
92fc223305Sopenharmony_ci    ]
93fc223305Sopenharmony_ci
94fc223305Sopenharmony_ci    innerapi_tags = [
95fc223305Sopenharmony_ci      "platformsdk",
96fc223305Sopenharmony_ci      "sasdk",
97fc223305Sopenharmony_ci    ]
98fc223305Sopenharmony_ci
99fc223305Sopenharmony_ci    configs = [ ":native_preferences_config" ]
100fc223305Sopenharmony_ci
101fc223305Sopenharmony_ci    external_deps = [
102fc223305Sopenharmony_ci      "ability_base:zuri",
103fc223305Sopenharmony_ci      "ability_runtime:dataobs_manager",
104fc223305Sopenharmony_ci      "access_token:libaccesstoken_sdk",
105fc223305Sopenharmony_ci      "bounds_checking_function:libsec_shared",
106fc223305Sopenharmony_ci      "c_utils:utils",
107fc223305Sopenharmony_ci      "hilog:libhilog",
108fc223305Sopenharmony_ci      "hisysevent:libhisysevent",
109fc223305Sopenharmony_ci      "hitrace:hitrace_meter",
110fc223305Sopenharmony_ci      "ipc:ipc_core",
111fc223305Sopenharmony_ci      "libxml2:libxml2",
112fc223305Sopenharmony_ci    ]
113fc223305Sopenharmony_ci    public_configs = [ ":native_preferences_public_config" ]
114fc223305Sopenharmony_ci    subsystem_name = "distributeddatamgr"
115fc223305Sopenharmony_ci    part_name = "preferences"
116fc223305Sopenharmony_ci  }
117fc223305Sopenharmony_ci} else if (is_mingw || is_mac) {
118fc223305Sopenharmony_ci  ohos_shared_library("native_preferences") {
119fc223305Sopenharmony_ci    all_dependent_configs = [ ":native_preferences_public_config" ]
120fc223305Sopenharmony_ci    sources = base_sources
121fc223305Sopenharmony_ci    sources += mock_sources
122fc223305Sopenharmony_ci    innerapi_tags = [ "platformsdk" ]
123fc223305Sopenharmony_ci
124fc223305Sopenharmony_ci    configs = [ ":native_preferences_config" ]
125fc223305Sopenharmony_ci
126fc223305Sopenharmony_ci    configs += [ ":mock_config" ]
127fc223305Sopenharmony_ci    configs += [ ":adaptor_config" ]
128fc223305Sopenharmony_ci
129fc223305Sopenharmony_ci    cflags_cc = [
130fc223305Sopenharmony_ci      "-std=c++17",
131fc223305Sopenharmony_ci      "-stdlib=libc++",
132fc223305Sopenharmony_ci    ]
133fc223305Sopenharmony_ci    if (is_mac) {
134fc223305Sopenharmony_ci      buildos = "mac"
135fc223305Sopenharmony_ci      defines = [ "MAC_PLATFORM" ]
136fc223305Sopenharmony_ci    } else {
137fc223305Sopenharmony_ci      buildos = "windows"
138fc223305Sopenharmony_ci      defines = [ "WINDOWS_PLATFORM" ]
139fc223305Sopenharmony_ci      ldflags = [ "-lws2_32" ]
140fc223305Sopenharmony_ci    }
141fc223305Sopenharmony_ci    deps = [
142fc223305Sopenharmony_ci      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_${buildos}",
143fc223305Sopenharmony_ci    ]
144fc223305Sopenharmony_ci    external_deps = [
145fc223305Sopenharmony_ci      "bounds_checking_function:libsec_shared",
146fc223305Sopenharmony_ci      "libxml2:static_libxml2",
147fc223305Sopenharmony_ci    ]
148fc223305Sopenharmony_ci    public_configs = [ ":native_preferences_public_config" ]
149fc223305Sopenharmony_ci
150fc223305Sopenharmony_ci    subsystem_name = "distributeddatamgr"
151fc223305Sopenharmony_ci    part_name = "preferences"
152fc223305Sopenharmony_ci  }
153fc223305Sopenharmony_ci} else if (is_android) {
154fc223305Sopenharmony_ci  ohos_source_set("native_preferences") {
155fc223305Sopenharmony_ci    all_dependent_configs = [ ":native_preferences_public_config" ]
156fc223305Sopenharmony_ci    sources = base_sources
157fc223305Sopenharmony_ci    sources += mock_sources
158fc223305Sopenharmony_ci
159fc223305Sopenharmony_ci    defines = [ "ANDROID_PLATFORM" ]
160fc223305Sopenharmony_ci
161fc223305Sopenharmony_ci    configs = [ ":native_preferences_config" ]
162fc223305Sopenharmony_ci    configs += [ ":mock_config" ]
163fc223305Sopenharmony_ci    cflags_cc = [ "-fvisibility=hidden" ]
164fc223305Sopenharmony_ci    deps = [
165fc223305Sopenharmony_ci      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_android",
166fc223305Sopenharmony_ci      "//commonlibrary/c_utils/base:utilsbase",
167fc223305Sopenharmony_ci      "//third_party/bounds_checking_function:libsec_static",
168fc223305Sopenharmony_ci      "//third_party/libxml2:libxml2",
169fc223305Sopenharmony_ci    ]
170fc223305Sopenharmony_ci    public_configs = [ ":native_preferences_public_config" ]
171fc223305Sopenharmony_ci    subsystem_name = "distributeddatamgr"
172fc223305Sopenharmony_ci    part_name = "preferences"
173fc223305Sopenharmony_ci  }
174fc223305Sopenharmony_ci} else if (is_ios) {
175fc223305Sopenharmony_ci  ohos_source_set("native_preferences") {
176fc223305Sopenharmony_ci    all_dependent_configs = [ ":native_preferences_public_config" ]
177fc223305Sopenharmony_ci    sources = base_sources
178fc223305Sopenharmony_ci    sources += mock_sources
179fc223305Sopenharmony_ci    defines = [ "IOS_PLATFORM" ]
180fc223305Sopenharmony_ci
181fc223305Sopenharmony_ci    configs = [ ":native_preferences_config" ]
182fc223305Sopenharmony_ci    configs += [ ":mock_config" ]
183fc223305Sopenharmony_ci    cflags_cc = [ "-fvisibility=hidden" ]
184fc223305Sopenharmony_ci    deps = [
185fc223305Sopenharmony_ci      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_${target_os}",
186fc223305Sopenharmony_ci      "//commonlibrary/c_utils/base:utilsbase",
187fc223305Sopenharmony_ci      "//third_party/bounds_checking_function:libsec_static",
188fc223305Sopenharmony_ci      "//third_party/libxml2:libxml2",
189fc223305Sopenharmony_ci    ]
190fc223305Sopenharmony_ci    public_configs = [ ":native_preferences_public_config" ]
191fc223305Sopenharmony_ci    subsystem_name = "distributeddatamgr"
192fc223305Sopenharmony_ci    part_name = "preferences"
193fc223305Sopenharmony_ci  }
194fc223305Sopenharmony_ci}
195fc223305Sopenharmony_ci
196fc223305Sopenharmony_ciohos_static_library("native_preferences_static") {
197fc223305Sopenharmony_ci  sources = base_sources
198fc223305Sopenharmony_ci  configs = [ ":native_preferences_config" ]
199fc223305Sopenharmony_ci
200fc223305Sopenharmony_ci  if (is_mingw || is_mac) {
201fc223305Sopenharmony_ci    configs += [ ":mock_config" ]
202fc223305Sopenharmony_ci    configs += [ ":adaptor_config" ]
203fc223305Sopenharmony_ci
204fc223305Sopenharmony_ci    sources += mock_sources
205fc223305Sopenharmony_ci    cflags_cc = [
206fc223305Sopenharmony_ci      "-std=c++17",
207fc223305Sopenharmony_ci      "-stdlib=libc++",
208fc223305Sopenharmony_ci    ]
209fc223305Sopenharmony_ci    if (is_mac) {
210fc223305Sopenharmony_ci      buildos = "mac"
211fc223305Sopenharmony_ci      defines = [ "MAC_PLATFORM" ]
212fc223305Sopenharmony_ci    } else {
213fc223305Sopenharmony_ci      buildos = "windows"
214fc223305Sopenharmony_ci      defines = [ "WINDOWS_PLATFORM" ]
215fc223305Sopenharmony_ci      ldflags = [ "-lws2_32" ]
216fc223305Sopenharmony_ci    }
217fc223305Sopenharmony_ci    deps = [
218fc223305Sopenharmony_ci      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_${buildos}",
219fc223305Sopenharmony_ci    ]
220fc223305Sopenharmony_ci    external_deps = [
221fc223305Sopenharmony_ci      "bounds_checking_function:libsec_shared",
222fc223305Sopenharmony_ci      "libxml2:static_libxml2",
223fc223305Sopenharmony_ci    ]
224fc223305Sopenharmony_ci  } else {
225fc223305Sopenharmony_ci    if (is_ohos) {
226fc223305Sopenharmony_ci      branch_protector_ret = "pac_ret"
227fc223305Sopenharmony_ci      sanitize = {
228fc223305Sopenharmony_ci        boundary_sanitize = true
229fc223305Sopenharmony_ci        ubsan = true
230fc223305Sopenharmony_ci        cfi = true
231fc223305Sopenharmony_ci        cfi_cross_dso = true
232fc223305Sopenharmony_ci        debug = false
233fc223305Sopenharmony_ci      }
234fc223305Sopenharmony_ci      sources += [
235fc223305Sopenharmony_ci        "${preferences_native_path}/platform/src/preferences_db_adapter.cpp",
236fc223305Sopenharmony_ci        "${preferences_native_path}/src/preferences_enhance_impl.cpp",
237fc223305Sopenharmony_ci        "${preferences_native_path}/src/preferences_value_parcel.cpp",
238fc223305Sopenharmony_ci      ]
239fc223305Sopenharmony_ci    }
240fc223305Sopenharmony_ci    external_deps = [
241fc223305Sopenharmony_ci      "ability_base:zuri",
242fc223305Sopenharmony_ci      "ability_runtime:dataobs_manager",
243fc223305Sopenharmony_ci      "access_token:libaccesstoken_sdk",
244fc223305Sopenharmony_ci      "bounds_checking_function:libsec_shared",
245fc223305Sopenharmony_ci      "c_utils:utils",
246fc223305Sopenharmony_ci      "hilog:libhilog",
247fc223305Sopenharmony_ci      "hisysevent:libhisysevent",
248fc223305Sopenharmony_ci      "hitrace:hitrace_meter",
249fc223305Sopenharmony_ci      "ipc:ipc_core",
250fc223305Sopenharmony_ci      "libxml2:libxml2",
251fc223305Sopenharmony_ci    ]
252fc223305Sopenharmony_ci  }
253fc223305Sopenharmony_ci
254fc223305Sopenharmony_ci  public_configs = [ ":native_preferences_public_config" ]
255fc223305Sopenharmony_ci
256fc223305Sopenharmony_ci  subsystem_name = "distributeddatamgr"
257fc223305Sopenharmony_ci  part_name = "preferences"
258fc223305Sopenharmony_ci}
259