Android.bp 中添加宏控
代码基于:Android R
0. 前言
在Android.mk 中有时候需要根据某个条件添加宏:
ifeq ($(ENABLE_USER2ENG),true)
LOCAL_CFLAGS += -DALLOW_ADBD_DISABLE_VERITY=1
LOCAL_CFLAGS += -DENABLE_USER2ENG=1
endif
但是Android.bp 只是纯粹的配置文件,不包括分支、循环等流程控制。如果想要在Android.bp 中添加宏控,也是可以做到的。
本文以liblog 为例,希望在liblog 中禁用所有userspace 的ALOGD、SLOGD、RLOGD ,以及java 端的Log.d 等。
1. liblog_device.mk
DISABLE_PRINT_WHEN_USER := 1SOONG_CONFIG_NAMESPACES += arm_liblogSOONG_CONFIG_arm_liblog := \disable_print_when_userSOONG_CONFIG_arm_liblog_disable_print_when_user := $(DISABLE_PRINT_WHEN_USER)
在Android.bp 中配置前需要通过mk 的方式注册到build/make/core/main.mk
- SOONG_CONFIG_NAMESPACES 是bp 进行config 配置时需要指定,详细看第 2 节;
- 上面指定的 namespace 名称加上 SOONG_CONFIG_ 前缀,用以注册所有的变量名;
- 在变量名前加上前缀 SOONG_CONFIG_namespaces_ 用以定义变量的值;
这个mk 可以在编译的product.mk 或者BoardConfig.mk 或者vendor/*/device-vendor.mk 中引入:
$(call inherit-product-if-exists, system/core/liblog/liblog.device.mk)
2. Android.bp 中
soong_config_module_type {name: "arm_liblog_cc_defaults",module_type: "cc_defaults",config_namespace: "arm_liblog",variables: ["disable_print_when_user",],properties: ["cflags",],
}soong_config_bool_variable {name: "disable_print_when_user",
}arm_liblog_cc_defaults {name: "arm_liblog_defaults",soong_config_variables: {disable_print_when_user: {cflags: ["-DDISABLE_PRINT_WHEN_USER=1",],},},
}
本配置中共三个部分:
- soong_config_module_type;
- soong_config_bool_variable;
- arm_liblog_cc_defaults;
1.1 soong_config_module_type
这个是bp 配置config 的核心,可以定义不同的配置类别,在编译的时候(soong_config_modules.go 中解析)会统计所有的soong_config_module_type。
- name:指定config 配置,例如这里的arm_liblog_cc_defaults
arm_liblog_cc_defaults {name: "arm_liblog_defaults",...
}
- config_namespace:config 配置的namespace,必须要指定,详细看第 1 节
- variables:注册所有的变量
- properties:变量需要涉及的property
1.2 soong_config_bool_variable
定义arm_liblog_cc_defaults 中依赖的变量,这里的变量的值在第 1 节中的mk 中已经定义。
name 指定的是变量名,与第 1 节中的mk 中定义必须同名。
1.3 arm_liblog_cc_defaults
变量配置的主要项,name 会被以后编译liblog.so 引用
cc_library {name: "liblog",...defaults: ["arm_liblog_defaults",],
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
