freebsd-nq/contrib/bmake/unit-tests/directive-export-gmake.mk
Simon J. Gerraty e2eeea75eb Merge bmake-20201117
o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
  checks in InitObjdir.  Explicit .OBJDIR target always allows
  read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after:	1 week
2020-11-20 06:02:31 +00:00

65 lines
1.9 KiB
Makefile

# $NetBSD: directive-export-gmake.mk,v 1.3 2020/11/17 20:16:44 rillig Exp $
#
# Tests for the export directive (without leading dot), as in GNU make.
# The "export" directive only affects the environment of the make process
# and its child processes. It does not affect the global variables or any
# other variables.
VAR= before
export VAR=exported
.if ${VAR} != "before"
. error
.endif
# Ensure that the name-value pair is actually exported.
.if ${:!echo "\$VAR"!} != "exported"
. error
.endif
# This line looks like it would export 2 variables, but it doesn't.
# It only exports VAR and appends everything else as the variable value.
export VAR=exported VAR2=exported-as-well
.if ${:!echo "\$VAR"!} != "exported VAR2=exported-as-well"
. error ${:!echo "\$VAR"!}
.endif
# Contrary to the usual variable assignments, spaces are significant
# after the '=' sign and are prepended to the value of the environment
# variable.
export VAR= leading spaces
.if ${:!echo "\$VAR"!} != " leading spaces"
. error
.endif
# Contrary to the usual variable assignments, spaces are significant
# before the '=' sign and are appended to the name of the environment
# variable.
#
# Depending on the shell, environment variables with such exotic names
# may be silently discarded. One such shell is dash, which is the default
# shell on Ubuntu and Debian.
export VAR =trailing space in varname
.if ${:!env | grep trailing || true!} != "VAR =trailing space in varname"
. if ${:!env | grep trailing || true!} != "" # for dash
. error
. endif
.endif
# The right-hand side of the exported variable is expanded exactly once.
TWICE= expanded twice
ONCE= expanded once, leaving $${TWICE} as-is
export VAR=${ONCE}
.if ${:!echo "\$VAR"!} != "expanded once, leaving \${TWICE} as-is"
. error
.endif
# Undefined variables are allowed on the right-hand side, they expand
# to an empty string, as usual.
export VAR=an ${UNDEF} variable
.if ${:!echo "\$VAR"!} != "an variable"
. error
.endif
all:
@:;