1,顶层Makefile通过make platform_config配置,创建config/include.h,并将一些配置写入config.h。
2,调用shell脚本mkconfig,并传入平台,硬件体系架构等参数。@$(MKCONFIG) -a ti8148_ipnc arm arm_cortexa8 ti8148_ipnc ti ti81xx
3,mkconfig脚本 主要根据传入参数,确定硬件平台,并将对应的变量写入新创建的文件include/config.mk中。
4,mkconfig脚本创建include/config.h,并使config.h包含一些配置文件
#include <config_defaults.h>
#include <configs/ti8148_ipnc.h>
#include <asm/config.h>
5,顶层Makefile包含include/config.mk,导出变量。
6,顶层Makfile包含顶层目录的config.mk。
7,顶层目录config.mk包含board/ti/ti8148_ipnc/config.mk。
8,确定最终链接文件LDSCRIPT := /board/ti/ti8148_ipnc/u-boot.lds,;包含include/autoconf.mk,autoconf.mk确定了所有的配置选项,为后面进行条件编译提供基础。
9,u-boot Makefile 体系
名 称 | 描 述 |
顶层Makefile | 从总体上控制着u-boot的编译、连接,定义总目标u-boot.bin |
顶层config.mk | 规定了编译的规则,被所有Makefile所调用 |
顶层rules.mk | 生成依赖关系,被各级子目录Makefile所调用 |
各级子目录Makefile | 决定当前目录的编译、连接 |
顶层mkconfig | 在编译之前运行,为编译做准备 |
mkconfig(shel l脚本)是在编译之前做一些准备,笔者认为可以不算做Makefile集体中的一部分。
名称 | 描述 |
include/config.mk | mkconfig所生成,被顶层Makefile所包含,定义ARCH、CPU等全局变量 |
各级子目录.depend | 各级子目录makefile所生成,并被各级子目录makefile所包含,定义依赖关系 |