| // | |
| // Copyright (C) 2017 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_defaults { | |
| name: "init_defaults", | |
| cpp_std: "experimental", | |
| sanitize: { | |
| misc_undefined: ["signed-integer-overflow"], | |
| }, | |
| cflags: [ | |
| "-DLOG_UEVENTS=0", | |
| "-Wall", | |
| "-Wextra", | |
| "-Wno-unused-parameter", | |
| "-Werror", | |
| "-DALLOW_LOCAL_PROP_OVERRIDE=0", | |
| "-DALLOW_PERMISSIVE_SELINUX=0", | |
| "-DREBOOT_BOOTLOADER_ON_PANIC=0", | |
| "-DWORLD_WRITABLE_KMSG=0", | |
| "-DDUMP_ON_UMOUNT_FAILURE=0", | |
| "-DSHUTDOWN_ZERO_TIMEOUT=0", | |
| ], | |
| product_variables: { | |
| debuggable: { | |
| cppflags: [ | |
| "-UALLOW_LOCAL_PROP_OVERRIDE", | |
| "-DALLOW_LOCAL_PROP_OVERRIDE=1", | |
| "-UALLOW_PERMISSIVE_SELINUX", | |
| "-DALLOW_PERMISSIVE_SELINUX=1", | |
| "-UREBOOT_BOOTLOADER_ON_PANIC", | |
| "-DREBOOT_BOOTLOADER_ON_PANIC=1", | |
| "-UWORLD_WRITABLE_KMSG", | |
| "-DWORLD_WRITABLE_KMSG=1", | |
| "-UDUMP_ON_UMOUNT_FAILURE", | |
| "-DDUMP_ON_UMOUNT_FAILURE=1", | |
| ], | |
| }, | |
| eng: { | |
| cppflags: [ | |
| "-USHUTDOWN_ZERO_TIMEOUT", | |
| "-DSHUTDOWN_ZERO_TIMEOUT=1", | |
| ], | |
| }, | |
| uml: { | |
| cppflags: ["-DUSER_MODE_LINUX"], | |
| }, | |
| }, | |
| static_libs: [ | |
| "libseccomp_policy", | |
| "libavb", | |
| "libprotobuf-cpp-lite", | |
| "libpropertyinfoserializer", | |
| "libpropertyinfoparser", | |
| ], | |
| shared_libs: [ | |
| "libbase", | |
| "libbinder", | |
| "libbootloader_message", | |
| "libcutils", | |
| "libcrypto", | |
| "libdl", | |
| "libext4_utils", | |
| "libfs_mgr", | |
| "libfscrypt", | |
| "libgsi", | |
| "libhidl-gen-utils", | |
| "libkeyutils", | |
| "liblog", | |
| "liblogwrap", | |
| "liblp", | |
| "libprocessgroup", | |
| "libselinux", | |
| "libutils", | |
| ], | |
| bootstrap: true, | |
| } | |
| cc_library_static { | |
| name: "libinit", | |
| recovery_available: true, | |
| defaults: ["init_defaults"], | |
| srcs: [ | |
| "action.cpp", | |
| "action_manager.cpp", | |
| "action_parser.cpp", | |
| "boringssl_self_test.cpp", | |
| "bootchart.cpp", | |
| "builtins.cpp", | |
| "capabilities.cpp", | |
| "descriptors.cpp", | |
| "devices.cpp", | |
| "epoll.cpp", | |
| "firmware_handler.cpp", | |
| "first_stage_init.cpp", | |
| "first_stage_mount.cpp", | |
| "import_parser.cpp", | |
| "init.cpp", | |
| "keychords.cpp", | |
| "modalias_handler.cpp", | |
| "mount_namespace.cpp", | |
| "parser.cpp", | |
| "persistent_properties.cpp", | |
| "persistent_properties.proto", | |
| "property_service.cpp", | |
| "property_type.cpp", | |
| "reboot.cpp", | |
| "reboot_utils.cpp", | |
| "security.cpp", | |
| "selinux.cpp", | |
| "service.cpp", | |
| "sigchld_handler.cpp", | |
| "subcontext.cpp", | |
| "subcontext.proto", | |
| "switch_root.cpp", | |
| "rlimit_parser.cpp", | |
| "tokenizer.cpp", | |
| "uevent_listener.cpp", | |
| "ueventd.cpp", | |
| "ueventd_parser.cpp", | |
| "util.cpp", | |
| ], | |
| whole_static_libs: ["libcap", "com.android.sysprop.apex"], | |
| header_libs: ["bootimg_headers"], | |
| proto: { | |
| type: "lite", | |
| export_proto_headers: true, | |
| }, | |
| target: { | |
| recovery: { | |
| cflags: ["-DRECOVERY"], | |
| exclude_shared_libs: ["libbinder", "libutils"], | |
| }, | |
| }, | |
| } | |
| cc_binary { | |
| name: "init_second_stage", | |
| recovery_available: true, | |
| stem: "init", | |
| defaults: ["init_defaults"], | |
| static_libs: ["libinit"], | |
| required: [ | |
| "e2fsdroid", | |
| "mke2fs", | |
| "sload_f2fs", | |
| "make_f2fs", | |
| ], | |
| srcs: ["main.cpp"], | |
| symlinks: ["ueventd"], | |
| target: { | |
| recovery: { | |
| cflags: ["-DRECOVERY"], | |
| exclude_shared_libs: ["libbinder", "libutils"], | |
| }, | |
| }, | |
| ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"], | |
| } | |
| // Tests | |
| // ------------------------------------------------------------------------------ | |
| cc_test { | |
| name: "init_tests", | |
| defaults: ["init_defaults"], | |
| compile_multilib: "first", | |
| srcs: [ | |
| "devices_test.cpp", | |
| "init_test.cpp", | |
| "keychords_test.cpp", | |
| "persistent_properties_test.cpp", | |
| "property_service_test.cpp", | |
| "property_type_test.cpp", | |
| "result_test.cpp", | |
| "rlimit_parser_test.cpp", | |
| "service_test.cpp", | |
| "subcontext_test.cpp", | |
| "tokenizer_test.cpp", | |
| "ueventd_parser_test.cpp", | |
| "ueventd_test.cpp", | |
| "util_test.cpp", | |
| ], | |
| static_libs: ["libinit"], | |
| test_suites: ["device-tests"], | |
| } | |
| cc_benchmark { | |
| name: "init_benchmarks", | |
| defaults: ["init_defaults"], | |
| srcs: [ | |
| "subcontext_benchmark.cpp", | |
| ], | |
| static_libs: ["libinit"], | |
| } | |
| // Host Verifier | |
| // ------------------------------------------------------------------------------ | |
| genrule { | |
| name: "generated_stub_builtin_function_map", | |
| out: ["generated_stub_builtin_function_map.h"], | |
| srcs: ["builtins.cpp"], | |
| cmd: "sed -n '/Builtin-function-map start/{:a;n;/Builtin-function-map end/q;p;ba}' $(in) | sed -e 's/do_[^}]*/do_stub/g' > $(out)", | |
| } | |
| cc_binary { | |
| name: "host_init_verifier", | |
| host_supported: true, | |
| cpp_std: "experimental", | |
| cflags: [ | |
| "-Wall", | |
| "-Wextra", | |
| "-Wno-unused-parameter", | |
| "-Werror", | |
| ], | |
| static_libs: [ | |
| "libbase", | |
| "libselinux", | |
| ], | |
| whole_static_libs: ["libcap"], | |
| shared_libs: [ | |
| "libprotobuf-cpp-lite", | |
| "libhidl-gen-utils", | |
| "libprocessgroup", | |
| "liblog", | |
| "libcutils", | |
| ], | |
| srcs: [ | |
| "action.cpp", | |
| "action_manager.cpp", | |
| "action_parser.cpp", | |
| "capabilities.cpp", | |
| "descriptors.cpp", | |
| "epoll.cpp", | |
| "keychords.cpp", | |
| "import_parser.cpp", | |
| "host_import_parser.cpp", | |
| "host_init_verifier.cpp", | |
| "host_init_stubs.cpp", | |
| "parser.cpp", | |
| "rlimit_parser.cpp", | |
| "tokenizer.cpp", | |
| "service.cpp", | |
| "subcontext.cpp", | |
| "subcontext.proto", | |
| "util.cpp", | |
| ], | |
| proto: { | |
| type: "lite", | |
| }, | |
| generated_headers: [ | |
| "generated_stub_builtin_function_map", | |
| "generated_android_ids" | |
| ], | |
| target: { | |
| android: { | |
| enabled: false, | |
| }, | |
| darwin: { | |
| enabled: false, | |
| }, | |
| }, | |
| } | |
| subdirs = ["*"] |