make參數(shù)傳遞
Uboot的編譯需要找到并配置所需的配置文件,make命令要使用到的參數(shù)都需要從這些配置文件獲取。
控制輸出編譯信息的模式
參數(shù)-v
ifeq ("$(origin V)", "command line")
KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSE
KBUILD_VERBOSE = 0
endif
ifeq ($(KBUILD_VERBOSE),1)
quiet =
Q =
else
quiet=quiet_
Q = @
endif
如果命令行中有-V的參數(shù),V=n這個選項傳給了make,系統(tǒng)就會給變量KBUILD_VERBOSE選項附上V的值,否則的話KBUILD_VERBOSE就會為0。然后系統(tǒng)會檢查KBUILD_VERBOSE的值,以此來決定quiet和Q的值。
ifeq的語法是:feq?(<arg1>;,?<arg2>;),功能是比較參數(shù)“arg1”和“arg2”的值是否相同。
origin的語法:$(origin?<variable>;)?函數(shù)origin并不操作變量的值,只是告訴你你的這個變量是哪里來的。
origin的返回值如下:
(1)返回值為"undefine"時,這個變量沒有被定義過;
(2)返回值為“command line”時,這個變量是被命令行定義的;
(3)返回值為“environment”時,這個變量是定義為環(huán)境變量;
(4)返回值為“file”時,這個變量是定義在Makefile中;
(5)返回值為“default”時,變量是默認(rèn)定義的;
(6)返回值為“override”時,被override指示符重新定義;
(7)返回值為“automatic”時,是一個命令運行中自動化變量。
參數(shù) -s
ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
quiet=silent_
endif
else # make-3.8x
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
quiet=silent_
endif
endif
如果命令行中有 -s 的參數(shù),則輸出slient模式。
full模式:輸出完整編譯命令。
quiet模式:輸出Compiling ***的格式。
silent模式:輸出任何信息。
export quiet Q KBUILD_VERBOSE
允許三個參數(shù)在下一級中作為參數(shù)使用