对于Android不同项目使用同一工程时的板级设置

	我们经常会遇到多个项目使用同一工程的情况,对于android源码,动辄就几十G,采用建立多个工程显然不可取。只能考虑添加板级来解决改问题。
	板级的关键在于通过lunch选项,选择不同的板级,最终选择编译不同的文件。
	上面提到“选择编译”,选择就涉及到.config里面的配置选项,编译就涉及到Makefile。
	关于.config,menuconfig, def_config, Kconfig的相关问题,可以参考如下链接:
	https://blog.csdn.net/zhouxiangbai/article/details/54693476

我的工程希望实现的目标是,通过lunch 选择3个不同项目进行编译。lunch选择不同项目对kernel的影响是选择了不同的def_config,我会在def_config中设置我想要默认为y的CONFIG选项。

关于我的工程设置:
在我们执行make menuconfig命令时,会读取各级Kconfig的内容,arch/arm/Kconfig 负责生成最顶层的menuconfig界面的内容。所以我在arch/arm/Kconfig 加入了如下内容:

# add for 3 different project
menu "Test Project Select"
config TEST_OEM_BOARD_PROJECT
	bool "Support for test OEM Board project"
	default n
	help
	  This is for test oem board project select or not.

config TEST_TOY_BEAR_PROJECT
	bool "Support for test Toy Bear project"
	default n
	help
	  This is for test toy bear project select or not.

config TEST_CUP_PROJECT
	bool "Support for test Cup project"
	default n
	help
	  This is for test Cup project select or not.
endmenu

以上选项的默认值设为n,就是默认不选择,为的是通过在不同的def_config文件中决定它是否选择。比如,在def_config中设置了CONFIG_TEST_TOY_BEAR_PROJECT为y,则CONFIG_TEST_TOY_BEAR_PROJECT=y会被各级Makefile识别到,从而根据这个选项来条件编译不同的文件。

在三个工程中,我希望编译不同的dts文件。则只需要在arch/arm/boot/dts/qcom/Makefile文件中加入如下内容:

ifeq ($(CONFIG_TEST_OEM_BOARD_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp.dtb \
			 msm8909-mtp.dtb
else
ifeq ($(CONFIG_TEST_CUP_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp-test-cup.dtb \
			 msm8909-mtp-test-cup.dtb
else
ifeq ($(CONFIG_TEST_TOY_BEAR_PROJECT),y)
dtb-$(CONFIG_ARCH_MSM8909) += msm8909-pm8916-mtp-test-toy-bear.dtb \
			 msm8909-mtp-test-toy-bear.dtb
endif
endif
endif

这样就实现了lunch不同项目,选择不同def_config,最终选择编译不同的文件。

假如在其他文件夹下还有其他需要选择编译的文件,也只需要修改相应的Kconfig,并在def_config中添加默认值即可。比如:在TEST_CUP_PROJECT和TEST_TOY_BEAR_PROJECT中需要分别编译leds_test_cup.c和leds_test_toy_bear.c文件。则,我们需要在drivers/leds/Kconfig文件加入如下行:

#jiang add for Jeejio cup leds driver
config LEDS_JEEJIO_CUP
	bool "Support for Jeejio Cup Leds"
	default n
	help
	  This is for jeejio Cup leds driver select.

#jiang add for Jeejio toy bear leds driver
config LEDS_JEEJIO_TOY_BEAR
	bool "Support for Jeejio Toy Bear Leds"
	default n
	help
	  This is for jeejio toy bear leds driver select.

同时在def_config中添加:

CONFIG_LEDS_JEEJIO_CUP=y

CONFIG_LEDS_JEEJIO_TOY_BEAR=y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值