config.mk

作者: gbmaotai | 来源:发表于2018-08-29 16:52 被阅读0次
    1.设置一些原文件路径,以SRC_开头
    2.包含文件$(BUILD_SYSTEM)/pathmap.mk

    定义了一些短名到长路径名的影射,
    存放在pathmap_INCL,通过include-path-for $1 根据短名获取到长路径名FRAMEWORKS_BASE_JAVA_SRC_DIRS 保存了所有要编进Android.jar的framework/base下的文件路径。

    设置编译目标,.jar,.bin,.so,.a,.apk,...。

    以BUILD_开头,指向具体的mk文件。比如

    BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
    
    4.设置COMMON编译选项。以COMMON_开头。

    COMMON_GLOBAL_CFLAGS,COMMON_RELEASE_CFLAGS。COMMON_PACKAGE_SUFFIX:=.zip

    5.包含include$(TOPDIR)buildspec.mk。

    设置一些主要的变量,比如目标产品名称。这些都要我们在make之前设置。这个文件有个模版是build/buildspec.mk.default。

    6.包含include$(BUILD_SYSTEM)/envsetup.mk。

    设置一些跟product相关的变量。

    7. 包含BroadConfig.mk

    在build/target/board/(TARGET_DEVICE)/BroadConfig.mk,device/*/(TARGET_DEVICE)/BroadConfig.mk vendor/*/$(TARGET_DEVICE)/BroadConfig.mk 这三个路径下,查找product的目标设备的BroadConfig.mk文件。并包含进来。BroadConfig.mk设置了每个设备的自己的一些变量值,来区别编译时的行为。TARGET_CPU_ABI 必须要设置。

    8.设置combo_target := HOST_,包含include $(BUILD_SYSTEM)/combo/select.mk。

    根据操作系统和CPU类型设置以HOST_开头的变量,并包含include(BUILD_SYSTEM)/combo/HOST_(HOST_OS)$(HOST_ARCH).mk,其中HOST_OS是主机操作系统,HOST_ARCH是主机CPU类型,比如HOST_linux_x86.mk.在这个文件里修改以HOST开头的变量,主要是向HOST_GLOBAL_CFLAGS添加标志。

    9.设置combo_target := TARGET_,包含include $(BUILD_SYSTEM)/combo/select.mk。

    根据操作系统和CPU类型设置以TARGET_开头的变量,并包含include(BUILD_SYSTEM)/combo/TARGET_(TARGET_OS)$(TARGET_ARCH).mk,其中TARGET_OS是目标操作系统,TARGET_ARCH是目标CPU类型,比如TARGET_linux_arm.mk.在这个文件里修改以TARGET开头的变量,主要是设置交叉编译工具和参数和基本的系统头文件。定义了transform-o-to-shared-lib-inner,transform-o-to-executable-inner,transform-o-to-static-executable-inner三个函数,把.o文件分别转化成共享库文件,可执行文件,静态库文件。

    10.包含 include$(BUILD_SYSTEM)/combo/javac.mk。得到一个JAVAC编译器
    11.检查BUILD_ENV_SEQUENCE_NUMBER,

    这个是在前面的buildspec.mk设置或者通过envsetup.sh脚本设置。
    和CORRECT_BUILD_ENV_SEQUENCE_NUMBER比较。

    12.设置主机通用工具变量。

    其中一些是主机自带的

    LEX:= flex
    YACC:=bison -d   DOXYGEN:= doxygen,
    

    还有一些是在/out/target/((HOST_OS)-$(HOST_ARCH))/bin下的程序,

    MKBOOTIMG:=$(HOST_OUT_EXECUTABLES)/mkbootimg。
    
    13.设置最终的编译连接参数。有如下参数变量:
    HOST_GLOBAL_CFLAGS,   HOST_RELEASE_CFLAGS,     HOST_GLOBAL_CPPFLAGS,
    HOST_RELEASE_CPPFLAGS, TARGET_GLOBAL_CFLAGS,   TARGET_RELEASE_CFLAGS,
    TARGET_GLOBAL_CPPFLAGS,TARGET_RELEASE_CPPFLAGS, HOST_GLOBAL_LD_DIRS,
    TARGET_GLOBAL_LD_DIRS, HOST_PROJECT_INCLUDES,   TARGET_PROJECT_INCLUDES,
    

    相关文章

      网友评论

          本文标题:config.mk

          本文链接:https://www.haomeiwen.com/subject/quskwftx.html