blob: 6f2869c6c9435320621bb038070b7f56ca1529ba [file] [log] [blame]
Dan Willemsenf7cc91b2016-09-13 16:35:00 -07001// Copyright (C) 2009 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
Bob Badour28383df2021-02-03 23:56:34 -080015package {
16 default_applicable_licenses: ["system_libhwbinder_license"],
17}
18
19// Added automatically by a large-scale-change
20// http://go/android-license-faq
21license {
22 name: "system_libhwbinder_license",
23 visibility: [":__subpackages__"],
24 license_kinds: [
25 "SPDX-license-identifier-Apache-2.0",
26 ],
27 license_text: [
28 "NOTICE",
29 ],
30}
31
Steven Moreland76ad7c52020-07-29 23:00:51 +000032cc_library_headers {
33 name: "libhwbinder_headers",
34 export_include_dirs: ["include"],
35 host_supported: true,
36 recovery_available: true,
37 vendor_available: true,
Justin Yun2f571402020-11-11 19:24:19 +090038 product_available: true,
Steven Moreland76ad7c52020-07-29 23:00:51 +000039 // TODO(b/153609531): remove when no longer needed.
40 native_bridge_supported: true,
41 apex_available: [
42 "//apex_available:platform",
43 "//apex_available:anyapex",
44 ],
45 min_sdk_version: "29",
46}
47
Yi Kong1a8beb62018-04-03 12:15:58 -070048cc_defaults {
49 name: "libhwbinder_defaults",
Steven Moreland09a87252019-06-17 17:18:02 -070050
Steven Moreland76ad7c52020-07-29 23:00:51 +000051 header_libs: ["libhwbinder_headers"],
52 export_header_lib_headers: ["libhwbinder_headers"],
Dan Willemsenf7cc91b2016-09-13 16:35:00 -070053
Dan Willemsenf7cc91b2016-09-13 16:35:00 -070054 sanitize: {
55 misc_undefined: ["integer"],
56 },
57 srcs: [
58 "Binder.cpp",
Yifan Hong1e118d22017-01-12 14:42:28 -080059 "BpHwBinder.cpp",
Dan Willemsenf7cc91b2016-09-13 16:35:00 -070060 "BufferedTextOutput.cpp",
61 "Debug.cpp",
62 "IInterface.cpp",
63 "IPCThreadState.cpp",
64 "Parcel.cpp",
65 "ProcessState.cpp",
66 "Static.cpp",
67 "TextOutput.cpp",
Steven Morelanda80270c2020-11-19 21:08:28 +000068 "Utils.cpp",
Dan Willemsenf7cc91b2016-09-13 16:35:00 -070069 ],
70
71 product_variables: {
72 binder32bit: {
73 cflags: ["-DBINDER_IPC_32BIT=1"],
74 },
75 },
76
Chih-Hung Hsieh29dbdcf2017-10-02 10:42:37 -070077 cflags: [
78 "-Wall",
79 "-Werror",
80 ],
81}
Zhizhou Yang5166bc52018-03-26 17:19:04 -070082
Steven Moreland09a87252019-06-17 17:18:02 -070083cc_defaults {
84 name: "libhwbinder-impl-shared-libs",
Steven Moreland09a87252019-06-17 17:18:02 -070085 shared_libs: [
86 "libbase",
87 "liblog",
88 "libcutils",
89 "libutils",
90 ],
91 export_shared_lib_headers: [
92 "libbase",
93 "libutils",
94 ],
95}
96
97// WARNING: this should no longer be used
Steven Moreland202ca452020-07-07 23:34:10 +000098// This is automatically removed by bpfix. Once there are no makefiles, fixes can be automatically applied, and this can be removed.
Yi Kong1a8beb62018-04-03 12:15:58 -070099cc_library {
100 name: "libhwbinder",
Steven Moreland09a87252019-06-17 17:18:02 -0700101 vendor_available: true,
Steven Moreland09a87252019-06-17 17:18:02 -0700102
103 export_include_dirs: ["include"],
Steven Morelande8adbb12019-10-09 16:27:36 -0700104
Dan Willemsen97767bf2020-06-09 15:28:40 -0700105 visibility: [
106 ":__subpackages__",
107 "//vendor:__subpackages__",
108 ],
Steven Moreland09a87252019-06-17 17:18:02 -0700109}
110
111// Combined into libhidlbase for efficiency.
112// Used as shared library to provide headers for libhidltransport-impl-internal.
113cc_library_static {
114 name: "libhwbinder-impl-internal",
Steven Morelandd9bdb652019-09-17 15:42:45 -0700115 include_dirs: [
Steven Morelandd9bdb652019-09-17 15:42:45 -0700116 // TODO(b/31559095): get headers from bionic on host
117 "bionic/libc/kernel/android/uapi/",
118 "bionic/libc/kernel/uapi/",
119 ],
120
Yi Kong1a8beb62018-04-03 12:15:58 -0700121 defaults: [
122 "libhwbinder_defaults",
Steven Morelande3785d02020-01-31 14:58:48 -0800123 "libhwbinder-impl-shared-libs",
Yi Kong1a8beb62018-04-03 12:15:58 -0700124 "hwbinder_pgo",
Jayant Chowdhary985fc892018-10-01 22:54:05 +0000125 "hwbinder_lto",
Yi Kong1a8beb62018-04-03 12:15:58 -0700126 ],
Steven Morelandd9bdb652019-09-17 15:42:45 -0700127 host_supported: true,
Steven Moreland09a87252019-06-17 17:18:02 -0700128 recovery_available: true,
129 vendor_available: true,
Justin Yun2f571402020-11-11 19:24:19 +0900130 product_available: true,
Victor Khimenko722a6152020-07-03 00:23:21 +0200131 // TODO(b/153609531): remove when no longer needed.
132 native_bridge_supported: true,
Jiyong Park889cf782020-03-07 17:27:13 +0900133 apex_available: [
134 "//apex_available:platform",
135 "com.android.neuralnetworks",
136 "com.android.bluetooth.updatable",
137 "com.android.media",
138 "com.android.media.swcodec",
139 "com.android.tethering",
140 ],
Jooyung Han1e5505d2020-04-16 18:48:34 +0900141 min_sdk_version: "29",
Yi Kong1a8beb62018-04-03 12:15:58 -0700142}
143
Steven Moreland09a87252019-06-17 17:18:02 -0700144// Only libhwbinder_benchmark needs to have pgo enabled. When all places
145// support having PGO selectively enabled, all places can use libhwbinder.
146//
147// http://b/77320844
148cc_library_static {
149 name: "libhwbinder_pgo-impl-internal",
150 defaults: [
151 "libhwbinder_defaults",
152 "libhwbinder-impl-shared-libs",
153 "hwbinder_benchmark_pgo",
154 "hwbinder_lto",
Yi Kong1a8beb62018-04-03 12:15:58 -0700155 ],
156}
157
Zhizhou Yang5166bc52018-03-26 17:19:04 -0700158// Provide pgo property to build hwbinder with PGO
159cc_defaults {
160 name: "hwbinder_pgo",
161 pgo: {
162 instrumentation: true,
163 profile_file: "hwbinder/hwbinder.profdata",
164 benchmarks: ["hwbinder"],
165 enable_profile_use: true,
166 },
167}
Jayant Chowdhary985fc892018-10-01 22:54:05 +0000168
Steven Moreland09a87252019-06-17 17:18:02 -0700169cc_defaults {
170 name: "hwbinder_benchmark_pgo",
171 pgo: {
172 instrumentation: true,
173 profile_file: "hwbinder/hwbinder.profdata",
174 benchmarks: ["hwbinder_benchmark"],
175 enable_profile_use: true,
176 },
177}
178
Zhizhou Yang5166bc52018-03-26 17:19:04 -0700179// Provide lto property to build hwbinder with LTO
180cc_defaults {
181 name: "hwbinder_lto",
182 target: {
183 android: {
184 lto: {
185 thin: true,
186 },
187 },
188 },
189}