u - boot Makefile 분석 -- (1)

[Author: Bo Shen ]
[u-boot: 2014.01-rc1, e03c76c30342797a25ef9350e51c8daa0b56f1df]
다음은 u - boot Makefile 분석 을 진행 하 겠 습 니 다.
1. u - boot 의 고정 버 전 정보, 컴 파일 시 생 성 된 시간 과 동적 버 전 정보.
  1 #
  2 # (C) Copyright 2000-2013
  3 # Wolfgang Denk, DENX Software Engineering, [email protected].
  4 #
  5 # SPDX-License-Identifier:      GPL-2.0+
  6 #
  7 
  8 VERSION = 2014
  9 PATCHLEVEL = 01
 10 SUBLEVEL =
 11 EXTRAVERSION = -rc1
 12 ifneq "$(SUBLEVEL)" ""
 13 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 14 else
 15 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
 16 endif
 17 TIMESTAMP_FILE = $(obj)include/generated/timestamp_autogenerated.h
 18 VERSION_FILE = $(obj)include/generated/version_autogenerated.h
 19 
1~6: Header (license information)
8 ~ 11: u - boot 버 전의 기본 정보
12 ~ 6: SUBLEVEL 이 비어 있 는 지 판단 하여 UBOOT_VERSION
17 ~ 8: 컴 파일 할 때 생 성 된 시간 정보, 버 전 정보, 후속 상세 설명.
2. u - boot 의 호스트 정 보 를 컴 파일 합 니 다.
 20 HOSTARCH := $(shell uname -m | \
 21         sed -e s/i.86/x86/ \
 22             -e s/sun4u/sparc64/ \
 23             -e s/arm.*/arm/ \
 24             -e s/sa110/arm/ \
 25             -e s/ppc64/powerpc/ \
 26             -e s/ppc/powerpc/ \
 27             -e s/macppc/powerpc/\
 28             -e s/sh.*/sh/)
 29 
 30 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
 31             sed -e 's/\(cygwin\).*/cygwin/')
 32 
 33 export  HOSTARCH HOSTOS
20 ~ 28: 셸 명령 을 실행 하여 호스트 의 구 조 를 가 져 온 다음 에 교체 동작 을 합 니 다 (예 를 들 어 sa 110 을 arm 으로 바 꿉 니 다).uname 에 대한 구체 적 인 명령 은 스스로 찾 아 보 세 요.
30 ~ 31: 셸 명령 을 실행 하여 호스트 운영 체 제 를 가 져 오고 큰 글 씨 를 소문 자로 변환 합 니 다.
33: export 호스트 의 구조 와 운영 체제.
3. VENDOR 에 빈 값 부여
 35 # Deal with colliding definitions from tcsh etc.
 36 VENDOR=
 37 

4. 조용 한 컴 파일 이 필요 한 지 판단 한다.
 38 #########################################################################
 39 # Allow for silent builds
 40 ifeq (,$(findstring s,$(MAKEFLAGS)))
 41 XECHO = echo
 42 else
 43 XECHO = :
 44 endif
make 의 flag 에 s 가 있 는 지 판단 하고 있 으 면 정적 컴 파일 입 니 다.make - s 를 실행 하면 컴 파일 정보 출력 을 보지 못 할 것 입 니 다.
5. 생 성 된 object 파일 을 단독 폴 더 에 컴 파일 할 지 여 부 를 판단 합 니 다.구체 적 으로 주석 을 보면 알 수 있다.
 46 #########################################################################
 47 #
 48 # U-boot build supports generating object files in a separate external
 49 # directory. Two use cases are supported:
 50 #
 51 # 1) Add O= to the make command line
 52 # 'make O=/tmp/build all'
 53 #
 54 # 2) Set environment variable BUILD_DIR to point to the desired location
 55 # 'export BUILD_DIR=/tmp/build'
 56 # 'make'
 57 #
 58 # The second approach can also be used with a MAKEALL script
 59 # 'export BUILD_DIR=/tmp/build'
 60 # './MAKEALL'
 61 #
 62 # Command line 'O=' setting overrides BUILD_DIR environment variable.
 63 #
 64 # When none of the above methods is used the local build is performed and
 65 # the object files are placed in the source directory.
 66 #
 67 
 68 ifeq ("$(origin O)", "command line")
 69 BUILD_DIR := $(O)
 70 endif

6. 소스 코드 검 사 를 해 야 하 는 지 확인 하고 주석 을 구체 적 으로 보면 알 수 있 습 니 다.원본 코드 를 검사 하려 면 sparse 명령 의 지원 이 필요 합 니 다.
 72 # Call a source code checker (by default, "sparse") as part of the
 73 # C compilation.
 74 #
 75 # Use 'make C=1' to enable checking of re-compiled files.
 76 #
 77 # See the linux kernel file "Documentation/sparse.txt" for more details,
 78 # including where to get the "sparse" utility.
 79 
 80 ifdef C
 81 ifeq ("$(origin C)", "command line")
 82 CHECKSRC := $(C)
 83 endif
 84 endif
 85 ifndef CHECKSRC
 86   CHECKSRC = 0
 87 endif
 88 export CHECKSRC

7. 다섯 번 째 단계 의 BUILD 판단DIR 이 비어 있 는 지, 비어 있 지 않 은 지 여부
 90 ifneq ($(BUILD_DIR),)
 91 saved-output := $(BUILD_DIR)
 92 
 93 # Attempt to create a output directory.
 94 $(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})
 95 
 96 # Verify if it was successful.
 97 BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
 98 $(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
 99 endif # ifneq ($(BUILD_DIR),)
90: 예 를 들 어 BUILDDIR 이 비어 있 지 않 으 면 후속 동작 을 합 니 다.
93 ~ 94: 판단 BUILDDIR 이 존재 하 는 지 여부 입 니 다. 존재 하지 않 는 다 면 이 폴 더 를 만 듭 니 다.
97 ~ 99: 폴 더 가 만 들 어 졌 는 지 확인 합 니 다.오류 정 보 를 출력 하 는 데 성공 하지 못 했 습 니 다.

좋은 웹페이지 즐겨찾기