* [Buildroot] Cannot build Custom Kernel Module
@ 2016-04-12 18:25 Stephen Beckwith
2016-04-12 21:07 ` Arnout Vandecappelle
0 siblings, 1 reply; 7+ messages in thread
From: Stephen Beckwith @ 2016-04-12 18:25 UTC (permalink / raw)
To: buildroot
Greetings,
After 2 days, I'm still stuck trying to build a kernel module in
Buildroot. I have an "out of tree" setup, that builds applications and
libraries just fine. I get a bootable image. I even added another "test"
module yesterday and verified the steps I'm using worked, and that built
just fine. But I'm unable to build a kernel module. I've searched the
mailing lists and googled the web to no avail. I've not seen any example
that is similar.
Buildroot version is 2015.08.01 - and yes, I verified it has the patch
for the pkg-kernel-module.mk in the packages directory.
My kernel module is "local" - in that it's a custom module I'm adding to
the system to handle specific HW on the board. So the setup is:
GPIO_MODULE_VERSION = 0.1.0
GPIO_MODULE_LICENSE = Public Domain
GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
GPIO_MODULE_SITE_METHOD = local
The directory exists and there is a very simple Config.in to select the
module (from the top level .config file)
#
# HWDD Required Kernel Modules
#
BR2_PACKAGE_GPIO_MODULE=y
Some questions:
1) Can the module be setup like this? Locally (to be rsync'd)??
2) The gpio_module.mk file: this still contains BUILD_CMDS ??
3) Do I also need to have a "makefile" present in the directory as well?
(some examples seem to indicate yes)
4) Can I do the same <pkg> - build commands to build this? (like I would
for the apps/libraries)
My gpio_modules.mk file:
################################################################################
#
# gpio_module
#
################################################################################
GPIO_MODULE_VERSION = 0.1.0
GPIO_MODULE_LICENSE = Public Domain
GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
GPIO_MODULE_SITE_METHOD = local
# Global Includes here
GBL_INCLUDES = $(BR2_EXTERNAL)/incs/include
KNL_INCLUDES = $(BR2_EXTERNAL)/incs/include/kernel
GPIO_MODULE_OPTS += -C$(LINUX_DIR)
GPIO_MODULE_OPTS += M=$(@D)
CFLAGS += -Wall -Os -DCONFIG_HWDD -I$(GBL_INCLUDES) -I$(KNL_INCLUDES)
define GPIO_MODULE_BUILD_CMDS
$(MAKE) $(GPIO_MODULE_OPTS) $(CFLAGS)
endef
$(eval $(generic-kernel))
$(eval $(generic-package))
When I try to do a "-build" on the module (like I do for the apps), I get
this (from the output directory)
[sbeckwith at sdb-mbp-vm output]$ make gpio_module-build
umask 0022 && make -C /home/sbeckwith/HBE-1/buildroot-2015.08.1
O=/home/sbeckwith/HBE-1/hwdd/output/. gpio_module-build
make[1]: *** No rule to make target 'gpio_module-build'. Stop.
Makefile:16: recipe for target '_all' failed
make: *** [_all] Error 2
[sbeckwith at sdb-mbp-vm output]$
Which tells me somewhere it can't find the makefile or somehow bolt this up
to the Buildroot build system. . . I suspect it's because of the
SITE_METHOD=local that maybe causing this issue, am I correct?
The "rsync" I would normally see is not done, so there's nothing in the
output/build directory (no gpio_modules directory).
Some pointers/assistance would be greatly appreciated.
Regards,
Stephen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160412/169ada05/attachment.html>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-12 18:25 [Buildroot] Cannot build Custom Kernel Module Stephen Beckwith
@ 2016-04-12 21:07 ` Arnout Vandecappelle
2016-04-13 14:38 ` Stephen Beckwith
0 siblings, 1 reply; 7+ messages in thread
From: Arnout Vandecappelle @ 2016-04-12 21:07 UTC (permalink / raw)
To: buildroot
On 04/12/16 20:25, Stephen Beckwith wrote:
> Greetings,
> After 2 days, I'm still stuck trying to build a kernel module in Buildroot.
> I have an "out of tree" setup, that builds applications and libraries just
> fine. I get a bootable image. I even added another "test" module yesterday and
> verified the steps I'm using worked, and that built just fine. But I'm unable
> to build a kernel module. I've searched the mailing lists and googled the web
> to no avail. I've not seen any example that is similar.
> Buildroot version is 2015.08.01 - and yes, I verified it has the patch for
> the pkg-kernel-module.mk <http://pkg-kernel-module.mk> in the packages directory.
>
> My kernel module is "local" - in that it's a custom module I'm adding to the
> system to handle specific HW on the board. So the setup is:
> GPIO_MODULE_VERSION = 0.1.0
> GPIO_MODULE_LICENSE = Public Domain
> GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
> GPIO_MODULE_SITE_METHOD = local
>
> The directory exists and there is a very simple Config.in to select the module
> (from the top level .config file)
> #
> # HWDD Required Kernel Modules
> #
> BR2_PACKAGE_GPIO_MODULE=y
>
> Some questions:
> 1) Can the module be setup like this? Locally (to be rsync'd)??
Sure, shouldn't be a problem.
> 2) The gpio_module.mk file: this still contains BUILD_CMDS ??
It doesn't need to. In that case, the actual build will happen in a post-build
hook instead of in build_cmds, but that's OK.
> 3) Do I also need to have a "makefile" present in the directory as well?
> (some examples seem to indicate yes)
I think you do need a Kbuild-type Makefile that specifies the objs-m,
otherwise there is nothing to build.
> 4) Can I do the same <pkg> - build commands to build this? (like I would for
> the apps/libraries)
Yep, the kernel module is built/installed as post-build/install hooks.
>
> My gpio_modules.mk file:
I hope you mean gpio_module.mk, without s? And the directory is gpio_module?
> ################################################################################
> #
> # gpio_module
> #
> ################################################################################
> GPIO_MODULE_VERSION = 0.1.0
> GPIO_MODULE_LICENSE = Public Domain
> GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
> GPIO_MODULE_SITE_METHOD = local
>
> # Global Includes here
> GBL_INCLUDES = $(BR2_EXTERNAL)/incs/include
> KNL_INCLUDES = $(BR2_EXTERNAL)/incs/include/kernel
>
> GPIO_MODULE_OPTS += -C$(LINUX_DIR)
> GPIO_MODULE_OPTS += M=$(@D) <http://gpio_module.mk>
> CFLAGS += -Wall -Os -DCONFIG_HWDD -I$(GBL_INCLUDES) -I$(KNL_INCLUDES)
Bad bad bad, this GLOBALLY defines CFLAGS. All variables should always be
prefixed with your package name.
But all of this shouldn't be needed, it's already handled by the
generic-kernel-module infra.
>
> define GPIO_MODULE_BUILD_CMDS
> $(MAKE) $(GPIO_MODULE_OPTS) $(CFLAGS)
> endef
>
> $(eval $(generic-kernel))
This should be kernel-module, not generic-kernel
> $(eval $(generic-package))
This _is_ needed.
>
> When I try to do a "-build" on the module (like I do for the apps), I get this
> (from the output directory)
> [sbeckwith at sdb-mbp-vm output]$ make gpio_module-build
> umask 0022 && make -C /home/sbeckwith/HBE-1/buildroot-2015.08.1
> O=/home/sbeckwith/HBE-1/hwdd/output/. gpio_module-build
> make[1]: *** No rule to make target 'gpio_module-build'. Stop.
> Makefile:16: recipe for target '_all' failed
> make: *** [_all] Error 2
> [sbeckwith at sdb-mbp-vm output]$
>
> Which tells me somewhere it can't find the makefile or somehow bolt this up to
> the Buildroot build system. . .
Indeed. Is the .mk file included in $(BR2_EXTERNAL)/external.mk? You put it
into the modules directory instead of the usual packages directory, so it may
not be included in your external.mk.
You can do 'make printvars | grep GPIO_MODULE' to check if it was properly
included to begin with.
Regards,
Arnout
> I suspect it's because of the SITE_METHOD=local
> that maybe causing this issue, am I correct?
> The "rsync" I would normally see is not done, so there's nothing in the
> output/build directory (no gpio_modules directory).
>
> Some pointers/assistance would be greatly appreciated.
>
> Regards,
> Stephen
>
>
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-12 21:07 ` Arnout Vandecappelle
@ 2016-04-13 14:38 ` Stephen Beckwith
2016-04-13 15:37 ` Arnout Vandecappelle
0 siblings, 1 reply; 7+ messages in thread
From: Stephen Beckwith @ 2016-04-13 14:38 UTC (permalink / raw)
To: buildroot
Arnout,
THANK YOU very much! The problem wasn't so much an issue with the
$eval, which for the life of me I don't remember where I copied that from
but it was the "missing from external.mk" that solved it!! Thanks for the
pointer! (sometimes we forget these little steps. . .)
So external.mk now has:
# Does the Kernel Modules first:
include $(sort $(wildcard $(BR2_EXTERNAL)/netapp/kmod*/*.mk))
and the directory is now: kmod_gpio - along with the associated "ripple
effect" -
The good news is: Does the Rsync and starts off the build.
I've reduced the kmod_gpio.mk to:
KMOD_GPIO_VERSION = 0.1.0
KMOD_GPIO_LICENSE = Public Domain
KMOD_GPIO_SITE = $(BR2_EXTERNAL)/netapp/kmod_gpio
KMOD_GPIO_SITE_METHOD = local
$(eval $(kernel-module))
$(eval $(generic-package))
And I have a Makefile in the directory that is:
#inform the kernel that a module needs to be build
obj-m :=gpio_module.o
# Global Includes here
GBL_INCLUDES = $(BR2_EXTERNAL)/netapp/include
KNL_INCLUDES = $(BR2_EXTERNAL)/netapp/include/kernel
#Add here the CFLAGS to pass in to get the Defined Symbol
CFLAGS_gpio_module.o := -DCONFIG_NETAPP_HWDD -I$(GBL_INCLUDES)
-I$(KNL_INCLUDES)
{fixed the bad,bad CFLAGS issue :) }
However, I get a failure to build, due to missing headers, which are
located in the GBL_INCLUDES path. It seems for kernel modules, the
$(BR2_EXTERNAL) is not being honored, as shown below. Does this get passed
through? Is it OK to "reach back" to the source directory for the
includes?
Doing a make V=1 - the output is: {highlighted the includes}
[sbeckwith at sdb-mbp-vm output]$ make V=1 kmod_gpio-build
umask 0022 && make -C /home/sbeckwith/HBE-1/buildroot-2015.08.1
O=/home/sbeckwith/HBE-1/hwdd/output/. kmod_gpio-build
>>> kmod_gpio 0.1.0 Syncing from source dir
/home/sbeckwith/HBE-1/hwdd/netapp/kmod_gpio
rsync -au --chmod=u=rwX,go=rX --exclude .svn --exclude .git --exclude .hg
--exclude .bzr --exclude CVS /home/sbeckwith/HBE-1/hwdd/netapp/kmod_gpio/
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0
touch /home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.stamp_rsynced
>>> kmod_gpio 0.1.0 Configuring
touch
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.stamp_configured
>>> kmod_gpio 0.1.0 Building
>>> kmod_gpio 0.1.0 Building kernel module(s)
PATH="/home/sbeckwith/HBE-1/hwdd/output/host/bin:/home/sbeckwith/HBE-1/hwdd/output/host/sbin:/home/sbeckwith/HBE-1/hwdd/output/host/usr/bin:/home/sbeckwith/HBE-1/hwdd/output/host/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/sbeckwith/.local/bin:/home/sbeckwith/bin"
BR_BINARIES_DIR=/home/sbeckwith/HBE-1/hwdd/output/images /bin/make -j5 -C
/home/sbeckwith/HBE-1/hwdd/output/build/linux-4.1.4 HOSTCC="/bin/gcc"
HOSTCFLAGS="" ARCH=x86_64
INSTALL_MOD_PATH=/home/sbeckwith/HBE-1/hwdd/output/target CROSS_COMPILE="
/home/sbeckwith/HBE-1/hwdd/output/host/usr/bin/x86_64-buildroot-linux-uclibc-"
DEPMOD=/home/sbeckwith/HBE-1/hwdd/output/host/sbin/depmod
PWD=/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.
M=/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/. modules
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo >&2; \
echo >&2 " ERROR: Kernel configuration is invalid."; \
echo >&2 " include/generated/autoconf.h or include/config/auto.conf
are missing.";\
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to
fix it."; \
echo >&2 ; \
/bin/false)
mkdir -p
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./.tmp_versions ;
rm -f
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./.tmp_versions/*
/bin/make -f ./scripts/Makefile.build
obj=/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.
(cat /dev/null; echo
kernel//home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.ko;)
> /home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./modules.order
/home/sbeckwith/HBE-1/hwdd/output/host/usr/bin/x86_64-buildroot-linux-uclibc-gcc
-Wp,-MD,/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./.gpio_module.o.d
-nostdinc -isystem
/home/sbeckwith/HBE-1/hwdd/output/host/usr/lib/gcc/x86_64-buildroot-linux-uclibc/5.2.0/include
-I./arch/x86/include -Iarch/x86/include/generated/uapi
-Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi
-Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi
-include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef
-Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
-Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -m64
-mno-80387 -mno-fp-ret-in-387 -mtune=generic -mno-red-zone -mcmodel=kernel
-funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_CFI=1
-DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1
-DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1
-DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare
-fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow
-mno-avx -fno-delete-null-pointer-checks -O2
--param=allow-store-data-races=0 -Wframe-larger-than=2048
-fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer
-fno-optimize-sibling-calls -fno-var-tracking-assignments
-Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow
-fconserve-stack -Werror=implicit-int -Werror=strict-prototypes
-Werror=date-time -DCC_HAVE_ASM_GOTO -DCONFIG_NETAPP_HWDD *-I/netapp/include
-I/netapp/include/kernel* -DMODULE -D"KBUILD_STR(s)=#s"
-D"KBUILD_BASENAME=KBUILD_STR(gpio_module)"
-D"KBUILD_MODNAME=KBUILD_STR(gpio_module)" -c -o
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.o
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.c
In file included from
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.c:106:0:
/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio.h:121:64:
fatal error: linux_ioctls.h: No such file or directory
compilation terminated.
scripts/Makefile.build:264: recipe for target
'/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.o'
failed
make[3]: ***
[/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/./gpio_module.o]
Error 1
Makefile:1383: recipe for target
'_module_/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.' failed
make[2]: ***
[_module_/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.] Error 2
package/pkg-generic.mk:156: recipe for target
'/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.stamp_built'
failed
make[1]: ***
[/home/sbeckwith/HBE-1/hwdd/output/build/kmod_gpio-0.1.0/.stamp_built]
Error 2
Makefile:16: recipe for target '_all' failed
make: *** [_all] Error 2
[sbeckwith at sdb-mbp-vm output]$
And example of a "module" (really an app) build (w/o the V=1) shows the
$(BR2_EXTERNAL) being honored (highlighted)
[sbeckwith at sdb-mbp-vm hwdd]$ ./makeit.sh mod_led-build
umask 0022 && make -C /home/sbeckwith/HBE-1/buildroot-2015.08.1
O=/home/sbeckwith/HBE-1/hwdd/output/. mod_led-build
>>> mod_led 0.1.0 Syncing from source dir
/home/sbeckwith/HBE-1/hwdd/netapp/mod_led
rsync -au --chmod=u=rwX,go=rX --exclude .svn --exclude .git --exclude .hg
--exclude .bzr --exclude CVS /home/sbeckwith/HBE-1/hwdd/netapp/mod_led/
/home/sbeckwith/HBE-1/hwdd/output/build/mod_led-0.1.0
>>> mod_led 0.1.0 Configuring
>>> mod_led 0.1.0 Building
(cd /home/sbeckwith/HBE-1/hwdd/output/build/mod_led-0.1.0;
/home/sbeckwith/HBE-1/hwdd/output/host/usr/bin/x86_64-buildroot-linux-uclibc-gcc
*-I/home/sbeckwith/HBE-1/hwdd/netapp/include
-I/home/sbeckwith/HBE-1/hwdd/netapp/include/kernel* -L
/home/sbeckwith/HBE-1/hwdd/output/target/usr/lib -lui -lsighandler
-lplatform -llogger -lrt -lpthread -Wall -Os -s hwdd_led_app.c -o led)
[sbeckwith at sdb-mbp-vm hwdd]$
Is there a bug here??
Thanks again for the pointers, this gets me moving down the line. I have
other modules I'm going to port over, they may have less dependency on
includes.
Regards,
Stephen
On Tue, Apr 12, 2016 at 5:07 PM, Arnout Vandecappelle <arnout@mind.be>
wrote:
> On 04/12/16 20:25, Stephen Beckwith wrote:
>
>> Greetings,
>> After 2 days, I'm still stuck trying to build a kernel module in
>> Buildroot.
>> I have an "out of tree" setup, that builds applications and libraries just
>> fine. I get a bootable image. I even added another "test" module
>> yesterday and
>> verified the steps I'm using worked, and that built just fine. But I'm
>> unable
>> to build a kernel module. I've searched the mailing lists and googled
>> the web
>> to no avail. I've not seen any example that is similar.
>> Buildroot version is 2015.08.01 - and yes, I verified it has the
>> patch for
>> the pkg-kernel-module.mk <http://pkg-kernel-module.mk> in the packages
>> directory.
>>
>> My kernel module is "local" - in that it's a custom module I'm adding
>> to the
>> system to handle specific HW on the board. So the setup is:
>> GPIO_MODULE_VERSION = 0.1.0
>> GPIO_MODULE_LICENSE = Public Domain
>> GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
>> GPIO_MODULE_SITE_METHOD = local
>>
>> The directory exists and there is a very simple Config.in to select the
>> module
>> (from the top level .config file)
>> #
>> # HWDD Required Kernel Modules
>> #
>> BR2_PACKAGE_GPIO_MODULE=y
>>
>> Some questions:
>> 1) Can the module be setup like this? Locally (to be rsync'd)??
>>
>
> Sure, shouldn't be a problem.
>
> 2) The gpio_module.mk file: this still contains BUILD_CMDS ??
>>
>
> It doesn't need to. In that case, the actual build will happen in a
> post-build hook instead of in build_cmds, but that's OK.
>
> 3) Do I also need to have a "makefile" present in the directory as well?
>> (some examples seem to indicate yes)
>>
>
> I think you do need a Kbuild-type Makefile that specifies the objs-m,
> otherwise there is nothing to build.
>
> 4) Can I do the same <pkg> - build commands to build this? (like I
>> would for
>> the apps/libraries)
>>
>
> Yep, the kernel module is built/installed as post-build/install hooks.
>
>
>> My gpio_modules.mk file:
>>
>
> I hope you mean gpio_module.mk, without s? And the directory is
> gpio_module?
>
>
>> ################################################################################
>> #
>> # gpio_module
>> #
>>
>> ################################################################################
>> GPIO_MODULE_VERSION = 0.1.0
>> GPIO_MODULE_LICENSE = Public Domain
>> GPIO_MODULE_SITE = $(BR2_EXTERNAL)/modules/gpio_module
>> GPIO_MODULE_SITE_METHOD = local
>>
>> # Global Includes here
>> GBL_INCLUDES = $(BR2_EXTERNAL)/incs/include
>> KNL_INCLUDES = $(BR2_EXTERNAL)/incs/include/kernel
>>
>> GPIO_MODULE_OPTS += -C$(LINUX_DIR)
>> GPIO_MODULE_OPTS += M=$(@D) <http://gpio_module.mk>
>> CFLAGS += -Wall -Os -DCONFIG_HWDD -I$(GBL_INCLUDES) -I$(KNL_INCLUDES)
>>
>
> Bad bad bad, this GLOBALLY defines CFLAGS. All variables should always be
> prefixed with your package name.
>
> But all of this shouldn't be needed, it's already handled by the
> generic-kernel-module infra.
>
>
>> define GPIO_MODULE_BUILD_CMDS
>> $(MAKE) $(GPIO_MODULE_OPTS) $(CFLAGS)
>> endef
>>
>> $(eval $(generic-kernel))
>>
>
> This should be kernel-module, not generic-kernel
>
> $(eval $(generic-package))
>>
>
> This _is_ needed.
>
>
>> When I try to do a "-build" on the module (like I do for the apps), I get
>> this
>> (from the output directory)
>> [sbeckwith at sdb-mbp-vm output]$ make gpio_module-build
>> umask 0022 && make -C /home/sbeckwith/HBE-1/buildroot-2015.08.1
>> O=/home/sbeckwith/HBE-1/hwdd/output/. gpio_module-build
>> make[1]: *** No rule to make target 'gpio_module-build'. Stop.
>> Makefile:16: recipe for target '_all' failed
>> make: *** [_all] Error 2
>> [sbeckwith at sdb-mbp-vm output]$
>>
>> Which tells me somewhere it can't find the makefile or somehow bolt this
>> up to
>> the Buildroot build system. . .
>>
>
> Indeed. Is the .mk file included in $(BR2_EXTERNAL)/external.mk? You put
> it into the modules directory instead of the usual packages directory, so
> it may not be included in your external.mk.
>
> You can do 'make printvars | grep GPIO_MODULE' to check if it was
> properly included to begin with.
>
> Regards,
> Arnout
>
>
> I suspect it's because of the SITE_METHOD=local
>> that maybe causing this issue, am I correct?
>> The "rsync" I would normally see is not done, so there's nothing in the
>> output/build directory (no gpio_modules directory).
>>
>> Some pointers/assistance would be greatly appreciated.
>>
>> Regards,
>> Stephen
>>
>>
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>>
>
> --
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160413/bbefdc07/attachment.html>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-13 14:38 ` Stephen Beckwith
@ 2016-04-13 15:37 ` Arnout Vandecappelle
2016-04-13 16:00 ` Stephen Beckwith
0 siblings, 1 reply; 7+ messages in thread
From: Arnout Vandecappelle @ 2016-04-13 15:37 UTC (permalink / raw)
To: buildroot
Hi Stephen,
Please don't top-post, but reply in-line like I do below. I realize that gmail
doesn't make that easy :-)
On 04/13/16 16:38, Stephen Beckwith wrote:
> Arnout,
> THANK YOU very much! The problem wasn't so much an issue with the $eval,
> which for the life of me I don't remember where I copied that from but it was
> the "missing from external.mk" that solved it!! Thanks for
> the pointer! (sometimes we forget these little steps. . .)
> So external.mk now has:
> # Does the Kernel Modules first:
> include $(sort $(wildcard $(BR2_EXTERNAL)/netapp/kmod*/*.mk))
> and the directory is now: kmod_gpio - along with the associated "ripple effect" -
> The good news is: Does the Rsync and starts off the build.
> I've reduced the kmod_gpio.mk to:
> KMOD_GPIO_VERSION = 0.1.0
> KMOD_GPIO_LICENSE = Public Domain
> KMOD_GPIO_SITE = $(BR2_EXTERNAL)/netapp/kmod_gpio
> KMOD_GPIO_SITE_METHOD = local
As you have noticed, BR2_EXTERNAL is not exported so you can't refer to it
from the package Makefile. The proper way is to add here:
KMOD_GPIO_MODULE_MAKE_OPTS = NETAPP_DIR=$(BR2_EXTERNAL)
>
> $(eval $(kernel-module))
> $(eval $(generic-package))
>
> And I have a Makefile in the directory that is:
>
> #inform the kernel that a module needs to be build
> obj-m :=gpio_module.o
>
> # Global Includes here
> GBL_INCLUDES = $(BR2_EXTERNAL)/netapp/include
> KNL_INCLUDES = $(BR2_EXTERNAL)/netapp/include/kernel
And here you use GBL_INCLUDES=$(NETAPP_DIR)/include
Regards,
Arnout
>
> #Add here the CFLAGS to pass in to get the Defined Symbol
> CFLAGS_gpio_module.o := -DCONFIG_NETAPP_HWDD -I$(GBL_INCLUDES) -I$(KNL_INCLUDES)
>
> {fixed the bad,bad CFLAGS issue :) }
>
> However, I get a failure to build, due to missing headers, which are located in
> the GBL_INCLUDES path. It seems for kernel modules, the $(BR2_EXTERNAL) is not
> being honored, as shown below. Does this get passed through? Is it OK to
> "reach back" to the source directory for the includes?
[snip]
--
Arnout Vandecappelle arnout dot vandecappelle at essensium dot com
Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-13 15:37 ` Arnout Vandecappelle
@ 2016-04-13 16:00 ` Stephen Beckwith
2016-04-13 16:07 ` Arnout Vandecappelle
0 siblings, 1 reply; 7+ messages in thread
From: Stephen Beckwith @ 2016-04-13 16:00 UTC (permalink / raw)
To: buildroot
On Wed, Apr 13, 2016 at 11:37 AM, Arnout Vandecappelle <arnout@mind.be>
wrote:
> Hi Stephen,
>
> Please don't top-post, but reply in-line like I do below. I realize that
> gmail doesn't make that easy :-)
>
> Yea, sorry - thought of that after clicking send. . . . :(
> On 04/13/16 16:38, Stephen Beckwith wrote:
>
>> Arnout,
>> THANK YOU very much! The problem wasn't so much an issue with the
>> $eval,
>> which for the life of me I don't remember where I copied that from but it
>> was
>> the "missing from external.mk" that solved it!! Thanks for
>> the pointer! (sometimes we forget these little steps. . .)
>> So external.mk now has:
>> # Does the Kernel Modules first:
>> include $(sort $(wildcard $(BR2_EXTERNAL)/netapp/kmod*/*.mk))
>> and the directory is now: kmod_gpio - along with the associated "ripple
>> effect" -
>> The good news is: Does the Rsync and starts off the build.
>> I've reduced the kmod_gpio.mk to:
>> KMOD_GPIO_VERSION = 0.1.0
>> KMOD_GPIO_LICENSE = Public Domain
>> KMOD_GPIO_SITE = $(BR2_EXTERNAL)/netapp/kmod_gpio
>> KMOD_GPIO_SITE_METHOD = local
>>
>
> As you have noticed, BR2_EXTERNAL is not exported so you can't refer to
> it from the package Makefile. The proper way is to add here:
>
> KMOD_GPIO_MODULE_MAKE_OPTS = NETAPP_DIR=$(BR2_EXTERNAL)
==> Interesting. . . This DOES work! ! ! THANKS!!
>
>
>
>> $(eval $(kernel-module))
>> $(eval $(generic-package))
>>
>> And I have a Makefile in the directory that is:
>>
>> #inform the kernel that a module needs to be build
>> obj-m :=gpio_module.o
>>
>> # Global Includes here
>> GBL_INCLUDES = $(BR2_EXTERNAL)/netapp/include
>> KNL_INCLUDES = $(BR2_EXTERNAL)/netapp/include/kernel
>>
>
> And here you use GBL_INCLUDES=$(NETAPP_DIR)/include
>
==> and again, this worked, at least I don't get the include errors now. .
.
Now, fixing all the errors due to porting from a 2.6.32 kernel to 4.1.4
kernel :(
Another quick question, if I may:
- The build root version I have is 2015.08.01 - this supports a 4.1.4
kernel. Since 4.1.x is an LTS kernel, is there a way to tell/configure
Buildroot to fetch a patch for the latest . release (currently 4.1.21)???
Meaning, a patch from 4.1.4 -> 4.1.21? I've done something like this in
the past, wasn't easy.
Thanks again!!!
Be safe there in Belgium. . .
Regards,
Stephen
>
>
> Regards,
> Arnout
>
>
>> #Add here the CFLAGS to pass in to get the Defined Symbol
>> CFLAGS_gpio_module.o := -DCONFIG_NETAPP_HWDD -I$(GBL_INCLUDES)
>> -I$(KNL_INCLUDES)
>>
>> {fixed the bad,bad CFLAGS issue :) }
>>
>> However, I get a failure to build, due to missing headers, which are
>> located in
>> the GBL_INCLUDES path. It seems for kernel modules, the $(BR2_EXTERNAL)
>> is not
>> being honored, as shown below. Does this get passed through? Is it OK to
>> "reach back" to the source directory for the includes?
>>
> [snip]
>
> --
> Arnout Vandecappelle arnout dot vandecappelle at essensium dot com
> Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
> Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
>
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160413/c9be5678/attachment.html>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-13 16:00 ` Stephen Beckwith
@ 2016-04-13 16:07 ` Arnout Vandecappelle
2016-04-13 19:03 ` Stephen Beckwith
0 siblings, 1 reply; 7+ messages in thread
From: Arnout Vandecappelle @ 2016-04-13 16:07 UTC (permalink / raw)
To: buildroot
On 04/13/16 18:00, Stephen Beckwith wrote:
[snip]
> - The build root version I have is 2015.08.01 - this supports a 4.1.4
> kernel. Since 4.1.x is an LTS kernel, is there a way to tell/configure
> Buildroot to fetch a patch for the latest . release (currently 4.1.21)???
> Meaning, a patch from 4.1.4 -> 4.1.21? I've done something like this in the
> past, wasn't easy.
Just set BR2_LINUX_KERNEL_CUSTOM_VERSION and fill in the version.
Or, if you're using BR2_LINUX_KERNEL_SAME_AS_HEADERS, choose
BR2_KERNEL_HEADERS_VERSION and fill in the version.
This even works for versions > 4.1 if you want. Just claim that it's a 4.1
version.
Regards,
Arnout
[snip]
--
Arnout Vandecappelle arnout dot vandecappelle at essensium dot com
Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] Cannot build Custom Kernel Module
2016-04-13 16:07 ` Arnout Vandecappelle
@ 2016-04-13 19:03 ` Stephen Beckwith
0 siblings, 0 replies; 7+ messages in thread
From: Stephen Beckwith @ 2016-04-13 19:03 UTC (permalink / raw)
To: buildroot
On Wed, Apr 13, 2016 at 12:07 PM, Arnout Vandecappelle <arnout@mind.be>
wrote:
>
>
> On 04/13/16 18:00, Stephen Beckwith wrote:
> [snip]
>
>> - The build root version I have is 2015.08.01 - this supports a 4.1.4
>> kernel. Since 4.1.x is an LTS kernel, is there a way to tell/configure
>> Buildroot to fetch a patch for the latest . release (currently 4.1.21)???
>> Meaning, a patch from 4.1.4 -> 4.1.21? I've done something like this in
>> the
>> past, wasn't easy.
>>
>
> Just set BR2_LINUX_KERNEL_CUSTOM_VERSION and fill in the version.
>
> Or, if you're using BR2_LINUX_KERNEL_SAME_AS_HEADERS, choose
> BR2_KERNEL_HEADERS_VERSION and fill in the version.
>
>
> This even works for versions > 4.1 if you want. Just claim that it's a
> 4.1 version.
>
DONE! 4.1.21 pulled and built! Have to re-do my ixgbe patch, been there,
done that. Thanks Much!!!
Regards,
Stephen
>
> Regards,
> Arnout
>
>
> [snip]
> --
> Arnout Vandecappelle arnout dot vandecappelle at essensium dot com
> Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
> Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160413/0da63cbb/attachment.html>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-04-13 19:03 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-12 18:25 [Buildroot] Cannot build Custom Kernel Module Stephen Beckwith
2016-04-12 21:07 ` Arnout Vandecappelle
2016-04-13 14:38 ` Stephen Beckwith
2016-04-13 15:37 ` Arnout Vandecappelle
2016-04-13 16:00 ` Stephen Beckwith
2016-04-13 16:07 ` Arnout Vandecappelle
2016-04-13 19:03 ` Stephen Beckwith
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.