本文继续分析 Linux内核源码的 顶层 Makefile所做的准备工作。
本文续上一篇文章,地址如下:
Linux内核顶层Makefile前期工作分析一_凌肖战的博客-CSDN博客
- 182 ifdef SUBDIRS
- 183 KBUILD_EXTMOD ?= $(SUBDIRS)
- 184 endif
- 185
- 186 ifeq ("$(origin M)", "command line")
- 187 KBUILD_EXTMOD := $(M)
- 188 endif
- 189
- 190 # If building an external module we do not care about the all: rule
- 191 # but instead _all depend on modules
- 192 PHONY += all
- 193 ifeq ($(KBUILD_EXTMOD),)
- 194 _all: all
- 195 else
- 196 _all: modules
- 197 endif
- 198
- 199 ifeq ($(KBUILD_SRC),)
- 200 # building in the source tree
- 201 srctree := .
- 202 else
- 203 ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
- 204 # building in a subdirectory of the source tree
- 205 srctree := ..
- 206 else
- 207 srctree := $(KBUILD_SRC)
- 208 endif
- 209 endif
- 210 objtree := .
- 211 src := $(srctree)
- 212 obj := $(objtree)
- 213
- 214 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
- 215
- 216 export srctree objtree VPATH
- 252 ARCH ?= $(SUBARCH)
- 253 CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
- 252 ARCH ?= arm
- 253 CROSS_COMPILE ?= arm-linux-gnueabihf-
- 349 scripts/Kbuild.include: ;
- 350 include scripts/Kbuild.include
- 353 AS = $(CROSS_COMPILE)as
- 354 LD = $(CROSS_COMPILE)ld
- 355 CC = $(CROSS_COMPILE)gcc
- 356 CPP = $(CC) -E
- 357 AR = $(CROSS_COMPILE)ar
- 358 NM = $(CROSS_COMPILE)nm
- 359 STRIP = $(CROSS_COMPILE)strip
- 360 OBJCOPY = $(CROSS_COMPILE)objcopy
- 361 OBJDUMP = $(CROSS_COMPILE)objdump
- 381 USERINCLUDE := \
- 382 -I$(srctree)/arch/$(hdr-arch)/include/uapi \
- 383 -Iarch/$(hdr-arch)/include/generated/uapi \
- 384 -I$(srctree)/include/uapi \
- 385 -Iinclude/generated/uapi \
- 386 -include $(srctree)/include/linux/kconfig.h
- 387
- 388 # Use LINUXINCLUDE when you must reference the include/ directory.
- 389 # Needed to be compatible with the O= option
- 390 LINUXINCLUDE := \
- 391 -I$(srctree)/arch/$(hdr-arch)/include \
- 392 -Iarch/$(hdr-arch)/include/generated/uapi \
- 393 -Iarch/$(hdr-arch)/include/generated \
- 394 $(if $(KBUILD_SRC), -I$(srctree)/include) \
- 395 -Iinclude \
- 396 $(USERINCLUDE)
- 417 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
- 418 export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS
- LD CC
- 419 export CPP AR NM STRIP OBJCOPY OBJDUMP
- 420 export MAKE AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE
- 421 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
- 422
- 423 export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS
- LDFLAGS
- 424 export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV
- CFLAGS_KASAN
- 425 export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
- 426 export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE
- KBUILD_LDFLAGS_MODULE
- 427 export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
- 428 export KBUILD_ARFLAGS
下一篇继续了解 Linux内核源码的顶层Makefile的准备工作。