| // Copyright (C) 2009 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. | 
 |  | 
 | cc_library_headers { | 
 |     name: "libbinder_headers", | 
 |     export_include_dirs: ["include"], | 
 |     vendor_available: true, | 
 |     host_supported: true, | 
 |  | 
 |     header_libs: [ | 
 |         "libbase_headers", | 
 |         "libcutils_headers", | 
 |         "libutils_headers", | 
 |     ], | 
 |     export_header_lib_headers: [ | 
 |         "libbase_headers", | 
 |         "libcutils_headers", | 
 |         "libutils_headers", | 
 |     ], | 
 | } | 
 |  | 
 | // These interfaces are android-specific implementation unrelated to binder | 
 | // transport itself and should be moved to AIDL or in domain-specific libs. | 
 | // | 
 | // Currently, these are only on system android (not vendor, not host) | 
 | libbinder_device_interface_sources = [ | 
 |     "ActivityManager.cpp", | 
 |     "AppOpsManager.cpp", | 
 |     "IActivityManager.cpp", | 
 |     "IAppOpsCallback.cpp", | 
 |     "IAppOpsService.cpp", | 
 |     "IBatteryStats.cpp", | 
 |     "IMediaResourceMonitor.cpp", | 
 |     "IPermissionController.cpp", | 
 |     "IProcessInfoService.cpp", | 
 |     "IUidObserver.cpp", | 
 |     "PermissionCache.cpp", | 
 |     "PermissionController.cpp", | 
 |     "ProcessInfoService.cpp", | 
 |     "IpPrefix.cpp", | 
 | ] | 
 |  | 
 | cc_library { | 
 |     name: "libbinder", | 
 |  | 
 |     // for vndbinder | 
 |     vendor_available: true, | 
 |     vndk: { | 
 |         enabled: true, | 
 |     }, | 
 |     double_loadable: true, | 
 |     host_supported: true, | 
 |  | 
 |     // TODO(b/31559095): get headers from bionic on host | 
 |     include_dirs: [ | 
 |         "bionic/libc/kernel/android/uapi/", | 
 |         "bionic/libc/kernel/uapi/", | 
 |     ], | 
 |  | 
 |     // libbinder does not offer a stable wire protocol. | 
 |     // if a second copy of it is installed, then it may break after security | 
 |     // or dessert updates. Instead, apex users should use libbinder_ndk. | 
 |     apex_available: [ | 
 |         "//apex_available:platform", | 
 |         // TODO(b/139016109) remove these three | 
 |         "com.android.media.swcodec", | 
 |         "test_com.android.media.swcodec", | 
 |     ], | 
 |  | 
 |     srcs: [ | 
 |         "Binder.cpp", | 
 |         "BpBinder.cpp", | 
 |         "BufferedTextOutput.cpp", | 
 |         "Debug.cpp", | 
 |         "IInterface.cpp", | 
 |         "IMemory.cpp", | 
 |         "IPCThreadState.cpp", | 
 |         "IResultReceiver.cpp", | 
 |         "IServiceManager.cpp", | 
 |         "IShellCallback.cpp", | 
 |         "LazyServiceRegistrar.cpp", | 
 |         "MemoryBase.cpp", | 
 |         "MemoryDealer.cpp", | 
 |         "MemoryHeapBase.cpp", | 
 |         "Parcel.cpp", | 
 |         "ParcelFileDescriptor.cpp", | 
 |         "PersistableBundle.cpp", | 
 |         "ProcessState.cpp", | 
 |         "Static.cpp", | 
 |         "Stability.cpp", | 
 |         "Status.cpp", | 
 |         "TextOutput.cpp", | 
 |         ":libbinder_aidl", | 
 |     ], | 
 |  | 
 |     target: { | 
 |         android: { | 
 |             srcs: libbinder_device_interface_sources, | 
 |  | 
 |             // NOT static to keep the wire protocol unfrozen | 
 |             static: { | 
 |                 enabled: false, | 
 |             }, | 
 |         }, | 
 |         vendor: { | 
 |             exclude_srcs: libbinder_device_interface_sources, | 
 |         }, | 
 |     }, | 
 |  | 
 |     aidl: { | 
 |         export_aidl_headers: true, | 
 |     }, | 
 |  | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Wextra", | 
 |         "-Werror", | 
 |         "-Wzero-as-null-pointer-constant", | 
 |     ], | 
 |     product_variables: { | 
 |         binder32bit: { | 
 |             cflags: ["-DBINDER_IPC_32BIT=1"], | 
 |         }, | 
 |     }, | 
 |  | 
 |     shared_libs: [ | 
 |         "liblog", | 
 |         "libcutils", | 
 |         "libutils", | 
 |     ], | 
 |  | 
 |     header_libs: [ | 
 |         "libbinder_headers", | 
 |     ], | 
 |  | 
 |     export_header_lib_headers: [ | 
 |         "libbinder_headers", | 
 |     ], | 
 |  | 
 |     clang: true, | 
 |     sanitize: { | 
 |         misc_undefined: ["integer"], | 
 |     }, | 
 | } | 
 |  | 
 | // AIDL interface between libbinder and framework.jar | 
 | filegroup { | 
 |     name: "libbinder_aidl", | 
 |     srcs: [ | 
 |         "aidl/android/content/pm/IPackageManagerNative.aidl", | 
 |         "aidl/android/os/IClientCallback.aidl", | 
 |         "aidl/android/os/IServiceCallback.aidl", | 
 |         "aidl/android/os/IServiceManager.aidl", | 
 |     ], | 
 |     path: "aidl", | 
 | } | 
 |  | 
 | aidl_interface { | 
 |     name: "libbinder_aidl_test_stub", | 
 |     local_include_dir: "aidl", | 
 |     srcs: [":libbinder_aidl"], | 
 |     vendor_available: true, | 
 |     backend: { | 
 |         java: { | 
 |             enabled: false, | 
 |         }, | 
 |     }, | 
 | } |