From 660d7cccb7c16039e1489c5857294db16b24a48d Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Sat, 17 Apr 2021 13:38:34 +0000
Subject: build system: ccenv_output_defs(): enhanced makefile generation.

---
 sofort/ccenv/ccenv.sh | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index 5aa1554..67b5720 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -1279,19 +1279,29 @@ ccenv_output_defs()
 		unset ccenv_tmp
 	fi
 
+	ccenv_var_defs=
+	ccenv_sed_substs=
+
 	ccenv_vars=$(cut -d'=' -f1 "$mb_project_dir/sofort/ccenv/ccenv.vars" \
-			| grep -v '^#')
+		| grep -v '^#');
 
 	ccenv_exvars="ccenv_cfgtype ccenv_makevar_prefix"
 
-	ccenv_sed_substs=" \
-		$(for __var in $(printf '%s' "$ccenv_vars $ccenv_exvars"); do \
-			printf '%s"$%s"%s' "-e 's/@$__var@/'" \
-				"$__var" "'/g' ";              \
-		done)"
+	for __var in $(printf '%s' "$ccenv_vars $ccenv_exvars"); do
+		ccenv_sed_subst=$(printf '%s %s%s%s' \
+				'-e' "'s^@$__var@"    \
+				"^___${__var}___"      \
+				"^g'")
+
+		ccenv_sed_substs="$ccenv_sed_substs $ccenv_sed_subst"
+
+		ccenv_var_def=$(printf '%s%s="${%s}"' "-D" "___${__var}___" "${__var}")
+		eval ccenv_var_defs='"$ccenv_var_defs "$ccenv_var_def'
+	done
 
-	eval sed $ccenv_sed_substs $ccenv_in   \
-			| sed -e 's/[[:blank:]]*$//g' \
+	eval sed $ccenv_sed_substs $(printf '%s ' $ccenv_in) \
+			| eval m4 $ccenv_var_defs -           \
+			| sed -e 's/[[:blank:]]*$//g'          \
 		> "$ccenv_mk"
 
 	if [ "$ccenv_cfgtype" = 'host' ]; then
-- 
cgit v1.2.3