// // 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: [ "libbootloader_message", "libfs_mgr", "libfec", "libfec_rs", "libhidl-gen-utils", "libsquashfs_utils", "liblogwrap", "libext4_utils", "libcutils", "libbase", "libc", "libseccomp_policy", "libselinux", "liblog", "libcrypto_utils", "libcrypto", "libc++_static", "libdl", "libsparse", "libz", "libprocessgroup", "libavb", "libkeyutils", "libprotobuf-cpp-lite", "libpropertyinfoserializer", "libpropertyinfoparser", ], } cc_library_static { name: "libinit", defaults: ["init_defaults"], srcs: [ "action.cpp", "action_manager.cpp", "action_parser.cpp", "bootchart.cpp", "builtins.cpp", "capabilities.cpp", "descriptors.cpp", "devices.cpp", "firmware_handler.cpp", "import_parser.cpp", "init.cpp", "init_first_stage.cpp", "keychords.cpp", "log.cpp", "parser.cpp", "persistent_properties.cpp", "persistent_properties.proto", "property_service.cpp", "property_type.cpp", "reboot.cpp", "security.cpp", "selinux.cpp", "service.cpp", "sigchld_handler.cpp", "subcontext.cpp", "subcontext.proto", "rlimit_parser.cpp", "tokenizer.cpp", "uevent_listener.cpp", "ueventd.cpp", "ueventd_parser.cpp", "util.cpp", "watchdogd.cpp", ], whole_static_libs: ["libcap"], header_libs: ["bootimg_headers"], proto: { type: "lite", export_proto_headers: true, }, } /* This is not yet ready, see the below TODOs for what is missing cc_binary { // TODO: Missing, //LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) //LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) name: "init", defaults: ["init_defaults"], required: [ "e2fsdroid", "mke2fs", "sload_f2fs", "make_f2fs", ], static_executable: true, srcs: ["main.cpp"], symlinks: [ "sbin/ueventd", "sbin/watchdogd", ], } */ // Tests // ------------------------------------------------------------------------------ cc_test { name: "init_tests", defaults: ["init_defaults"], static_executable: true, srcs: [ "devices_test.cpp", "init_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", "ueventd_test.cpp", "util_test.cpp", ], static_libs: ["libinit"], } cc_benchmark { name: "init_benchmarks", static_executable: true, 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", "import_parser.cpp", "host_init_parser.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"], target: { android: { enabled: false, }, darwin: { enabled: false, }, }, } subdirs = ["*"]