1# 2# Copyright 2015 Google, Inc. 3# 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 23group("all") { 24 deps = [ ":bluetooth" ] 25 26 if (use.test) { 27 deps += [ ":bluetooth_tests" ] 28 } 29} 30 31# This pulls in main/BUILD.gn and all of its dependencies. 32group("bluetooth") { 33 deps = [ 34 "//bt/main:bluetooth", 35 "//bt/main:bluetooth-static", 36 #"//bt/service:bluetoothtbd", 37 ] 38} 39 40if (use.test) { 41 group("bluetooth_tests") { 42 deps = [ 43 "//bt/btcore:net_test_btcore", 44 "//bt/common:bluetooth_test_common", 45 "//bt/profile/avrcp:net_test_avrcp", 46 "//bt/service:bluetoothtbd_test", 47 "//bt/stack:net_test_btm_iso", 48 "//bt/types:net_test_types", 49 50 #"//bt/packet:net_test_btpackets", 51 ] 52 } 53} 54 55if (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 64if (defined(use.android) && use.android) { 65 group("android_bluetooth_tests") { 66 deps = [ 67 "//bt/device:net_test_device", 68 "//bt/hci:net_test_hci", 69 "//bt/osi:net_test_osi", 70 "//bt/test/suite:net_test_bluetooth", 71 ] 72 } 73} 74 75config("target_defaults") { 76 include_dirs = [ 77 "//bt", 78 "//bt/linux_include", 79 "//bt/types", 80 "//bt/include", 81 82 # For flatbuffer generated headers 83 "${root_gen_dir}/bt/gd/", 84 "${root_gen_dir}/bt/gd/dumpsys/bundler", 85 ] 86 87 cflags = [ 88 "-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", 102 "-Wno-format", 103 "-Wno-pessimizing-move", 104 "-Wno-unknown-warning-option", 105 "-Wno-final-dtor-non-final-class", 106 ] 107 108 cflags_cc = [ 109 "-std=c++17", 110 ] 111 112 defines = [ 113 "HAS_NO_BDROID_BUILDCFG", 114 "OS_GENERIC", 115 "OS_LINUX_GENERIC", 116 "TARGET_FLOSS", 117 "USE_LINUX_HCI_SOCKET", 118 "EXPORT_SYMBOL=__attribute__((visibility(\"default\")))", 119 "FALLTHROUGH_INTENDED=[[clang::fallthrough]]", 120 ] 121 122 # If not configured as a dynamic library, default to static library 123 if (!(defined(use.bt_dynlib) && use.bt_dynlib)) { 124 defines += [ 125 "STATIC_LIBBLUETOOTH", 126 ] 127 } 128 129 if (!(defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs)) { 130 defines += [ "EXCLUDE_NONSTANDARD_CODECS" ] 131 } 132 133 configs = [ ":external_libchrome" ] 134} 135 136group("libbt-platform-protos-lite") { 137 deps = [ 138 "//external/proto_logging/stats/enums/bluetooth:libbt-platform-protos-lite", 139 ] 140} 141 142# 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 170config("external_flatbuffers") { 171 lib_dirs = [ "${libdir}" ] 172 173 libs = [ "flatbuffers" ] 174} 175 176# 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 205# 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") { 225 pkg_deps = [ "ldacBT-enc" ] 226 } 227 228 pkg_config("pkg_libldacBT_abr") { 229 pkg_deps = [ "ldacBT-abr" ] 230 } 231} 232