blob: fed590ccebbcb6d2325936ef43a7ac3e857547ff [file] [log] [blame]
Dan Willemsen59e086f2016-07-25 17:13:45 -07001// Copyright (C) 2013 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
15// libinput is partially built for the host (used by build time keymap validation tool)
16
Bob Badour3306e492021-02-25 15:35:37 -080017package {
18 // See: http://go/android-license-faq
19 // A large-scale-change added 'default_applicable_licenses' to import
20 // all of the 'license_kinds' from "frameworks_native_license"
21 // to get the below license kinds:
22 // SPDX-license-identifier-Apache-2.0
23 default_applicable_licenses: ["frameworks_native_license"],
24}
25
Siarhei Vishniakou70622952020-07-30 11:17:23 -050026filegroup {
27 name: "inputconstants_aidl",
28 srcs: [
Siarhei Vishniakouae6229e2019-12-30 16:23:19 -080029 "android/os/IInputConstants.aidl",
30 "android/os/InputEventInjectionResult.aidl",
31 "android/os/InputEventInjectionSync.aidl",
Prabir Pradhan51e7db02022-02-07 06:02:57 -080032 "android/os/InputConfig.aidl",
Yuichiro Hanada56afd1e2024-03-22 17:23:25 +090033 "android/os/PointerIconType.aidl",
Siarhei Vishniakou70622952020-07-30 11:17:23 -050034 ],
35}
36
Siarhei Vishniakou96818962023-08-23 10:19:02 -070037/////////////////////////////////////////////////
38// flags
39/////////////////////////////////////////////////
40aconfig_declarations {
Prabir Pradhanda4b6b22023-11-06 16:52:43 +000041 name: "com.android.input.flags-aconfig",
Siarhei Vishniakou96818962023-08-23 10:19:02 -070042 package: "com.android.input.flags",
Oriol Prieto Gasco33fd22e2024-02-06 18:34:41 +000043 container: "system",
Siarhei Vishniakou96818962023-08-23 10:19:02 -070044 srcs: ["input_flags.aconfig"],
45}
46
47cc_aconfig_library {
Prabir Pradhanda4b6b22023-11-06 16:52:43 +000048 name: "com.android.input.flags-aconfig-cc",
49 aconfig_declarations: "com.android.input.flags-aconfig",
Siarhei Vishniakou96818962023-08-23 10:19:02 -070050 host_supported: true,
Prabir Pradhana2764b72023-10-10 19:43:43 +000051 // Use the test version of the aconfig flag library by default to allow tests to set local
52 // overrides for flags, without having to link against a separate version of libinput or of this
53 // library. Bundling this library directly into libinput prevents us from having to add this
54 // library as a shared lib dependency everywhere where libinput is used.
Zi Wang8b7ea532023-11-09 20:14:35 -080055 mode: "test",
Prabir Pradhana2764b72023-10-10 19:43:43 +000056 shared: {
57 enabled: false,
58 },
Siarhei Vishniakou96818962023-08-23 10:19:02 -070059}
60
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -070061aidl_interface {
62 name: "inputconstants",
63 host_supported: true,
64 vendor_available: true,
65 unstable: true,
66 srcs: [
67 ":inputconstants_aidl",
68 ],
69
70 backend: {
71 rust: {
72 enabled: true,
73 },
74 },
75}
76
77rust_bindgen {
78 name: "libinput_bindgen",
79 host_supported: true,
80 crate_name: "input_bindgen",
81 visibility: ["//frameworks/native/services/inputflinger"],
82 wrapper_src: "InputWrapper.hpp",
83
84 include_dirs: [
85 "frameworks/native/include",
86 ],
87
88 source_stem: "bindings",
89
90 bindgen_flags: [
91 "--verbose",
92 "--allowlist-var=AMOTION_EVENT_FLAG_CANCELED",
Siarhei Vishniakou227a7f82023-07-18 18:30:32 -070093 "--allowlist-var=AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED",
94 "--allowlist-var=AMOTION_EVENT_FLAG_WINDOW_IS_PARTIALLY_OBSCURED",
95 "--allowlist-var=AMOTION_EVENT_FLAG_IS_ACCESSIBILITY_EVENT",
96 "--allowlist-var=AMOTION_EVENT_FLAG_NO_FOCUS_CHANGE",
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -070097 "--allowlist-var=AMOTION_EVENT_ACTION_CANCEL",
98 "--allowlist-var=AMOTION_EVENT_ACTION_UP",
99 "--allowlist-var=AMOTION_EVENT_ACTION_POINTER_DOWN",
100 "--allowlist-var=AMOTION_EVENT_ACTION_DOWN",
101 "--allowlist-var=AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT",
102 "--allowlist-var=MAX_POINTER_ID",
Siarhei Vishniakou2d151ac2023-09-19 13:30:24 -0700103 "--allowlist-var=AINPUT_SOURCE_CLASS_NONE",
104 "--allowlist-var=AINPUT_SOURCE_CLASS_BUTTON",
105 "--allowlist-var=AINPUT_SOURCE_CLASS_POINTER",
106 "--allowlist-var=AINPUT_SOURCE_CLASS_NAVIGATION",
107 "--allowlist-var=AINPUT_SOURCE_CLASS_POSITION",
108 "--allowlist-var=AINPUT_SOURCE_CLASS_JOYSTICK",
109 "--allowlist-var=AINPUT_SOURCE_UNKNOWN",
110 "--allowlist-var=AINPUT_SOURCE_KEYBOARD",
111 "--allowlist-var=AINPUT_SOURCE_DPAD",
112 "--allowlist-var=AINPUT_SOURCE_GAMEPAD",
113 "--allowlist-var=AINPUT_SOURCE_TOUCHSCREEN",
114 "--allowlist-var=AINPUT_SOURCE_MOUSE",
115 "--allowlist-var=AINPUT_SOURCE_STYLUS",
116 "--allowlist-var=AINPUT_SOURCE_BLUETOOTH_STYLUS",
117 "--allowlist-var=AINPUT_SOURCE_TRACKBALL",
118 "--allowlist-var=AINPUT_SOURCE_MOUSE_RELATIVE",
119 "--allowlist-var=AINPUT_SOURCE_TOUCHPAD",
120 "--allowlist-var=AINPUT_SOURCE_TOUCH_NAVIGATION",
121 "--allowlist-var=AINPUT_SOURCE_JOYSTICK",
122 "--allowlist-var=AINPUT_SOURCE_HDMI",
123 "--allowlist-var=AINPUT_SOURCE_SENSOR",
124 "--allowlist-var=AINPUT_SOURCE_ROTARY_ENCODER",
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700125 ],
126
127 static_libs: [
128 "inputconstants-cpp",
129 "libui-types",
130 ],
131 shared_libs: ["libc++"],
132 header_libs: [
133 "native_headers",
134 "jni_headers",
135 "flatbuffer_headers",
136 ],
137}
138
Cody Heiner0f00ad92024-02-13 14:19:25 -0800139cc_library_static {
140 name: "iinputflinger_aidl_lib_static",
141 host_supported: true,
142 srcs: [
143 "android/os/IInputFlinger.aidl",
144 "android/os/InputChannelCore.aidl",
145 ],
146 shared_libs: [
147 "libbinder",
148 ],
149 whole_static_libs: [
150 "libgui_window_info_static",
151 ],
152 aidl: {
153 export_aidl_headers: true,
154 local_include_dirs: ["."],
155 include_dirs: [
156 "frameworks/native/libs/gui",
157 "frameworks/native/libs/input",
158 ],
159 },
160}
161
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700162// Contains methods to help access C++ code from rust
163cc_library_static {
164 name: "libinput_from_rust_to_cpp",
165 cpp_std: "c++20",
166 host_supported: true,
167 cflags: [
168 "-Wall",
169 "-Wextra",
170 "-Werror",
171 ],
172 srcs: [
173 "FromRustToCpp.cpp",
174 ],
175
176 generated_headers: [
177 "cxx-bridge-header",
178 ],
179 generated_sources: ["libinput_cxx_bridge_code"],
180
Stephen Hinese9dfe772024-03-08 23:37:23 -0800181 lto: {
182 never: true,
183 },
184
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700185 shared_libs: [
186 "libbase",
187 ],
188}
189
Dan Willemsen59e086f2016-07-25 17:13:45 -0700190cc_library {
191 name: "libinput",
Siarhei Vishniakoubb192872021-12-09 17:14:49 -0800192 cpp_std: "c++20",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700193 host_supported: true,
Frank Barchard9e947882017-03-06 11:17:52 -0800194 cflags: [
195 "-Wall",
196 "-Wextra",
197 "-Werror",
Philip Quinn8f953ab2022-12-06 15:37:07 -0800198 "-Wno-unused-parameter",
Siarhei Vishniakou4c155eb2023-06-30 11:47:12 -0700199 "-Wthread-safety",
200 "-Wshadow",
201 "-Wshadow-field-in-constructor-modified",
202 "-Wshadow-uncaptured-local",
203 "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
Frank Barchard9e947882017-03-06 11:17:52 -0800204 ],
Dan Willemsen59e086f2016-07-25 17:13:45 -0700205 srcs: [
Harry Cuttse78184b2024-01-08 15:54:58 +0000206 "AccelerationCurve.cpp",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700207 "Input.cpp",
Siarhei Vishniakou0438ca82024-03-12 14:27:25 -0700208 "InputConsumer.cpp",
Siarhei Vishniakou2b920272024-02-27 19:49:51 -0800209 "InputConsumerNoResampling.cpp",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700210 "InputDevice.cpp",
Chris Ye4958d062020-08-20 13:21:10 -0700211 "InputEventLabels.cpp",
Siarhei Vishniakoucac84272023-06-28 14:43:25 -0700212 "InputTransport.cpp",
Siarhei Vishniakou92c8fd52023-01-29 14:57:43 -0800213 "InputVerifier.cpp",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700214 "Keyboard.cpp",
215 "KeyCharacterMap.cpp",
216 "KeyLayoutMap.cpp",
Siarhei Vishniakou39147ce2022-11-15 12:13:04 -0800217 "MotionPredictor.cpp",
Cody Heiner52db4742023-06-29 13:19:01 -0700218 "MotionPredictorMetricsManager.cpp",
Siarhei Vishniakou814ace32022-03-04 15:12:16 -0800219 "PrintTools.cpp",
Siarhei Vishniakou32f36ae2020-09-02 20:17:10 -0700220 "PropertyMap.cpp",
Philip Quinn8f953ab2022-12-06 15:37:07 -0800221 "TfLiteMotionPredictor.cpp",
Siarhei Vishniakou26cf29d2019-02-15 16:48:38 -0600222 "TouchVideoFrame.cpp",
Brett Chabot58208522020-09-09 13:55:24 -0700223 "VelocityControl.cpp",
224 "VelocityTracker.cpp",
Zixuan Qudd0635d2023-02-06 04:52:38 +0000225 "VirtualInputDevice.cpp",
Siarhei Vishniakou5ac663d2019-02-15 17:15:56 -0600226 "VirtualKeyMap.cpp",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700227 ],
228
Philip Quinn8f953ab2022-12-06 15:37:07 -0800229 header_libs: [
230 "flatbuffer_headers",
231 "jni_headers",
Cody Heiner52db4742023-06-29 13:19:01 -0700232 "libeigen",
Philip Quinn8f953ab2022-12-06 15:37:07 -0800233 "tensorflow_headers",
234 ],
Cody Heiner52db4742023-06-29 13:19:01 -0700235 export_header_lib_headers: [
236 "jni_headers",
237 "libeigen",
238 ],
Orion Hodsone32877a2020-04-22 11:10:13 +0100239
Prabir Pradhan1e63fc22023-02-23 19:03:03 +0000240 generated_headers: [
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700241 "cxx-bridge-header",
242 "libinput_cxx_bridge_header",
Prabir Pradhan1e63fc22023-02-23 19:03:03 +0000243 "toolbox_input_labels",
244 ],
245
Dan Willemsen59e086f2016-07-25 17:13:45 -0700246 shared_libs: [
Siarhei Vishniakouec2727e2017-07-06 10:22:03 -0700247 "libbase",
Siarhei Vishniakoucac84272023-06-28 14:43:25 -0700248 "libbinder",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700249 "libcutils",
Siarhei Vishniakou39147ce2022-11-15 12:13:04 -0800250 "liblog",
251 "libPlatformProperties",
Philip Quinnf84fa492023-06-26 14:15:15 -0700252 "libtinyxml2",
Siarhei Vishniakou4c155eb2023-06-30 11:47:12 -0700253 "libutils",
Jooyung Han3f669212023-12-05 14:18:19 +0900254 "libz", // needed by libkernelconfigs
Siarhei Vishniakou96818962023-08-23 10:19:02 -0700255 "server_configurable_flags",
Philip Quinnda6a4482023-02-07 10:09:57 -0800256 ],
257
258 ldflags: [
259 "-Wl,--exclude-libs=libtflite_static.a",
Dan Willemsen59e086f2016-07-25 17:13:45 -0700260 ],
261
Siarhei Vishniakoudd882482023-04-28 21:13:26 +0000262 sanitize: {
263 undefined: true,
264 all_undefined: true,
265 misc_undefined: ["integer"],
266 },
267
chaviwfd9c1ed2020-07-01 10:57:59 -0700268 static_libs: [
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700269 "inputconstants-cpp",
chaviwfd9c1ed2020-07-01 10:57:59 -0700270 "libui-types",
Philip Quinnda6a4482023-02-07 10:09:57 -0800271 "libtflite_static",
Jooyung Han3f669212023-12-05 14:18:19 +0900272 "libkernelconfigs",
chaviwfd9c1ed2020-07-01 10:57:59 -0700273 ],
274
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700275 whole_static_libs: [
Prabir Pradhanda4b6b22023-11-06 16:52:43 +0000276 "com.android.input.flags-aconfig-cc",
Prabir Pradhan0762b1f2023-06-22 23:08:18 +0000277 "libinput_rust_ffi",
Cody Heiner0f00ad92024-02-13 14:19:25 -0800278 "iinputflinger_aidl_lib_static",
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700279 ],
280
chaviwfd9c1ed2020-07-01 10:57:59 -0700281 export_static_lib_headers: [
282 "libui-types",
283 ],
284
Siarhei Vishniakou5c02a712023-05-15 15:45:02 -0700285 export_generated_headers: [
286 "cxx-bridge-header",
287 "libinput_cxx_bridge_header",
288 ],
289
Dan Willemsen59e086f2016-07-25 17:13:45 -0700290 target: {
291 android: {
Saho Kobayashiaefd4a42024-03-21 04:54:39 +0000292 export_shared_lib_headers: ["libbinder"],
293
294 shared_libs: [
295 "libutils",
296 "libbinder",
297 // Stats logging library and its dependencies.
298 "libstatslog_libinput",
299 "libstatsbootstrap",
300 "android.os.statsbootstrap_aidl-cpp",
301 ],
302
Philip Quinn8f953ab2022-12-06 15:37:07 -0800303 required: [
304 "motion_predictor_model_prebuilt",
Philip Quinnf84fa492023-06-26 14:15:15 -0700305 "motion_predictor_model_config",
Philip Quinn8f953ab2022-12-06 15:37:07 -0800306 ],
Dan Willemsen59e086f2016-07-25 17:13:45 -0700307 },
308 host: {
Brett Chabot58208522020-09-09 13:55:24 -0700309 include_dirs: [
Zixuan Qudd0635d2023-02-06 04:52:38 +0000310 "bionic/libc/kernel/android/uapi/",
311 "bionic/libc/kernel/uapi",
Brett Chabot58208522020-09-09 13:55:24 -0700312 ],
313 },
Dan Willemsen59e086f2016-07-25 17:13:45 -0700314 },
315}
Dan Willemsenc7dd2b92016-08-25 17:05:22 -0700316
Saho Kobayashiaefd4a42024-03-21 04:54:39 +0000317// Use bootstrap version of stats logging library.
318// libinput is a bootstrap process (starts early in the boot process), and thus can't use the normal
319// `libstatslog` because that requires `libstatssocket`, which is only available later in the boot.
320cc_library {
321 name: "libstatslog_libinput",
322 generated_sources: ["statslog_libinput.cpp"],
323 generated_headers: ["statslog_libinput.h"],
324 export_generated_headers: ["statslog_libinput.h"],
325 shared_libs: [
326 "libbinder",
327 "libstatsbootstrap",
328 "libutils",
329 "android.os.statsbootstrap_aidl-cpp",
330 ],
331}
332
333genrule {
334 name: "statslog_libinput.h",
335 tools: ["stats-log-api-gen"],
336 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_libinput.h --module libinput" +
337 " --namespace android,stats,libinput --bootstrap",
338 out: [
339 "statslog_libinput.h",
340 ],
341}
342
343genrule {
344 name: "statslog_libinput.cpp",
345 tools: ["stats-log-api-gen"],
346 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_libinput.cpp --module libinput" +
347 " --namespace android,stats,libinput --importHeader statslog_libinput.h" +
348 " --bootstrap",
349 out: [
350 "statslog_libinput.cpp",
351 ],
352}
353
Siarhei Vishniakou32f36ae2020-09-02 20:17:10 -0700354cc_defaults {
355 name: "libinput_fuzz_defaults",
Harry Cutts2b67ff12023-03-13 11:32:06 +0000356 cpp_std: "c++20",
Siarhei Vishniakou32f36ae2020-09-02 20:17:10 -0700357 host_supported: true,
358 shared_libs: [
359 "libutils",
360 "libbase",
361 "liblog",
362 ],
363}
364
365cc_fuzz {
366 name: "libinput_fuzz_propertymap",
367 defaults: ["libinput_fuzz_defaults"],
368 srcs: [
369 "PropertyMap.cpp",
370 "PropertyMap_fuzz.cpp",
371 ],
372}
373
Dan Willemsenc7dd2b92016-08-25 17:05:22 -0700374subdirs = ["tests"]