GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读
时间:11-26
来源:互联网
点击:
- atthe-traditional-cppflag
- #DOESNOThavethesamesemanticsasGNUCsflag,allitdoes
- #isinvoketheGNUpreprocessorinstockANSI/ISOCfashion.
- #
- #Appleslinkerissimilar,thankstothenew2stagelinking
- #multiplesymboldefinitionsaretreatedaserrors,hencethe
- #-multiply_definedsuppressoptiontoturnoffthiserror.
- #
- ifeq($(HOSTOS),darwin)
- #getmajorandminorproductversion(e.g.10and6forSnowLeopard)
- DARWIN_MAJOR_VERSION=$(shellsw_vers-productVersion|cut-f1-d.)
- DARWIN_MINOR_VERSION=$(shellsw_vers-productVersion|cut-f2-d.)
- os_x_before=$(shellif[$(DARWIN_MAJOR_VERSION)-le$(1)-a
- $(DARWIN_MINOR_VERSION)-le$(2)];thenecho"$(3)";elseecho"$(4)";fi;)
- #SnowLeopardsbuildenvironmenthasnolongerrestrictionsasdescribedabove
- HOSTCC=$(callos_x_before,10,5,"cc","gcc")
- HOSTCFLAGS+=$(callos_x_before,10,4,"-traditional-cpp")
- HOSTLDFLAGS+=$(callos_x_before,10,5,"-multiply_definedsuppress")
- else
- HOSTCC=gcc
- endif
- ifeq($(HOSTOS),cygwin)
- HOSTCFLAGS+=-ansi
- endif
- #Webuildsomefileswithextrapedanticflagstotrytominimizethings
- #thatwontbuildonsomeweirdhostcompiler--thoughtherearelotsof
- #exceptionsforfilesthatarentcomplaint.
- HOSTCFLAGS_NOPED=$(filter-out-pedantic,$(HOSTCFLAGS))
- HOSTCFLAGS+=-pedantic
- ############################################################
- #HOSTCFLAGS_NOPED是利用filter-out函数从HOSTCFLAGS中过滤掉-pedantic选项
- #而HOSTCFLAGS追加上-pedantic选项
- ############################################################
- #########################################################################
- #
- #Optionchecker,gccversion(courtesylinuxkernel)toensure
- #onlysupportedcompileroptionsareused
- #
- CC_OPTIONS_CACHE_FILE:=$(OBJTREE)/include/generated/cc_options.mk
- CC_TEST_OFILE:=$(OBJTREE)/include/generated/cc_test_file.o
- -include$(CC_OPTIONS_CACHE_FILE)
- #############################################################################
- #定义编译选项
- #在cc_options.mk中有如下选项:
- #CC_OPTIONS+=-marm
- #CC_OPTIONS+=-mno-thumb-interwork
- #CC_OPTIONS+=-mapcs-32
- #CC_OPTIONS+=-malignment-traps
- #CC_OPTIONS+=-Wno-format-nonliteral
- #CC_OPTIONS+=-Wno-format-security
- #CC_OPTIONS+=-mabi=apcs-gnu
- #CC_OPTIONS+=-mabi=aapcs-linux
- #############################################################################
- cc-option-sys=$(shellmkdir-p$(dir$(CC_TEST_OFILE));
- if$(CC)$(CFLAGS)$(1)-S-xc/dev/null-o$(CC_TEST_OFILE)
- >/dev/null2>&1;then
- echoCC_OPTIONS+=$(strip$1)>>$(CC_OPTIONS_CACHE_FILE);
- echo"$(1)";fi)
- ifeq($(CONFIG_CC_OPT_CACHE_DISABLE),y)
- cc-option=$(strip$(if$(callcc-option-sys,$1),$1,$2))
- else
- cc-option=$(strip$(if$(findstring$1,$(CC_OPTIONS)),$1,
- $(if$(callcc-option-sys,$1),$1,$2)))
- endif
- ###########################################################################################
- #定义两个函数,cc-option-sys被cc-option调用
- #cc-option被后面的函数调用
- ############################################################################################
- #cc-version
- #Usagegcc-ver:=$(callcc-version)
- cc-version=$(shell$(SHELL)$(SRCTREE)/tools/gcc-version.sh$(CC))
- ##########################################################################################
- #使用tools/gcc-version.sh脚本来获取编译器的版本
- #在顶层makefile中,有调用cc-version函数
- ##########################################################################################
- #
- #Includethemakevariables(CC,etc...)
- #
- AS=$(CROSS_COMPILE)as
- LD=$(CROSS_COMPILE)ld
- CC=$(CROSS_COMPILE)gcc
- CPP=$(CC)-E
- AR=$(CROSS_COMPILE)ar
- NM=$(CROSS_COMPILE)nm
- LDR=$(CROSS_COMPILE)ldr
- STRIP=$(CROSS_COMPILE)strip
- OBJCOPY=$(CROSS_COMPILE)objcopy
- OBJDUMP=$(CROSS_COMPILE)objdump
- RANLIB=$(CROSS_COMPILE)RANLIB
- DTC=dtc
- #########################################################################
- #定义汇编器,连接器,编译器,打包工具,反汇编工具,值的注意的RANLIB的作用是在静态库有添加新的.o后,负责更新索引.
- #####################
ARM汇编u-bootmakefilemkconfi 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)