Skip to contentSkip to conversation

Making header of out-of-tree module available

DISCUSSION [email protected] 2 participants 5 messages Jan 30, 2017

lore
Share & tools
lore
#0 lore raw

I have a recipe which builds my own (out-of-tree) driver module - this packages/installs the module fine. (It's recipe has "inherit module").

Now I'm writing a recipe to build a library which uses the driver. What's needed to get the driver's header file 'exported' so that it can be included by the library's recipe?

Thanks

#1 lore raw

You don't, you make your library depends on your driver, and not on kernel exported headers. In my case I add the header to the -dev package and make the library compilation depend on kernel module.

# kernel-module-foo.bb
FILES_${PN}-dev = "/usr/include/foo/linux/foo.h"
# libfoo.bb
DEPENDS = "kernel-module-foo"

Cheers

2017-01-30 13:37 GMT-02:00 <[email protected]>:

Quoted 18 lines

I have a recipe which builds my own (out-of-tree) driver module – this packages/installs the module fine. (It’s recipe has “inherit module”).

Now I’m writing a recipe to build a library which uses the driver. What’s needed to get the driver’s header file ‘exported’ so that it can be included by the library’s recipe?

Thanks

--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto

Signature · 2 lines
*"Do or do not. There is no try"*
  *Yoda Master*
#2 lore raw

Thanks Daniel,

I’ve given that a try, but the header isn’t appearing (with ‘bitbake rfctrl’) anywhere but the module’s own workdir.

It’s recipe is

SUMMARY = " RF driver"

LICENSE = "GPLv2"

LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"

inherit module

SRC_URI = "file://Makefile \

           file://rfctrl.c \

           file://rfctrl.h \

           file://COPYING \

          "

FILES_${PN}-dev = "/usr/include/rfctrl/linux/rfctrl.h"

S = "${WORKDIR}"

With a makefile:

obj-m := rfctrl.o

SRC := $(shell pwd)

all:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC)

modules_install:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install

clean:

rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c

rm -f Module.markers Module.symvers modules.order

rm -rf .tmp_versions Modules.symvers

From: Daniel. [mailto:[email protected]]
Sent: 30 January 2017 16:46
To: [email protected]
Cc: [email protected]
Subject: Re: [yocto] Making header of out-of-tree module available

You don't, you make your library depends on your driver, and not on kernel exported headers. In my case I add the header to the -dev package and make the library compilation depend on kernel module.

# kernel-module-foo.bb <http://kernel-module-foo.bb> 

FILES_${PN}-dev = "/usr/include/foo/linux/foo.h"

# libfoo.bb <http://libfoo.bb> 

DEPENDS = "kernel-module-foo"

Cheers

2017-01-30 13:37 GMT-02:00 <[email protected] <mailto:[email protected]> >:

I have a recipe which builds my own (out-of-tree) driver module – this packages/installs the module fine. (It’s recipe has “inherit module”).

Now I’m writing a recipe to build a library which uses the driver. What’s needed to get the driver’s header file ‘exported’ so that it can be included by the library’s recipe?

Thanks

--
_______________________________________________
yocto mailing list
[email protected] <mailto:[email protected]>
https://lists.yoctoproject.org/listinfo/yocto

Signature · 2 lines
"Do or do not. There is no try"
  Yoda Master
#3 lore raw
do_install_append() {
    install -d ${D}/usr/include/nrf24/linux/
    install -m 0755 ${S}/include/linux/nrf24.h

${D}/usr/include/nrf24/linux/
}

Try something like this ^

Regards,

2017-01-30 15:05 GMT-02:00 <[email protected]>:

Quoted 133 lines

Thanks Daniel,

I’ve given that a try, but the header isn’t appearing (with ‘bitbake rfctrl’) anywhere but the module’s own workdir.

It’s recipe is

SUMMARY = " RF driver"

LICENSE = "GPLv2"

LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"

inherit module

SRC_URI = "file://Makefile \

           file://rfctrl.c \

           file://rfctrl.h \

           file://COPYING \

          "

FILES_${PN}-dev = "/usr/include/rfctrl/linux/rfctrl.h"

S = "${WORKDIR}"

With a makefile:

obj-m := rfctrl.o

SRC := $(shell pwd)

all:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC)

modules_install:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install

clean:

rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c

rm -f Module.markers Module.symvers modules.order

rm -rf .tmp_versions Modules.symvers

*From:* Daniel. [mailto:[email protected]]
*Sent:* 30 January 2017 16:46
*To:* [email protected]
*Cc:* [email protected]
*Subject:* Re: [yocto] Making header of out-of-tree module available

You don't, you make your library depends on your driver, and not on kernel exported headers. In my case I add the header to the -dev package and make the library compilation depend on kernel module.

# kernel-module-foo.bb

FILES_${PN}-dev = "/usr/include/foo/linux/foo.h"

# libfoo.bb

DEPENDS = "kernel-module-foo"

Cheers

2017-01-30 13:37 GMT-02:00 <[email protected]>:

I have a recipe which builds my own (out-of-tree) driver module – this packages/installs the module fine. (It’s recipe has “inherit module”).

Now I’m writing a recipe to build a library which uses the driver. What’s needed to get the driver’s header file ‘exported’ so that it can be included by the library’s recipe?

Thanks

--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto

--

*"Do or do not. There is no try"*
* Yoda Master*

Signature · 2 lines
*"Do or do not. There is no try"*
  *Yoda Master*
#4 lore raw

At your kernel-module-<foo>.bb

:)

2017-01-30 15:13 GMT-02:00 Daniel. <[email protected]>:

Quoted 153 lines
do_install_append() {
    install -d ${D}/usr/include/nrf24/linux/
    install -m 0755 ${S}/include/linux/nrf24.h

${D}/usr/include/nrf24/linux/
}

Try something like this ^

Regards,

2017-01-30 15:05 GMT-02:00 <[email protected]>:

Quoted 128 lines

Thanks Daniel,

I’ve given that a try, but the header isn’t appearing (with ‘bitbake rfctrl’) anywhere but the module’s own workdir.

It’s recipe is

SUMMARY = " RF driver"

LICENSE = "GPLv2"

LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"

inherit module

SRC_URI = "file://Makefile \

           file://rfctrl.c \

           file://rfctrl.h \

           file://COPYING \

          "

FILES_${PN}-dev = "/usr/include/rfctrl/linux/rfctrl.h"

S = "${WORKDIR}"

With a makefile:

obj-m := rfctrl.o

SRC := $(shell pwd)

all:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC)

modules_install:

                $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install

clean:

rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c

rm -f Module.markers Module.symvers modules.order

rm -rf .tmp_versions Modules.symvers

*From:* Daniel. [mailto:[email protected]]
*Sent:* 30 January 2017 16:46
*To:* [email protected]
*Cc:* [email protected]
*Subject:* Re: [yocto] Making header of out-of-tree module available

You don't, you make your library depends on your driver, and not on kernel exported headers. In my case I add the header to the -dev package and make the library compilation depend on kernel module.

# kernel-module-foo.bb

FILES_${PN}-dev = "/usr/include/foo/linux/foo.h"

# libfoo.bb

DEPENDS = "kernel-module-foo"

Cheers

2017-01-30 13:37 GMT-02:00 <[email protected]>:

I have a recipe which builds my own (out-of-tree) driver module – this packages/installs the module fine. (It’s recipe has “inherit module”).

Now I’m writing a recipe to build a library which uses the driver. What’s needed to get the driver’s header file ‘exported’ so that it can be included by the library’s recipe?

Thanks

--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto

Quoted 5 lines

--

*"Do or do not. There is no try"*
* Yoda Master*

--
*"Do or do not. There is no try"*
*Yoda Master*

Signature · 2 lines
*"Do or do not. There is no try"*
  *Yoda Master*