From b4506956a5703ae2df062ec307d76ac935be0258 Mon Sep 17 00:00:00 2001 From: Christopher Wellons Date: Wed, 3 Mar 2021 14:23:06 -0500 Subject: Work around GNU Make bug involving shell built-ins The workaround for MSYS2 in 475c111 interacts badly with a long-standing bug in GNU Make where it avoids spawning a shell when it believes it can handle a command itself as a sort of Bourne shell emulation. Since "command" is typically implemented as a special shell built-in and not an actual program, and GNU Make does not implement this built-in in its Bourne shell emulation, GNU Make's shell function fails to invoke it properly, resulting in an error: make: command: Command not found One work-around is to set a custom shell that is not "/bin/sh" so that GNU Make does not assume any particular shell semantics. For instance: make SHELL=dash A second work-around is to use a shell feature not implemented by GNU Make, such as redirection or variable assignment (this patch), causing it to spawn an actual shell to handle the shell command. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4cb8d924c..5fe327519 100644 --- a/Makefile +++ b/Makefile @@ -308,7 +308,7 @@ CHECK = sparse # Handle MSYS2 weirdness ifneq ($(CROSS_COMPILE),) -ifeq ($(shell command -v $(AR)),) +ifeq ($(shell _= command -v $(AR)),) AR := $(CROSS_COMPILE)gcc-ar STRIP := strip WINDRES := windres -- cgit v1.2.3-55-g6feb