Hi Ferruh,

On 18-03-30 03:35 AM, Ferruh Yigit wrote:
On 3/21/2018 6:06 PM, Ajit Khaparde wrote:
From: Scott Branden <scott.bran...@broadcom.com>

Allow kernel artifacts to be located in output directory specific
by RTE_KERNELDIR_OUT.
How to use this variable, I tried following but kernel modules are still in same
place:
export RTE_KERNELDIR and RTE_KERNELDIR_OUT and it works fine.
RTE_KERNELDIR already exists in Makefile.  Are you able to override it?
- make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh
- make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh install
- make RTE_KERNELDIR_OUT=/tmp/kmod O=ferruh DESTDIR=/tmp/ferruh modules_install

/tmp/kmod not created.

And what we are fixing here, what was wrong with old code?
Old code puts the intermediate object files in the kernel source directory.  This doesn't work when building an external module in openembedded recipes.  We need the Makefile change to be able to able to specify the kernel and output directories separately.

If RTE_KERNELDIR_OUT not specified than
source directory RTE_KERNEL is used.
${RTE_KERNELDIR} is used as external Linux kernel source folder, why we are want
to put artifacts into kernel source?
I just kept the default behaviour the same as what it does today.

Signed-off-by: Scott Branden <scott.bran...@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com>
---
  mk/rte.module.mk | 9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/mk/rte.module.mk b/mk/rte.module.mk
index 1ada528a0..e2e1af716 100644
--- a/mk/rte.module.mk
+++ b/mk/rte.module.mk
@@ -39,6 +39,9 @@ _postinstall: build
  .PHONY: build
  build: _postbuild
+# Allow kernel artifacts to be located in a different location that source
+RTE_KERNELDIR_OUT ?= ${RTE_KERNELDIR}
+
  # Link all sources in build directory
  %_link: FORCE
        $(if $(call compare,$(notdir $*),$*),\
@@ -48,7 +51,7 @@ build: _postbuild
  # build module
  $(MODULE).ko: $(SRCS_LINKS)
        @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
-       @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
+       @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
                CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0)
# install module in $(RTE_OUTPUT)/kmod
@@ -59,7 +62,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
# install module
  modules_install:
-       @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
+       @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
                modules_install
.PHONY: clean
@@ -69,7 +72,7 @@ clean: _postclean
  .PHONY: doclean
  doclean:
        @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
-       $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
+       $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean
        @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
                if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi 
;)
        @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi

Regards,
 Scott

Reply via email to