Message ID | 20160426110932.20716.51360.stgit@firesoul |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Apr 26, 2016 at 01:09:32PM +0200, Jesper Dangaard Brouer wrote: > It is not intuitive that 'make' must be run from the top level > directory with argument "samples/bpf/" to compile these eBPF samples. > > Introduce a kbuild make file trick that allow make to be run from the > "samples/bpf/" directory itself. It basically change to the top level > directory and call "make samples/bpf/" with the "/" slash after the > directory name. > > Also add a clean target that only cleans this directory, by taking > advantage of the kbuild external module setting M=$PWD. > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > --- > samples/bpf/Makefile | 8 ++++++++ > samples/bpf/README.rst | 3 +++ > 2 files changed, 11 insertions(+) > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > index 7ac66f5bbbf5..7370dfee482f 100644 > --- a/samples/bpf/Makefile > +++ b/samples/bpf/Makefile > @@ -85,6 +85,14 @@ HOSTLOADLIBES_test_overhead += -lelf -lrt > # make samples/bpf/ LLC=~/git/llvm/build/bin/llc > LLC ?= llc > > +# Trick to allow make to be run from this directory > +all: > + $(MAKE) -C ../../ $$PWD/ > + > +clean: > + $(MAKE) -C ../../ M=$$PWD clean > + @rm -f *~ > + nice trick!
From: Alexei Starovoitov > Sent: 26 April 2016 15:35 > On Tue, Apr 26, 2016 at 01:09:32PM +0200, Jesper Dangaard Brouer wrote: > > It is not intuitive that 'make' must be run from the top level > > directory with argument "samples/bpf/" to compile these eBPF samples. > > > > Introduce a kbuild make file trick that allow make to be run from the > > "samples/bpf/" directory itself. It basically change to the top level > > directory and call "make samples/bpf/" with the "/" slash after the > > directory name. > > > > Also add a clean target that only cleans this directory, by taking > > advantage of the kbuild external module setting M=$PWD. > > > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > > --- > > samples/bpf/Makefile | 8 ++++++++ > > samples/bpf/README.rst | 3 +++ > > 2 files changed, 11 insertions(+) > > > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > > index 7ac66f5bbbf5..7370dfee482f 100644 > > --- a/samples/bpf/Makefile > > +++ b/samples/bpf/Makefile > > @@ -85,6 +85,14 @@ HOSTLOADLIBES_test_overhead += -lelf -lrt > > # make samples/bpf/ LLC=~/git/llvm/build/bin/llc > > LLC ?= llc > > > > +# Trick to allow make to be run from this directory > > +all: > > + $(MAKE) -C ../../ $$PWD/ > > + > > +clean: > > + $(MAKE) -C ../../ M=$$PWD clean > > + @rm -f *~ > > + > > nice trick! Another nice 'trick' is to write a GNUmakefie containing the local rules. GNU make will read it in preference to Makefile and makefile. David
diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 7ac66f5bbbf5..7370dfee482f 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -85,6 +85,14 @@ HOSTLOADLIBES_test_overhead += -lelf -lrt # make samples/bpf/ LLC=~/git/llvm/build/bin/llc LLC ?= llc +# Trick to allow make to be run from this directory +all: + $(MAKE) -C ../../ $$PWD/ + +clean: + $(MAKE) -C ../../ M=$$PWD clean + @rm -f *~ + # Verify LLVM compiler is available and bpf target is supported .PHONY: verify_cmd_llc verify_target_bpf diff --git a/samples/bpf/README.rst b/samples/bpf/README.rst index 3e1ac05d8e7c..3a9e6c4099aa 100644 --- a/samples/bpf/README.rst +++ b/samples/bpf/README.rst @@ -47,6 +47,9 @@ For compiling goto kernel top level build directory and run make like:: Do notice the "/" slash after the directory name. +It is also possible to call make from this directory. This will just +hide the the invocation of make as above with the appended "/". + Manually compiling LLVM with 'bpf' support ------------------------------------------
It is not intuitive that 'make' must be run from the top level directory with argument "samples/bpf/" to compile these eBPF samples. Introduce a kbuild make file trick that allow make to be run from the "samples/bpf/" directory itself. It basically change to the top level directory and call "make samples/bpf/" with the "/" slash after the directory name. Also add a clean target that only cleans this directory, by taking advantage of the kbuild external module setting M=$PWD. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- samples/bpf/Makefile | 8 ++++++++ samples/bpf/README.rst | 3 +++ 2 files changed, 11 insertions(+)