aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/makefile_escaping/env_vars.mk
diff options
context:
space:
mode:
Diffstat (limited to 'makefile_escaping/env_vars.mk')
-rw-r--r--makefile_escaping/env_vars.mk15
1 files changed, 15 insertions, 0 deletions
diff --git a/makefile_escaping/env_vars.mk b/makefile_escaping/env_vars.mk
new file mode 100644
index 0000000..47c1647
--- /dev/null
+++ b/makefile_escaping/env_vars.mk
@@ -0,0 +1,15 @@
+escape = $(subst ','\'',$(1))
+escape_var = $(call escape,$(value $(1)))
+
+test_var ?= This is safe.
+export test_var
+
+echo_test_var := printf '%s\n' '$(call escape_var,test_var)'
+bash_test_var := bash -c '$(call escape_var,echo_test_var)'
+
+.PHONY: test
+test:
+ @printf '%s\n' '$(call escape_var,test_var)'
+ @printf '%s\n' "$$test_var"
+ @bash -c '$(call escape_var,echo_test_var)'
+ @bash -c '$(call escape_var,bash_test_var)'