mirror of
https://github.com/mirror/make.git
synced 2025-01-24 19:31:20 +08:00
98da874c43
Export all variables, including exported makefile variables, when invoking a shell for the $(shell ...) function. If we detect a recursive variable expansion, silently ignore that variable and do not export it. We do print a debug message. * NEWS: Announce the potential backward-incompatibility. * doc/make.texi (Shell Function): Document the export behavior. * src/main.c (main): Add "shell-export" to .FEATURES. * src/job.h: New function to free struct childbase. * src/job.c (free_childbase): Implement it; call from free_child. * src/function.c (func_shell_base): Use target_environment() to obtain the proper environment for the shell function. Use free_childbase() to free memory. (windows32_openpipe): Don't reset the environment: the caller already provided a proper PATH variable in envp. * src/variable.c (target_environment): If we detect a recursive expansion and we're called from func_shell, ignore the variable. (sync_Path_environment): Simplify and reduce memory allocation. * tests/scripts/functions/shell: Add tests for this. |
||
---|---|---|
.. | ||
abspath | ||
addprefix | ||
addsuffix | ||
andor | ||
basename | ||
call | ||
dir | ||
error | ||
eval | ||
file | ||
filter-out | ||
findstring | ||
flavor | ||
foreach | ||
guile | ||
if | ||
intcmp | ||
join | ||
let | ||
notdir | ||
origin | ||
realpath | ||
shell | ||
sort | ||
strip | ||
substitution | ||
suffix | ||
value | ||
warning | ||
wildcard | ||
word |