1// Copyright (C) 2008 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 // See: http://go/android-license-faq 17 default_applicable_licenses: ["Android-Apache-2.0"], 18} 19 20bootstrap_go_package { 21 name: "soong-fs_config", 22 pkgPath: "android/soong/fs_config", 23 deps: [ 24 "soong-android", 25 "soong-genrule", 26 ], 27 srcs: [ 28 "fs_config.go", 29 ], 30 pluginFor: ["soong_build"], 31} 32 33cc_binary_host { 34 name: "fs_config", 35 srcs: ["fs_config.c"], 36 shared_libs: [ 37 "libcutils", 38 "libselinux", 39 ], 40 cflags: ["-Werror"], 41} 42 43python_binary_host { 44 name: "fs_config_generator", 45 srcs: ["fs_config_generator.py"], 46} 47 48python_test_host { 49 name: "test_fs_config_generator", 50 main: "test_fs_config_generator.py", 51 srcs: [ 52 "test_fs_config_generator.py", 53 "fs_config_generator.py", 54 ], 55} 56 57target_fs_config_gen_filegroup { 58 name: "target_fs_config_gen", 59} 60 61genrule { 62 name: "oemaids_header_gen", 63 tools: ["fs_config_generator"], 64 cmd: "$(location fs_config_generator) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 65 srcs: [ 66 ":target_fs_config_gen", 67 ":android_filesystem_config_header", 68 ], 69 out: ["generated_oem_aid.h"], 70} 71 72cc_library_headers { 73 name: "oemaids_headers", 74 vendor_available: true, 75 generated_headers: ["oemaids_header_gen"], 76 export_generated_headers: ["oemaids_header_gen"], 77} 78 79// Generate the */etc/passwd text files for the target 80// These files may be empty if no AIDs are defined in 81// TARGET_FS_CONFIG_GEN files. 82genrule { 83 name: "passwd_gen_system", 84 tools: ["fs_config_generator"], 85 cmd: "$(location fs_config_generator) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 86 srcs: [ 87 ":target_fs_config_gen", 88 ":android_filesystem_config_header", 89 ], 90 out: ["passwd"], 91} 92 93prebuilt_etc { 94 name: "passwd_system", 95 filename: "passwd", 96 src: ":passwd_gen_system", 97} 98 99genrule { 100 name: "passwd_gen_vendor", 101 tools: ["fs_config_generator"], 102 cmd: "$(location fs_config_generator) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 103 srcs: [ 104 ":target_fs_config_gen", 105 ":android_filesystem_config_header", 106 ], 107 out: ["passwd"], 108} 109 110prebuilt_etc { 111 name: "passwd_vendor", 112 filename: "passwd", 113 vendor: true, 114 src: ":passwd_gen_vendor", 115} 116 117genrule { 118 name: "passwd_gen_odm", 119 tools: ["fs_config_generator"], 120 cmd: "$(location fs_config_generator) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 121 srcs: [ 122 ":target_fs_config_gen", 123 ":android_filesystem_config_header", 124 ], 125 out: ["passwd"], 126} 127 128prebuilt_etc { 129 name: "passwd_odm", 130 filename: "passwd", 131 device_specific: true, 132 src: ":passwd_gen_odm", 133} 134 135genrule { 136 name: "passwd_gen_product", 137 tools: ["fs_config_generator"], 138 cmd: "$(location fs_config_generator) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 139 srcs: [ 140 ":target_fs_config_gen", 141 ":android_filesystem_config_header", 142 ], 143 out: ["passwd"], 144} 145 146prebuilt_etc { 147 name: "passwd_product", 148 filename: "passwd", 149 product_specific: true, 150 src: ":passwd_gen_product", 151} 152 153genrule { 154 name: "passwd_gen_system_ext", 155 tools: ["fs_config_generator"], 156 cmd: "$(location fs_config_generator) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 157 srcs: [ 158 ":target_fs_config_gen", 159 ":android_filesystem_config_header", 160 ], 161 out: ["passwd"], 162} 163 164prebuilt_etc { 165 name: "passwd_system_ext", 166 filename: "passwd", 167 system_ext_specific: true, 168 src: ":passwd_gen_system_ext", 169} 170 171// Generate the */etc/group text files for the target 172// These files may be empty if no AIDs are defined in 173// TARGET_FS_CONFIG_GEN files. 174genrule { 175 name: "group_gen_system", 176 tools: ["fs_config_generator"], 177 cmd: "$(location fs_config_generator) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 178 srcs: [ 179 ":target_fs_config_gen", 180 ":android_filesystem_config_header", 181 ], 182 out: ["group"], 183} 184 185prebuilt_etc { 186 name: "group_system", 187 filename: "group", 188 src: ":group_gen_system", 189} 190 191genrule { 192 name: "group_gen_vendor", 193 tools: ["fs_config_generator"], 194 cmd: "$(location fs_config_generator) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 195 srcs: [ 196 ":target_fs_config_gen", 197 ":android_filesystem_config_header", 198 ], 199 out: ["group"], 200} 201 202prebuilt_etc { 203 name: "group_vendor", 204 filename: "group", 205 vendor: true, 206 src: ":group_gen_vendor", 207} 208 209genrule { 210 name: "group_gen_odm", 211 tools: ["fs_config_generator"], 212 cmd: "$(location fs_config_generator) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 213 srcs: [ 214 ":target_fs_config_gen", 215 ":android_filesystem_config_header", 216 ], 217 out: ["group"], 218} 219 220prebuilt_etc { 221 name: "group_odm", 222 filename: "group", 223 device_specific: true, 224 src: ":group_gen_odm", 225} 226 227genrule { 228 name: "group_gen_product", 229 tools: ["fs_config_generator"], 230 cmd: "$(location fs_config_generator) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 231 srcs: [ 232 ":target_fs_config_gen", 233 ":android_filesystem_config_header", 234 ], 235 out: ["group"], 236} 237 238prebuilt_etc { 239 name: "group_product", 240 filename: "group", 241 product_specific: true, 242 src: ":group_gen_product", 243} 244 245genrule { 246 name: "group_gen_system_ext", 247 tools: ["fs_config_generator"], 248 cmd: "$(location fs_config_generator) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", 249 srcs: [ 250 ":target_fs_config_gen", 251 ":android_filesystem_config_header", 252 ], 253 out: ["group"], 254} 255 256prebuilt_etc { 257 name: "group_system_ext", 258 filename: "group", 259 system_ext_specific: true, 260 src: ":group_gen_system_ext", 261} 262