188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copyright (C) 2008 The Android Open Source Project
288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License");
488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# you may not use this file except in compliance with the License.
588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# You may obtain a copy of the License at
688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#      http://www.apache.org/licenses/LICENSE-2.0
888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Unless required by applicable law or agreed to in writing, software
1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS,
1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# See the License for the specific language governing permissions and
1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# limitations under the License.
1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_PATH := $(call my-dir)
16073a9ebbbf509097bccd0f560cefd84f10879c13Mark Salyzyn
1788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinclude $(CLEAR_VARS)
1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_SRC_FILES := fs_config.c
2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_MODULE := fs_config
21073a9ebbbf509097bccd0f560cefd84f10879c13Mark SalyzynLOCAL_SHARED_LIBRARIES := libcutils libselinux
221c5f19eabed2affa765c364434efb49f92abf39bMark SalyzynLOCAL_CFLAGS := -Werror
2388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinclude $(BUILD_HOST_EXECUTABLE)
2506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
2606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# To Build the custom target binary for the host to generate the fs_config
2706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# override files. The executable is hard coded to include the
2806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# $(TARGET_ANDROID_FILESYSTEM_CONFIG_H) file if it exists.
2906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# Expectations:
3006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn#    device/<vendor>/<device>/android_filesystem_config.h
3106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn#        fills in struct fs_path_config android_device_dirs[] and
3206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn#                 struct fs_path_config android_device_files[]
3306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn#    device/<vendor>/<device>/device.mk
3406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn#        PRODUCT_PACKAGES += fs_config_dirs fs_config_files
3506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
3606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# If not specified, check if default one to be found
3706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynANDROID_FS_CONFIG_H := android_filesystem_config.h
3806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
3906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynifneq ($(TARGET_ANDROID_FILESYSTEM_CONFIG_H),)
4006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynifeq ($(filter %/$(ANDROID_FS_CONFIG_H),$(TARGET_ANDROID_FILESYSTEM_CONFIG_H)),)
4106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn$(error TARGET_ANDROID_FILESYSTEM_CONFIG_H file name must be $(ANDROID_FS_CONFIG_H), \
4206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn see "$(notdir $(TARGET_ANDROID_FILESYSTEM_CONFIG_H))".)
4306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynendif
4406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
4506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynmy_fs_config_h := $(TARGET_ANDROID_FILESYSTEM_CONFIG_H)
4606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynelse ifneq ($(wildcard $(TARGET_DEVICE_DIR)/$(ANDROID_FS_CONFIG_H)),)
4706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynmy_fs_config_h := $(TARGET_DEVICE_DIR)/$(ANDROID_FS_CONFIG_H)
4806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynelse
4906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynmy_fs_config_h := $(LOCAL_PATH)/default/$(ANDROID_FS_CONFIG_H)
5006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynendif
5106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
5206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(CLEAR_VARS)
5306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_SRC_FILES := fs_config_generate.c
5406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_MODULE := fs_config_generate_$(TARGET_DEVICE)
5506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_SHARED_LIBRARIES := libcutils
5606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_CFLAGS := -Werror -Wno-error=\#warnings
5706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_C_INCLUDES := $(dir $(my_fs_config_h))
5806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(BUILD_HOST_EXECUTABLE)
5906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynfs_config_generate_bin := $(LOCAL_INSTALLED_MODULE)
6006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
6106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# Generate the system/etc/fs_config_dirs binary file for the target
6206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# Add fs_config_dirs to PRODUCT_PACKAGES in the device make file to enable
6306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(CLEAR_VARS)
6406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
6506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_MODULE := fs_config_dirs
6606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_MODULE_CLASS := ETC
6706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(BUILD_SYSTEM)/base_rules.mk
6806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn$(LOCAL_BUILT_MODULE): $(fs_config_generate_bin)
6906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn	@mkdir -p $(dir $@)
7006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn	$< -D -o $@
7106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
7206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# Generate the system/etc/fs_config_files binary file for the target
7306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn# Add fs_config_files to PRODUCT_PACKAGES in the device make file to enable
7406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(CLEAR_VARS)
7506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
7606b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_MODULE := fs_config_files
7706b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynLOCAL_MODULE_CLASS := ETC
7806b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyninclude $(BUILD_SYSTEM)/base_rules.mk
7906b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn$(LOCAL_BUILT_MODULE): $(fs_config_generate_bin)
8006b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn	@mkdir -p $(dir $@)
8106b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn	$< -F -o $@
8206b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzyn
8306b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark SalyzynANDROID_FS_CONFIG_H :=
8406b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynmy_fs_config_h :=
8506b91b9bcf4410d7b8c8c5e10a717671dd327c35Mark Salyzynfs_config_generate_bin :=
86