[dpdk-dev] [PATCH 3/4] mk: allow kernel artifacts to be located in output directory

Scott Branden scott.branden at broadcom.com
Fri Mar 30 20:23:49 CEST 2018


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.branden at 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.branden at broadcom.com>
>> Signed-off-by: Ajit Khaparde <ajit.khaparde at 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


More information about the dev mailing list