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.
13
14DSOFTBUS_ROOT_PATH = "./../../.."
15import("$DSOFTBUS_ROOT_PATH/dsoftbus.gni")
16
17NSTACKX_ROOT = "$DSOFTBUS_ROOT_PATH/components/nstackx"
18fillp_source = [
19  "src/app_lib/src/api.c",
20  "src/app_lib/src/epoll_app.c",
21  "src/app_lib/src/fillp_stack_app_config.c",
22  "src/app_lib/src/fillp_stack_app_config_in.c",
23  "src/app_lib/src/socket_app.c",
24  "src/app_lib/src/spunge_app.c",
25  "src/app_lib/src/socket_opt.c",
26  "src/app_lib/src/fillp_dfx.c",
27  "src/fillp_lib/src/fillp_buf_item.c",
28  "src/fillp_lib/src/fillp_cookie.c",
29  "src/fillp_lib/src/fillp_stack_config.c",
30  "src/fillp_lib/src/fillp_stack_config_in.c",
31  "src/fillp_lib/src/hmac.c",
32  "src/fillp_lib/src/net.c",
33  "src/fillp_lib/src/pcb.c",
34  "src/fillp_lib/src/res.c",
35  "src/fillp_lib/src/sha256.c",
36  "src/fillp_lib/src/spunge_core.c",
37  "src/fillp_lib/src/spunge_stack.c",
38  "src/fillp_lib/src/sysio.c",
39  "src/fillp_lib/src/sysio_udp.c",
40  "src/fillp_lib/src/fillp/fillp.c",
41  "src/fillp_lib/src/fillp/fillp_common.c",
42  "src/fillp_lib/src/fillp/fillp_conn.c",
43  "src/fillp_lib/src/fillp/fillp_flow_control_alg0.c",
44  "src/fillp_lib/src/fillp/fillp_flow_control.c",
45  "src/fillp_lib/src/fillp/fillp_input.c",
46  "src/fillp_lib/src/fillp/fillp_output.c",
47  "src/fillp_lib/src/fillp/fillp_pcb.c",
48  "src/fillp_lib/src/fillp/fillp_timer.c",
49  "src/fillp_lib/src/fillp/fillp_frame.c",
50  "src/fillp_lib/src/fillp/fillp_mgt_msg_log.c",
51  "src/public/src/callbacks.c",
52  "src/public/src/dympool.c",
53  "src/public/src/epoll.c",
54  "src/public/src/fillp_os.c",
55  "src/public/src/lf_ring.c",
56  "src/public/src/log.c",
57  "src/public/src/rb_tree.c",
58  "src/public/src/skiplist.c",
59  "src/public/src/socket_common.c",
60  "src/public/src/spunge.c",
61  "src/public/src/spunge_mem.c",
62  "src/public/src/spunge_message.c",
63  "src/public/src/timing_wheel.c",
64]
65
66fillp_include = [
67  "include",
68  "src/app_lib/include",
69  "src/fillp_lib/include",
70  "src/fillp_lib/include/fillp",
71  "src/public/include",
72]
73
74fillp_cflags = [
75  "-DPDT_MIRACAST",
76  "-DFILLP_SERVER_SUPPORT",
77  "-DFILLP_LITTLE_ENDIAN",
78  "-DFILLP_LINUX",
79  "-DFILLP_POWER_SAVE",
80  "-DFILLP_POWER_SAVING_LINUX",
81  "-DFILLP_ENABLE_DFX_HIDUMPER",
82  "-DFILLP_MGT_MSG_LOG",
83]
84
85if (defined(ohos_lite)) {
86  import("//build/lite/config/component/lite_component.gni")
87  shared_library("FillpSo.open") {
88    cflags = fillp_cflags
89    cflags += [ "-Wall" ]
90    include_dirs = fillp_include
91    sources = fillp_source
92    deps = [ "$NSTACKX_ROOT/nstackx_util:nstackx_util.open" ]
93    external_deps = [ "bounds_checking_function:libsec_shared" ]
94
95    if (ohos_kernel_type == "liteos_a") {
96      cflags += [ "-DNSTACKX_WITH_LITEOS" ]
97    } else {
98      cflags += [ "-DNSTACKX_WITH_HMOS_LINUX" ]
99    }
100  }
101} else {
102  import("//build/ohos.gni")
103  ohos_shared_library("FillpSo.open") {
104    sanitize = {
105      cfi = true
106      cfi_cross_dso = true
107      debug = false
108    }
109    branch_protector_ret = "pac_ret"
110
111    cflags = fillp_cflags
112    cflags += [
113      "-Wall",
114      "-DNSTACKX_WITH_HMOS_LINUX",
115    ]
116
117    include_dirs = fillp_include
118    sources = fillp_source
119    deps = [ "$NSTACKX_ROOT/nstackx_util:nstackx_util.open" ]
120    external_deps = [ "bounds_checking_function:libsec_shared" ]
121    if (is_standard_system) {
122      external_deps += [ "c_utils:utils" ]
123    }
124
125    innerapi_tags = [ "platformsdk_indirect" ]
126    part_name = "dsoftbus"
127    subsystem_name = "communication"
128  }
129}
130