| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 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: { | 
| Tom Cherry | 2ffd65e | 2017-07-26 14:17:09 -0700 | [diff] [blame] | 21 | misc_undefined: ["signed-integer-overflow"], | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 22 | }, | 
| Chih-Hung Hsieh | 122352d | 2017-10-02 15:20:07 -0700 | [diff] [blame] | 23 | cflags: [ | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 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 | }, | 
| Dmitry Shmidt | c3bc509 | 2017-08-23 14:57:07 -0700 | [diff] [blame] | 57 | uml: { | 
|  | 58 | cppflags: ["-DUSER_MODE_LINUX"], | 
| Elliott Hughes | dc699a2 | 2018-02-16 17:58:14 -0800 | [diff] [blame] | 59 | }, | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 60 | }, | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 61 | static_libs: [ | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 62 | "libseccomp_policy", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 63 | "libavb", | 
| Yifan Hong | d8ce1fb | 2019-03-22 17:21:58 -0700 | [diff] [blame] | 64 | "libcgrouprc_format", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 65 | "libprotobuf-cpp-lite", | 
|  | 66 | "libpropertyinfoserializer", | 
|  | 67 | "libpropertyinfoparser", | 
| Jiyong Park | 787322c | 2018-06-01 19:26:42 +0900 | [diff] [blame] | 68 | ], | 
|  | 69 | shared_libs: [ | 
| Jiyong Park | 787322c | 2018-06-01 19:26:42 +0900 | [diff] [blame] | 70 | "libbase", | 
| Martijn Coenen | 62e985a | 2018-09-04 06:29:14 +0200 | [diff] [blame] | 71 | "libbinder", | 
| Tao Bao | 66209ca | 2018-07-25 22:35:45 -0700 | [diff] [blame] | 72 | "libbootloader_message", | 
|  | 73 | "libcutils", | 
| Branden Archer | d052118 | 2018-11-15 08:43:48 -0800 | [diff] [blame] | 74 | "libcrypto", | 
| Jiyong Park | 787322c | 2018-06-01 19:26:42 +0900 | [diff] [blame] | 75 | "libdl", | 
| Tao Bao | 66209ca | 2018-07-25 22:35:45 -0700 | [diff] [blame] | 76 | "libext4_utils", | 
|  | 77 | "libfs_mgr", | 
| Eric Biggers | f05da4a | 2018-10-23 13:10:33 -0700 | [diff] [blame] | 78 | "libfscrypt", | 
| David Anderson | 0e330f1 | 2019-01-03 18:16:56 -0800 | [diff] [blame] | 79 | "libgsi", | 
| Tao Bao | 66209ca | 2018-07-25 22:35:45 -0700 | [diff] [blame] | 80 | "libhidl-gen-utils", | 
|  | 81 | "libkeyutils", | 
|  | 82 | "liblog", | 
|  | 83 | "liblogwrap", | 
| Tom Cherry | 7bfea3d | 2018-11-06 14:12:05 -0800 | [diff] [blame] | 84 | "liblp", | 
| Suren Baghdasaryan | 82b72a5 | 2018-12-21 11:41:50 -0800 | [diff] [blame] | 85 | "libprocessgroup", | 
| Yifan Hong | 6f9ce2e | 2019-03-05 15:47:16 -0800 | [diff] [blame] | 86 | "libprocessgroup_setup", | 
| Jiyong Park | 012171d | 2018-06-19 16:55:05 +0900 | [diff] [blame] | 87 | "libselinux", | 
| Martijn Coenen | 62e985a | 2018-09-04 06:29:14 +0200 | [diff] [blame] | 88 | "libutils", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 89 | ], | 
| Jiyong Park | 93318d4 | 2018-12-26 17:34:39 +0900 | [diff] [blame] | 90 | bootstrap: true, | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 91 | } | 
|  | 92 |  | 
|  | 93 | cc_library_static { | 
|  | 94 | name: "libinit", | 
| Tom Cherry | 3143848 | 2018-07-20 14:57:00 -0700 | [diff] [blame] | 95 | recovery_available: true, | 
| Jeff Vander Stoep | 724eda5 | 2019-02-15 12:13:38 -0800 | [diff] [blame] | 96 | defaults: ["init_defaults", "selinux_policy_version"], | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 97 | srcs: [ | 
|  | 98 | "action.cpp", | 
| Tom Cherry | 7fd3bc2 | 2018-02-13 15:36:14 -0800 | [diff] [blame] | 99 | "action_manager.cpp", | 
| Tom Cherry | 0f6417f | 2018-02-13 15:25:29 -0800 | [diff] [blame] | 100 | "action_parser.cpp", | 
| Branden Archer | d052118 | 2018-11-15 08:43:48 -0800 | [diff] [blame] | 101 | "boringssl_self_test.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 102 | "bootchart.cpp", | 
|  | 103 | "builtins.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 104 | "capabilities.cpp", | 
|  | 105 | "descriptors.cpp", | 
|  | 106 | "devices.cpp", | 
| Mark Salyzyn | 6c6ec72 | 2015-10-24 16:20:18 -0700 | [diff] [blame] | 107 | "epoll.cpp", | 
| Tom Cherry | ed506f7 | 2017-05-25 15:58:59 -0700 | [diff] [blame] | 108 | "firmware_handler.cpp", | 
| Tom Cherry | 7bfea3d | 2018-11-06 14:12:05 -0800 | [diff] [blame] | 109 | "first_stage_init.cpp", | 
| Tom Cherry | 38a11cc | 2018-07-20 15:18:04 -0700 | [diff] [blame] | 110 | "first_stage_mount.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 111 | "import_parser.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 112 | "init.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 113 | "keychords.cpp", | 
| Andrew F. Davis | 9963847 | 2018-07-09 13:12:00 -0500 | [diff] [blame] | 114 | "modalias_handler.cpp", | 
| Mark Salyzyn | a73ed22 | 2019-03-13 10:18:24 -0700 | [diff] [blame] | 115 | "mount_handler.cpp", | 
| Jiyong Park | 6866041 | 2019-01-16 23:00:59 +0900 | [diff] [blame] | 116 | "mount_namespace.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 117 | "parser.cpp", | 
| Tom Cherry | 16fad42 | 2017-08-04 15:59:03 -0700 | [diff] [blame] | 118 | "persistent_properties.cpp", | 
| Tom Cherry | a97faba | 2017-09-15 15:44:04 -0700 | [diff] [blame] | 119 | "persistent_properties.proto", | 
| Tom Cherry | 2a978d3 | 2017-08-09 17:13:21 -0700 | [diff] [blame] | 120 | "property_service.cpp", | 
| Tom Cherry | 927c5d5 | 2017-12-11 01:40:07 -0800 | [diff] [blame] | 121 | "property_type.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 122 | "reboot.cpp", | 
| Tom Cherry | 44aceed | 2018-08-03 13:36:18 -0700 | [diff] [blame] | 123 | "reboot_utils.cpp", | 
| Tom Cherry | 0c8d6d2 | 2017-08-10 12:22:44 -0700 | [diff] [blame] | 124 | "security.cpp", | 
|  | 125 | "selinux.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 126 | "service.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 127 | "sigchld_handler.cpp", | 
| Tom Cherry | cb0f9bb | 2017-09-12 15:58:47 -0700 | [diff] [blame] | 128 | "subcontext.cpp", | 
|  | 129 | "subcontext.proto", | 
| Tom Cherry | 7bfea3d | 2018-11-06 14:12:05 -0800 | [diff] [blame] | 130 | "switch_root.cpp", | 
| Tom Cherry | 7ac013d | 2017-08-25 10:39:25 -0700 | [diff] [blame] | 131 | "rlimit_parser.cpp", | 
| Tom Cherry | 67dee62 | 2017-07-27 12:54:48 -0700 | [diff] [blame] | 132 | "tokenizer.cpp", | 
| Tom Cherry | ed506f7 | 2017-05-25 15:58:59 -0700 | [diff] [blame] | 133 | "uevent_listener.cpp", | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 134 | "ueventd.cpp", | 
| Tom Cherry | ed506f7 | 2017-05-25 15:58:59 -0700 | [diff] [blame] | 135 | "ueventd_parser.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 136 | "util.cpp", | 
|  | 137 | ], | 
| Jiyong Park | 8502ed3 | 2019-02-25 22:18:37 +0900 | [diff] [blame] | 138 | whole_static_libs: ["libcap", "com.android.sysprop.apex"], | 
| Jayant Chowdhary | 478c7c1 | 2018-03-28 18:45:35 -0700 | [diff] [blame] | 139 | header_libs: ["bootimg_headers"], | 
| Tom Cherry | a97faba | 2017-09-15 15:44:04 -0700 | [diff] [blame] | 140 | proto: { | 
|  | 141 | type: "lite", | 
|  | 142 | export_proto_headers: true, | 
|  | 143 | }, | 
| Martijn Coenen | 62e985a | 2018-09-04 06:29:14 +0200 | [diff] [blame] | 144 |  | 
|  | 145 | target: { | 
|  | 146 | recovery: { | 
|  | 147 | cflags: ["-DRECOVERY"], | 
|  | 148 | exclude_shared_libs: ["libbinder", "libutils"], | 
|  | 149 | }, | 
|  | 150 | }, | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 151 | } | 
|  | 152 |  | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 153 | cc_binary { | 
| Tom Cherry | 3143848 | 2018-07-20 14:57:00 -0700 | [diff] [blame] | 154 | name: "init_second_stage", | 
|  | 155 | recovery_available: true, | 
|  | 156 | stem: "init", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 157 | defaults: ["init_defaults"], | 
| Tom Cherry | 3143848 | 2018-07-20 14:57:00 -0700 | [diff] [blame] | 158 | static_libs: ["libinit"], | 
| Jin Qian | 0045697 | 2017-07-06 11:43:45 -0700 | [diff] [blame] | 159 | required: [ | 
|  | 160 | "e2fsdroid", | 
|  | 161 | "mke2fs", | 
| Jaegeuk Kim | 899ad55 | 2017-11-28 19:26:34 -0800 | [diff] [blame] | 162 | "sload_f2fs", | 
|  | 163 | "make_f2fs", | 
| Jin Qian | 0045697 | 2017-07-06 11:43:45 -0700 | [diff] [blame] | 164 | ], | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 165 | srcs: ["main.cpp"], | 
| Tom Cherry | 3143848 | 2018-07-20 14:57:00 -0700 | [diff] [blame] | 166 | symlinks: ["ueventd"], | 
| Martijn Coenen | 62e985a | 2018-09-04 06:29:14 +0200 | [diff] [blame] | 167 | target: { | 
|  | 168 | recovery: { | 
|  | 169 | cflags: ["-DRECOVERY"], | 
|  | 170 | exclude_shared_libs: ["libbinder", "libutils"], | 
|  | 171 | }, | 
|  | 172 | }, | 
| Jiyong Park | 6866041 | 2019-01-16 23:00:59 +0900 | [diff] [blame] | 173 | ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"], | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 174 | } | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 175 |  | 
|  | 176 | // Tests | 
|  | 177 | // ------------------------------------------------------------------------------ | 
|  | 178 |  | 
|  | 179 | cc_test { | 
|  | 180 | name: "init_tests", | 
|  | 181 | defaults: ["init_defaults"], | 
| Tao Bao | a3d36a8 | 2018-08-24 09:40:04 -0700 | [diff] [blame] | 182 | compile_multilib: "first", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 183 | srcs: [ | 
|  | 184 | "devices_test.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 185 | "init_test.cpp", | 
| Mark Salyzyn | 75b901d | 2018-05-15 11:19:43 -0700 | [diff] [blame] | 186 | "keychords_test.cpp", | 
| Tom Cherry | 16fad42 | 2017-08-04 15:59:03 -0700 | [diff] [blame] | 187 | "persistent_properties_test.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 188 | "property_service_test.cpp", | 
| Tom Cherry | 927c5d5 | 2017-12-11 01:40:07 -0800 | [diff] [blame] | 189 | "property_type_test.cpp", | 
| Tom Cherry | 11a3aee | 2017-08-03 12:54:07 -0700 | [diff] [blame] | 190 | "result_test.cpp", | 
| Tom Cherry | 7ac013d | 2017-08-25 10:39:25 -0700 | [diff] [blame] | 191 | "rlimit_parser_test.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 192 | "service_test.cpp", | 
| Tom Cherry | cb0f9bb | 2017-09-12 15:58:47 -0700 | [diff] [blame] | 193 | "subcontext_test.cpp", | 
| Tom Cherry | 2a5a4e7 | 2018-06-26 13:56:34 -0700 | [diff] [blame] | 194 | "tokenizer_test.cpp", | 
| Tom Cherry | 5f0198b | 2018-07-17 15:28:16 -0700 | [diff] [blame] | 195 | "ueventd_parser_test.cpp", | 
| Tom Cherry | c2e181c | 2017-07-14 16:29:23 -0700 | [diff] [blame] | 196 | "ueventd_test.cpp", | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 197 | "util_test.cpp", | 
|  | 198 | ], | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 199 | static_libs: ["libinit"], | 
| Elliott Hughes | 40fdf3f | 2018-04-27 16:12:06 -0700 | [diff] [blame] | 200 | test_suites: ["device-tests"], | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 201 | } | 
|  | 202 |  | 
| Tom Cherry | cb0f9bb | 2017-09-12 15:58:47 -0700 | [diff] [blame] | 203 | cc_benchmark { | 
|  | 204 | name: "init_benchmarks", | 
|  | 205 | defaults: ["init_defaults"], | 
|  | 206 | srcs: [ | 
|  | 207 | "subcontext_benchmark.cpp", | 
|  | 208 | ], | 
| Tom Cherry | 618d310 | 2018-01-19 14:25:48 -0800 | [diff] [blame] | 209 | static_libs: ["libinit"], | 
| Tom Cherry | cb0f9bb | 2017-09-12 15:58:47 -0700 | [diff] [blame] | 210 | } | 
|  | 211 |  | 
| Tom Cherry | de6bd50 | 2018-02-13 16:50:08 -0800 | [diff] [blame] | 212 | // Host Verifier | 
|  | 213 | // ------------------------------------------------------------------------------ | 
|  | 214 |  | 
|  | 215 | genrule { | 
|  | 216 | name: "generated_stub_builtin_function_map", | 
|  | 217 | out: ["generated_stub_builtin_function_map.h"], | 
|  | 218 | srcs: ["builtins.cpp"], | 
| Tom Cherry | 547f731 | 2018-02-28 21:40:46 -0800 | [diff] [blame] | 219 | 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)", | 
| Tom Cherry | de6bd50 | 2018-02-13 16:50:08 -0800 | [diff] [blame] | 220 | } | 
|  | 221 |  | 
|  | 222 | cc_binary { | 
|  | 223 | name: "host_init_verifier", | 
|  | 224 | host_supported: true, | 
|  | 225 | cpp_std: "experimental", | 
|  | 226 | cflags: [ | 
|  | 227 | "-Wall", | 
|  | 228 | "-Wextra", | 
|  | 229 | "-Wno-unused-parameter", | 
|  | 230 | "-Werror", | 
|  | 231 | ], | 
|  | 232 | static_libs: [ | 
|  | 233 | "libbase", | 
|  | 234 | "libselinux", | 
|  | 235 | ], | 
|  | 236 | whole_static_libs: ["libcap"], | 
|  | 237 | shared_libs: [ | 
|  | 238 | "libprotobuf-cpp-lite", | 
|  | 239 | "libhidl-gen-utils", | 
|  | 240 | "libprocessgroup", | 
|  | 241 | "liblog", | 
|  | 242 | "libcutils", | 
|  | 243 | ], | 
| Yifan Hong | 3c4aa11 | 2018-06-20 22:49:48 +0000 | [diff] [blame] | 244 | srcs: [ | 
|  | 245 | "action.cpp", | 
|  | 246 | "action_manager.cpp", | 
|  | 247 | "action_parser.cpp", | 
|  | 248 | "capabilities.cpp", | 
|  | 249 | "descriptors.cpp", | 
|  | 250 | "epoll.cpp", | 
|  | 251 | "keychords.cpp", | 
|  | 252 | "import_parser.cpp", | 
|  | 253 | "host_import_parser.cpp", | 
|  | 254 | "host_init_verifier.cpp", | 
|  | 255 | "host_init_stubs.cpp", | 
|  | 256 | "parser.cpp", | 
|  | 257 | "rlimit_parser.cpp", | 
|  | 258 | "tokenizer.cpp", | 
|  | 259 | "service.cpp", | 
|  | 260 | "subcontext.cpp", | 
|  | 261 | "subcontext.proto", | 
|  | 262 | "util.cpp", | 
|  | 263 | ], | 
| Tom Cherry | de6bd50 | 2018-02-13 16:50:08 -0800 | [diff] [blame] | 264 | proto: { | 
|  | 265 | type: "lite", | 
|  | 266 | }, | 
| Yifan Hong | 3c4aa11 | 2018-06-20 22:49:48 +0000 | [diff] [blame] | 267 | generated_headers: [ | 
|  | 268 | "generated_stub_builtin_function_map", | 
|  | 269 | "generated_android_ids" | 
|  | 270 | ], | 
| Tom Cherry | 96ff0fe | 2018-02-28 17:20:27 -0800 | [diff] [blame] | 271 | target: { | 
| Tom Cherry | 547f731 | 2018-02-28 21:40:46 -0800 | [diff] [blame] | 272 | android: { | 
|  | 273 | enabled: false, | 
|  | 274 | }, | 
| Tom Cherry | 96ff0fe | 2018-02-28 17:20:27 -0800 | [diff] [blame] | 275 | darwin: { | 
| Yifan Hong | 3c4aa11 | 2018-06-20 22:49:48 +0000 | [diff] [blame] | 276 | enabled: false, | 
| Tom Cherry | 96ff0fe | 2018-02-28 17:20:27 -0800 | [diff] [blame] | 277 | }, | 
|  | 278 | }, | 
| Tom Cherry | de6bd50 | 2018-02-13 16:50:08 -0800 | [diff] [blame] | 279 | } | 
|  | 280 |  | 
| Tom Cherry | 14fc013 | 2017-05-09 17:11:57 -0700 | [diff] [blame] | 281 | subdirs = ["*"] |