In GNU Make 4.3 there is backward incompatible change that there is no need to quote '#' in shell invocations anymore. If quoted, backslash character is passed into gcc making cunit (and vsock) tests fail to compile. Also, `echo -e' is replaced with `printf' to interpret '\n', because, on Debian dash's `echo' does not support `-e', thus having `-e' passed into test source making gcc fail to compile the test. make test error message: Makefile:342: *** CUnit framework not installed, cannot build unit tests. Stop. Signed-off-by: Vitaly Chikunov <vt@xxxxxxxxxxxx> Cc: Dmitry V. Levin <ldv@xxxxxxxxxxxx> --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4b72a04..6b606da 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,8 @@ plugin_traceevent_dir_SQ = $(subst ','\'',$(plugin_traceevent_dir)) plugin_tracecmd_dir_SQ = $(subst ','\'',$(plugin_tracecmd_dir)) python_dir_SQ = $(subst ','\'',$(python_dir)) +pound := \# + VAR_DIR = -DVAR_DIR="$(var_dir)" VAR_DIR_SQ = '$(subst ','\'',$(VAR_DIR))' var_dir_SQ = '$(subst ','\'',$(var_dir))' @@ -233,14 +235,14 @@ CFLAGS ?= -g -Wall CPPFLAGS ?= LDFLAGS ?= -VSOCK_DEFINED := $(shell if (echo "\#include <linux/vm_sockets.h>" | $(CC) -E - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi) +VSOCK_DEFINED := $(shell if (echo "$(pound)include <linux/vm_sockets.h>" | $(CC) -E - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi) export VSOCK_DEFINED ifeq ($(VSOCK_DEFINED), 1) CFLAGS += -DVSOCK endif -CUNIT_INSTALLED := $(shell if (echo -e "\#include <CUnit/Basic.h>\n void main(){CU_initialize_registry();}" | $(CC) -x c -lcunit - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi) +CUNIT_INSTALLED := $(shell if (printf "$(pound)include <CUnit/Basic.h>\n void main(){CU_initialize_registry();}" | $(CC) -x c -lcunit - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi) export CUNIT_INSTALLED export CFLAGS -- 2.11.0