xref: /freebsd/contrib/bmake/unit-tests/directive-export-literal.mk (revision db33c6f3ae9d1231087710068ee4ea5398aacca7)
1# $NetBSD: directive-export-literal.mk,v 1.8 2024/06/01 18:44:05 rillig Exp $
2#
3# Tests for the .export-literal directive, which exports a variable value
4# without expanding it.
5
6UT_VAR=		value with ${UNEXPANDED} expression
7
8.export-literal UT_VAR
9
10.export-literal			# oops: missing argument
11
12# After a variable whose value does not contain a '$' is exported, a following
13# .export-literal can be skipped, to avoid a setenv call, which may leak
14# memory on some platforms.
15UT_TWICE_LITERAL=	value literal
16.export UT_TWICE_LITERAL
17.export-literal UT_TWICE_LITERAL
18
19# XXX: After an .export, an .export-literal has no effect, even when the
20# variable value contains a '$'.
21UT_TWICE_EXPR=		value ${indirect:L}
22.export UT_TWICE_EXPR
23.export-literal UT_TWICE_EXPR
24
25# After an .export, an .unexport resets the variable's exported state,
26# re-enabling a later .export-literal.
27UT_TWICE_EXPR_UNEXPORT=	value ${indirect:L}
28.export UT_TWICE_EXPR_UNEXPORT
29.unexport UT_TWICE_EXPR_UNEXPORT
30.export-literal UT_TWICE_EXPR_UNEXPORT
31
32all:
33	@echo "$$UT_VAR"
34	@echo "$$UT_TWICE_LITERAL"
35	@echo "$$UT_TWICE_EXPR"
36	@echo "$$UT_TWICE_EXPR_UNEXPORT"
37