Home | History | Annotate | Download | only in init
      1 //
      2 // Copyright (C) 2017 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 cc_defaults {
     18     name: "init_defaults",
     19     cpp_std: "experimental",
     20     sanitize: {
     21         misc_undefined: ["signed-integer-overflow"],
     22     },
     23     cflags: [
     24         "-DLOG_UEVENTS=0",
     25         "-Wall",
     26         "-Wextra",
     27         "-Wno-unused-parameter",
     28         "-Werror",
     29         "-DALLOW_LOCAL_PROP_OVERRIDE=0",
     30         "-DALLOW_PERMISSIVE_SELINUX=0",
     31         "-DREBOOT_BOOTLOADER_ON_PANIC=0",
     32         "-DWORLD_WRITABLE_KMSG=0",
     33         "-DDUMP_ON_UMOUNT_FAILURE=0",
     34         "-DSHUTDOWN_ZERO_TIMEOUT=0",
     35     ],
     36     product_variables: {
     37         debuggable: {
     38             cppflags: [
     39                 "-UALLOW_LOCAL_PROP_OVERRIDE",
     40                 "-DALLOW_LOCAL_PROP_OVERRIDE=1",
     41                 "-UALLOW_PERMISSIVE_SELINUX",
     42                 "-DALLOW_PERMISSIVE_SELINUX=1",
     43                 "-UREBOOT_BOOTLOADER_ON_PANIC",
     44                 "-DREBOOT_BOOTLOADER_ON_PANIC=1",
     45                 "-UWORLD_WRITABLE_KMSG",
     46                 "-DWORLD_WRITABLE_KMSG=1",
     47                 "-UDUMP_ON_UMOUNT_FAILURE",
     48                 "-DDUMP_ON_UMOUNT_FAILURE=1",
     49             ],
     50         },
     51         eng: {
     52             cppflags: [
     53                 "-USHUTDOWN_ZERO_TIMEOUT",
     54                 "-DSHUTDOWN_ZERO_TIMEOUT=1",
     55             ],
     56         },
     57         uml: {
     58             cppflags: ["-DUSER_MODE_LINUX"],
     59         },
     60     },
     61     static_libs: [
     62         "libbootloader_message",
     63         "libfs_mgr",
     64         "libfec",
     65         "libfec_rs",
     66         "libhidl-gen-utils",
     67         "libsquashfs_utils",
     68         "liblogwrap",
     69         "libext4_utils",
     70         "libcutils",
     71         "libbase",
     72         "libc",
     73         "libseccomp_policy",
     74         "libselinux",
     75         "liblog",
     76         "libcrypto_utils",
     77         "libcrypto",
     78         "libc++_static",
     79         "libdl",
     80         "libsparse",
     81         "libz",
     82         "libprocessgroup",
     83         "libavb",
     84         "libkeyutils",
     85         "libprotobuf-cpp-lite",
     86         "libpropertyinfoserializer",
     87         "libpropertyinfoparser",
     88     ],
     89 }
     90 
     91 cc_library_static {
     92     name: "libinit",
     93     defaults: ["init_defaults"],
     94     srcs: [
     95         "action.cpp",
     96         "action_manager.cpp",
     97         "action_parser.cpp",
     98         "bootchart.cpp",
     99         "builtins.cpp",
    100         "capabilities.cpp",
    101         "descriptors.cpp",
    102         "devices.cpp",
    103         "firmware_handler.cpp",
    104         "import_parser.cpp",
    105         "init.cpp",
    106         "init_first_stage.cpp",
    107         "keychords.cpp",
    108         "log.cpp",
    109         "parser.cpp",
    110         "persistent_properties.cpp",
    111         "persistent_properties.proto",
    112         "property_service.cpp",
    113         "property_type.cpp",
    114         "reboot.cpp",
    115         "security.cpp",
    116         "selinux.cpp",
    117         "service.cpp",
    118         "sigchld_handler.cpp",
    119         "subcontext.cpp",
    120         "subcontext.proto",
    121         "rlimit_parser.cpp",
    122         "tokenizer.cpp",
    123         "uevent_listener.cpp",
    124         "ueventd.cpp",
    125         "ueventd_parser.cpp",
    126         "util.cpp",
    127         "watchdogd.cpp",
    128     ],
    129     whole_static_libs: ["libcap"],
    130     header_libs: ["bootimg_headers"],
    131     proto: {
    132         type: "lite",
    133         export_proto_headers: true,
    134     },
    135 }
    136 
    137 /*
    138 This is not yet ready, see the below TODOs for what is missing
    139 
    140 cc_binary {
    141     // TODO: Missing,
    142     //LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    143     //LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
    144 
    145     name: "init",
    146     defaults: ["init_defaults"],
    147     required: [
    148         "e2fsdroid",
    149         "mke2fs",
    150         "sload_f2fs",
    151         "make_f2fs",
    152     ],
    153     static_executable: true,
    154     srcs: ["main.cpp"],
    155     symlinks: [
    156         "sbin/ueventd",
    157         "sbin/watchdogd",
    158     ],
    159 }
    160 */
    161 
    162 // Tests
    163 // ------------------------------------------------------------------------------
    164 
    165 cc_test {
    166     name: "init_tests",
    167     defaults: ["init_defaults"],
    168     static_executable: true,
    169     srcs: [
    170         "devices_test.cpp",
    171         "init_test.cpp",
    172         "persistent_properties_test.cpp",
    173         "property_service_test.cpp",
    174         "property_type_test.cpp",
    175         "result_test.cpp",
    176         "rlimit_parser_test.cpp",
    177         "service_test.cpp",
    178         "subcontext_test.cpp",
    179         "ueventd_test.cpp",
    180         "util_test.cpp",
    181     ],
    182     static_libs: ["libinit"],
    183 }
    184 
    185 cc_benchmark {
    186     name: "init_benchmarks",
    187     static_executable: true,
    188     defaults: ["init_defaults"],
    189     srcs: [
    190         "subcontext_benchmark.cpp",
    191     ],
    192     static_libs: ["libinit"],
    193 }
    194 
    195 // Host Verifier
    196 // ------------------------------------------------------------------------------
    197 
    198 genrule {
    199     name: "generated_stub_builtin_function_map",
    200     out: ["generated_stub_builtin_function_map.h"],
    201     srcs: ["builtins.cpp"],
    202     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)",
    203 }
    204 
    205 cc_binary {
    206     name: "host_init_verifier",
    207     host_supported: true,
    208     cpp_std: "experimental",
    209     cflags: [
    210         "-Wall",
    211         "-Wextra",
    212         "-Wno-unused-parameter",
    213         "-Werror",
    214     ],
    215     static_libs: [
    216         "libbase",
    217         "libselinux",
    218     ],
    219     whole_static_libs: ["libcap"],
    220     shared_libs: [
    221         "libprotobuf-cpp-lite",
    222         "libhidl-gen-utils",
    223         "libprocessgroup",
    224         "liblog",
    225         "libcutils",
    226     ],
    227     srcs: [
    228         "action.cpp",
    229         "action_manager.cpp",
    230         "action_parser.cpp",
    231         "capabilities.cpp",
    232         "descriptors.cpp",
    233         "import_parser.cpp",
    234         "host_init_parser.cpp",
    235         "host_init_stubs.cpp",
    236         "parser.cpp",
    237         "rlimit_parser.cpp",
    238         "tokenizer.cpp",
    239         "service.cpp",
    240         "subcontext.cpp",
    241         "subcontext.proto",
    242         "util.cpp",
    243     ],
    244     proto: {
    245         type: "lite",
    246     },
    247     generated_headers: ["generated_stub_builtin_function_map"],
    248     target: {
    249         android: {
    250             enabled: false,
    251         },
    252         darwin: {
    253             enabled: false,
    254         },
    255     },
    256 }
    257 
    258 subdirs = ["*"]
    259