// // Copyright (C) 2018 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. // package { default_applicable_licenses: ["Android-Apache-2.0"], } cc_defaults { name: "libsnapshot_snapuserd_defaults", defaults: [ "fs_mgr_defaults", ], cflags: [ "-D_FILE_OFFSET_BITS=64", ], export_include_dirs: ["include"], srcs: [ "snapuserd_client.cpp", ], } cc_library_static { name: "libsnapshot_snapuserd", defaults: [ "fs_mgr_defaults", "libsnapshot_snapuserd_defaults", ], recovery_available: true, static_libs: [ "libcutils_sockets", "libfs_mgr", ], shared_libs: [ "libbase", "liblog", ], export_include_dirs: ["include"], ramdisk_available: true, vendor_ramdisk_available: true, } cc_library_static { name: "libsnapuserd", defaults: [ "fs_mgr_defaults", ], srcs: [ "dm-snapshot-merge/snapuserd.cpp", "dm-snapshot-merge/snapuserd_worker.cpp", "dm-snapshot-merge/snapuserd_readahead.cpp", "snapuserd_buffer.cpp", "user-space-merge/snapuserd_core.cpp", "user-space-merge/snapuserd_dm_user.cpp", "user-space-merge/snapuserd_merge.cpp", "user-space-merge/snapuserd_readahead.cpp", "user-space-merge/snapuserd_transitions.cpp", "user-space-merge/snapuserd_verify.cpp", ], static_libs: [ "libbase", "libdm", "libext4_utils", "libsnapshot_cow", "liburing", ], include_dirs: ["bionic/libc/kernel"], header_libs: [ "libstorage_literals_headers", ], ramdisk_available: true, vendor_ramdisk_available: true, recovery_available: true, } cc_defaults { name: "snapuserd_defaults", defaults: [ "fs_mgr_defaults", ], srcs: [ "dm-snapshot-merge/snapuserd_server.cpp", "snapuserd_daemon.cpp", "user-space-merge/snapuserd_server.cpp", ], cflags: [ "-D_FILE_OFFSET_BITS=64", ], static_libs: [ "libbase", "libbrotli", "libcutils_sockets", "libdm", "libfs_mgr", "libgflags", "liblog", "libsnapshot_cow", "libsnapshot_snapuserd", "libsnapuserd", "libz", "liblz4", "libext4_utils", "liburing", ], header_libs: [ "libstorage_literals_headers", ], include_dirs: ["bionic/libc/kernel"], system_shared_libs: [], // snapuserd is started during early boot by first-stage init. At that // point, /system is mounted using the "dm-user" device-mapper kernel // module. dm-user routes all I/O to userspace to be handled by // snapuserd, which would lead to deadlock if we had to handle page // faults for its code pages. static_executable: true, // Snapuserd segfaults with ThinLTO // http://b/208565717 lto: { never: true, }, } cc_binary { name: "snapuserd", defaults: ["snapuserd_defaults"], init_rc: [ "snapuserd.rc", ], ramdisk_available: false, vendor_ramdisk_available: true, } // This target will install to /system/bin/snapuserd_ramdisk // It will also create a symblink on /system/bin/snapuserd that point to // /system/bin/snapuserd_ramdisk . // This way, init can check if generic ramdisk copy exists. cc_binary { name: "snapuserd_ramdisk", defaults: ["snapuserd_defaults"], init_rc: [ "snapuserd.rc", ], // This target is specifically for generic ramdisk, therefore we set // vendor_ramdisk_available to false. ramdisk_available: true, vendor_ramdisk_available: false, ramdisk: true, symlinks: ["snapuserd"], } cc_test { name: "cow_snapuserd_test", defaults: [ "fs_mgr_defaults", "libsnapshot_cow_defaults", ], srcs: [ "dm-snapshot-merge/cow_snapuserd_test.cpp", "dm-snapshot-merge/snapuserd.cpp", "dm-snapshot-merge/snapuserd_worker.cpp", "snapuserd_buffer.cpp", ], shared_libs: [ "libbase", "liblog", ], static_libs: [ "libbrotli", "libgtest", "libsnapshot_cow", "libsnapshot_snapuserd", "libcutils_sockets", "libz", "libfs_mgr", "libdm", "libext4_utils", ], header_libs: [ "libstorage_literals_headers", "libfiemap_headers", ], test_options: { min_shipping_api_level: 30, }, auto_gen_config: true, require_root: false, } cc_test { name: "snapuserd_test", defaults: [ "fs_mgr_defaults", "libsnapshot_cow_defaults", ], srcs: [ "user-space-merge/snapuserd_test.cpp", ], shared_libs: [ "libbase", "liblog", ], static_libs: [ "libbrotli", "libgtest", "libsnapshot_cow", "libsnapshot_snapuserd", "libcutils_sockets", "libz", "libfs_mgr", "libdm", "libext4_utils", "liburing", "libgflags", ], include_dirs: ["bionic/libc/kernel"], header_libs: [ "libstorage_literals_headers", "libfiemap_headers", ], test_options: { min_shipping_api_level: 30, }, auto_gen_config: true, require_root: false, }