1# Copyright (c) 2022 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.
13import("//base/startup/init/begetd.gni")
14import("//build/ohos.gni")
15
16config("exported_header_files") {
17  visibility = [ ":*" ]
18  include_dirs = [
19    "//base/startup/init/interfaces/innerkits/include",
20    "//base/startup/init/interfaces/interfaces/innerkits/include/param",
21    "//base/startup/init/interfaces/service/param/include",
22  ]
23}
24
25config("exported_header_files_for_lite") {
26  visibility = [ ":*" ]
27}
28
29param_include_dirs = [
30  "//base/startup/init/services/param/include",
31  "//base/startup/init/services/param/adapter",
32  "//base/startup/init/services/param/linux",
33  "//base/startup/init/services/param/base",
34  "//base/startup/init/interfaces/innerkits/include/param",
35  "//base/startup/init/interfaces/innerkits/include",
36  "//base/startup/init/services/init/include",
37  "//base/startup/init/services/log",
38  "//base/startup/init/services/modules/init_hook",
39  "//base/startup/init/interfaces/innerkits/include/syspara",
40  "//base/startup/init/interfaces/innerkits/init_module_engine/include",
41  "//base/startup/init/services/loopevent/include",
42]
43
44param_service_sources = [
45  "//base/startup/init/services/param/linux/param_message.c",
46  "//base/startup/init/services/param/linux/param_msgadp.c",
47  "//base/startup/init/services/param/linux/param_service.c",
48  "//base/startup/init/services/param/manager/param_manager.c",
49  "//base/startup/init/services/param/manager/param_persist.c",
50  "//base/startup/init/services/param/manager/param_server.c",
51]
52
53param_trigger_sources = [
54  "//base/startup/init/services/param/trigger/trigger_checker.c",
55  "//base/startup/init/services/param/trigger/trigger_manager.c",
56  "//base/startup/init/services/param/trigger/trigger_processor.c",
57]
58
59param_client_sources = [
60  "//base/startup/init/services/param/linux/param_message.c",
61  "//base/startup/init/services/param/linux/param_request.c",
62  "//base/startup/init/services/param/manager/param_manager.c",
63]
64
65# only for linux
66if (defined(ohos_lite)) {
67  static_library("param_init") {
68    defines = []
69    sources = param_service_sources
70    sources += param_trigger_sources
71    sources +=
72        [ "//base/startup/init/services/param/liteos/param_persistadp.c" ]
73    include_dirs = param_include_dirs
74    include_dirs += [
75      "//base/security/selinux_adapter/interfaces/policycoreutils/include",
76      "//commonlibrary/utils_lite/include",
77      "//third_party/cJSON",
78    ]
79    public_configs = [ ":exported_header_files" ]
80    public_configs += [ ":exported_header_files_for_lite" ]
81    external_deps = [ "bounds_checking_function:libsec_static" ]
82    defines += [
83      "_GNU_SOURCE",
84      "__LINUX__",
85      "OHOS_LITE",
86      "PARAM_SUPPORT_REAL_CHECK",
87      "INCREMENTAL_VERSION=\"${ohos_version}\"",
88      "BUILD_TYPE=\"${ohos_build_type}\"",
89      "BUILD_USER=\"${ohos_build_user}\"",
90      "BUILD_TIME=\"${ohos_build_time}\"",
91      "BUILD_HOST=\"${ohos_build_host}\"",
92      "BUILD_ROOTHASH=\"${ohos_build_roothash}\"",
93    ]
94  }
95
96  static_library("param_client") {
97    include_dirs = param_include_dirs
98    include_dirs += [
99      "//base/security/selinux_adapter/interfaces/policycoreutils/include",
100      "//commonlibrary/utils_lite/include",
101      "//third_party/cJSON",
102    ]
103    sources = param_client_sources
104    public_configs = [ ":exported_header_files" ]
105    public_configs += [ ":exported_header_files_for_lite" ]
106    external_deps = [ "bounds_checking_function:libsec_static" ]
107    cflags = [ "-fPIC" ]
108    defines = [
109      "_GNU_SOURCE",
110      "__LINUX__",
111    ]
112  }
113} else {
114  ohos_static_library("param_init") {
115    sources = param_service_sources
116    sources += param_trigger_sources
117    sources +=
118        [ "//base/startup/init/services/param/adapter/param_persistadp.c" ]
119    include_dirs = param_include_dirs
120    public_configs = [ ":exported_header_files" ]
121    defines = [
122      "_GNU_SOURCE",
123      "PARAM_SUPPORT_REAL_CHECK",
124      "SUPPORT_PARAM_LOAD_HOOK",
125    ]
126    external_deps = [
127      "bounds_checking_function:libsec_static",
128      "cJSON:cjson",
129    ]
130    public_external_deps = [ "selinux:libselinux" ]
131
132    if (param_base_log) {
133      defines += [ "PARAM_BASE_LOG" ]
134    }
135    if (defined(ohos_build_type)) {
136      defines += [ "BUILD_TYPE=\"${ohos_build_type}\"" ]
137    }
138    if (defined(ohos_version)) {
139      defines += [ "INCREMENTAL_VERSION=\"${ohos_version}\"" ]
140    }
141    if (defined(ohos_build_user)) {
142      defines += [ "BUILD_USER=\"${ohos_build_user}\"" ]
143    }
144    if (defined(ohos_build_time)) {
145      defines += [ "BUILD_TIME=\"${ohos_build_time}\"" ]
146    }
147    if (defined(ohos_build_host)) {
148      defines += [ "BUILD_HOST=\"${ohos_build_host}\"" ]
149    }
150
151    if (build_selinux) {
152      defines += [
153        "PARAM_SUPPORT_SELINUX",
154        "PARAMWORKSPACE_NEED_MUTEX",
155      ]
156      external_deps += [ "selinux_adapter:libselinux_parameter_static" ]
157    }
158
159    deps = [ "//base/startup/init/services/param/base:param_base" ]
160    part_name = "init"
161    subsystem_name = "startup"
162  }
163
164  ohos_static_library("param_client") {
165    sources = param_client_sources
166    include_dirs = param_include_dirs
167    public_configs = [ ":exported_header_files" ]
168    deps = [
169      "//base/startup/init/services/log:agent_log",
170      "//base/startup/init/services/param/base:param_base",
171    ]
172    external_deps = [
173      "bounds_checking_function:libsec_static",
174      "cJSON:cjson_static",
175    ]
176    if (build_selinux) {
177      external_deps += [ "selinux_adapter:libselinux_parameter_static" ]
178    }
179
180    cflags = [ "-Wno-deprecated-pragma" ]
181    defines = [
182      "_GNU_SOURCE",
183      "INIT_AGENT",
184    ]
185    if (build_selinux) {
186      defines += [
187        "PARAM_SUPPORT_SELINUX",
188        "PARAMWORKSPACE_NEED_MUTEX",
189      ]
190    }
191    if (param_base_log) {
192      defines += [ "PARAM_BASE_LOG" ]
193    }
194    part_name = "init"
195    subsystem_name = "startup"
196  }
197}
198