工作范文Makefilelinux-26352_第1頁
工作范文Makefilelinux-26352_第2頁
工作范文Makefilelinux-26352_第3頁
工作范文Makefilelinux-26352_第4頁
工作范文Makefilelinux-26352_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、VERSION = 2PATCHLEVEL = 6SUBLEVEL = 35EXTRAVERSION = .2NAME = Sheep on Meth# *DOCUMENTATION*# To see a list of typical targets execute "make help"# More info can be located in ./README# Comments in this file are targeted only to the developer, do not# expect to learn how to build the kerne

2、l reading this file.# Do not:# o use make's built-in rules and variables# (this increases performance and avoids hard-to-debug behaviour);# o print "Entering directory ." MAKEFLAGS += -rR -no-print-directory# Avoid funny character set dependencies unexport LC_ALLLC_COLLATE=CLC_NUMERIC=

3、Cexport LC_COLLATE LC_NUMERIC# We are using a recursive build, so we need to do a little thinking# to get the ordering right.# Most importantly: sub-Makefiles should only ever modify files in# their own directory. If in some directory we have a dependency on# a file in another dir (which doesn't

4、 happen often, but it's often# unavoidable when linking the built-in.o targets which finally# turn into vmlinux), we will call a sub make in that other dir, and# after that we are sure that everything which is in that other dir# is now up to date.# The only cases where we need to modify files wh

5、ich have global# effects are thus separated out and done before the recursive# descending is started. They are now explicitly listed as the# prepare rule.# To put more focus on warnings, be less verbose as default# Use 'make V=1' to see the full commands ifeq ("$(origin V)", "

6、command line")KBUILD_VERBOSE = $(V) endif ifndef KBUILD_VERBOSEKBUILD_VERBOSE = 0endif# Call a source code checker (by default, "sparse") as part of the# C compilation.# Use 'make C=1' to enable checking of only re-compiled files.# Use 'make C=2' to enable checking of

7、*all* source files, regardless# of whether they are re-compiled or not.# See the file "Documentation/sparse.txt" for more details, including# where to get the "sparse" utility.ifeq ("$(origin C)", "command line")KBUILD_CHECKSRC = $(C) endif ifndef KBUILD_CHECK

8、SRCKBUILD_CHECKSRC = 0endif# Use make M=dir to specify directory of external module to build# Old syntax make . SUBDIRS=$PWD is still supported# Setting the environment variable KBUILD_EXTMOD take precedence ifdef SUBDIRSKBUILD_EXTMOD ?= $(SUBDIRS) endififeq ("$(origin M)", "command l

9、ine")KBUILD_EXTMOD := $(M) endif# kbuild supports saving output files in a separate directory.# To locate output files in a separate directory two syntaxes are supported.# In both cases the working directory must be the root of the kernel src.# 1) O=# Use "make O=dir/to/store/output/files/

10、"# 2) Set KBUILD_OUTPUT# Set the environment variable KBUILD_OUTPUT to point to the directory# where the output files shall be placed.# export KBUILD_OUTPUT=dir/to/store/output/files/# make# The O= assignment takes precedence over the KBUILD_OUTPUT environment# variable.# KBUILD_SRC is set on i

11、nvocation of make in OBJ directory# KBUILD_SRC is not intended to be used by the regular user (for now) ifeq ($(KBUILD_SRC),)# OK, Make called in directory where kernel src resides# Do we want to locate output files in a separate directory? ifeq ("$(origin O)", "command line")KBU

12、ILD_OUTPUT := $(O)endif# That's our default target when none is given on the command line PHONY := _all_all:# Cancel implicit rules on top Makefile $(CURDIR)/Makefile Makefile: ;ifneq ($(KBUILD_OUTPUT),)# Invoke a second make in the output directory, passing relevant variables# check that the ou

13、tput directory actually exists saved-output := $(KBUILD_OUTPUT) KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd) $(if $(KBUILD_OUTPUT), $(error output directory "$(saved-output)" does not exist)PHONY += $(MAKECMDGOALS) sub-make$(filter-out _all sub-make $(CURDIR)/Makefile,

14、 $(MAKECMDGOALS) _all: sub-make $(Q):sub-make: FORCE$(if $(KBUILD_VERBOSE:1=),)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)# Leave processing to above invocation of make skip-makefile := 1

15、endif # ifneq ($(KBUILD_OUTPUT),)endif # ifeq ($(KBUILD_SRC),)# We process the rest of the Makefile if this is the final invocation of make ifeq ($(skip-makefile),)# If building an external module we do not care about the all: rule# but instead _all depend on modulesPHONY += allifeq ($(KBUILD_EXTMOD

16、),)_all: allelse_all: modulesendifsrctree:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR)objtree:= $(CURDIR)src:= $(srctree)obj:= $(objtree)VPATH:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)export srctree objtree VPATH# SUBARCH tells the usermode build what the underlying arch is. That is set# f

17、irst, and if a usermode build is happening, the "ARCH=um" on the command# line overrides the setting of ARCH below. If a native build is happening,# then ARCH is assigned, getting whatever value it gets normally, and# SUBARCH is subsequently ignored.SUBARCH := $(shell uname -m | sed -e s/i

18、.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/s390x/s390/ -e s/parisc64/parisc/ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ -e s/sh234.*/sh/ )# Cross compiling and selecting different set of gcc/bin-utils# # When performing cross compilation for other architectures ARCH shall be set#

19、to the target architecture. (See arch/* for the possibilities).# ARCH can be set during invocation of make:# make ARCH=ia64# Another way is to have ARCH set in the environment.# The default ARCH is the host where make is executed.# CROSS_COMPILE specify the prefix used for all executables used# duri

20、ng compilation. Only gcc and related bin-utils executables# are prefixed with $(CROSS_COMPILE).# CROSS_COMPILE can be set on the command line# make CROSS_COMPILE=ia64-linux-# Alternatively CROSS_COMPILE can be set in the environment.# A third alternative is to store a setting in .config so that plai

21、n# "make" in the configured kernel build directory always uses that.# Default value for CROSS_COMPILE is not to prefix executables# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile export KBUILD_BUILDHOST := $(SUBARCH)ARCH ?= $(SUBARCH)CROSS_COMPILE ?=CROSS_COMPILE ?=

22、 $(CONFIG_CROSS_COMPILE:"%"=%)# Architecture as present in compile.hUTS_MACHINE := $(ARCH)SRCARCH := $(ARCH) # Additional ARCH settings for x86 ifeq ($(ARCH),i386)SRCARCH := x86endififeq ($(ARCH),x86_64)SRCARCH := x86endif # Additional ARCH settings for sparc ifeq ($(ARCH),sparc64)SRCARCH

23、:= sparcendif # Additional ARCH settings for sh ifeq ($(ARCH),sh64)SRCARCH := shendif# Where to locate arch specific headers hdr-arch := $(SRCARCH) ifeq ($(ARCH),m68knommu)hdr-arch := m68k endifKCONFIG_CONFIG?= .config# SHELL used by kbuildCONFIG_SHELL := $(shell if -x "$BASH" ; then echo

24、$BASH; else if -x /bin/bash ; then echo /bin/bash; else echo sh; fi ; fi)HOSTCC = gccHOSTCXX = g+-O2HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -fomit-frame-pointerHOSTCXXFLAGS = -O2# Decide whether to build built-in, modular, or both.# Normally, just do built-in.KBUILD_MODULES :=KBU

25、ILD_BUILTIN := 1# If we have only "make modules", don't compile built-in objects.# When we're building modules with modversions, we need to consider# the built-in objects during the descend as well, in order to# make sure the checksums are up to date before we record them.ifeq ($(M

26、AKECMDGOALS),modules)KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) endif# If we have "make <whatever> modules", compile modules# in addition to whatever we do anyway.# Just "make" or "make all" shall build modules as wellifneq ($(filter all _all modules,$(MAKECM

27、DGOALS),)KBUILD_MODULES := 1endififeq ($(MAKECMDGOALS),)KBUILD_MODULES := 1endif export KBUILD_MODULES KBUILD_BUILTIN export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD # Beautify output# # Normally, we echo the whole command before executing it. By making# that echo $($(quiet)$(cmd), we now have the p

28、ossibility to set# $(quiet) to choose other forms of output instead, e.g.#quiet_cmd_cc_o_c = Compiling $(RELDIR)/$# cmd_cc_o_c = $(CC) $(c_flags) -c -o $ $<# If $(quiet) is empty, the whole command will be printed.# If it is set to "quiet_", only the short version will be printed.# If i

29、t is set to "silent_", nothing will be printed at all, since# the variable $(silent_cmd_cc_o_c) doesn't exist.# A simple variant is to prefix commands with $(Q) - that's useful# for commands that shall be hidden in non-verbose mode.# $(Q)ln $ :<# If KBUILD_VERBOSE equals 0 then

30、the above command will be hidden.# If KBUILD_VERBOSE equals 1 then the above command is displayed.ifeq ($(KBUILD_VERBOSE),1)quiet =Q =elsequiet=quiet_Q = endif# If the user is running make -s (silent mode), suppress echoing of# commandsifneq ($(findstring s,$(MAKEFLAGS),)quiet=silent_endifexport qui

31、et Q KBUILD_VERBOSE# Look for make include files relative to root of kernel srcMAKEFLAGS += -include-dir=$(srctree)# We need some generic definitions (do not try to remake the file). $(srctree)/scripts/Kbuild.include: ;include $(srctree)/scripts/Kbuild.include # Make variables (CC, etc.)AS =$(CROSS_

32、COMPILE)asLD =$(CROSS_COMPILE)ldCC =$(CROSS_COMPILE)gccCPP =$(CC) -EAR =$(CROSS_COMPILE)arNM =$(CROSS_COMPILE)nmSTRIP= $(CROSS_COMPILE)stripOBJCOPY= $(CROSS_COMPILE)objcopyOBJDUMP = $(CROSS_COMPILE)objdumpAWK = awkGENKSYMS = scripts/genksyms/genksymsDEPMOD KALLSYMS PERL CHECKINSTALLKERNEL := install

33、kernel = /sbin/depmod= scripts/kallsyms= perl= sparseCHECKFLAGS := -D_linux_ -Dlinux -D_STDC_ -Dunix -D_unix_ -Wbitwise -Wno-return-void $(CF)MODFLAGS = -DMODULECFLAGS_MODULE = $(MODFLAGS)AFLAGS_MODULE = $(MODFLAGS)LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.ldsCFLAGS_KERNEL =AFLAGS_KERNEL

34、=CFLAGS_GCOV = -fprofile-arcs -ftest-coverage# Use LINUXINCLUDE when you must reference the include/ directory.# Needed to be compatible with the O= option LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include -Iinclude $(if $(KBUILD_SRC), -I$(srctree)/include) -include include/generated/autoconf.hK

35、BUILD_CPPFLAGS := -D_KERNELKBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checksKBUILD_AFLAGS := -D_ASSEMBLY_# Read KERNELRELEASE from include/config/kernel.release

36、 (if it exists)KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSIONexport ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CCexport CP

37、P AR NM STRIP OBJCOPY OBJDUMPexport MAKE AWK GENKSYMS INSTALLKERNEL PERL UTS_MACHINEexport HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGSexport KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGSexport KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOVexport KBUILD_AFLAGS AFLAG

38、S_KERNEL AFLAGS_MODULE# When compiling out-of-tree modules, put MODVERDIR in the module# tree rather than in the kernel tree. The kernel tree might# even be read-only.export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD)/).tmp_versions# Files to ignore in find . statementsRCS_FIND_I

39、GNORE := ( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o-name .pc -o -name .hg -o -name .git ) -prune -oexport RCS_TAR_IGNOR:=E -exclude SCCS-exclude BitKeeper -exclude .svn -exclude CVS -exclude .pc -exclude .hg -exclude .git# =# Rules shared between *config targets and build targets#

40、 Basic helpers built in scripts/PHONY += scripts_basicscripts_basic:$(Q)$(MAKE) $(build)=scripts/basic$(Q)rm -f .tmp_quiet_recordmcount # To avoid any implicit rule to kick in, define an empty command.scripts/basic/%: scripts_basic ;PHONY += outputmakefile# outputmakefile generates a Makefile in the

41、 output directory, if using a# separate output directory. This allows convenient use of make in the# output directory.outputmakefile:ifneq ($(KBUILD_SRC),)$(Q)ln -fsn $(srctree) source$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) endif# To make sure

42、 we do not include .config for any of the *config targets# catch them early, and hand them over to scripts/kconfig/Makefile# It is allowed to specify more targets when calling make, including# mixing *config targets and build targets.# For example 'make oldconfig all'.# Detect when mixed tar

43、gets is specified, and make a second invocation# of make so .config is not included in this case either (for *config).no-dot-config-targets := clean mrproper distclean cscope TAGS tags help %docs check% include/linux/version.h headers_% kernelrelease kernelversionconfig-targets := 0mixed-targets :=

44、0dot-config := 1ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS),)ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS),) dot-config := 0endifendififeq ($(KBUILD_EXTMOD),)ifneq ($(filter config %config,$(MAKECMDGOALS),) config-targets := 1ifneq ($(filter-out config %config,$(MAKECMDG

45、OALS),) mixed-targets := 1endifendifendififeq ($(mixed-targets),1)# =# We're called with mixed targets (*config and build targets).# Handle them one by one.%: FORCE$(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $elseifeq ($(config-targets),1)# =# *config targets only - make sure prerequisites are updated

46、, and descend# in scripts/kconfig to make the *config target# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed.# KBUILD_DEFCONFIG may point out an alternative default configuration# used for 'make defconfig'include $(srctree)/arch/$(SRCARCH)/Makefileexport KBUILD_DEFCONFIG KBUIL

47、D_KCONFIGconfig: scripts_basic outputmakefile FORCE$(Q)mkdir -p include/linux include/config$(Q)$(MAKE) $(build)=scripts/kconfig $%config: scripts_basic outputmakefile FORCE$(Q)mkdir -p include/linux include/config$(Q)$(MAKE) $(build)=scripts/kconfig $else# =# Build targets only - this includes vmli

48、nux, arch specific targets, clean# targets and others. In general all targets except *config targets.ifeq ($(KBUILD_EXTMOD),)# Additional helpers built in scripts/# Carefully list dependencies so we do not try to build scripts twice# in parallelPHONY += scriptsscripts: scripts_basic include/config/a

49、uto.conf include/config/tristate.conf$(Q)$(MAKE) $(build)=$()# Objects we will link into vmlinux / subdirs we need to visitinit-y := init/drivers-y:= drivers/ sound/ firmware/net-y:= net/libs-y:= lib/core-y:= usr/endif # KBUILD_EXTMODifeq ($(dot-config),1)# Read in config -include include/config/aut

50、o.confifeq ($(KBUILD_EXTMOD),)# Read in dependencies to all Kconfig* files, make sure to run# oldconfig if changes are detected. -include include/config/auto.conf.cmd# To avoid any implicit rule to kick in, define an empty command $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;# If .config is newe

51、r than include/config/auto.conf, someone tinkered# with it and forgot to run make oldconfig.# if auto.conf.cmd is missing then we are probably in a cleaned tree so# we execute the config step to be sure to catch updated Kconfig files include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.

52、cmd$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig else# external modules needs include/generated/autoconf.h and include/config/auto.conf# but do not care if they are up-to-date. Use auto.conf to trigger the test PHONY += include/config/auto.confinclude/config/auto.conf:$(Q)test -e include/genera

53、ted/autoconf.h -a -e $ | (echo; echo " ERROR: Kernel configuration is invalid."echo " include/generated/autoconf.h or $ are missing."echo "Run 'make oldconfig && make prepare' on kernel src to fix it." echo; /bin/false)endif # KBUILD_EXTMODelse# Dummy ta

54、rget needed, because used as prerequisite include/config/auto.conf: ;endif # $(dot-config)# The all: target is the default when no target is given on the# command line.# This allow a user to issue only 'make' to build a kernel including modules# Defaults vmlinux but it is usually overridden

55、in the arch makefileall: vmlinuxifdef CONFIG_CC_OPTIMIZE_FOR_SIZEKBUILD_CFLAGS += -OselseKBUILD_CFLAGS += -O2endifinclude $(srctree)/arch/$(SRCARCH)/Makefileifneq ($(CONFIG_FRAME_WARN),0)KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=$CONFIG_FRAME_WARN) endif# Force gcc to behave correct even

56、 for buggy distributionsifndef CONFIG_CC_STACKPROTECTORKBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) endififdef CONFIG_FRAME_POINTERKBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-callselseKBUILD_CFLAGS += -fomit-frame-pointer endififdef CONFIG_DEBUG_INFOKBUILD_CFLAGS += -g

57、KBUILD_AFLAGS += -gdwarf-2 endififdef CONFIG_FUNCTION_TRACERKBUILD_CFLAGS += -pgendif# We trigger additional mismatches with less inliningifdef CONFIG_DEBUG_SECTION_MISMATCHKBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif# arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論