summaryrefslogtreecommitdiffstats
path: root/src/kmk/tests/scripts/functions/origin
diff options
context:
space:
mode:
Diffstat (limited to 'src/kmk/tests/scripts/functions/origin')
-rw-r--r--src/kmk/tests/scripts/functions/origin54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/kmk/tests/scripts/functions/origin b/src/kmk/tests/scripts/functions/origin
new file mode 100644
index 0000000..7a6a9fa
--- /dev/null
+++ b/src/kmk/tests/scripts/functions/origin
@@ -0,0 +1,54 @@
+# -*-perl-*-
+
+$description = "Test the origin function.";
+
+$details = "This is a test of the origin function in gnu make.
+This function will report on where a variable was
+defined per the following list:
+
+'undefined' never defined
+'default' default definition
+'environment' environment var without -e
+'environment override' environment var with -e
+'file' defined in makefile
+'command line' defined on the command line
+'override' defined by override in makefile
+'automatic' Automatic variable\n";
+
+# kmk: CC isn't a default.
+$CC_origin = $is_kmk ? "undefined" : "default";
+
+# Set an environment variable
+$extraENV{MAKETEST} = 1;
+
+run_make_test('
+foo := bletch garf
+auto_var = undefined CC MAKETEST MAKE foo CFLAGS WHITE @
+av = $(foreach var, $(auto_var), $(origin $(var)) )
+override WHITE := BLACK
+all: auto
+ @echo $(origin undefined)
+ @echo $(origin CC)
+ @echo $(origin MAKETEST)
+ @echo $(origin MAKE)
+ @echo $(origin foo)
+ @echo $(origin CFLAGS)
+ @echo $(origin WHITE)
+ @echo $(origin @)
+auto :
+ @echo $(av)',
+ '-e WHITE=WHITE CFLAGS=',
+ 'undefined '. $CC_origin .' environment default file command line override automatic
+undefined
+'. $CC_origin .'
+environment
+default
+file
+command line
+override
+automatic');
+
+# Reset an environment variable
+delete $extraENV{MAKETEST};
+
+1;