build: workaround behaviour regression in gnu make 4.3

We need the "$(space)" variable to contain a single whitespace
character. We do this by assigning and then appending an empty
string to the variable. Variable appends get separated by a
single whitespace historically, but GNU make 4.3 introduced a
behaviour regression.

  https://lists.gnu.org/archive/html/bug-make/2020-01/msg00057.html

[quote]
* WARNING: Backward-incompatibility!
  Previously appending using '+=' to an empty variable would
  result in a value starting with a space.  Now the initial
  space is only added if the variable already contains some
  value.  Similarly, appending an empty string does not
  add a trailing space.
[/quote]

This patch tries a new trick to get a single whitespace by
getting make to expand two non-existant variables separated
by a space.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2020-03-13 18:39:25 +00:00
parent f742461389
commit fdd941eeb2

View File

@ -687,8 +687,7 @@ msg_gen_function += virLastErrorPrefixMessage
# msg_gen_function += vshPrint # msg_gen_function += vshPrint
# msg_gen_function += vshError # msg_gen_function += vshError
space = space = $(null) $(null)
space +=
func_re= ($(subst $(space),|,$(msg_gen_function))) func_re= ($(subst $(space),|,$(msg_gen_function)))
# Look for diagnostics that aren't marked for translation. # Look for diagnostics that aren't marked for translation.