119e95205Sopenharmony_ci# Copyright (C) 2021-2022 Huawei Device Co., Ltd.
219e95205Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
319e95205Sopenharmony_ci# you may not use this file except in compliance with the License.
419e95205Sopenharmony_ci# You may obtain a copy of the License at
519e95205Sopenharmony_ci#
619e95205Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
719e95205Sopenharmony_ci#
819e95205Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
919e95205Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1019e95205Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1119e95205Sopenharmony_ci# See the License for the specific language governing permissions and
1219e95205Sopenharmony_ci# limitations under the License.
1319e95205Sopenharmony_ci
1419e95205Sopenharmony_ciimport("//build/ohos.gni")
1519e95205Sopenharmony_ciimport("//build/ohos_var.gni")
1619e95205Sopenharmony_ci
1719e95205Sopenharmony_ciSUBSYSTEM_DIR = "//foundation/communication"
1819e95205Sopenharmony_ciPART_DIR = "$SUBSYSTEM_DIR/bluetooth_service/services/bluetooth"
1919e95205Sopenharmony_ci
2019e95205Sopenharmony_ciPlatformSrc = [
2119e95205Sopenharmony_ci  "platform/src/alarm.c",
2219e95205Sopenharmony_ci  "platform/src/allocator.c",
2319e95205Sopenharmony_ci  "platform/src/buffer.c",
2419e95205Sopenharmony_ci  "platform/src/event.c",
2519e95205Sopenharmony_ci  "platform/src/list.c",
2619e95205Sopenharmony_ci  "platform/src/module.c",
2719e95205Sopenharmony_ci  "platform/src/mutex.c",
2819e95205Sopenharmony_ci  "platform/src/packet.c",
2919e95205Sopenharmony_ci  "platform/src/queue.c",
3019e95205Sopenharmony_ci  "platform/src/random.c",
3119e95205Sopenharmony_ci  "platform/src/reactor.c",
3219e95205Sopenharmony_ci  "platform/src/semaphore.c",
3319e95205Sopenharmony_ci  "platform/src/thread.c",
3419e95205Sopenharmony_ci]
3519e95205Sopenharmony_ci
3619e95205Sopenharmony_ciStackAttSrc = [
3719e95205Sopenharmony_ci  "src/att/att_common.c",
3819e95205Sopenharmony_ci  "src/att/att_connect.c",
3919e95205Sopenharmony_ci  "src/att/att_init.c",
4019e95205Sopenharmony_ci  "src/att/att_receive.c",
4119e95205Sopenharmony_ci  "src/att/att_send_request.c",
4219e95205Sopenharmony_ci  "src/att/att_send_response.c",
4319e95205Sopenharmony_ci]
4419e95205Sopenharmony_ci
4519e95205Sopenharmony_ciStackAvctpSrc = [
4619e95205Sopenharmony_ci  "src/avctp/avctp_api.c",
4719e95205Sopenharmony_ci  "src/avctp/avctp_br_act.c",
4819e95205Sopenharmony_ci  "src/avctp/avctp_br_l2cap.c",
4919e95205Sopenharmony_ci  "src/avctp/avctp_br.c",
5019e95205Sopenharmony_ci  "src/avctp/avctp_conn.c",
5119e95205Sopenharmony_ci  "src/avctp/avctp_ctrl_act.c",
5219e95205Sopenharmony_ci  "src/avctp/avctp_ctrl_l2cap.c",
5319e95205Sopenharmony_ci  "src/avctp/avctp_ctrl.c",
5419e95205Sopenharmony_ci  "src/avctp/avctp_dev.c",
5519e95205Sopenharmony_ci  "src/avctp/avctp_gap.c",
5619e95205Sopenharmony_ci  "src/avctp/avctp_st.c",
5719e95205Sopenharmony_ci  "src/avctp/avctp.c",
5819e95205Sopenharmony_ci]
5919e95205Sopenharmony_ci
6019e95205Sopenharmony_ciStackAvdtpSrc = [
6119e95205Sopenharmony_ci  "src/avdtp/avdtp_api.c",
6219e95205Sopenharmony_ci  "src/avdtp/avdtp_ctrl.c",
6319e95205Sopenharmony_ci  "src/avdtp/avdtp_impl.c",
6419e95205Sopenharmony_ci  "src/avdtp/avdtp_l2cap.c",
6519e95205Sopenharmony_ci  "src/avdtp/avdtp_message.c",
6619e95205Sopenharmony_ci  "src/avdtp/avdtp.c",
6719e95205Sopenharmony_ci]
6819e95205Sopenharmony_ci
6919e95205Sopenharmony_ciStackBtmSrc = [
7019e95205Sopenharmony_ci  "src/btm/btm_acl.c",
7119e95205Sopenharmony_ci  "src/btm/btm_controller.c",
7219e95205Sopenharmony_ci  "src/btm/btm_inq_db.c",
7319e95205Sopenharmony_ci  "src/btm/btm_interop.c",
7419e95205Sopenharmony_ci  "src/btm/btm_le_sec.c",
7519e95205Sopenharmony_ci  "src/btm/btm_pm.c",
7619e95205Sopenharmony_ci  "src/btm/btm_sco_def.c",
7719e95205Sopenharmony_ci  "src/btm/btm_sco.c",
7819e95205Sopenharmony_ci  "src/btm/btm_snoop_filter_acl.c",
7919e95205Sopenharmony_ci  "src/btm/btm_snoop_filter_cmd.c",
8019e95205Sopenharmony_ci  "src/btm/btm_snoop_filter_evt.c",
8119e95205Sopenharmony_ci  "src/btm/btm_snoop_filter.c",
8219e95205Sopenharmony_ci  "src/btm/btm_snoop.c",
8319e95205Sopenharmony_ci  "src/btm/btm_thread.c",
8419e95205Sopenharmony_ci  "src/btm/btm_wl.c",
8519e95205Sopenharmony_ci  "src/btm/btm.c",
8619e95205Sopenharmony_ci]
8719e95205Sopenharmony_ci
8819e95205Sopenharmony_ciStackGapSrc = [
8919e95205Sopenharmony_ci  "src/gap/gap.c",
9019e95205Sopenharmony_ci  "src/gap/gap_br_discover.c",
9119e95205Sopenharmony_ci  "src/gap/gap_br_sec.c",
9219e95205Sopenharmony_ci  "src/gap/gap_le_adv.c",
9319e95205Sopenharmony_ci  "src/gap/gap_le_scan.c",
9419e95205Sopenharmony_ci  "src/gap/gap_le_conn.c",
9519e95205Sopenharmony_ci  "src/gap/gap_le_sec.c",
9619e95205Sopenharmony_ci  "src/gap/gap_btm_receive.c",
9719e95205Sopenharmony_ci  "src/gap/gap_hci_receive.c",
9819e95205Sopenharmony_ci  "src/gap/gap_if.c",
9919e95205Sopenharmony_ci  "src/gap/gap_l2cap_receive.c",
10019e95205Sopenharmony_ci  "src/gap/gap_le_if.c",
10119e95205Sopenharmony_ci  "src/gap/gap_sm_receive.c",
10219e95205Sopenharmony_ci  "src/gap/gap_task_common.c",
10319e95205Sopenharmony_ci]
10419e95205Sopenharmony_ci
10519e95205Sopenharmony_ciStackHciSrc = [
10619e95205Sopenharmony_ci  "src/hci/hdi_wrapper.c",
10719e95205Sopenharmony_ci  "src/hci/acl/hci_acl.c",
10819e95205Sopenharmony_ci  "src/hci/hci.c",
10919e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd.c",
11019e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_controller_baseband.c",
11119e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure.c",
11219e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_controller_baseband.c",
11319e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_info_params.c",
11419e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_le_controller.c",
11519e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_link_ctrl.c",
11619e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_link_policy.c",
11719e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_failure_status_params.c",
11819e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_info_params.c",
11919e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_le_controller.c",
12019e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_link_ctrl.c",
12119e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_link_policy.c",
12219e95205Sopenharmony_ci  "src/hci/cmd/hci_cmd_status_params.c",
12319e95205Sopenharmony_ci  "src/hci/evt/hci_evt.c",
12419e95205Sopenharmony_ci  "src/hci/evt/hci_evt_cmd_complete.c",
12519e95205Sopenharmony_ci  "src/hci/evt/hci_evt_controller_baseband_cmd_complete.c",
12619e95205Sopenharmony_ci  "src/hci/evt/hci_evt_info_params_cmd_complete.c",
12719e95205Sopenharmony_ci  "src/hci/evt/hci_evt_link_ctrl_cmd_complete.c",
12819e95205Sopenharmony_ci  "src/hci/evt/hci_evt_link_policy_cmd_complete.c",
12919e95205Sopenharmony_ci  "src/hci/evt/hci_evt_status_params_cmd_complete.c",
13019e95205Sopenharmony_ci  "src/hci/evt/hci_evt_le.c",
13119e95205Sopenharmony_ci  "src/hci/evt/hci_evt_le_cmd_complete.c",
13219e95205Sopenharmony_ci  "src/hci/hci_failure.c",
13319e95205Sopenharmony_ci  "src/hci/hci_vendor_if.c",
13419e95205Sopenharmony_ci]
13519e95205Sopenharmony_ci
13619e95205Sopenharmony_ciStackL2capSrc = [
13719e95205Sopenharmony_ci  "src/l2cap/l2cap_cmn.c",
13819e95205Sopenharmony_ci  "src/l2cap/l2cap_crc.c",
13919e95205Sopenharmony_ci  "src/l2cap/l2cap_le.c",
14019e95205Sopenharmony_ci  "src/l2cap/l2cap_inst.c",
14119e95205Sopenharmony_ci  "src/l2cap/l2cap_core.c",
14219e95205Sopenharmony_ci  "src/l2cap/l2cap.c",
14319e95205Sopenharmony_ci  "src/l2cap/l2cap_if.c",
14419e95205Sopenharmony_ci  "src/l2cap/l2cap_le_if.c",
14519e95205Sopenharmony_ci]
14619e95205Sopenharmony_ci
14719e95205Sopenharmony_ciStackRfcommSrc = [
14819e95205Sopenharmony_ci  "src/rfcomm/rfcomm_api.c",
14919e95205Sopenharmony_ci  "src/rfcomm/rfcomm_channel_fsm.c",
15019e95205Sopenharmony_ci  "src/rfcomm/rfcomm_channel.c",
15119e95205Sopenharmony_ci  "src/rfcomm/rfcomm_frames.c",
15219e95205Sopenharmony_ci  "src/rfcomm/rfcomm_gap_if.c",
15319e95205Sopenharmony_ci  "src/rfcomm/rfcomm_gap.c",
15419e95205Sopenharmony_ci  "src/rfcomm/rfcomm_l2cap_if.c",
15519e95205Sopenharmony_ci  "src/rfcomm/rfcomm_l2cap.c",
15619e95205Sopenharmony_ci  "src/rfcomm/rfcomm_server.c",
15719e95205Sopenharmony_ci  "src/rfcomm/rfcomm_session_fsm.c",
15819e95205Sopenharmony_ci  "src/rfcomm/rfcomm_session.c",
15919e95205Sopenharmony_ci  "src/rfcomm/rfcomm.c",
16019e95205Sopenharmony_ci]
16119e95205Sopenharmony_ci
16219e95205Sopenharmony_ciStackSdpSrc = [
16319e95205Sopenharmony_ci  "src/sdp/sdp_client_parse.c",
16419e95205Sopenharmony_ci  "src/sdp/sdp_client.c",
16519e95205Sopenharmony_ci  "src/sdp/sdp_connect.c",
16619e95205Sopenharmony_ci  "src/sdp/sdp_server.c",
16719e95205Sopenharmony_ci  "src/sdp/sdp_util.c",
16819e95205Sopenharmony_ci  "src/sdp/sdp.c",
16919e95205Sopenharmony_ci]
17019e95205Sopenharmony_ci
17119e95205Sopenharmony_ciStackSmpSrc = [
17219e95205Sopenharmony_ci  "src/smp/smp_aes_encryption.c",
17319e95205Sopenharmony_ci  "src/smp/smp_cmd.c",
17419e95205Sopenharmony_ci  "src/smp/smp_hci_event.c",
17519e95205Sopenharmony_ci  "src/smp/smp_legacy.c",
17619e95205Sopenharmony_ci  "src/smp/smp_oob.c",
17719e95205Sopenharmony_ci  "src/smp/smp_privacy.c",
17819e95205Sopenharmony_ci  "src/smp/smp_receive.c",
17919e95205Sopenharmony_ci  "src/smp/smp_sc_accepter.c",
18019e95205Sopenharmony_ci  "src/smp/smp_sc_initiator.c",
18119e95205Sopenharmony_ci  "src/smp/smp_send.c",
18219e95205Sopenharmony_ci  "src/smp/smp_tool.c",
18319e95205Sopenharmony_ci  "src/smp/smp.c",
18419e95205Sopenharmony_ci]
18519e95205Sopenharmony_ci
18619e95205Sopenharmony_ciconfig("btstack_public_config") {
18719e95205Sopenharmony_ci  include_dirs = [ "include" ]
18819e95205Sopenharmony_ci}
18919e95205Sopenharmony_ci
19019e95205Sopenharmony_ciconfig("btstack_config") {
19119e95205Sopenharmony_ci  include_dirs = [
19219e95205Sopenharmony_ci    "./",
19319e95205Sopenharmony_ci    "src",
19419e95205Sopenharmony_ci    "platform/include",
19519e95205Sopenharmony_ci    "$PART_DIR/common",
19619e95205Sopenharmony_ci    "$PART_DIR/hardware/include",
19719e95205Sopenharmony_ci  ]
19819e95205Sopenharmony_ci
19919e95205Sopenharmony_ci  cflags = [
20019e95205Sopenharmony_ci    "-fPIC",
20119e95205Sopenharmony_ci    "-Wno-unused-parameter",
20219e95205Sopenharmony_ci    "-Wpointer-arith",
20319e95205Sopenharmony_ci    "-Wmissing-field-initializers",
20419e95205Sopenharmony_ci    "-Wno-missing-braces",  #wait-for-fix
20519e95205Sopenharmony_ci    "-Wno-pragma-pack",
20619e95205Sopenharmony_ci  ]
20719e95205Sopenharmony_ci
20819e95205Sopenharmony_ci  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
20919e95205Sopenharmony_ci}
21019e95205Sopenharmony_ci
21119e95205Sopenharmony_ciohos_shared_library("btstack") {
21219e95205Sopenharmony_ci  # sanitize = {
21319e95205Sopenharmony_ci  #   cfi = true
21419e95205Sopenharmony_ci  #   blocklist = "./btstack_blocklist.txt"
21519e95205Sopenharmony_ci  # }
21619e95205Sopenharmony_ci  stack_protector_ret = true
21719e95205Sopenharmony_ci  configs = [ ":btstack_config" ]
21819e95205Sopenharmony_ci  public_configs = [ ":btstack_public_config" ]
21919e95205Sopenharmony_ci
22019e95205Sopenharmony_ci  sources = PlatformSrc + StackAttSrc + StackAvctpSrc + StackAvdtpSrc +
22119e95205Sopenharmony_ci            StackBtmSrc + StackGapSrc + StackHciSrc + StackL2capSrc +
22219e95205Sopenharmony_ci            StackRfcommSrc + StackSdpSrc + StackSmpSrc
22319e95205Sopenharmony_ci
22419e95205Sopenharmony_ci  deps = [
22519e95205Sopenharmony_ci    "$PART_DIR/external:btdummy",
22619e95205Sopenharmony_ci    "$PART_DIR/hardware:bluetooth_hdi_adapter",
22719e95205Sopenharmony_ci    "//third_party/bounds_checking_function:libsec_shared",
22819e95205Sopenharmony_ci    "//third_party/openssl:libcrypto_shared",
22919e95205Sopenharmony_ci  ]
23019e95205Sopenharmony_ci
23119e95205Sopenharmony_ci  external_deps = [
23219e95205Sopenharmony_ci    "bluetooth:btcommon",
23319e95205Sopenharmony_ci    "hilog:libhilog",
23419e95205Sopenharmony_ci  ]
23519e95205Sopenharmony_ci
23619e95205Sopenharmony_ci  subsystem_name = "communication"
23719e95205Sopenharmony_ci  part_name = "bluetooth_service"
23819e95205Sopenharmony_ci}
239