origin函数不像其它的函数,他并不操作变量的值,他只是告诉你你的这个变量是哪里来的?其语法是:
$(origin <variable>;)
注意,<variable>;是变量的名字,不应该是引用。所以你最好不要在<variable>;中使用“$”字符。Origin函数会以其返回值来告诉你这个变量的“出生情况”,下面,是origin函数的返回值:
“undefined” 如果<variable>;从来没有定义过,origin函数返回这个值“undefined”。
“default” 如果<variable>;是一个默认的定义
“environment” 如果<variable>;是一个环境变量,并且当Makefile被执行时,“-e”参数没有被打开。
“file” 如果<variable>;这个变量被定义在Makefile中。
“command line” 如果<variable>;这个变量是被命令行定义的。
“override” 如果<variable>;是被override指示符重新定义的。
“automatic” 如果<variable>;是一个命令运行中的自动化变量。
在U-BOOT 中若使用了make O=/tmp/build all,则ifeq ("$(origin O)", "command line")值为真。
ifeq ("$(origin O)", "command line")
BUILD_DIR := $(O)
endif