blob: 56ed7d85d4aaee7f2af937548ec8b809be676bde [file] [log] [blame]
Arman Uguray9ca3fb82015-05-26 14:50:36 -07001#
Jakub Pawlowski5b790fe2017-09-18 09:00:20 -07002# Copyright 2015 Google, Inc.
Arman Uguray9ca3fb82015-05-26 14:50:36 -07003#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at:
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17# This is the root build file for GN. GN will start processing by loading this
18# file, and recursively load all dependencies until all dependencies are either
19# resolved or known not to exist (which will cause the build to fail). So if
20# you add a new build file, there must be some path of dependencies from this
21# file to your new one or GN won't know about it.
22
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080023group("all") {
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000024 deps = [ ":bluetooth" ]
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000025
26 if (use.test) {
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000027 deps += [ ":bluetooth_tests" ]
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000028 }
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080029}
30
Scott James Remnant4c292312015-05-12 13:58:49 -070031# This pulls in main/BUILD.gn and all of its dependencies.
32group("bluetooth") {
33 deps = [
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080034 "//bt/main:bluetooth",
Abhishek Pandit-Subedidb473fa2021-03-15 13:54:19 -070035 "//bt/main:bluetooth-static",
36 #"//bt/service:bluetoothtbd",
Scott James Remnant4c292312015-05-12 13:58:49 -070037 ]
38}
Marie Janssen3e54b602015-06-11 15:18:01 -070039
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000040if (use.test) {
41 group("bluetooth_tests") {
42 deps = [
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000043 "//bt/btcore:net_test_btcore",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000044 "//bt/common:bluetooth_test_common",
45 "//bt/profile/avrcp:net_test_avrcp",
46 "//bt/service:bluetoothtbd_test",
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000047 "//bt/stack:net_test_btm_iso",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000048 "//bt/types:net_test_types",
49
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000050 #"//bt/packet:net_test_btpackets",
51 ]
52 }
53}
Marie Janssen3e54b602015-06-11 15:18:01 -070054
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000055if (host_cpu == target_cpu && host_os == target_os) {
56 group("tools") {
57 deps = [
58 "//bt/gd/dumpsys/bundler:bluetooth_flatbuffer_bundler",
59 "//bt/gd/packet/parser:bluetooth_packetgen",
60 ]
61 }
62}
63
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000064if (defined(use.android) && use.android) {
65 group("android_bluetooth_tests") {
66 deps = [
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000067 "//bt/device:net_test_device",
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000068 "//bt/hci:net_test_hci",
69 "//bt/osi:net_test_osi",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000070 "//bt/test/suite:net_test_bluetooth",
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000071 ]
72 }
Marie Janssen3e54b602015-06-11 15:18:01 -070073}
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080074
75config("target_defaults") {
76 include_dirs = [
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +000077 "//bt",
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080078 "//bt/linux_include",
79 "//bt/types",
80 "//bt/include",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +000081
82 # For flatbuffer generated headers
83 "${root_gen_dir}/bt/gd/",
84 "${root_gen_dir}/bt/gd/dumpsys/bundler",
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080085 ]
86
87 cflags = [
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -080088 "-fPIC",
89 "-Wno-non-c-typedef-for-linkage",
90 "-Wno-unreachable-code-return",
91 "-Wno-defaulted-function-deleted",
92 "-Wno-gnu-variable-sized-type-not-at-end",
93 "-Wno-format-nonliteral",
94 "-Wno-inconsistent-missing-override",
95 "-Wno-unreachable-code",
96 "-Wno-range-loop-construct",
97 "-Wno-reorder-init-list",
98 "-Wno-unused-function",
99 "-Wno-unused-result",
100 "-Wno-unused-variable",
101 "-Wno-unused-const-variable",
Sonny Sasaka5bc5b6c2021-02-08 22:09:59 -0800102 "-Wno-format",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000103 "-Wno-pessimizing-move",
104 "-Wno-unknown-warning-option",
105 "-Wno-final-dtor-non-final-class",
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800106 ]
107
Abhishek Pandit-Subedi9956a0a2021-04-10 00:41:07 +0000108 cflags_cc = [
109 "-std=c++17",
110 ]
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800111
112 defines = [
113 "HAS_NO_BDROID_BUILDCFG",
114 "OS_GENERIC",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000115 "OS_LINUX_GENERIC",
Abhishek Pandit-Subedie1ab5b82021-04-26 12:40:11 -0700116 "TARGET_FLOSS",
117 "USE_LINUX_HCI_SOCKET",
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000118 "EXPORT_SYMBOL=__attribute__((visibility(\"default\")))",
119 "FALLTHROUGH_INTENDED=[[clang::fallthrough]]",
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800120 ]
121
Abhishek Pandit-Subediea1b00b2021-03-02 22:33:18 +0000122 # If not configured as a dynamic library, default to static library
123 if (!(defined(use.bt_dynlib) && use.bt_dynlib)) {
Abhishek Pandit-Subedi9956a0a2021-04-10 00:41:07 +0000124 defines += [
Abhishek Pandit-Subediea1b00b2021-03-02 22:33:18 +0000125 "STATIC_LIBBLUETOOTH",
126 ]
127 }
128
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000129 if (!(defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs)) {
130 defines += [ "EXCLUDE_NONSTANDARD_CODECS" ]
131 }
132
133 configs = [ ":external_libchrome" ]
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800134}
135
Abhishek Pandit-Subedi6f798c82021-03-02 22:33:33 +0000136group("libbt-platform-protos-lite") {
137 deps = [
138 "//external/proto_logging/stats/enums/bluetooth:libbt-platform-protos-lite",
139 ]
140}
141
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800142# Configurations to use as dependencies for GN build
143config("external_gtest") {
144 configs = [
145 ":pkg_gtest",
146 ":pkg_gmock",
147 ]
148}
149
150config("external_gtest_main") {
151 configs = [ ":pkg_gtest_main" ]
152}
153
154config("external_gmock_main") {
155 configs = [ ":pkg_gmock_main" ]
156}
157
158config("external_libchrome") {
159 configs = [ ":pkg_libchrome" ]
160}
161
162config("external_modp_b64") {
163 configs = [ ":pkg_modp_b64" ]
164}
165
166config("external_tinyxml2") {
167 configs = [ ":pkg_tinyxml2" ]
168}
169
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000170config("external_flatbuffers") {
171 lib_dirs = [ "${libdir}" ]
172
173 libs = [ "flatbuffers" ]
174}
175
Abhishek Pandit-Subedi7396ad42021-01-08 19:53:23 -0800176# Package configurations to extract dependencies from env
177pkg_config("pkg_gtest") {
178 pkg_deps = [ "gtest" ]
179}
180
181pkg_config("pkg_gtest_main") {
182 pkg_deps = [ "gtest_main" ]
183}
184
185pkg_config("pkg_gmock") {
186 pkg_deps = [ "gmock" ]
187}
188
189pkg_config("pkg_gmock_main") {
190 pkg_deps = [ "gmock_main" ]
191}
192
193pkg_config("pkg_libchrome") {
194 pkg_deps = [ "libchrome" ]
195}
196
197pkg_config("pkg_modp_b64") {
198 pkg_deps = [ "libmodp_b64" ]
199}
200
201pkg_config("pkg_tinyxml2") {
202 pkg_deps = [ "tinyxml2" ]
203}
204
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +0000205# To use non-standard codecs (i.e. ldac, aac, aptx), set this use flag when
206# building. These codecs may have licensing issues that need to be resolved
207# first.
208if (defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs) {
209 config("external_aac") {
210 configs = [ ":pkg_aac" ]
211 }
212
213 pkg_config("pkg_aac") {
214 pkg_deps = [ "fdk-aac" ]
215 }
216
217 config("external_libldac") {
218 configs = [
219 ":pkg_libldacBT_enc",
220 ":pkg_libldacBT_abr",
221 ]
222 }
223
224 pkg_config("pkg_libldacBT_enc") {
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000225 pkg_deps = [ "ldacBT-enc" ]
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +0000226 }
227
228 pkg_config("pkg_libldacBT_abr") {
Abhishek Pandit-Subedi9eaf2ca2021-03-02 22:33:10 +0000229 pkg_deps = [ "ldacBT-abr" ]
Sonny Sasaka33cc2ad2021-02-03 19:14:56 +0000230 }
231}