On 04.06.2025 09:21, Michal Orzel wrote:
> When cross-compiling, HOSTCC can be different than CC.

I'm sorry for being pedantic, but the two can also be different for other
reasons (and I'd like to avoid this becoming a bad precedent, then getting
copied elsewhere). Both may target the same architecture. Hence I'd like
to suggest ...

> With the recent
> `install` rule addition, this would put a binary of a wrong format in
> the destdir (e.g. building tests on x86 host for Arm target).
> 
> Take the opportunity to adjust the `run` rule to only run the test if
> HOSTCC is CC, else print a warning message.
> 
> Fixes: 96a587a05736 ("tools/tests: Add install target for vPCI")
> Signed-off-by: Michal Orzel <michal.or...@amd.com>
> ---
> Changes in v2:
>  - change Fixes tag
>  - add `run` rule adjustment from Roger
> ---
>  tools/tests/vpci/Makefile | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/tests/vpci/Makefile b/tools/tests/vpci/Makefile
> index 9450f7593a41..f2226a5543bc 100644
> --- a/tools/tests/vpci/Makefile
> +++ b/tools/tests/vpci/Makefile
> @@ -8,10 +8,14 @@ all: $(TARGET)
>  
>  .PHONY: run
>  run: $(TARGET)
> +ifeq ($(CC),$(HOSTCC))
>       ./$(TARGET)
> +else
> +     $(warning HOSTCC != CC, cannot run test)

... s/cannot/will not/ here. Alternatively, -dumpmachine output of both
could be compared, yet even that would leave us with false negatives
(e.g. x86_64-suse-linux vs x86_64-pc-linux-gnu as I can see for my
system compiler vs the ones I built myself).

Jan

> +endif
>  
>  $(TARGET): vpci.c vpci.h list.h main.c emul.h
> -     $(HOSTCC) $(CFLAGS_xeninclude) -g -o $@ vpci.c main.c
> +     $(CC) $(CFLAGS_xeninclude) -g -o $@ vpci.c main.c
>  
>  .PHONY: clean
>  clean:


Reply via email to