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
15LOCAL_PATH := $(call my-dir)
16
17# One can override the default android_filesystem_config.h file by using TARGET_FS_CONFIG_GEN.
18#   Set TARGET_FS_CONFIG_GEN to contain a list of intermediate format files
19#   for generating the android_filesystem_config.h file.
20#
21# More information can be found in the README
22
23ifneq ($(wildcard $(TARGET_DEVICE_DIR)/android_filesystem_config.h),)
24$(error Using $(TARGET_DEVICE_DIR)/android_filesystem_config.h is deprecated, please use TARGET_FS_CONFIG_GEN instead)
25endif
26
27android_filesystem_config := system/core/libcutils/include/private/android_filesystem_config.h
28capability_header := bionic/libc/kernel/uapi/linux/capability.h
29
30# List of supported vendor, oem, odm, vendor_dlkm, odm_dlkm, and system_dlkm Partitions
31fs_config_generate_extra_partition_list := $(strip \
32  $(if $(BOARD_USES_VENDORIMAGE)$(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE),vendor) \
33  $(if $(BOARD_USES_OEMIMAGE)$(BOARD_OEMIMAGE_FILE_SYSTEM_TYPE),oem) \
34  $(if $(BOARD_USES_ODMIMAGE)$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),odm) \
35  $(if $(BOARD_USES_VENDOR_DLKMIMAGE)$(BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE),vendor_dlkm) \
36  $(if $(BOARD_USES_ODM_DLKMIMAGE)$(BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE),odm_dlkm) \
37  $(if $(BOARD_USES_SYSTEM_DLKMIMAGE)$(BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE),system_dlkm) \
38)
39
40##################################
41# Generate the <p>/etc/fs_config_dirs binary files for each partition.
42# Add fs_config_dirs to PRODUCT_PACKAGES in the device make file to enable.
43include $(CLEAR_VARS)
44
45LOCAL_MODULE := fs_config_dirs
46LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
47LOCAL_LICENSE_CONDITIONS := notice
48LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
49LOCAL_REQUIRED_MODULES := \
50  fs_config_dirs_system \
51  fs_config_dirs_system_ext \
52  fs_config_dirs_product \
53  fs_config_dirs_nonsystem
54include $(BUILD_PHONY_PACKAGE)
55
56##################################
57# Generate the <p>/etc/fs_config_files binary files for each partition.
58# Add fs_config_files to PRODUCT_PACKAGES in the device make file to enable.
59include $(CLEAR_VARS)
60
61LOCAL_MODULE := fs_config_files
62LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
63LOCAL_LICENSE_CONDITIONS := notice
64LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
65LOCAL_REQUIRED_MODULES := \
66  fs_config_files_system \
67  fs_config_files_system_ext \
68  fs_config_files_product \
69  fs_config_files_nonsystem
70include $(BUILD_PHONY_PACKAGE)
71
72##################################
73# Generate the <p>/etc/fs_config_dirs binary files for all enabled partitions
74# excluding /system, /system_ext and /product. Add fs_config_dirs_nonsystem to
75# PRODUCT_PACKAGES in the device make file to enable.
76include $(CLEAR_VARS)
77
78LOCAL_MODULE := fs_config_dirs_nonsystem
79LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
80LOCAL_LICENSE_CONDITIONS := notice
81LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
82LOCAL_REQUIRED_MODULES := $(foreach t,$(fs_config_generate_extra_partition_list),fs_config_dirs_$(t))
83include $(BUILD_PHONY_PACKAGE)
84
85##################################
86# Generate the <p>/etc/fs_config_files binary files for all enabled partitions
87# excluding /system, /system_ext and /product. Add fs_config_files_nonsystem to
88# PRODUCT_PACKAGES in the device make file to enable.
89include $(CLEAR_VARS)
90
91LOCAL_MODULE := fs_config_files_nonsystem
92LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
93LOCAL_LICENSE_CONDITIONS := notice
94LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
95LOCAL_REQUIRED_MODULES := $(foreach t,$(fs_config_generate_extra_partition_list),fs_config_files_$(t))
96include $(BUILD_PHONY_PACKAGE)
97
98ifneq ($(filter oem,$(fs_config_generate_extra_partition_list)),)
99##################################
100# Generate the oem/etc/fs_config_dirs binary file for the target
101# Add fs_config_dirs or fs_config_dirs_nonsystem to PRODUCT_PACKAGES
102# in the device make file to enable
103include $(CLEAR_VARS)
104
105LOCAL_MODULE := fs_config_dirs_oem
106LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
107LOCAL_LICENSE_CONDITIONS := notice
108LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
109LOCAL_MODULE_CLASS := ETC
110LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs
111LOCAL_MODULE_PATH := $(TARGET_OUT_OEM)/etc
112include $(BUILD_SYSTEM)/base_rules.mk
113$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
114$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
115$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
116$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
117	@mkdir -p $(dir $@)
118	$< fsconfig \
119	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
120	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
121	   --partition oem \
122	   --dirs \
123	   --out_file $@ \
124	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
125
126##################################
127# Generate the oem/etc/fs_config_files binary file for the target
128# Add fs_config_files or fs_config_files_nonsystem to PRODUCT_PACKAGES
129# in the device make file to enable
130include $(CLEAR_VARS)
131
132LOCAL_MODULE := fs_config_files_oem
133LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
134LOCAL_LICENSE_CONDITIONS := notice
135LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
136LOCAL_MODULE_CLASS := ETC
137LOCAL_INSTALLED_MODULE_STEM := fs_config_files
138LOCAL_MODULE_PATH := $(TARGET_OUT_OEM)/etc
139include $(BUILD_SYSTEM)/base_rules.mk
140$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
141$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
142$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
143$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
144	@mkdir -p $(dir $@)
145	$< fsconfig \
146	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
147	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
148	   --partition oem \
149	   --files \
150	   --out_file $@ \
151	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
152
153endif
154
155ifneq ($(filter vendor_dlkm,$(fs_config_generate_extra_partition_list)),)
156##################################
157# Generate the vendor_dlkm/etc/fs_config_dirs binary file for the target
158# Add fs_config_dirs or fs_config_dirs_nonsystem to PRODUCT_PACKAGES in
159# the device make file to enable
160include $(CLEAR_VARS)
161
162LOCAL_MODULE := fs_config_dirs_vendor_dlkm
163LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
164LOCAL_LICENSE_CONDITIONS := notice
165LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
166LOCAL_MODULE_CLASS := ETC
167LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs
168LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_DLKM)/etc
169include $(BUILD_SYSTEM)/base_rules.mk
170$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
171$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
172$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
173$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
174	@mkdir -p $(dir $@)
175	$< fsconfig \
176	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
177	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
178	   --partition vendor_dlkm \
179	   --dirs \
180	   --out_file $@ \
181	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
182
183##################################
184# Generate the vendor_dlkm/etc/fs_config_files binary file for the target
185# Add fs_config_files or fs_config_files_nonsystem to PRODUCT_PACKAGES in
186# the device make file to enable
187include $(CLEAR_VARS)
188
189LOCAL_MODULE := fs_config_files_vendor_dlkm
190LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
191LOCAL_LICENSE_CONDITIONS := notice
192LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
193LOCAL_MODULE_CLASS := ETC
194LOCAL_INSTALLED_MODULE_STEM := fs_config_files
195LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_DLKM)/etc
196include $(BUILD_SYSTEM)/base_rules.mk
197$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
198$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
199$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
200$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
201	@mkdir -p $(dir $@)
202	$< fsconfig \
203	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
204	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
205	   --partition vendor_dlkm \
206	   --files \
207	   --out_file $@ \
208	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
209
210endif
211
212ifneq ($(filter odm_dlkm,$(fs_config_generate_extra_partition_list)),)
213##################################
214# Generate the odm_dlkm/etc/fs_config_dirs binary file for the target
215# Add fs_config_dirs or fs_config_dirs_nonsystem to PRODUCT_PACKAGES
216# in the device make file to enable
217include $(CLEAR_VARS)
218
219LOCAL_MODULE := fs_config_dirs_odm_dlkm
220LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
221LOCAL_LICENSE_CONDITIONS := notice
222LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
223LOCAL_MODULE_CLASS := ETC
224LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs
225LOCAL_MODULE_PATH := $(TARGET_OUT_ODM_DLKM)/etc
226include $(BUILD_SYSTEM)/base_rules.mk
227$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
228$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
229$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
230$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
231	@mkdir -p $(dir $@)
232	$< fsconfig \
233	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
234	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
235	   --partition odm_dlkm \
236	   --dirs \
237	   --out_file $@ \
238	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
239
240##################################
241# Generate the odm_dlkm/etc/fs_config_files binary file for the target
242# Add fs_config_files or fs_config_files_nonsystem to PRODUCT_PACKAGES
243# in the device make file to enable
244include $(CLEAR_VARS)
245
246LOCAL_MODULE := fs_config_files_odm_dlkm
247LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
248LOCAL_LICENSE_CONDITIONS := notice
249LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
250LOCAL_MODULE_CLASS := ETC
251LOCAL_INSTALLED_MODULE_STEM := fs_config_files
252LOCAL_MODULE_PATH := $(TARGET_OUT_ODM_DLKM)/etc
253include $(BUILD_SYSTEM)/base_rules.mk
254$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
255$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
256$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
257$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
258	@mkdir -p $(dir $@)
259	$< fsconfig \
260	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
261	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
262	   --partition odm_dlkm \
263	   --files \
264	   --out_file $@ \
265	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
266
267endif
268
269ifneq ($(filter system_dlkm,$(fs_config_generate_extra_partition_list)),)
270##################################
271# Generate the system_dlkm/etc/fs_config_dirs binary file for the target
272# Add fs_config_dirs or fs_config_dirs_nonsystem to PRODUCT_PACKAGES
273# in the device make file to enable
274include $(CLEAR_VARS)
275
276LOCAL_MODULE := fs_config_dirs_system_dlkm
277LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
278LOCAL_LICENSE_CONDITIONS := notice
279LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
280LOCAL_MODULE_CLASS := ETC
281LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs
282LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_DLKM)/etc
283include $(BUILD_SYSTEM)/base_rules.mk
284$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
285$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
286$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
287$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
288	@mkdir -p $(dir $@)
289	$< fsconfig \
290	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
291	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
292	   --partition system_dlkm \
293	   --dirs \
294	   --out_file $@ \
295	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
296
297##################################
298# Generate the system_dlkm/etc/fs_config_files binary file for the target
299# Add fs_config_files or fs_config_files_nonsystem to PRODUCT_PACKAGES
300# in the device make file to enable
301include $(CLEAR_VARS)
302
303LOCAL_MODULE := fs_config_files_system_dlkm
304LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
305LOCAL_LICENSE_CONDITIONS := notice
306LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
307LOCAL_MODULE_CLASS := ETC
308LOCAL_INSTALLED_MODULE_STEM := fs_config_files
309LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_DLKM)/etc
310include $(BUILD_SYSTEM)/base_rules.mk
311$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(android_filesystem_config)
312$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(capability_header)
313$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
314$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(android_filesystem_config) $(capability_header)
315	@mkdir -p $(dir $@)
316	$< fsconfig \
317	   --aid-header $(PRIVATE_ANDROID_FS_HDR) \
318	   --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
319	   --partition system_dlkm \
320	   --files \
321	   --out_file $@ \
322	   $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
323
324endif
325
326android_filesystem_config :=
327capability_header :=
328fs_config_generate_extra_partition_list :=
329