(1)命令执行追溯
Sourcebuild/envsetup.sh
执行envsetup.sh脚本,把(TARGET_DEVICE)/BoardConfig.mk包含了进来
build/envsetup.sh:628: localTOPFILE=build/core/envsetup.mk
-->build/core/envsetup.mk:161: $(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
下面为里面的内容
CPXXX/AndroidBoard.mk:34:includekernel/AndroidKernel.mk
device/yulong/CPXXX/AndroidBoard.mk
21 ifeq ($(KERNEL_DEFCONFIG),)
22 ifeq ($(TARGET_BUILD_VARIANT),user)
23 KERNEL_DEFCONFIG := msm-perf_defconfig
24 else
25 KERNEL_DEFCONFIG:= msm_defconfig
26 endif
27 endif
(2)进入Kernel/AndroidKernel.mk
24 KERNEL_HEADER_DEFCONFIG := $(strip$(KERNEL_HEADER_DEFCONFIG))
25 ifeq ($(KERNEL_HEADER_DEFCONFIG),)
26 KERNEL_HEADER_DEFCONFIG:= $(KERNEL_DEFCONFIG)
27 endif
50 KERNEL_OUT :=$(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
51 KERNEL_CONFIG :=$(KERNEL_OUT)/.config //----------------------------目标文件
99 $(KERNEL_CONFIG): $(KERNEL_OUT)
100 $(MAKE) -C kernel O=../$(KERNEL_OUT)ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
101 $(hide) if [ ! -z"$(KERNEL_CONFIG_OVERRIDE)" ]; then \
102 echo "Overridingkernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
103 echo$(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \
104 $(MAKE) -C kernelO=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE)oldconfig; fi
(3)kernel/scripts/kconfig/Makefile
106 %_defconfig:$(obj)/conf
107 $(Q)bash$(srctree)/scripts/kconfig/yl_config.sh $@
108 $(Q)$<--defconfig=arch/$(SRCARCH)/configs/.$@ $(Kconfig)
由上面可知需要依赖scripts/kconfig/conf
(4)scripts/kconfig/conf工具生成如下:
156 conf-objs := conf.o zconf.tab.o
157 mconf-objs := mconf.o zconf.tab.o $(lxdialog)
158 nconf-objs := nconf.o zconf.tab.o nconf.gui.o
159kxgettext-objs := kxgettext.ozconf.tab.o
160qconf-cxxobjs := qconf.o
161 qconf-objs := zconf.tab.o
162 gconf-objs := gconf.o zconf.tab.o
163
164 hostprogs-y := conf
(5)进入kernel/makefile
793 export KBUILD_ALLDIRS := $(sort$(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools virt)
进入kernel/scripts/makefile.build
114 ifneq($(hostprogs-y)$(hostprogs-m),)
115 include scripts/Makefile.host
116 endif
(6)进入scripts/Makefile.host
33 __hostprogs :=$(sort $(hostprogs-y) $(hostprogs-m))
//---------------为conf
45 host-cobjs := $(sort $(foreachm,$(__hostprogs),$($(m)-objs)))
//----------------conf.o zconf.tab.o
125quiet_cmd_host-cmulti = HOSTLD $@
126 cmd_host-cmulti = $(HOSTCC) $(HOSTLDFLAGS) -o $@ \
127 $(addprefix$(obj)/,$($(@F)-objs)) \
128 $(HOST_LOADLIBES)$(HOSTLOADLIBES_$(@F))
129 $(host-cmulti):$(obj)/%: $(host-cobjs)$(host-cshlib) FORCE
130 $(call if_changed,host-cmulti)
(7)回到kernel/scripts/kconfig/Makefile
$(Q)$<--defconfig=arch/$(SRCARCH)/configs/.$@ $(Kconfig)
scripts/kconfig/conf --defconfig=arch/arm64/configs/.msm_defconfig Kconfig
需要了解多有的kconfig如何合在一起