uboot主Makefile中的origin函数

ifdef O
ifeq ("$(origin O)", "command line")
   BUILD_DIR := $(O)
   endif
   endif
这里主要说明origin的语法:

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>;是一个命令运行中的自动化变量。

原文地址:https://www.cnblogs.com/AndyChen1/p/8339913.html