Message ID | 20190916105433.11404-2-ivan.khoronzhuk@linaro.org |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | samples: bpf: improve/fix cross-compilation | expand |
On Mon, Sep 16, 2019 at 3:59 AM Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> wrote: > > echo should be replaced with echo -e to handle '\n' correctly, but > instead, replace it with printf as some systems can't handle echo -e. > > Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> > --- > samples/bpf/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > index 1d9be26b4edd..f50ca852c2a8 100644 > --- a/samples/bpf/Makefile > +++ b/samples/bpf/Makefile > @@ -201,7 +201,7 @@ endif > > # Don't evaluate probes and warnings if we need to run make recursively > ifneq ($(src),) > -HDR_PROBE := $(shell echo "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ > +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ printf change is fine, but I'm confused about \# at the beginning of the string. Not sure what was the intent, but it seems like it should work with just #include at the beginning. > $(HOSTCC) $(KBUILD_HOSTCFLAGS) -x c - -o /dev/null 2>/dev/null && \ > echo okay) > > -- > 2.17.1 >
On Mon, Sep 16, 2019 at 01:13:23PM -0700, Andrii Nakryiko wrote: >On Mon, Sep 16, 2019 at 3:59 AM Ivan Khoronzhuk ><ivan.khoronzhuk@linaro.org> wrote: >> >> echo should be replaced with echo -e to handle '\n' correctly, but >> instead, replace it with printf as some systems can't handle echo -e. >> >> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> >> --- >> samples/bpf/Makefile | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile >> index 1d9be26b4edd..f50ca852c2a8 100644 >> --- a/samples/bpf/Makefile >> +++ b/samples/bpf/Makefile >> @@ -201,7 +201,7 @@ endif >> >> # Don't evaluate probes and warnings if we need to run make recursively >> ifneq ($(src),) >> -HDR_PROBE := $(shell echo "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ >> +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ > >printf change is fine, but I'm confused about \# at the beginning of >the string. Not sure what was the intent, but it seems like it should >work with just #include at the beginning. At least no warns, but looks like should work. Will try it in next v. > >> $(HOSTCC) $(KBUILD_HOSTCFLAGS) -x c - -o /dev/null 2>/dev/null && \ >> echo okay) >> >> -- >> 2.17.1 >>
On Sep 16 2019, Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote: > On Mon, Sep 16, 2019 at 3:59 AM Ivan Khoronzhuk > <ivan.khoronzhuk@linaro.org> wrote: >> >> echo should be replaced with echo -e to handle '\n' correctly, but >> instead, replace it with printf as some systems can't handle echo -e. >> >> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> >> --- >> samples/bpf/Makefile | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile >> index 1d9be26b4edd..f50ca852c2a8 100644 >> --- a/samples/bpf/Makefile >> +++ b/samples/bpf/Makefile >> @@ -201,7 +201,7 @@ endif >> >> # Don't evaluate probes and warnings if we need to run make recursively >> ifneq ($(src),) >> -HDR_PROBE := $(shell echo "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ >> +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ > > printf change is fine, but I'm confused about \# at the beginning of > the string. From the NEWS of make 4.3: * WARNING: Backward-incompatibility! Number signs (#) appearing inside a macro reference or function invocation no longer introduce comments and should not be escaped with backslashes: thus a call such as: foo := $(shell echo '#') is legal. Previously the number sign needed to be escaped, for example: foo := $(shell echo '\#') Now this latter will resolve to "\#". If you want to write makefiles portable to both versions, assign the number sign to a variable: H := \# foo := $(shell echo '$H') This was claimed to be fixed in 3.81, but wasn't, for some reason. To detect this change search for 'nocomment' in the .FEATURES variable. Andreas.
On Mon, Sep 16, 2019 at 2:35 PM Andreas Schwab <schwab@linux-m68k.org> wrote: > > On Sep 16 2019, Andrii Nakryiko <andrii.nakryiko@gmail.com> wrote: > > > On Mon, Sep 16, 2019 at 3:59 AM Ivan Khoronzhuk > > <ivan.khoronzhuk@linaro.org> wrote: > >> > >> echo should be replaced with echo -e to handle '\n' correctly, but > >> instead, replace it with printf as some systems can't handle echo -e. > >> > >> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> > >> --- > >> samples/bpf/Makefile | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > >> index 1d9be26b4edd..f50ca852c2a8 100644 > >> --- a/samples/bpf/Makefile > >> +++ b/samples/bpf/Makefile > >> @@ -201,7 +201,7 @@ endif > >> > >> # Don't evaluate probes and warnings if we need to run make recursively > >> ifneq ($(src),) > >> -HDR_PROBE := $(shell echo "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ > >> +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ > > > > printf change is fine, but I'm confused about \# at the beginning of > > the string. > > From the NEWS of make 4.3: > > * WARNING: Backward-incompatibility! > Number signs (#) appearing inside a macro reference or function invocation > no longer introduce comments and should not be escaped with backslashes: > thus a call such as: > foo := $(shell echo '#') > is legal. Previously the number sign needed to be escaped, for example: > foo := $(shell echo '\#') > Now this latter will resolve to "\#". If you want to write makefiles > portable to both versions, assign the number sign to a variable: > H := \# > foo := $(shell echo '$H') > This was claimed to be fixed in 3.81, but wasn't, for some reason. > To detect this change search for 'nocomment' in the .FEATURES variable. > > Andreas. Oh, subtle... Thanks for explaining! > > -- > Andreas Schwab, schwab@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different."
diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 1d9be26b4edd..f50ca852c2a8 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -201,7 +201,7 @@ endif # Don't evaluate probes and warnings if we need to run make recursively ifneq ($(src),) -HDR_PROBE := $(shell echo "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \ $(HOSTCC) $(KBUILD_HOSTCFLAGS) -x c - -o /dev/null 2>/dev/null && \ echo okay)
echo should be replaced with echo -e to handle '\n' correctly, but instead, replace it with printf as some systems can't handle echo -e. Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> --- samples/bpf/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)