Pimp up AddTargetVariableToScript to support a list of targets

This commit is contained in:
Ingo Weinhold
2013-04-29 17:57:37 +02:00
parent 4fd280ddfa
commit ece8449668
+32 -13
View File
@@ -70,28 +70,47 @@ actions together AddVariableToScript1
$(VARIABLE_DEFS)$(1); $(VARIABLE_DEFS)$(1);
} }
rule AddTargetVariableToScript
rule AddTargetVariableToScript script : targets : variable
{ {
# AddTargetVariableToScript <script> : <target> [ : <variable> ] ; # AddTargetVariableToScript <script> : <targets> [ : <variable> ] ;
# #
local script = $(1) ; # If <targets> contains multiple targets, their paths must not contain
local target = $(2) ; # whitespaces or other characters that need to be escaped in the shell.
local variable = $(3:E=$(target:BS)) ; #
variable ?= $(3:E=$(targets[1]:BS)) ;
InitScript $(script) ; local initScript = [ InitScript $(script) ] ;
# That's not completely save, if one has more than on target with the serialization = [ on $(script) return $(HAIKU_SERIALIZATION) ] ;
# same base name. A unique pseudo target would have to be introduced
# to do it more correctly.
VARIABLE_NAME($(target:BS)) on $(script) = $(variable) ;
Depends $(script) : $(target) ; local variableTarget = [ NewUniqueTarget ] ;
AddTargetVariableToScript1 $(script) : $(target) ; NotFile $(variableTarget) ;
Depends $(variableTarget) : $(initScript) $(targets) $(serialization) ;
Depends $(script) : $(variableTarget) ;
HAIKU_SERIALIZATION on $(script) = $(variableTarget) ;
HAIKU_VARIABLE_NAME on $(variableTarget) = $(variable) ;
AddTargetVariableToScript1 $(variableTarget) : $(initScript) $(targets) ;
} }
actions AddTargetVariableToScript1 actions AddTargetVariableToScript1
{ {
echo "$(VARIABLE_NAME($(2:BS)))=\"$(2)\"" >> $(1) script="$(2[1])"
echo "$(HAIKU_VARIABLE_NAME)=" >> "$script"
firstSeen=
for value in "$(2[2-])" ; do
if [ -z "$firstSeen" ]; then
echo "$(HAIKU_VARIABLE_NAME)=\"$value\"" >> "$script"
firstSeen=1
else
echo "$(HAIKU_VARIABLE_NAME)=\"\$$(HAIKU_VARIABLE_NAME) $value\"" \
>> "$script"
fi
done
} }