// Copyright (C) 2013 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Default flags to be used throughout all libraries in inputflinger. package { default_team: "trendy_team_input_framework", // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_native_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_native_license"], } inputflinger_tidy_checks = [ "android-*", ] cc_defaults { name: "inputflinger_defaults", host_supported: true, cpp_std: "c++20", cflags: [ "-Wall", "-Wextra", "-Werror", "-Wno-unused-parameter", "-Wthread-safety", "-Wshadow", "-Wshadow-field-in-constructor-modified", "-Wshadow-uncaptured-local", "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", ], sanitize: { misc_undefined: [ "bounds", ], }, tidy: true, tidy_checks: [ "-*", // Disable all checks not explicitly enabled for now ] + inputflinger_tidy_checks, tidy_checks_as_errors: inputflinger_tidy_checks, target: { host: { sanitize: { address: true, diag: { cfi: true, integer_overflow: true, memtag_heap: true, undefined: true, misc_undefined: [ "bounds", "all", ], }, }, include_dirs: [ "bionic/libc/kernel/android/uapi/", "bionic/libc/kernel/uapi", ], cflags: [ "-D__ANDROID_HOST__", ], }, }, } ///////////////////////////////////////////////// // libinputflinger ///////////////////////////////////////////////// filegroup { name: "libinputflinger_sources", srcs: [ "InputCommonConverter.cpp", "InputDeviceMetricsCollector.cpp", "InputFilter.cpp", "InputFilterCallbacks.cpp", "InputProcessor.cpp", "PointerChoreographer.cpp", "PreferStylusOverTouchBlocker.cpp", "UnwantedInteractionBlocker.cpp", ], } cc_defaults { name: "libinputflinger_defaults", srcs: [":libinputflinger_sources"], shared_libs: [ "android.hardware.input.processor-V1-ndk", "com.android.server.inputflinger-ndk", "libbase", "libbinder", "libbinder_ndk", "libchrome", "libcrypto", "libcutils", "libhidlbase", "libinput", "libkll", "liblog", "libprotobuf-cpp-lite", "libstatslog", "libutils", "libstatspull", "libstatssocket", "packagemanager_aidl-cpp", "server_configurable_flags", ], static_libs: [ "libattestation", "libperfetto_client_experimental", "libpalmrejection", "libui-types", ], generated_headers: [ "cxx-bridge-header", "inputflinger_rs_bootstrap_bridge_header", ], header_libs: ["inputflinger_rs_bootstrap_cxx_headers"], generated_sources: ["inputflinger_rs_bootstrap_bridge_code"], whole_static_libs: ["libinputflinger_rs"], export_shared_lib_headers: ["com.android.server.inputflinger-ndk"], target: { android: { shared_libs: [ "libgui", ], }, }, } cc_library_shared { name: "libinputflinger", host_supported: true, defaults: [ "inputflinger_defaults", "libinputflinger_defaults", ], srcs: [ "InputManager.cpp", // other sources are added via "defaults" ], cflags: [ // TODO(b/23084678): Move inputflinger to its own process and mark it hidden //-fvisibility=hidden ], shared_libs: [ // This should consist only of dependencies from inputflinger. Other dependencies should be // in cc_defaults so that they are included in the tests. "libinputflinger_base", "libinputreader", "libinputreporter", "libPlatformProperties", ], static_libs: [ "libinputdispatcher", ], export_static_lib_headers: [ "libinputdispatcher", ], export_shared_lib_headers: [ "libinputflinger_base", ], } ///////////////////////////////////////////////// // libinputflinger_base ///////////////////////////////////////////////// cc_library_headers { name: "libinputflinger_headers", host_supported: true, export_include_dirs: [ "include", ".", ], header_libs: [ "libchrome-gestures_headers", ], export_header_lib_headers: [ "libchrome-gestures_headers", ], } filegroup { name: "libinputflinger_base_sources", srcs: [ "InputDeviceMetricsSource.cpp", "InputListener.cpp", "InputReaderBase.cpp", "InputThread.cpp", "NotifyArgs.cpp", "VibrationElement.cpp", ], } cc_defaults { name: "libinputflinger_base_defaults", srcs: [":libinputflinger_base_sources"], shared_libs: [ "libbase", "libbinder", "libcutils", "libinput", "liblog", "libprocessgroup", "libstatslog", "libutils", ], header_libs: [ "libinputflinger_headers", ], } cc_library_shared { name: "libinputflinger_base", host_supported: true, defaults: [ "inputflinger_defaults", "libinputflinger_base_defaults", ], export_header_lib_headers: [ "libinputflinger_headers", ], } // This target will build everything 'input-related'. This could be useful for // large refactorings of the input code. This is similar to 'm checkbuild', but // just for input code. // Use 'm checkinput' to build, and then (optionally) use 'm installclean' to // remove any of the installed artifacts that you may not want on your actual // build. phony { name: "checkinput", required: [ // native targets "libgui_test", "libinput", "libinputreader_static", "libinputflinger", "inputflinger_tests", "inputflinger_benchmarks", "libinput_tests", "libpalmrejection_test", "libandroid_runtime", "libinputservice_test", "Bug-115739809", "StructLayout_test", // jni "libservices.core", // rust targets "libinput_rust_test", // native fuzzers "inputflinger_latencytracker_fuzzer", "inputflinger_cursor_input_fuzzer", "inputflinger_keyboard_input_fuzzer", "inputflinger_multitouch_input_fuzzer", "inputflinger_switch_input_fuzzer", "inputflinger_touchpad_input_fuzzer", "inputflinger_input_reader_fuzzer", "inputflinger_blocking_queue_fuzzer", "inputflinger_input_classifier_fuzzer", "inputflinger_input_dispatcher_fuzzer", // Java/Kotlin targets "CtsWindowManagerDeviceWindow", "InputTests", "CtsHardwareTestCases", "CtsInputTestCases", "CtsViewTestCases", "CtsWidgetTestCases", "FrameworksCoreTests", "FrameworksServicesTests", "CtsSecurityTestCases", "CtsSecurityBulletinHostTestCases", "monkey_test", ], }