您的位置:首页 > 运维架构

itop4412 uboot 学习详细记录四丶Exynos4412 编译Makefile的配置文件config.mk分析)

2017-12-06 16:50 501 查看
一、打开Makefile文件:
itop_4412_android_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm_cortexa9 smdkc210 samsung s5pc210   //@:指的是当前target,也即itop_4412_android

OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))

SRCTREE := $(CURDIR)

TOPDIR := $(SRCTREE)

LNDIR := $(OBJTREE)

export TOPDIR SRCTREE OBJTREE

MKCONFIG := $(SRCTREE)/mkconfig

export MKCONFIG    //分析得出 MKCONFIG 其实为CURID/mkconfig,即为当前编译目录下的mkconfig文件路径

//转换出来就是       mkconfig itop_4412_android arm arm_cortexa9 smdkc210 samsung s5pc210

二、打开mkconfig文件
#!/bin/sh -e

# Script to create header files and links to configure

# U-Boot for a specific board.

#

# Parameters:  Target  Architecture  CPU  Board [VENDOR] [SOC]

#

# (C) 2002-2006 DENX Software Engineering, Wolfgang Denk <wd@denx.de>

#

APPEND=no # Default: Create new config file

BOARD_NAME="" # Name to print in make output

TARGETS=""

while [ $# -gt 0 ] ; do  #如果    参数数量 > 0
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
-t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
*)  break ;;
esac

done

[ "${BOARD_NAME}" ] || BOARD_NAME="$1"

[ $# -lt 4 ] && exit 1

[ $# -gt 6 ] && exit 1

if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then
echo "Failed: \$ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}" 1>&2
exit 1

fi

echo "Configuring for ${BOARD_NAME} board..."

#

# Create link to architecture specific headers

#

if [ "$SRCTREE" != "$OBJTREE" ] ; then
mkdir -p ${OBJTREE}/include
mkdir -p ${OBJTREE}/include2
cd ${OBJTREE}/include2
rm -f asm
ln -s ${SRCTREE}/include/asm-$2 asm
LNPREFIX="../../include2/asm/"
cd ../include
rm -rf asm-$2
rm -f asm
mkdir asm-$2
ln -s asm-$2 asm  

else
cd ./include
rm -f asm   
ln -s asm-$2 asm  #链接asm->asm-arm

fi

rm -f asm-$2/arch      #删除asm-arm/arch目录

if [ -z "$6" -o "$6" = "NULL" ] ; then
ln -s ${LNPREFIX}arch-$3 asm-$2/arch

else
ln -s ${LNPREFIX}arch-$6 asm-$2/arch  # 链接asm-arm /arch-> arch-s5pc210  

fi

if [ "$2" = "arm" ] ; then
rm -f asm-$2/proc
#删除asm-arm/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc   #链接asm-arm/proc->proc-armv

fi

#

# Create include file for Make

#

echo "ARCH   = $2" >  config.mk

echo "CPU    = $3" >> config.mk

echo "BOARD  = $4" >> config.mk

[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk

[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC    = $6" >> config.mk

# Assign board directory to BOARDIR variable

if [ -z "$5" -o "$5" = "NULL" ] ; then

    BOARDDIR=$4

else

    BOARDDIR=$5/$4

fi

#

# Create board specific header file

#

if [ "$APPEND" = "yes" ] # Append to existing config file

then
echo >> config.h

else
> config.h
# Create new config file

fi

echo "/* Automatically generated - do not edit */" >>config.h

for i in ${TARGETS} ; do
echo "#define CONFIG_MK_${i} 1" >>config.h ;

done

cat << EOF >> config.h

#define CONFIG_BOARDDIR board/$BOARDDIR

#include <config_defaults.h>

#include <configs/$1.h>

#include <asm/config.h>

EOF

exit 0

for i in ${TARGETS} ; do
echo "#define CONFIG_MK_${i} 1" >>config.h ;

done

cat << EOF >> config.h

#define CONFIG_BOARDDIR board/$BOARDDIR

#include <config_defaults.h>

#include <configs/$1.h>

#include <asm/config.h>

EOF

exit 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: